3. Automaty skończone

3.2. Automaty skończone

Automaty skończone są abstrakcyjnymi modelami rzeczywistych systemów cyfrowych.

Automat skończony lub dokładniej deterministyczny automat skończony (DAS) to piątka uporządkowana \((Q, \Sigma, \delta, q_0, F)\), gdzie \(Q\) - jest zbiorem stanów, \(\Sigma\) - alfabetem wejściowym, \(\delta:Q\times\Sigma\rightarrow Q\) - funkcją przejść automatu, \(q_0\in F\) - tzw. stanem początkowym a \(F\) – zbiorem stanów końcowych.

Stan automatu umożliwia pamiętanie historii wejścia tzn. stan w chwili bieżącej. Ogólnie rzecz biorąc zależy od słowa podanego na wejście w chwilach poprzednich.

Mówimy, że automat skończony akceptuje słowo pojawiające się na wejściu automatu, jeśli ciąg przejść ze stanu do stanu odpowiadający literom słowa wejściowego prowadzi od stanu początkowego \(q_0\) do jakiegoś stanu \(q\) akceptowalnego tzn takiego że \(q\in F\).

Automat skończony wyobrażamy sobie jako układ o skończonej liczbie stanów, z jednym wejściem, który znajduje się w pewnym stanie \(q\) i czyta ciąg symboli z alfabetu \(\Sigma\), czyli czyta słowo nad alfabetem \(\Sigma\) podane na wejście. Układ działa w dyskretnych chwilach, które dla uproszczenia utożsamiamy z liczbami naturalnymi. W każdej chwili \(n\in N\) automat może odczytać tylko jedną literę słowa \(a_n \in \Sigma\) czyta ją i zmienia stan ze stanu \(q_{n-1}\) zgodnie z funkcją przejścia na \(\tilde{\delta}(q_{n-1},a_n)=q_n\) po czym automat staje i czeka na następną chwilę. W kolejnych chwilach pojawiają się więc na wejściu litery \(a_1,a_2,...,a_n\in\Sigma\) i następują zmiany stanu. Jeśli \(\tilde{\delta}(q_{n-1},a_n)=q_n\in F\) tzn. dotarliśmy do stanu akceptującego to uważamy, że automat zaakceptował słowo wejściowe \(a_1a_2...a_n\) dotychczas podane na wejście automatu.

Jeśli mamy funkcję przejścia \(\delta:\Sigma\times Q\rightarrow Q\) to w naturalny sposób można ją rozszerzyć do funkcji \(a\in\Sigma\) definiując \(\tilde{\delta}\) następująco:

  • \(\tilde{\delta}(q,\varepsilon)=q\) dla każdego \(q\in Q\)
  • \(\tilde{\delta}(q,wa)=\delta(\tilde{\delta}(q,w),a)\) dla każdego \(q\in Q\), dla każdego \(a\in\Sigma\) i dla każdego słowa \(w\) nad alfabetem \(\Sigma\)

Język akceptowany przez automat skończony \(M=(Q,\Sigma,S,\delta,q_0,F)\) to z definicji zbiór \(L(M)\overset{df}{=} \{x\in\Sigma^*; \tilde{\delta}(q_0,x)\in F\}\subseteq\Sigma^*\). Język \(L\subseteq\Sigma^*\) nazywamy językiem regularnym, jeśli jest akceptowany przez jakiś automat skończony \(M=(Q,\Sigma,S,\delta,q_0,F)\)

Niedeterministyczny automat skończony to piątka uporządkowana \((Q,\Sigma,\delta,q_0,F)\), gdzie \(Q\) jest zbiorem stanów automatu, \(\Sigma\) alfabetem wejściowym, \(q_0\in F\) - tzw. stanem początkowym, \(F\) - zbiorem stanów końcowych a \(\tilde{\delta}:Q\times\Sigma\rightarrow 2^Q\) - funkcją przejść automatu niedeterministycznego. Przypominamy, że symbolem \(2^Q\) oznaczamy zbiór wszystkich podzbiorów zbioru \(Q\).

Zbiór \(\delta:(q,a)\subseteq Q\) jest zbiorem wszystkich stanów do których możliwe jest przejście ze stanu \(q\) pod wpływem litery \(a\) podanej na wejście automatu.

Zauważmy, że zdefiniowane wyżej automaty są automatami bez wyjścia. Ponieważ w praktyce najczęściej mamy do czynienia z systemami cyfrowymi z wyjściem, dlatego też wprowadza się definicje automatów skończonych z wyjściem.

Automat skończony z wyjściem to szóstka uporządkowana \((Q,\Sigma,Y,\delta,\lambda,q_0)\), gdzie \(Q, \Sigma, Y\) są alfabetami, \(\delta\) i \(\lambda\) są funkcjami oraz \(q_0\in S\). \(\Sigma\) to alfabet wejściowy, \(Y\) alfabet wyjściowy a \(Q\) jest tzw. zbiorem stanów. Funkcja \(\delta:Q\times\Sigma\rightarrow Q\) nosi nazwę funkcji przejść, funkcja \(\lambda:Q\rightarrow Y\) nazywa się funkcją wyjść, a \(q_0\in S\) jest tzw. stanem początkowym. Tak zdefiniowany automat nazywa się automatem Moore’a.

Jeśli funkcja \(\lambda\) jest funkcją bezpośrednio zależną od wejścia tzn. \(\lambda:Q\times\Sigma\rightarrow Y\), to taką szóstkę uporządkowaną \((X,Y,S,\delta,\lambda,q_0)\) nazywamy automatem Mealy'ego.

Automat skończony z wyjściem wyobrażamy sobie jako układ o skończonej liczbie stanów, z jednym wejściem i jednym wyjściem, który znajduje się w pewnym stanie \(q\) i czyta ciąg symboli \(a_1a_2...a_n\) z alfabetu \(\Sigma\) czyli czyta słowo nad alfabetem \(\Sigma\) podane na wejście. Układ działa w dyskretnych chwilach, które dla uproszczenia utożsamiamy z liczbami naturalnymi 1,2,3..... W każdej chwili \(n\in N\) automat może odczytać tylko jedną literę słowa \(a_n\in\Sigma\) czyta ją i zmienia stan ze stanu \(q_{n-1}\) zgodnie z funkcją przejścia na \(\tilde{\delta}(q_{n-1},a_n)=q_n\) i wyprowadza na wyjście literę \(\lambda(q_n)\) w przypadku automatu Moore’a lub \(\lambda(q_n,a_n)=b_n\) w przypadku automatu Mealy’ego po czym automat staje i czeka na następną chwilę. W kolejnych chwilach pojawiają się więc na wejściu litery \(a_1,a_2,...,a_n\in\Sigma\), na wyjściu litery \(b_1,b_2,...,b_n\in Y\) i następują zmiany stanu. Automaty Moore’a i Mealy’ego są więc urządzeniami do przetwarzania słów.

Układ sekwencyjny to układ elektroniczny realizujący automat skończony.

Rys. 2. Przetwarzanie słów przez automat skończony bez wyjścia

 

Rys. 3. Przetwarzanie słów przez automat skończony z wyjściem

 

Rys. 4. Schemat blokowy układu automat skończony z wyjściem a) automat Moore’a, b) automat Mealy’ego

 

Rys. 5. Struktura uniwersalna automatu Moore’a z kodowaniem binarnym symboli wejściowych, wyjściowych i stanów; rejestr stanu jest rejestrem r bitowym

 

Rys. 6. Struktura uniwersalna automatu Mealy’ego z kodowaniem binarnym symboli wejściowych, wyjściowych i stanów

 

Opis automatu grafem. Z każdym automatem skończonym wiążemy diagram przejść lub dokładniej graf automatu. Jest to graf skierowany w którym wierzchołki grafu odpowiadają stanom automatu Jeśli w automacie istnieje przejście ze stanu \(q_1\in Q\) do stanu \(q_2\in Q\) przy wejściu \(a\in\Sigma\) to diagram zawiera gałąź prowadzącą ze stanu \(q_1\in Q\) do stanu \(q_2\in Q\) i opatrzoną etykietą \(a\in\Sigma\).

Rys.7. Opis automatu grafem. Z każdym automatem skończonym wiążemy diagram przejść czyli graf skierowany opisujący działanie automatu

Niech \(Q=\{p,r,s,t\}\), \(\Sigma=\{0,1\}\), stan początkowy \(q_0=s\), \(F=\{r\}\). Funkcja przejść opisana jest równościami:

\(\delta(p,0)=p\)
\(\delta(p,1)=r\)
\(\delta(r,0)=r\)
\(\delta(r,1)=r\)
\(\delta(s,1)=t\)
\(\delta(s,0)=p\)
\(\delta(t,0)=r\)
\(\delta(t,1)=p\)

Graf opisujący ten automat pokazany jest na Rys.7.