Deterministyczny automat skończony
Z Wikipedii
Deterministyczny automat skończony (ang. Deterministic Finite-state Automaton, DFA) to abstrakcyjna maszyna o skończonej liczbie stanów, która zaczynając w stanie początkowym czyta kolejne symbole pewnego słowa, po przeczytaniu każdego zmieniając swój stan na stan będący wartością funkcji jednego przeczytanego symbolu oraz stanu aktualnego. Jeśli po przeczytaniu całego słowa maszyna znajduje się w którymś ze stanów oznaczonych jako akceptujące (końcowe), słowo należy do języka regularnego, do rozpoznawania którego jest zbudowana.
Deterministyczny automat skończony, podobnie jak inne automaty skończone może być reprezentowany za pomocą tabeli przejść pomiędzy stanami lub diagramu stanów.
[edytuj] Przykład
Zbudujmy na przykład maszynę rozpoznającą takie słowa nad alfabetem binarnym (reprezentujące liczby, przy najbardziej znaczącej z lewej strony), które są podzielne przez 5.
Żeby zbudować tą maszynę skorzystajmy z faktu, że:
- (wartość liczby to ostatnia cyfra plus dwa razy wartość liczby zbudowanej z pozostałych cyfr)
Czyli:
Ale jako że obchodzi nas nie wynik, a jedynie jego podzielność przez 5, możemy wykonywać obliczenia w arytmetyce modulo 5.
Czyli zaczynamy od stanu X0, i po przeczytaniu każdej cyfry ci przechodzimy ze stanu Xj do stanu . Jeśli po przeczytaniu całego słowa jesteśmy w stanie X0, oznacza to, że reszta z dzielenia słowa przez 5 wynosi 0, a więc słowo jest podzielne przez 5:
- stan startowy - X0
- stany akceptujące - tylko X0
[edytuj] Formalna definicja
Deterministyczny automat skończony może zostać jednoznacznie opisany przez przez piątkę (A,Q,q0,F,d), gdzie
- A jest alfabetem
- Q jest zbiorem stanów
- q0 jest wyróżnionym stanem początkowym należącym do Q
- F jest zbiorem stanów akceptujących (końcowych), będącym podzbiorem Q
- d jest funkcją przejścia, przypisującą parze (q,a) nowy stan p, w którym znajdzie się automat po przeczytaniu symbolu a w stanie q.
Funkcja d może być częściowo określona. To znaczy mogą istnieć takie pary (q,a), dla których nie jest określony nowy stan.
W powyższym przykładzie mamy:
- A = {0,1}
- Q = {X0,X1,X2,X3,X4}
- q0 = X0
- F = {X0}
- d:
- d(X0,0) = X0
- d(X0,1) = X1
- d(X1,0) = X2
- d(X1,1) = X3
- d(X2,0) = X4
- d(X2,1) = X0
- d(X3,0) = X1
- d(X3,1) = X2
- d(X4,0) = X3
- d(X4,1) = X4