Чому NFA називають недетермінованим?


14

Я маю на увазі це [якесь смішне] питання. Чому недетермінований кінцевий автомат називається недетермінованим, поки ми визначаємо переходи для входів. Ну, хоча існують множинні та епсилонні переходи, вони визначені, що означає, що машина є детермінованою для цих переходів. Що означає, що це детерміновано.


12
Недетермінований, який використовується в теоретичній інформатиці, відрізняється від випадкового.
adrianN

10
Це вибір між переходами , які недетермінірованного.
reinierpost

Що таке NFA? (Для непросвітлених серед нас)
DarcyThomas

@DarcyThomas, перше вступ у мене було swtch.com/~rsc/regexp/regexp1.html . Це добре прочитане - ціль статті не вводити НФА, але це добре робить це в обговоренні регулярних виразів.
Wildcard

Відповіді:


23

"Детермінований" означає "якщо ви двічі ставите систему в одну і ту ж ситуацію, гарантовано зробити обидва рази однаковий вибір".

"Недетермінований" означає "не детермінований", або іншими словами, "якщо ви двічі ставите систему в одну ситуацію, вона може або не може зробити той самий вибір обидва рази".

Недетермінований кінцевий автомат (NFA) може мати кілька переходів із стану. Це означає, що існує декілька варіантів того, що він може зробити у цій ситуації. Він не змушений завжди обирати одне й те саме; на одному вході він може вибрати перший перехід, а на іншому вході він може вибрати той самий перехід.

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


"він може довільно вибрати, який з них взяти". Так це в основному має ймовірнісний характер?
Триларіон

@ Trilarion, ні, це залежить від того, спричиняє це чи ні до стану. Фактично ймовірнісний ФА є узагальненням для НФА.
rus9384

"Недетермінований" означає "не детермінований", або іншими словами, "якщо ви двічі ставите систему в одну ситуацію, вона може або не може зробити той самий вибір обидва рази". маючи на увазі це, ви маєте на увазі, що машина може приймати та відхиляти ту саму струну у двох різних випадках.
Madhusoodan P

3
@MadhusoodanP Ваша інтуїція правильна від написаного тут, і це призводить нас до того, чого не вистачає у цій відповіді: Під час аналізу NFA ми завжди враховуємо всі можливі шляхи виконання. Поки будь-який шлях у цій машині призводить до стану прийняття, ми вважаємо вхід прийнятим. Тому справа зовсім не у ймовірності, а просто у тому, чи можна досягти прийнятого стану чи ні. Ця інтуїція стає зрозумілішою, коли мислюємось про те, як NFA зводяться до DFA: Ми повинні імітувати всі можливі дії NFA, що призводить до експоненціального вибуху в будівництві.
ComicSansMS

3
Спосіб візуалізації - припустити, що там, де можна було вибрати кілька переходів, NFA приймає всі переходи. Ви створюєте деревоподібну структуру всіх станів, досягнутих вхідним рядком, і якщо будь-яка з гілок закінчується у стані прийняття, рядок приймається. Іншими словами, з DFA, ви питаєте , «це держава досягло мого входу прийняти стан?», В той час як з НКА, ви питаєте «є будь-який стан , що може бути досягнуто з допомогою мого введення режиму прийому стан?».
Harrison Paine

9

Візьмемо, наприклад, цей автомат, це NFA і він приймає рядок . Щоб бути більш педантичним, він приймає рядки, які закінчуються в 10 .011010

Приклад автоматики, джерело: /cs/61159/what-is-the-difference-bet between-following-two-finite-automata/61208

Щоб побачити, що нам просто потрібно перевірити, чи досягає він стан прийняття.

q01q00q11q20

Тепер у червоній лінії з'явилася інша можливість, тобто, читаючи другий я міг залишитися в q 0, а потім залишитися в q 0, читаючи останні 0 . Автомати не мають пам’яті, тому немає ніякого способу «зберегти» стан і перевірити пізніше, якщо моя рядок закінчується на 10 , це подібно до цього NFA, він здогадується, чи закінчується рядок на 101q0q001010 перед розгалуженням до прийнятного стану. Тут недетермінізм робить багато вибору і завжди робить правильний.

Простіше побудувати NFA, ніж побудувати DFA, добре те, що обидва рівнозначні .


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

1
Приклад може бути покращений з дещо складнішим NFA, оскільки DFA для тих же цілей використовує таку ж кількість станів, що і ваш NFA, і не буде особливо складним. На противагу цьому, співставлення більш складного регулярного виразу може зажадати складного і безладного DFA, але бути тривіальним у NFA.
supercat

ε

1
@Aristu Якщо ви реалізуєте NFA улюбленою мовою програмування, теми - це страшний вибір. Швидше, вам слід просто відслідковувати набір станів, що автомат "може бути в" після зчитування кожного символу введення. Отриманий код буде майже таким же швидким, як реалізація DFA.
Девід Річербі

1
ϵ

5

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

Можливо, вам варто почекати, поки ви дізнаєтесь про недетерміновані машини Тьюрінга. Недетермінізм означає те саме, що в обох випадках.


Ви можете підкреслити, що це "перехід недетерміновано". А також перегляньте мою відповідь
Madhusoodan P

Я думаю, що обидва наші відповіді не надто хороші, хоча ваша інтуїція звучить.
Yuval Filmus

3

Почніть з Кінцевого Автомата. У ньому є стани і стани приймання та переходи.

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

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

Це недетерміновано. Він може вибрати свій шлях через графік після того, як ви дасте йому всю проблему, а не під час читання введення.


Тепер ми формалізуємо це інакше, ніж цей мислительний експеримент, але це дає вам мотивацію, чому він отримав таку назву.

Це пояснює, як воно отримало назву в першу чергу. Так, ви можете моделювати NDFA повністю детерміновано, але назви клейкі . Після того, як ви щось зателефонували Боб, коштує комунікація перейменувати його на щось інше, оскільки ніхто не знає, про що ви говорите, коли ви називаєте це Аліса.


так! Я згоден з вашим поясненням щодо НФА. Але моє запитання полягає в тому, чому це недетерміновано, навіть якщо набір станів визначено для одного входу
Madhusoodan P

@MadhusoodanP Його називають недетермінованим через те, як він був винайдений / передбачений. І назви липкі, навіть після того, як ми визначимо багатомовні повністю детерміновані способи моделювання.
Якк

1

З вікіпедії найкращий спосіб подумати над цим - почати з детермінованих машин з кінцевим станом (DFA). Для DFA кожен перехід однозначно визначається поточним станом та вхідним символом, який підлягає обробці. Недетерміновані машини з кінцевим станом (NFA) - це просто те, що ви отримуєте, коли ви послабите це правило детермінізму, щоб дозволити переходи не бути однозначно визначеними. Це ви отримуєте, коли вилучаєте правило визначання зі DFA.


Це трохи складніше, оскільки недетермінізм також є специфічною умовою прийняття.
Yuval Filmus

1

NFA та DFA використовуються для (серед іншого) розпізнавання певних рядків.

Недетермінований кінцевий автомат працює так, ніби він впливав на його рішення - він може "вибрати" йти шляхом, чи ні.

Приклад NFA

На зображенні вище, коли ми маємо справу з рядком "00111", зауважте, що при зустрічі з першим "1" є два можливі способи слідування. Можна зупинитися на "p" або перейти до "q". Якщо автомат повинен був перейти до "q", він не прийме рядок (оскільки у "q" немає ребер, що виходять). Але рядки можуть бути прийняті цим автоматами, перейшовши на "q" лише з останнім 1, залишаючись на "p" для всього іншого (і ось що відбувається).

NFA робить це схожим на автомати "знали", що попереду, і обирають відповідно.

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

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


0

Ну ось поєднання деякого змісту з книги [Вступ до формальних мов та автоматів Пітера Лінца 4E] та моє розуміння.

Розглянемо ігрову програму, де машині потрібно прийняти рішення про наступний хід [скажімо для tic-tac-toe]. Оскільки можливі кілька ходів, ми детерміновано обираємо кожен крок і оцінюємо хід і вибираємо найкращий. Незважаючи на те, що процес відбору був детермінованим і було багато можливих рухів, остаточний хід був зроблений єдиним і був обраний як найкращий хід, приховуючи всі випробувані ходи-розрахунки від опонента. [Тут ми припускаємо, що процес оцінки кожного можливого кроку був прихований від опонента].

Отже, був зроблений лише один вибір, і опонент отримав ілюзію, що цей крок був недетермінованим.

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


1
Ще один спосіб цього: противнику ваш вибір був недетермінованим. При моделюванні системи з точки зору опонента, ваш хід є недетермінованим вибором, якщо тільки опонент не з'ясував детермінований процес, що стоїть за ним.
reinierpost

@reinierpost саме те, що я хотів розповісти
Madhusoodan P

Більш цікавим прикладом може бути гра з обмеженою інформацією з рухомими фігурами (наприклад, стиль "поліцейські та грабіжники"). Один гравець пересуває грабіжника по лабіринту, а інший гравець переміщує поліцейських. У будь-який момент, коли поліцейський може побачити грабіжника, стан грабіжника буде його місцезнаходженням, але в будь-який момент, коли жодна з поліцейських не побачить грабіжника, грабіжник може перейти до будь-яких квадратів, що примикають до його положення, і копи можуть Я не бачу в цей момент.
supercat

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