Зміст:
Мінімізація детермінованих скінчених автоматів
В подальшому при програмуванні скінчених автоматів важливо мати справу з так званими “мінімальними автоматами”. Мінімальним для даного скінченого автомата називається еквівалентний йому автомат з мінімальною кількістю станів.
Нагадаємо, що два автомати називаються еквівалентними якщо вони розпізнають одну мову.
Те, що скінчені автомати можна мінімізувати покажемо на наступному прикладі:
Навіть при поверхневому аналізі діаграми переходів наведеного скінченого автомата видно, що вершини , та є “зайвими”, тобто при їх вилученні новий автомат буде еквівалентний початковому. З наведеного вище прикладу видно, що для отриманого детермінованого скінченого автомата можна запропонувати еквівалентний йому автомат з меншою кількістю станів, тобто мінімізувати скінчений автомат. Очевидно що серед зайвих станів цього автомата є недосяжні та тупикові стани.
Недосяжні стани
Стан скінченого автомата називається недосяжним, якщо на діаграмі переходів скінченого автомата не існує шляху з в .
Алгоритм [пошуку недосяжних станів]. Спочатку спробуємо побудувати множину досяжних станів. Якщо — множина досяжних станів скінченого автомата , то — множина недосяжних станів. Побудуємо послідовність множин таким чином, що:
-
.
-
.
-
.
Справді, очевидно, що кількість кроків скінчена, тому що послідовність монотонна та обмежена зверху: .
Тоді — множина досяжних станів скінченого автомата, а — множина недосяжних станів.
Вилучимо з діаграми переходів скінченого автомата недосяжні вершини:
В новому автоматі функція визначається лише для досяжних станів. Побудований нами скінчений автомат з меншою кількістю станів буде еквівалентний початковому.
Тупикові стани
Стан скінченого автомата називається тупиковим, якщо на діаграмі переходів скінченого автомата не існує шляху з в .
Алгоритм [пошуку тупикових станів]. Спочатку спробуємо знайти нетупикові стани. Якщо — множина нетупикових станів, то — множина тупикових станів. Побудуємо послідовність множин таким чином, що:
-
.
-
.
-
.
Очевидно, що кількість кроків скінчена, тому що послідовність монотонна та обмежена зверху — .
Тоді — множина нетупикових станів скінченого автомата, а — множина тупикових станів.
Вилучимо з діаграми переходів скінченого автомата тупикові вершини:
В новому автоматі функція визначається лише для нетупикових станів.
Еквівалентні стани
Автомат, у котрого відсутні недосяжні та тупикові стани, піддається подальшій мінімізації шляхом “склеювання” еквівалентних станів. Продемонструємо це на конкретному прикладі:
Очевидно, що для наведеного вище скінченого автомата можна побудувати еквівалентний йому скінчений автомат з меншою кількістю станів:
Ми досягли бажаного нам результату шляхом “склеювання” двох станів та .
Два стани та скінченого автомата називаються еквівалентними (позначається ), якщо множини слів, які розпізнає автомат, починаючи з та , співпадають.
Нехай та — два різні стани скінченого автомата , а . Будемо говорити, що ланцюжок розрізняє стани та , якщо та , причому рівно один зі станів і (не) належить множині заключних станів.
Стани та називаються -нерозрізнені, якщо не існує ланцюжка що розрізняє стани та .
Два стани та нерозрізнені, якщо вони -нерозрізнені для довільного .
Теорема. Два стани та довільного скінченого автомата з станами нерозрізнені, якщо вони -нерозрізнені.
Доведення: На першому кроці розіб’ємо множину станів скінченого автомата на дві підмножини: та . На цій основі побудуємо відношення : , якщо обидва стани одночасно належать або .
Побудуємо відношення : , якщо та для всіх .
Очевидно, кожна побудована множина містить не більше елементи.
Таким чином, можна отримати не більше уточнення відношення .
Відношення визначає класи еквівалентних станів автомата .
Алгоритм
Алгоритм [побудови мінімального скінченого автомата].
-
Побудувати скінчений автомат без тупикових станів.
-
Побудувати скінчений автомат без недосяжних станів.
-
Знайти множини еквівалентних станів та побудувати найменший (мінімальний) автомат.
Контрольні запитання
-
Які автомати називаються еквівалентними?
-
Який стан автомату називається недосяжним?
-
Опишіть алгоритм пошуку недосяжних станів і доведіть його збіжність. Бонус: оцініть складність цього алгоритму за часом і пам’яттю.
-
Який стан автомату називається тупиковим?
-
Опишіть алгоритм пошуку тупикових станів і доведіть його збіжність. Бонус: оцініть складність цього алгоритму за часом і пам’яттю.
-
Які стани називаються еквівалентними?
-
Опишіть алгоритм пошуку еквівалентних станів і доведіть його збіжність. Бонус: оцініть складність цього алгоритму за часом і пам’яттю.
-
Опишіть алгоритм мінімізації детермінованого скінченного автомату. Бонус: виведіть з попередніх оцінок складність цього алгоритму за часом і пам’яттю.
(традиційні відповіді можна переглянути у коментарях у вихідному коді цієї сторінки)