Determinizacja automatu skończonego
| Ten artykuł należy dopracować zgodnie z zaleceniami edycyjnymi: Brakuje opisu metody, choćby ogólnego. Sam przykład jest niewystarczający i raczej niezbyt szczegółowy.. Po wyeliminowaniu niedoskonałości prosimy usunąć szablon {{Dopracować}} z kodu tego artykułu. |
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.
[edytuj] 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={βγ}