NFA z wykładniczą liczbą stanów po rozpoznaniu

10

Jak zbudować przykład DFA, który ma stanów, w których równoważny NFA ma n stanów. Oczywiście zestaw stanów DFA powinien zawierać wszystkie podzestawy zestawu stanów NFA, ale nie wiem jak zacząć. Jakieś sugestie, żeby postawić mnie na właściwej drodze?2nn

saadtaame
źródło
To pytanie jest nieco niejasne. Ogólnie rzecz biorąc, istnieje nieskończenie wiele równoważnych DFA dla każdego danego języka regularnego i nieskończenie wiele równoważnych NFA dla dowolnego danego języka regularnego. Jeśli chcesz mieć minimalne DFA z stanami, nie zawsze jest to nawet możliwe, ponieważ różne NFA mogą rozpoznawać ten sam język i mieć różną liczbę stanów, ale odpowiadają temu samemu minimalnemu DFA. Jeśli dodatkowo chcesz wziąć pod uwagę „minimalne” NFA, staje się to nieco bardziej interesujące ...2n
Patrick87,
2
Patrick, myślę, że OP oznacza przykład, w którym minimalna DFA jest wykładniczo większa niż minimalna NFA.
Yuval Filmus
@ Patrick87 Nie szukam algorytmu. Wszystko czego chcę to przykład pary maszyn: DFA z 2n stanami i NFA z n stanami akceptującymi ten sam język.
saadtaame
@saadtaame: To banalne: weź dowolny DFA i dodaj wystarczającą liczbę stanów, aby osiągnąć 2n . Ciekawym przykładem są te, w których minimalna równoważna DFA ma tyle samo stanów.
Raphael
1
Zauważ, że artykuł w Wikipedii na temat minimalizacji DFA zawiera odpowiednie przykłady (chociaż sam musisz dowiedzieć się o małym NFA).
Raphael

Odpowiedzi:

18

Standardowym przykładem jest język wszystkich słów nad alfabetem o rozmiarze , które nie zawierają wszystkich różnych liter. Jest akceptując NFA z stanów (lub stanów, jeśli pozwalają na wielokrotne stany wyjściowe): najpierw odgadnąć list których brakuje, a następnie przejść (z Odsuń) na rzecz zakładu przejmującego stanu z własnym pętli dla wszystkich liter innych niż .LAnLn+1naϵA

Każdy DFA dla wymaga co najmniej stanów. Można to zobaczyć za pomocą twierdzenia Myhill-Nerode. Niech będą dwoma różnymi podzbiorami słów i które zawierają wszystkie i tylko litery odpowiednio w . Bez utraty ogólności załóżmy, że , i niech . Następnie , podczas gdy .L2nS1,S2Aw(S1),w(S2)S1,S2aS1S2w=w(Aa)w(S1)wLw(S2)wL

Yuval Filmus
źródło
10

jest to ćwiczenie z książki „Finite Automata” Mark V. Lawson Heriot-Watt University, Edynburg, strona 68:

Niech . Pokaż, że język może zostać rozpoznany przez niedeterministyczny automat ze stanami . Pokaż, że każdy automat deterministyczny rozpoznający ten język musi mieć co najmniej stany. Ten przykład pokazuje, że wykładniczy wzrost liczby stanów przechodzących od niedeterministycznego automatu do odpowiedniego automatu deterministycznego jest czasami nieunikniony.n1(0+1)1(0+1)n1n+12n

MK Dadsetani
źródło
10

Zgaduję, że masz na myśli, że optymalny DFA ma stanów. Może to nie daje ci stanów, ale jest to .2n2nΩ(2n)

Z „Złożoności komunikacyjnej” Kushilevitza i Nisana w ćwiczeniu 12.6:

„W przypadku niektórych stałych [nieujemnych liczb całkowitych] , rozważ (skończony) język .”cLc={www{0,1}c}

a książka dalej prosi o udowodnienie, że możesz znaleźć współ-NFA rozpoznającego który używa stanów , a także że nie możesz zrobić lepiej niż stany dla DFA.LcO(c)Ω(2c)

Timothy Sun
źródło
Ponadto dowód drugiej części „wymaga” złożoności komunikacji, więc może nie być odpowiedni do twoich celów.
Timothy Sun
Dziękuję za odpowiedź! Co masz na myśli przez co-NFA?
saadtaame
Zasadniczo przełącz „akceptuj” na „odrzucając” w definicji NFA. Oznacza to, że jeśli żadna z możliwych ścieżek nie prowadzi do stanu odrzucenia, akceptujesz, w przeciwnym razie odrzucasz.
Timothy Sun
W rzeczywistości dolna granica dość łatwo wynika z Myhill-Nerode. (W rzeczywistości można uzyskać coś takiego jak .) Ale moje współdziałanie z NFA używa stanów . 2c(c+1)2cΘ(c2)
Yuval Filmus
Skończone języki są pod tym względem nieco nudne. Zobacz także tutaj .
Raphael
9

To późna odpowiedź, ale najwyraźniej nikt nie dał optymalnego rozwiązania. Weź , i , z Ten NFA na dwuliterowy alfabet ma stanów, tylko jeden stan początkowy i jeden końcowy, a jego równoważny minimalny DFA ma stanów.A={a,b}Qn={0,1,,n1}An=(Qn,A,En,{0},{0})

En={(i,a,i+1)0in1}{(n1,a,0)}{(i,b,i)1in1}{(i,b,0)1in1}}
n2n
J.-E. Kołek
źródło
3
Bardzo mądry! Językiem akceptowanym przez ten automat jest , gdzie składa się ze wszystkich słów zawierających literę co najwyżej razy. (an+aWn1b)Wn1an1
Yuval Filmus
2
@ yuval-filmus Ten przykład nie jest mój. Chciałem podać referencje, ale w tej chwili nie pamiętam, gdzie to widziałem.
J.-E.