Determinizacja automatu skończonego: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
ZéroBot (dyskusja | edycje)
m Robot automatycznie zamienia tekst (-{{-}} +{{clear}})
Linia 8: Linia 8:
* s<sub>n</sub>=A
* s<sub>n</sub>=A
* A<sub>n</sub>={C}
* A<sub>n</sub>={C}
{{-}}
{{clear}}


[[Plik:NASdoDASetap2.svg|right|DAS]]
[[Plik:NASdoDASetap2.svg|right|DAS]]
Linia 21: Linia 21:
* A<sub>d0</sub>={γ,αγ,βγ,αβγ}
* A<sub>d0</sub>={γ,αγ,βγ,αβγ}
: akceptujące są stany w których występuje γ odpowiadająca akceptującemu stanowi C
: akceptujące są stany w których występuje γ odpowiadająca akceptującemu stanowi C
{{-}}
{{clear}}


[[Plik:NASdoDASetap3.svg|right|DAS]]
[[Plik:NASdoDASetap3.svg|right|DAS]]

Wersja z 11:02, 4 wrz 2011

Determinizacją automatu skończonego nazywamy 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 (zbiór słów), co automat wejściowy. Jakkolwiek, gdy NAS ma n stanów, wynikowy DAS może mieć do 2^n stanów, wykładniczo więcej, co czyni proces niepraktycznym dla dużych NAS.

Przykład

NAS
NAS

Dany jest NAS:

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


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


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={βγ}