Determinizacja automatu skończonego

Z testwiki
Wersja z dnia 22:55, 4 sie 2019 autorstwa imported>Beno (WP:SK+Bn)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Determinizacja automatu skończonego – proces tworzenia deterministycznego automatu skończonego (DAS) z niedeterministycznego automatu skończonego (NAS). Transformacja taka jest zawsze możliwa i otrzymany w jej procesie automat akceptuje dokładnie ten sam język, co automat wejściowy. Jakkolwiek, gdy NAS ma n stanów, wynikowy DAS może mieć do 2n stanów, wykładniczo więcej, co czyni proces niepraktycznym dla dużych NAS.

Opis metody

Determinizacja niedeterministycznego automatu skończonego N polega na konstrukcji deterministycznego automatu D, który będzie symulował działanie N. Automat D po każdym przejściu pamięta zbiór wszystkich stanów, które N mógłby osiągnąć w danym kroku. Jeżeli po zakończeniu działania ten zbiór zawiera jakikolwiek stan akceptujący, przeczytane słowo jest akceptowane. Stanami automatu D stają się więc zbiory stanów N.

Formalna konstrukcja

Niech N=(QN,fN,q0,FN) nad alfabetem Σ będzie automatem niedeterministycznym o zbiorze stanów QN, funkcji przejść fN:Σ𝒫(QN), stanie początkowym q0 i zbiorze stanów akceptujących FN. Wtedy automat D=(QD,fD,{q0},FD) zdefiniowany w następujący sposób:

  • QD=𝒫(QN)
  • fD:QD×Σ(S,a)sSfN(s,a)QD
  • FD={SQD:SFN}

jest deterministyczny i akceptuje ten sam język co N.

Przykład

NAS
NAS

Dany jest NAS:

  • Sn={A,B,C}
  • n={0,1}
  • sn=A
  • An={C}

Szablon:Clear

DAS
DAS

Odpowiadający mu DAS będzie miał 2|Sn|=23=8 stanów:

  • Sd0={α,β,γ,αβ,αγ,βγ,αβγ,ω}
α odpowiada stanowi A, β stanowi B, a γ stanowi C
stan αβ będzie osiągany na przykład, gdy ze stanu A dla 0 na wejściu odpowiada jednocześnie przejście A→A i A→B, inaczej: A × 0 → {A,B}
stan ω może być osiągnięty gdy dla pewnego stanu nie przewidziano przejścia dla którejś z liter z alfabetu wejściowego
  • d0={0,1}
alfabet wejściowy nie ulega zmianie
  • sd0
  • Ad0={γ,αγ,βγ,αβγ}
akceptujące są stany w których występuje γ odpowiadająca akceptującemu stanowi C

Szablon:Clear

DAS
DAS

Ostatni etap polega na usunięciu stanów, których nie można osiągnąć za pomocą żadnej sekwencji liter z alfabetu wejściowego. Należy w tym celu zacząć od stanu początkowego sd0 i oznaczać kolejne stany do których istnieje ścieżka. Ostatecznie otrzymujemy:

  • Sd={α,αβ,βγ,ω}
  • d={0,1}
  • sd
  • Ad={βγ}

Bibliografia