stringtranslate.com

Недетерминированный конечный автомат

NFA для (0|1) * 1  (0|1) 3.
DFA для этого языка имеет не менее 16 состояний.

В теории автоматов конечный автомат называется детерминированным конечным автоматом (ДКА), если

Недетерминированный конечный автомат ( NFA ) или недетерминированный конечный автомат не обязательно должен подчиняться этим ограничениям. В частности, каждый DFA также является NFA. Иногда термин NFA используется в более узком смысле, относясь к NFA, который не является DFA, но не в этой статье.

Используя алгоритм построения подмножества , каждый НКА можно перевести в эквивалентный ДКА; т. е. ДКА, распознающий тот же формальный язык . [1] Как и ДКА, НКА распознают только регулярные языки .

NFA были введены в 1959 году Майклом О. Рабином и Даной Скотт , [2] , которые также показали их эквивалентность DFA. NFA используются при реализации регулярных выражений : конструкция Томпсона — это алгоритм для компиляции регулярного выражения в NFA, который может эффективно выполнять сопоставление с образцом в строках. И наоборот, алгоритм Клини может быть использован для преобразования NFA в регулярное выражение (размер которого, как правило, экспоненциален во входном автомате).

NFA были обобщены несколькими способами, например, недетерминированные конечные автоматы с ε-движениями, конечные преобразователи , магазинные автоматы , чередующиеся автоматы , ω-автоматы и вероятностные автоматы . Помимо DFA, другими известными особыми случаями NFA являются однозначные конечные автоматы (UFA) и самопроверяющиеся конечные автоматы (SVFA).

Неформальное знакомство

Существует по крайней мере два способа описания поведения NFA, и оба они эквивалентны. Первый способ использует недетерминизм в названии NFA. Для каждого входного символа NFA переходит в новое состояние до тех пор, пока все входные символы не будут потреблены. На каждом шаге автомат недетерминированно «выбирает» один из применимых переходов. Если существует по крайней мере один «счастливый запуск», т. е. некоторая последовательность выборов, приводящая к принимающему состоянию после полного потребления ввода, он принимается. В противном случае, т. е. если никакая последовательность выборов вообще не может потребить весь ввод [3] и привести к принимающему состоянию, ввод отклоняется. [4] : 19  [5] : 319 

Во втором случае NFA потребляет строку входных символов, один за другим. На каждом шаге, когда применимы два или более переходов, он «клонирует» себя в соответствующее количество копий, каждая из которых следует за другим переходом. Если ни один переход не применим, текущая копия находится в тупике и «умирает». Если после потребления полного ввода любая из копий находится в состоянии принятия, ввод принимается, в противном случае он отклоняется. [4] : 19–20  [6] : 48  [7] : 56 

Формальное определение

Более элементарное введение в формальное определение см. в статье Теория автоматов .

Автомат

NFA формально представлен 5- кортежем , состоящим из

Здесь обозначает множество степеней .

Распознаваемый язык

При наличии НКА его распознаваемый язык обозначается как и определяется как набор всех строк в алфавите , которые принимаются .

В общих чертах соответствующие приведенным выше неформальным объяснениям, существуют несколько эквивалентных формальных определений строки, принимаемой :

На словах первое условие говорит, что машина начинает работу в начальном состоянии . Второе условие говорит, что при наличии каждого символа строки машина будет переходить из состояния в состояние в соответствии с функцией перехода . Последнее условие говорит, что машина принимает , если последний ввод заставляет машину остановиться в одном из принимающих состояний. Для того, чтобы быть принятым , не требуется, чтобы каждая последовательность состояний заканчивалась принимающим состоянием, достаточно, если это так. В противном случае, т. е . если вообще невозможно перейти из в состояние из , следуя , говорят, что автомат отвергает строку. Набор строк принимает — это язык, распознаваемый , и этот язык обозначается . [5] : 320  [6] : 54 
В словах, это множество всех состояний, достижимых из состояния путем потребления строки . Строка принимается, если некоторое принимающее состояние в может быть достигнуто из начального состояния путем потребления . [4] : 21  [7] : 59 

Начальное состояние

Приведенное выше определение автомата использует единственное начальное состояние , что не является необходимым. Иногда НКА определяются с помощью набора начальных состояний. Существует простая конструкция, которая переводит НКА с несколькими начальными состояниями в НКА с одним начальным состоянием, что обеспечивает удобную нотацию.

Пример

Следующий автомат с двоичным алфавитом определяет, заканчивается ли входной сигнал цифрой 1. Пусть , где функция перехода может быть определена с помощью этой таблицы переходов состояний (см. верхний левый рисунок):

Поскольку множество содержит более одного состояния, является недетерминированным. Язык может быть описан регулярным языком, заданным регулярным выражением . (0|1)*1

Все возможные последовательности состояний для входной строки "1011" показаны на нижнем рисунке. Строка принимается, поскольку одна последовательность состояний удовлетворяет вышеприведенному определению; неважно, что другие последовательности не удовлетворяют этому определению. Рисунок можно интерпретировать несколькими способами:

Возможность прочтения одной и той же картинки двумя способами также указывает на эквивалентность обоих приведенных выше объяснений.

Напротив, строка «10» отклоняется (все возможные последовательности состояний для этого ввода показаны на верхнем правом рисунке), поскольку нет способа достичь единственного принимающего состояния, , путем считывания конечного символа 0. Хотя может быть достигнуто после потребления начальной «1», это не означает, что ввод «10» принят; скорее, это означает, что будет принята входная строка «1».

Эквивалентность DFA

Детерминированный конечный автомат (DFA) можно рассматривать как особый вид NFA, в котором для каждого состояния и символа функция перехода имеет ровно одно состояние. Таким образом, ясно, что каждый формальный язык , который может быть распознан DFA, может быть распознан NFA.

Наоборот, для каждого NFA существует DFA, такой, что он распознает тот же формальный язык. DFA может быть построен с использованием конструкции powerset .

Этот результат показывает, что NFA, несмотря на их дополнительную гибкость, не способны распознавать языки, которые не могут быть распознаны некоторыми DFA. Это также важно на практике для преобразования более простых в построении NFA в более эффективно исполняемые DFA. Однако, если NFA имеет n состояний, результирующий DFA может иметь до 2 n состояний, что иногда делает построение непрактичным для больших NFA.

NFA с ε-ходами

Недетерминированный конечный автомат с ε-ходами (NFA-ε) является дальнейшим обобщением NFA. В этом типе автомата функция перехода дополнительно определена на пустой строке ε. Переход без потребления входного символа называется ε-переходом и представлен на диаграммах состояний стрелкой с надписью «ε». ε-переходы предоставляют удобный способ моделирования систем, текущие состояния которых точно не известны: т. е. если мы моделируем систему и неясно, должно ли текущее состояние (после обработки некоторой входной строки) быть q или q', то мы можем добавить ε-переход между этими двумя состояниями, тем самым помещая автомат в оба состояния одновременно.

Формальное определение

NFA формально представлен 5- кортежем , состоящим из

Здесь обозначает множество степеней , а обозначает пустую строку.

ε-замыкание состояния или множества состояний

Для состояния пусть обозначает множество состояний, достижимых из которых, следуя ε-переходам в функции перехода , т.е. если существует последовательность состояний такая, что

известно как эпсилон-замыкание (также ε-замыкание ) .

ε-замыкание множества состояний НКА определяется как множество состояний, достижимых из любого состояния в следующих ε-переходах. Формально, для , определим .

Расширенная функция перехода

Подобно NFA без ε-ходов, функция перехода NFA-ε может быть расширена до строк. Неформально, обозначает множество всех состояний, которых автомат мог достичь при запуске в состоянии и чтении строки. Функция может быть определена рекурсивно следующим образом.

Неформально: Чтение пустой строки может перевести автомат из состояния в любое состояние эпсилон-замыкания
Неформально: чтение строки может перевести автомат из состояния в любое состояние в рекурсивно вычисленном множестве ; после этого чтение символа может перевести его из в любое состояние в эпсилон-замыкании

Говорят, что автомат принимает строку, если

то есть, если чтение может перевести автомат из его начального состояния в некоторое принимающее состояние в [4] : ​​25 

Пример

Диаграмма состояний для M

Пусть будет NFA-ε с двоичным алфавитом, который определяет, содержит ли вход четное количество 0 или четное количество 1. Обратите внимание, что 0 вхождений также является четным количеством вхождений.

В формальной записи пусть отношение перехода можно определить с помощью следующей таблицы переходов состояний :

можно рассматривать как объединение двух DFA : одного с состояниями и другого с состояниями . Язык может быть описан регулярным языком, заданным этим регулярным выражением . Мы определяем с помощью ε-ходов, но можем быть определены без использования ε-ходов.

Эквивалентность NFA

Чтобы показать, что NFA-ε эквивалентен NFA, сначала отметим, что NFA является частным случаем NFA-ε, поэтому остается показать, что для каждого NFA-ε существует эквивалентный NFA.

Для данного NFA с ходами эпсилон определите NFA , где

и

для каждого состояния и каждого символа с использованием расширенной функции перехода, определенной выше.

Необходимо различать функции перехода и , а именно и и их расширения до строк и соответственно. По построению не имеет ε-переходов.

Можно доказать, что для каждой строки индукцией по длине

На основании этого можно показать, что тогда и только тогда, когда для каждой строки

От и нам еще предстоит показать направление " ".
  • Если содержит состояние в , то содержит то же самое состояние, которое лежит в .
  • Если содержит и , то также содержит состояние, а именно:
  • Если содержит и , но тогда существует состояние в , и то же самое состояние должно быть в [4] : 26–27 

Поскольку NFA эквивалентен DFA, NFA-ε также эквивалентен DFA.

Свойства закрытия

Составной НКА, принимающий объединение языков некоторых заданных НКА N ( s ) и N ( t ) . Для входной строки w в объединении языков составной автомат следует ε-переходу из q в начальное состояние (левый цветной круг) соответствующего подавтомата — N ( s ) или N ( t ) — который, следуя w , может достичь принимающего состояния (правый цветной круг); оттуда состояние f может быть достигнуто другим ε-переходом. Из-за ε-переходов составной НКА является собственно недетерминированным, даже если и N ( s ), и N ( t ) были ДКА; наоборот, построение ДКА для языка объединения (даже из двух ДКА) намного сложнее.

Набор языков, распознаваемых НКА, замыкается при следующих операциях. Эти операции замыкания используются в алгоритме построения Томпсона , который создает НКА из любого регулярного выражения . Их также можно использовать для доказательства того, что НКА распознают именно регулярные языки .

Поскольку НКА эквивалентны недетерминированному конечному автомату с ε-движениями (НКА-ε), указанные выше замыкания доказываются с использованием свойств замыкания НКА-ε.

Характеристики

Машина запускается в указанном начальном состоянии и считывает строку символов из своего алфавита . Автомат использует функцию перехода состояний Δ для определения следующего состояния с использованием текущего состояния и только что прочитанного символа или пустой строки. Однако «следующее состояние NFA зависит не только от текущего входного события, но и от произвольного числа последующих входных событий. Пока эти последующие события не произойдут, невозможно определить, в каком состоянии находится машина». [8] Если, когда автомат закончил чтение, он находится в принимающем состоянии, говорят, что NFA принимает строку, в противном случае говорят, что он отклоняет строку.

Набор всех строк, принимаемых NFA, — это язык, принимаемый NFA. Этот язык — обычный язык .

Для каждого NFA можно найти детерминированный конечный автомат (DFA), который принимает тот же язык. Следовательно, можно преобразовать существующий NFA в DFA с целью реализации (возможно) более простой машины. Это можно сделать с помощью конструкции powerset , что может привести к экспоненциальному росту числа необходимых состояний. Для формального доказательства конструкции powerset, пожалуйста, см. статью о конструкции Powerset .

Выполнение

Существует много способов реализации NFA:

Сложность

Применение НФА

NFA и DFA эквивалентны в том смысле, что если язык распознаётся NFA, он также распознаётся DFA и наоборот. Установление такой эквивалентности важно и полезно. Это полезно, потому что построение NFA для распознавания данного языка иногда намного проще, чем построение DFA для этого языка. Это важно, потому что NFA можно использовать для уменьшения сложности математической работы, необходимой для установления многих важных свойств в теории вычислений . Например, гораздо проще доказать свойства замыкания регулярных языков с помощью NFA, чем DFA.

Смотрите также

Примечания

  1. ^ Мартин, Джон (2010). Введение в языки и теорию вычислений . McGraw Hill. стр. 108. ISBN 978-0071289429.
  2. ^ Рабин, МО; Скотт, Д. (апрель 1959 г.). «Конечные автоматы и проблемы их принятия решений». IBM Journal of Research and Development . 3 (2): 114–125. doi :10.1147/rd.32.0114.
  3. ^ Последовательность выбора может привести к «тупику», где для текущего входного символа не применим ни один переход; в этом случае она считается неудачной.
  4. ^ abcde Джон Э. Хопкрофт и Джеффри Д. Ульман (1979). Введение в теорию автоматов, языки и вычисления. Reading/MA: Addison-Wesley. ISBN 0-201-02988-X.
  5. ^ ab Альфред В. Ахо и Джон Э. Хопкрофт и Джеффри Д. Ульман (1974). Проектирование и анализ компьютерных алгоритмов . Reading/MA: Addison-Wesley. ISBN 0-201-00029-6.
  6. ^ ab Майкл Сипсер (1997). Введение в теорию вычислений. Бостон/Массачусетс: PWS Publishing Co. ISBN 0-534-94728-X.
  7. ^ abc Джон Э. Хопкрофт и Раджив Мотвани и Джеффри Д. Ульман (2003). Введение в теорию автоматов, языки и вычисления (PDF) . Upper Saddle River/NJ: Addison Wesley. ISBN 0-201-44124-1.
  8. ^ FOLDOC Бесплатный онлайн-словарь по вычислительной технике, Конечный автомат
  9. Крис Калабро (27 февраля 2005 г.). «Разрушение NFA и DFA» (PDF) . cseweb.ucsd.edu . Проверено 6 марта 2023 г.
  10. ^ Allan, C., Avgustinov, P., Christensen, AS, Hendren, L., Kuzins, S., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G. и Tibble, J. 2005. Добавление сопоставления трассировки со свободными переменными в AspectJ Архивировано 18 сентября 2009 г. в Wayback Machine . В трудах 20-й ежегодной конференции ACM SIGPLAN по объектно-ориентированному программированию, системам, языкам и приложениям (Сан-Диего, Калифорния, США, 16–20 октября 2005 г.). OOPSLA '05. ACM, Нью-Йорк, штат Нью-Йорк, 345-364.
  11. ^ Исторически показано в: Meyer, AR; Stockmeyer, LJ (1972-10-25). "Проблема эквивалентности для регулярных выражений с возведением в квадрат требует экспоненциального пространства". Труды 13-го ежегодного симпозиума по теории коммутации и автоматов (SWAT) . США: IEEE Computer Society: 125–129. doi :10.1109/SWAT.1972.29.Для современного представления см. [1]
  12. ^ Альварес, Карме; Дженнер, Биргит (1993-01-04). "Очень сложный класс подсчета логарифмического пространства". Теоретическая информатика . 107 (1): 3–30. doi :10.1016/0304-3975(93)90252-O. ISSN  0304-3975.

Ссылки