Determinizacja automatu skończonego: Różnice pomiędzy wersjami
[wersja przejrzana] | [wersja przejrzana] |
m r2.7.1) (robot dodaje uk:Детермінізація НДСкА |
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
Dany jest NAS:
- Sn={A,B,C}
- ∑n={0,1}
- sn=A
- An={C}
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
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={βγ}