Minimizarea automatului
Prin minimizarea unui automat înțelegem găsirea unui automat echivalent care conține numărul minim posibil de stări. Chiar și un automat care nu conține nicio stare neproductivă poate fi simplificat în continuare.
Exemplu
Să luăm acest automat:
Automatul acceptă doar cuvintele 01 și 11. Este evident că există un automat mai simplu, cu trei stări, care acceptă același limbaj. Stările q1 și q2 pot fi îmbinate într-o singură stare nouă {q1, q2}, iar tranzițiile care duceau în stările q1 sau q2 vor duce în noua stare, la fel și tranzițiile care porneau din q1 și q2. Obținem acest automat:
Acest automat acceptă, în mod evident, același limbaj ca cel anterior și are în plus mai puține stări.
Echivalența stărilor
Fie un automat A = ⟨Q, Σ, δ, q0, F⟩. Definim limbajul stării q ∈ Q, pe care îl notăm L(q), astfel:
Adică schimbăm starea inițială a automatului A din q0 în q și aflăm limbajul acceptat de acest automat. Cu alte cuvinte, în limbajul L(q) se află toate cuvintele w pentru care, în automatul A, ajungem din starea q cu cuvântul w într-o stare finală a automatului. Dacă ne întoarcem la automatul anterior, avem L(q1) = {1}.
Spunem că două stări diferite q1 și q2 sunt echivalente dacă
Ce înseamnă asta? Dacă stările q1, q2 sunt echivalente, atunci, dacă le facem stări inițiale ale automatului, vor genera același limbaj. Cu alte cuvinte: dacă automatul ajunge în configurațiile ⟨q1, w⟩ și ⟨q2, w⟩, atunci trebuie fie să accepte în ambele cazuri, fie să respingă în ambele cazuri.
Dacă ne întoarcem la automatul anterior: stările q1 și q2 sunt echivalente, deoarece, dacă ne aflăm în starea q1, putem accepta cuvântul de intrare doar dacă partea necitită a cuvântului este egală cu 1. La fel, dacă ne aflăm în starea q2.
La minimizarea unui automat este deci vorba despre găsirea stărilor echivalente și eliminarea lor prin îmbinarea într-o singură stare nouă, la fel cum am făcut în exemplul de mai sus.
Cum găsim stările echivalente
Ce stări cu siguranță nu vor fi echivalente? Dacă luăm o stare finală și una nefinală, ele cu siguranță nu vor fi echivalente, deoarece limbajul stării finale este diferit de limbajul stării nefinale – starea finală acceptă cu siguranță cuvântul ε, cea nefinală nu. Vom arăta procedeul direct pe un exemplu. Fie acest automat:
Începem prin a crea două mulțimi de stări
Acum creăm tabelul tranzițiilor și păstrăm informația despre grupele S1 și S2:
Acum modificăm tabelul astfel încât, în loc să scriem direct în ce stări se ajunge pentru un simbol dat, să notăm doar grupa în care trecem. De exemplu, din starea q3 ajungem pentru 0 în starea q5, care este în grupa S2. În loc de q5 scriem deci în tabel S2:
Acum împărțim în continuare ambele grupe. În aceeași grupă punem mereu stările care trec în aceleași grupe pentru toate simbolurile. De exemplu, stările q3 și q6 nu vor fi în aceeași grupă, deoarece nici pentru 0, nici pentru 1 nu merg în aceeași grupă. În schimb, stările q1 și q2 vor fi în aceeași grupă, deoarece ambele stări nu au tranziție pentru 0 și ambele merg pentru 1 în grupa S1. Creăm astfel grupe noi:
În fiecare grupă avem aceleași tranziții. Notăm grupele nou apărute și aflăm din nou în care dintre aceste grupe noi duc stările:
În acest moment am face o nouă împărțire a grupelor. Vedem însă că nu mai putem face nicio împărțire, am obține aceleași grupe – deoarece stările q1 și q2 au, e drept, aceleași tranziții între grupe, dar sunt deja în aceeași grupă și nu mai există nicio altă stare în grupa S4. Algoritmul de căutare a stărilor echivalente s-a încheiat. Din fiecare grupă este suficient să alegem o stare, pe celelalte le ștergem, iar toate tranzițiile care duceau în stările șterse vor duce în singura stare pe care am ales-o.
Putem alege astfel ca noul nostru automat să aibă stările q3, q6, q0, q1, q4, iar stările q2 și q5 să le eliminăm. Toate tranzițiile care duceau în q2 vor duce acum în q1, iar toate tranzițiile care duceau în q5 vor duce în q4:
Procedeul de minimizare a automatului
- Eliminăm stările inaccesibile,
- eliminăm stările neproductive,
- eliminăm stările echivalente.
Surse
Capitole: Stări inaccesibile, Stări neproductive, Minimizarea automatului