NFA с экспоненциальным числом состояний при обнаружении

10

Как я могу построить пример DFA, который имеет состояний, где эквивалентный NFA имеет состояний. Очевидно, набор состояний DFA должен содержать все подмножества набора состояний NFA, но я не знаю, с чего начать. Любые предложения, чтобы поставить меня на правильный путь?2nn

saadtaame
источник
Этот вопрос несколько неясен. В общем, существует бесконечно много эквивалентных DFA для любого данного регулярного языка и бесконечно много эквивалентных NFA для любого данного регулярного языка. Если вам нужны минимальные DFA с 2n состояниями, это не всегда возможно, поскольку разные NFA могут распознавать один и тот же язык и иметь разное количество состояний, но соответствовать одному и тому же минимальному DFA. Если, кроме того, вы хотите рассмотреть только «минимальные» НФА, это становится несколько интереснее ...
Patrick87
2
Патрик, я думаю, что OP означает пример, где минимальный DFA экспоненциально больше, чем минимальный NFA.
Юваль Фильмус
@ Patrick87 Я не ищу алгоритм. Все, что я хочу, это пример пары машин: DFA с 2n состояниями и NFA с n состояниями, принимающими один и тот же язык.
saadtaame
@saadtaame: Это тривиально: возьмите любой DFA и добавьте достаточно состояний, чтобы достичь 2n . Интересным примером являются те, где минимальный эквивалент DFA имеет столько же состояний.
Рафаэль
1
Обратите внимание, что в статье Википедии о минимизации DFA приведены подходящие примеры (хотя вы должны сами разобраться с небольшим NFA).
Рафаэль

Ответы:

18

Стандартным примером является язык всех слов в алфавите размера которые не содержат все разные буквы. Существует NFA, принимающий с состояниями (или состояниями, если вы разрешаете несколько начальных состояний): сначала угадать отсутствующую букву , затем перейдите (с -move) в принимающее состояние с помощью собственных циклов для всех , кроме букв .A n L n + 1 n a ϵ ALAnLn+1naϵA

Любой DFA для требует как минимум состояний. Это можно увидеть с помощью теоремы Майхилла-Нероде. Пусть - два разных подмножества слов и которые содержат все и только буквы в соответственно. Без ограничения общности предположим, что , и пусть . Тогда , а .2 n S 1 , S 2 A w ( S 1 ) , w ( S 2 ) SL2nS1,S2Aw(S1),w(S2) a S 1S 2 w = w ( A - a ) w ( S 1 ) w L w ( S 2 ) w LS1,S2aS1S2w=w(Aa)w(S1)wLw(S2)wL

Юваль Фильмус
источник
10

это упражнение в книге Марка В. Лоусона "Университет конечных автоматов", Эдинбург, стр. 68 "Конечные автоматы":

Пусть . Покажите, что язык может быть распознан недетерминированным автоматом с состояниями. Покажите, что любой детерминированный автомат, который распознает этот язык, должен иметь как минимум состояний. Этот пример показывает, что экспоненциальный рост числа состояний при переходе от недетерминированного автомата к соответствующему детерминированному автомату иногда неизбежен.( 0 + 1 ) 1 ( 0 + 1 ) n - 1 n + 1 2 nn1(0+1)1(0+1)n1n+12n

МК Дадсетани
источник
10

Я собираюсь догадаться, что вы имеете в виду, что оптимальный DFA имеет состояний. Может быть, это не даст вам состояний, но это .2 n Ω ( 2 n )2n2nΩ(2n)

Из «Сложности общения» Кушилевица и Нисана в упражнении 12.6:

«Для некоторого постоянного [неотрицательного целого числа] рассмотрим (конечный) язык ."L c = { w w w { 0 , 1 } c }cLc={www{0,1}c}

и книга продолжает просить вас доказать, что вы можете найти со-NFA, распознающий который использует состояния а также что вы не можете сделать лучше, чем состояния для DFA. O ( c ) Ω ( 2 c )LcO(c)Ω(2c)

Тимоти Сан
источник
Кроме того, доказательство второй части «требует» сложности общения, так что это может не подходить для ваших целей.
Тимоти Сан
Спасибо за ответ! Что вы подразумеваете под со-NFA?
saadtaame
По сути, в определении NFA поменяйте «принятие» на «отклонение». То есть, если ни один из возможных путей не приводит к отклоняющему состоянию, вы принимаете, в противном случае вы отклоняете.
Тимоти Сан
На самом деле, нижняя граница довольно легко вытекает из Myhill-Nerode. (На самом деле, вы можете получить что-то вроде .) Но мой со-NFA использует состояния . ( с + 1 ) 2 с Θ ( с 2 )2c(c+1)2cΘ(c2)
Юваль Фильмус
Конечные языки несколько скучны в этом отношении. Смотрите также здесь .
Рафаэль
9

Это поздний ответ, но, видимо, никто не дал оптимального решения. Возьмем , et , с Этот НФА на Двухбуквенный алфавит имеет состояний, только одно начальное и одно конечное состояния, а его эквивалентный минимальный DFA имеет состояний.A={a,b}Qn={0,1,,n1}An=(Qn,A,En,{0},{0})n 2 n

En={(i,a,i+1)0in1}{(n1,a,0)}{(i,b,i)1in1}{(i,b,0)1in1}}
n2n
J.-E. Штырь
источник
3
Очень умный! Язык, принимаемый этим автоматом, , где состоит из всех слов, содержащих букву не более раз. W n - 1 a n - 1(an+aWn1b)Wn1an1
Юваль Фильмус
2
@ yuval-filmus Этот пример не мой. Я хотел дать ссылку, но на данный момент я не помню, где я это видел.
Ж.-Е.