Чому ми повинні вивчати всі три форми представлення кінцевих автоматів?


9

Усі три DFA, NFA та epsilon NFA дозволяють нам представляти певну регулярну мову. За допомогою будь-якого з цих уявлень ми можемо дійти до того ж регулярного виразу, чому тоді нам потрібно вивчити всі три форми подання кінцевих автоматів? Можна пояснити, що може зробити NFA, а DFA не може, тобто NFA може допомогти нам у розробці невизначеностей. Наприклад, розробляючи гру (шахи), у нас є багато варіантів переміщення певного твору з певного місця, яке легко представити за допомогою NFA. Але в чому полягає застосування епсилону NFA, коли те саме можна зробити за допомогою NFA або DFA?


2
Їх більше трьох. Це лише ті, які зазвичай зустрічаються в підручниках. Переходи епсілону корисні для доведення теорем, але я не впевнений, що бачив їх, що їх використовували в моделях заради себе.
wvxvw

3
@wvxvw алгоритм перекладу регулярного виразу в NFA використовує переходи дуже природним чином. Вони не "лише для доказів", вони досить природні в недетермінованій обстановці. ϵ
vonbrand

Відповіді:


13

Додайте звичайні граматики на четверту частину. Є й інші ...

Частина інтересу до DFA + NFA полягає в тому, що вони є простими моделями обчислень, з прикладами NFA (і -NFA) недетермінізму (вирішальна ідея для більш досконалих моделей). Щоб довести, що DFA та NFA приймають один і той же набір мов, також вивчають дуже важливе явище в простому, зрозумілому для цього середовищі.ϵ

Регулярні вирази (а також звичайні граматики) - це абсолютно різні формалізми, які трапляються для опису одного і того ж набору мов. Знову ж таки, доказ цього факту досліджує важливі взаємозв'язки, і є прикладом того, що формалізми можуть виглядати дуже різними, базуватися на радикально різних концепціях, але описувати одні й ті ж мови. Знову ж таки, у досить простій обстановці.

Для використання в реальному світі ви можете почати з регулярного вираження і отримати мінімальний DFA для високоефективного пошуку. Цифрові мікросхеми, по суті, є DFA, їх розуміння є головним у комп'ютерній техніці. І останнє, але не менш важливе, часто системи можна моделювати як "знаходяться в стані" та "перехід на інший" за зовнішніми стимулами, навіть якщо система дуже далека від реального DFA, що переглядає її таким чином, може допомогти зрозуміти це.

Додано пізніше: Як зауважив Рафаель, може бути ефективніше інтерпретувати NFA безпосередньо для пошуку, оскільки створення DFA може бути дорогим, а NFA може бути набагато меншим.


1
"Є інші" - десятки ....
Рафаель

1
Ви можете зауважити, що NFA може бути корисним (якщо DFA є єдиною альтернативою), оскільки вони можуть бути набагато меншими, але, використовуючи один, щоб перевірити, чи приймається слово, це не надто дорого.
Рафаель

5

Існує велика кількість причин для вивчення різних форм / відповідностей ДФА проти НФА. Ось декілька вибраних мотивів деяких із передових теорій складності.

  • NFA є цікавою моделлю для "паралельних обчислень". можна розглядати просування штатів через NFA як паралельну версію обчислення DFA. тому обчислення DFA проти NFA відображають деяку різницю між послідовними та паралельними обчисленнями. порівнюючи обидва контексти, це також допомагає вивчити властиву алгоритмічній складності проблем.

  • NFA часто використовуються в системах регулярного зіставлення виразів (досить всюдисущих у різних мовах, особливо сучасних, породжених в епоху Unix), які, як правило, дозволяють описи регулярних виразів, які перетворюються в NFA, а потім, можливо, перетворюються на DFA, щоб сприяти більш ефективному пошуку.

  • Існує досить багато відкритих проблем, які залишаються в цих областях, і вони часто вивчаються на основі листування DFA / NFA. див. наприклад, чи є якісь відкриті проблеми у DFA (cstheory stackexchange). Дещо дивовижно, деякі з них пов'язані з дуже глибокими областями СС, включаючи проблему Р проти НП, тобто непересічність перетину ДФА . також інша відкрита область, наприклад, обчислення мінімальної NFA для DFA .

  • також для деякого пов'язаного розуміння дивіться це напіввідоме / наголошене запитання на cstheory.se : Що таке просвіт, якого я повинен досягти після вивчення кінцевих автоматів?

  • є дуже різноманітні програми ДФА проти НФА, і відповідність між ними часто експлуатується. узгодження рядкових рядків згадано вище, але конструкції DFA / NFA часто використовуються при (автоматизованому) розпізнаванні мови. див., наприклад, цей високо цитований документ: Зважені перетворювачі кінцевого стану в розпізнаванні мови / Морі, Перейра, Райлі


2

DFA має легшу реалізацію, ніж NFA, оскільки їх наступний стан визначається функцією, і NFA допомагають користувачеві легко висловити те, що вони хочуть як вихід, тому що NFA може вибирати між декількома шляхами. і epsilon-NFA - це розширення NFA, де переходи можна здійснити, не беручи жодних вхідних символів.


2
підсумовуючи: НФА передають ідею недетермінізму, що є дуже глибокою ідеєю (її «винахідники» Майкл О. Рабін та Дана С. Скотт отримали нагороду Тюрінга за ці ідеї)
Ран Г.

1

Існує неприємна річ щодо кількості штатів ДФА. Вона вибухає, іноді .

Коротше кажучи, якщо кількість станів просто занадто велика (все ще обмежена, але ми живемо у фізичному світі.), То вам доведеться підвищити рівень абстракції, щоб впоратися зі складністю за рахунок деякого уповільнення. Інші моделі, такі як NFA та AFA, мають забезпечити більш стислі способи представлення звичайних мов.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.