Якщо ні, то що це означає, коли для деякого стану і деякого символу , не існує?
Якщо ні, то що це означає, коли для деякого стану і деякого символу , не існує?
Відповіді:
Ви, здається, натрапили на спірне питання. Мабуть, комп'ютерні фахівці люблять сперечатися. Я, звичайно, люблю сперечатися, так ось що!
Моя відповідь однозначна: Ні. Детермінованим кінцевим автоматам не потрібен перехід від кожного стану для кожного символу. Сенс, коли не існує, просто полягає в тому, що DFA не приймає рядок введення.
Хоча ви можете створити визначення DFA, яке вимагає, щоб існував, просто не випадок, коли відсутній перехід робить отриману структуру (як би ви її не називали) будь-яким чином недетермінованою, як багато хто з коментаторів претензії. Якщо ви берете курс з теорії автоматів, то наступною темою будуть безконтекстні мови та автоматизовані автомати, де різниця між недетермінованими та детермінованими автоматами є критичною, і вам потрібно використовувати правильне визначення недетермінізму.
Недетермінізм пов'язаний з тим, що існує більше одного юридичного переходу.
Я думаю, що всі ми згодні з таким визначенням Вікіпедії (яке я покажу лише за секунду, є дещо неоднозначним):
Детермінований кінцевий автомат - це 5-кортеж ( , , , , ), що складається з
Нехай - рядок над алфавітом . Автомат приймає рядок якщо послідовність станів, , існує в при таких умовах:
Неоднозначність і суперечка полягає у визначенні функції переходу, (число "3" у першому списку.) Ми всі згодні, що те, що відрізняє DFA від NFA, це те, що є функцією, а не відношенням . Але часткова функція або повна функція ?
Визначення DFA працює добре, якщо є частковою функцією. З огляду на рядок введення, якщо ви досягаєте стану із символом введення коли немає наступного стану, то автомати просто не приймають.
Більше того, коли ви поширюєте це визначення для створення визначення автоматизованих автоматичних пристроїв, то ви повинні розрізнити, що автоматичні автоматичні перехідні функції з функціями переходу, які є частковими функціями, класифікуються як детерміновані, а не недетерміновані.
Commenter @Alex Smart справедливо критикує мене за те, що я не давав посилань і не пояснював, чому нам слід піклуватися. Отже, ось що:
Причина, яку нам хвилює точне визначення детермінізму проти недетермінізму, полягає в тому, що деякі класи недетермінованих автоматів є більш потужними, ніж їх детерміновані двоюрідні брати, а деякі класи недетермінованих автоматів не потужніші, ніж їхні детерміновані двоюрідні брати. Для кінцевих автоматів і машин Тьюрінга детерміновані та недетерміновані варіанти мають рівноцінну потужність. Для автоматичних розгортань є мови, на яких розрізнення важливе: Є NPDA, які приймають мову, і жодна DPDA не приймає мову. Для лінійно обмежених автоматів питання (або востаннє я перевіряв) відкрите. Збільшення потужності NPDA над DPDA походить від дозволяючи кратному переходи, а не від перетворення функції переходу від загальної функції до часткової функції.
Книги спільноти компіляторів:
Ахо і Уллман, Принципи дизайну компілятора , 1977: Спочатку визначається NFA (стор. 88) з перехідним відношенням, потім (стор. 90-91):
Ахо, Сетхі та Уллман, Укладачі, принципи, тексти та інструменти , передрук 1988 р. Подібний, він спочатку визначає NFA з перехідним відношенням, потім (стор. 115-116):
(Зауважте, що в коментарях @ Алекс Смарт говорить: "Дракон конкретно згадує, що функція є загальною". Я припускаю, що він говорить про більш пізнє видання з співавтором Ламом, до якого я зараз не маю доступу. )
Appel, реалізація сучасного компілятора на Java , 1988 р. (Стор. 22):
У детермінованому кінцевому автоматі (DFA) жодні два ребра, що виходять із одного стану, не позначені одним і тим же символом.
Потім Appel далі пояснює, що, використовуючи DFA для розпізнавання найдовших збігів, ми явно використовуємо пропущені переходи, щоб вирішити, коли зупинитись (стор. 23):
коли досягається мертвий стан (нефінальний стан без вихідних переходів), змінні [які фіксують найдовший збіг, який ми бачили досі] повідомляють, який маркер був узгоджений і де він закінчився.
Книги із спільноти теорії комутацій:
Кохаві, Теорія комутації та кінцевих автоматів, 2 / е , 1978, с. 611 говорить:
Оскільки діаграма стану описує детерміновану машину, наступний перехід стану повинен бути визначений однозначно наявним станом та сканованим символом введення.
Я, як правило, однозначно інтерпретую так, щоб означати «саме один», а не «не більше одного». (Тобто Кохаві, здається, говорить, що детермінізм вимагає тотальної функції)
Книги з теоретично-обчислювальної спільноти:
Тут, мабуть, більш прийнятним є визначення DFA перед NFA, і вимагають, щоб DFA мали загальну функцію переходу, але потім визначали NPDA перед DPDA, і визначають "детермінізм" як обмеження перехідного відношення до того, що не має більше ніж -один запис для кожної пари стану / символів.
Це стосується Hopcroft and Ullman, 1979, Lewis and Papadimitriou, 1981, і, особливо, Сіпсера, 2006, який використовує визначення DFA педагогічно для введення точних формальних визначень, пояснення їх важливості та прямо сказаного (с.36):
Цікаво, що Рабін і Скотт також визначають недетерміновані кінцеві автомати з точки зору загальної функції! Сторінка 120, Визначення 9:
Тобто: тотальна функція переходу не робить систему детермінованою!
Сіпсер 2006 слідує за Рабіном і Скоттом і використовує функцію тотального переходу від станів / символів до набору потужностей станів для його визначення недетермінованих кінцевих автоматів, недетермінованих КПК і недетермінованих машин Тюрінга, але пропускає тему детермінованих КПК.
І Hopcroft, і Ullman, 1979, і Lewis і Papadimitriou, 1981 використовують часткові функції у своїх визначеннях детермінованих КПК. Спочатку вони визначають NPDA з перехідним відношенням, а потім, коли вони дістаються до КПК, говорять Льюїс і Пападімітріу (стор. 135),
Автомат віджимання є детермінованим , інтуїтивно кажучи, якщо є максимум один перехід, застосовний до кожної конфігурації.
Поки Гопкрофт і Уллман говорять (стор. 112):
КПК ... є детермінованим у тому сенсі, що максимум один крок можливий з будь-якого ідентифікатора.
Щодо обчислюваності, NFA є еквівалентними DFA - існує алгоритм перетворення з NFA в DFA, а DFA просто тривіально NFA, який не використовує ніякого недетермінізму, тому вони обидва визначають набір регулярних мов.
Існують визначення DFA відповідно до
У цьому випадку вам не потрібні всі переходи. Якщо автомат не має переходу, що відповідає наступному символу введення, він відхиляє.
Приємна вправа показати, що обидва визначення є рівнозначними щодо того, якими мовами можна прийняти.
У визначенні DFA кожен штат повинен мати весь алфавіт, що у £. Наприклад, якщо £ = {a, b, c} і Q = {q0, q1, q2}, всі ці стани повинні мати всі символи a, b, c, які переходять в інший стан або той самий стан.