Sunteți pe pagina 1din 6

LIMBAJE FORMALE ȘI AUTOMATE

Curs 4

Automate finite deterministe


Un automat finit reprezintă un model abstract de mașină de calcul ce lucrează în pași discreți.

Observație: Automatul poate fi văzut ca un black blox (cutie neagră) ce primește o intrare, dă ceva
la ieșire și are în interiorul său o stare.

În general, automatele pot fi:


 fără memorie: automatele finite (AF), întâlnite și sub numele de FSM (finite state machine):
- deterministe (AFD);
- nedeterministe (AFN);
- nedeterministe cu tranziții ε (AFN-ε).
 cu memorie: automatele cu stivă (AS):
- deterministe (ASD);
- nedeterministe (ASN).

Observație: Pentru un automat finit determinist, știm clar în ce stare va ajunge indiferent de intrare
sau de starea curentă. Cu alte cuvinte, AFD-ul, din orice stare poate trece într-o singură altă stare
pentru un anumit simbol care indică tranziția.

Funcționarea unui AFD:


 acesta citește pe rând câte un simbol din șirul de intrare începând de la stânga;
 inițial, înainte de a citi, AFD-ul se află într-o stare specială numită stare de start (inițială);
 după ce citește simbolul, face tranziția corespunzătoare simbolului primit;
 la final, după ce s-au terminat simbolurile, dacă AFD-ul ajunge într-o stare:
- acceptoare, răspunsul este DA (șirul citit aparține limbajului descris de AFD);
- neacceptoare, răspunsul este NU ( șirul citit nu aparține limbajului descris de AFD).

Ca obiect matematic, un automat finit determinist este un 5-uplu format din mai multe elemente:
A = (Q, Σ, δ, q0, F),
unde
 Q este o mulțime finită de stări: Q = {q0, q1, …, qn};
 Σ este o mulțime finită de simboluri de intrare (practic, alfabetul de intrare);
 δ este o funcție de tranziție
δ : Q × Σ → Q, δ(qs, s) = qd, qs ∈ Q, qd ∈ Q, qs este starea de start;

 q0 este starea din care pornește AFD-ul (starea inițială/de start);


 F este mulțimea stărilor acceptoare (finale). Observație: Mulțimea stărilor finale este o
submuțime a tuturor stărilor: F ⊆ Q.

Reprezentarea funcției de tranzitie δ a AFD-ului

 sub formă de graf (diagramă de tranziție) – stările sunt cercuri:

- tranzițiile sunt arce:

- starea de start este marcată printr-o săgeată fără sursă:

Exemplu (Automat care acceptă toate cuvintele care se termină în 1)

Expresia regulată asociată acestui automat este 1*00*1.

Observație (Legătura dintre funcția δ și graful de tranziție)


δ(q0, 0) = q1;
δ(q0, 1) = q0;
δ(q3, 0) = q3;
δ(q3, 1) = q3;

 sub formă de tabel (tabel de tranziție):


Funcția de tranziție extinsă

, ,

Observații:
 Funcția de tranziție extinsă este definită recursiv.
 Aceasta duce o stare și un subșir de intrare într-o altă stare.

Limbajul acceptat de un AFD

Observații:
 Orice limbaj acceptat de un AFD este unul regulat.
 Pentru orice limbaj regulat există un AF care să accepte acel limbaj.
 Modalități de reprezentare a limbajelor: ER (expresii regulate) și AF (autoamte finite).
 Pentru a converti o ER într-un AFD, vom converti acea ER într-un AFN-ε și apoi AFN-ε
într-un AFD. Conversia inversă se face aproape direct și este explicată în cele ce urmează.
Conversia AF → ER

1. Pentru fiecare stare acceptoare q eliminăm, pe rând, toate stările, mai puțin starea q și starea
inițială q0.

2.1. Dacă q0 este stare acceptoare:

2.2. Dacă q0 nu este stare acceptoare:

3. Expresia pentru întreg automatul este reuniunea expresiilor obținute la pasul 2.1 și, respectiv, 2.2.
Cu alte cuvinte, expresia totală va fi
Ertotal = E1 + E2 + … + EK, k – numărul de stări.

Eliminarea unei stări

Observație: Eliminăm prima dată stările neacceptoare.


După eliminarea stării s, toate arcele Rij devin: Rij← Rij + Qi S*Pj.

Observatie: Dacă tranziția (arcul) ij nu există, atunci ER de pe acest arc este vidă: Rij = ∅.

Proprietăți: ∅ + w = w; ∅w = ∅.

Exemplu (Conversie AFD → ER)


1. Eliminăm starea B.

2. Eliminăm starea C.

Expresia regulată obținută după eliminarea stării C este


ED = (R + SU*T)*SU* = (0 + ɛ)*1(0 + 1)(0 + 1)(0 + 1)* = 0*1(0 + 1)(0 + 1)(0 + 1)*

3. Eliminăm starea D.

Expresia regulată obținută după eliminarea stării D este


ED = (R + SU*T)*SU* = 0*1(0+1)

Expresia pentru întreg automatul va fi


ER = EC + ED = 0*1(0 + 1)(0 + 1)(0 + 1)* + 0*1(0+1).

S-ar putea să vă placă și