knu/csc/appl-math/c3s2/sys-prog

синтез і аналіз мовних процесорів

Зміст:

Мінімізація детермінованих скінчених автоматів

В подальшому при програмуванні скінчених автоматів важливо мати справу з так званими “мінімальними автоматами”. Мінімальним для даного скінченого автомата називається еквівалентний йому автомат з мінімальною кількістю станів.

Нагадаємо, що два автомати називаються еквівалентними якщо вони розпізнають одну мову.

Те, що скінчені автомати можна мінімізувати покажемо на наступному прикладі:

img-4

Навіть при поверхневому аналізі діаграми переходів наведеного скінченого автомата видно, що вершини , та є “зайвими”, тобто при їх вилученні новий автомат буде еквівалентний початковому. З наведеного вище прикладу видно, що для отриманого детермінованого скінченого автомата можна запропонувати еквівалентний йому автомат з меншою кількістю станів, тобто мінімізувати скінчений автомат. Очевидно що серед зайвих станів цього автомата є недосяжні та тупикові стани.

Недосяжні стани

Стан скінченого автомата називається недосяжним, якщо на діаграмі переходів скінченого автомата не існує шляху з в .

Алгоритм [пошуку недосяжних станів]. Спочатку спробуємо побудувати множину досяжних станів. Якщо — множина досяжних станів скінченого автомата , то — множина недосяжних станів. Побудуємо послідовність множин таким чином, що:

  1. .

  2. .

  3. .

Справді, очевидно, що кількість кроків скінчена, тому що послідовність монотонна та обмежена зверху: .

Тоді — множина досяжних станів скінченого автомата, а — множина недосяжних станів.

Вилучимо з діаграми переходів скінченого автомата недосяжні вершини:

img-5

В новому автоматі функція визначається лише для досяжних станів. Побудований нами скінчений автомат з меншою кількістю станів буде еквівалентний початковому.

Тупикові стани

Стан скінченого автомата називається тупиковим, якщо на діаграмі переходів скінченого автомата не існує шляху з в .

Алгоритм [пошуку тупикових станів]. Спочатку спробуємо знайти нетупикові стани. Якщо — множина нетупикових станів, то — множина тупикових станів. Побудуємо послідовність множин таким чином, що:

  1. .

  2. .

  3. .

Очевидно, що кількість кроків скінчена, тому що послідовність монотонна та обмежена зверху — .

Тоді — множина нетупикових станів скінченого автомата, а — множина тупикових станів.

Вилучимо з діаграми переходів скінченого автомата тупикові вершини:

img-6

В новому автоматі функція визначається лише для нетупикових станів.

Еквівалентні стани

Автомат, у котрого відсутні недосяжні та тупикові стани, піддається подальшій мінімізації шляхом “склеювання” еквівалентних станів. Продемонструємо це на конкретному прикладі:

img-7

Очевидно, що для наведеного вище скінченого автомата можна побудувати еквівалентний йому скінчений автомат з меншою кількістю станів:

img-8

Ми досягли бажаного нам результату шляхом “склеювання” двох станів та .

Два стани та скінченого автомата називаються еквівалентними (позначається ), якщо множини слів, які розпізнає автомат, починаючи з та , співпадають.

Нехай та — два різні стани скінченого автомата , а . Будемо говорити, що ланцюжок розрізняє стани та , якщо та , причому рівно один зі станів і (не) належить множині заключних станів.

Стани та називаються -нерозрізнені, якщо не існує ланцюжка що розрізняє стани та .

Два стани та нерозрізнені, якщо вони -нерозрізнені для довільного .

Теорема. Два стани та довільного скінченого автомата з станами нерозрізнені, якщо вони -нерозрізнені.

Доведення: На першому кроці розіб’ємо множину станів скінченого автомата на дві підмножини: та . На цій основі побудуємо відношення : , якщо обидва стани одночасно належать або .

Побудуємо відношення : , якщо та для всіх .

Очевидно, кожна побудована множина містить не більше елементи.

Таким чином, можна отримати не більше уточнення відношення .

Відношення визначає класи еквівалентних станів автомата .

Алгоритм

Алгоритм [побудови мінімального скінченого автомата].

  1. Побудувати скінчений автомат без тупикових станів.

  2. Побудувати скінчений автомат без недосяжних станів.

  3. Знайти множини еквівалентних станів та побудувати найменший (мінімальний) автомат.

Контрольні запитання

  1. Які автомати називаються еквівалентними?

  2. Який стан автомату називається недосяжним?

  3. Опишіть алгоритм пошуку недосяжних станів і доведіть його збіжність. Бонус: оцініть складність цього алгоритму за часом і пам’яттю.

  4. Який стан автомату називається тупиковим?

  5. Опишіть алгоритм пошуку тупикових станів і доведіть його збіжність. Бонус: оцініть складність цього алгоритму за часом і пам’яттю.

  6. Які стани називаються еквівалентними?

  7. Опишіть алгоритм пошуку еквівалентних станів і доведіть його збіжність. Бонус: оцініть складність цього алгоритму за часом і пам’яттю.

  8. Опишіть алгоритм мінімізації детермінованого скінченного автомату. Бонус: виведіть з попередніх оцінок складність цього алгоритму за часом і пам’яттю.

(традиційні відповіді можна переглянути у коментарях у вихідному коді цієї сторінки)

Назад до лекцій

Назад на головну