Sunteți pe pagina 1din 190

Capitolul 1

Reprezentarea limbajelor

Teoria limbajelor formale se ocupă cu proprietăţile limbajelor abstracte, în care elementele


sunt considerate ca fiind secvenţe arbitrare de simboluri dintr-o mulţime de simboluri numită
alfabetul limbajului. Spre deosebire de limbajul natural, unde elementele sunt constituite din
cuvinte şi propoziţii, iar problemele principale sunt cele de comunicarea între unul sau mai
mulţi comunicatori, limbajele formale şi problemele legate de ele sunt mai apropiate de clasa
limbajelor de programare, precum şi a legăturii lor cu calculatoarele numerice. Din acest
motiv, un aspect important luat în consideraţie în cadrul teoriei limbajelor formale este acela
al posibilităţii rezolvării algoritmice a diferitelor probleme legate de reprezentarea şi
traducerea limbajelor în calculatoarelor numerice.

Există două metode principale pentru definirea limbajelor abstracte:


• generarea unui limbaj, plecând de la o mulţime de generatori;
• recunoaşterea unui limbaj, prin specificarea unui automat de recunoaştere.
Din acest motiv, pentru principalele categorii de limbaje utilizate, se vor studia ambele
metode de specificare.

În acest capitol se vor defini noţiunile principale legate de limbaje, precum şi de cele două
metode de specificare a limbajelor.

1.1 Alfabet, cuvinte şi limbaje


În acest paragraf se specifică elementele de bază ale noţiunii de limbaj.

1.1.1 Alfabet şi cuvinte


Pentru a defini un limbaj ca o mulţime de şiruri de caractere, trebuie definite noţiunile de
alfabet şi cuvânt.

Definiţia 1.1.
(1) Se numeşte alfabet o mulţine finită şi nevidă, notată în mod uzual cu Σ, ale cărei elemente
se numesc simboluri.
(2) Fiind dat un alfabet Σ, o succesiune de simboluri din Σ se numeşte cuvânt peste Σ, sau şir
sau secvenţă.

Două alfabete foarte uzuale sunt alfabetul latin, format din 26 de litere, precum şi alfabetul
binar, format din mulţimea {0, 1}.

Pentru evitarea confuziilor, simbolurile dintr-un alfabet se vor nota cu litere de la începutul
alfabetului latin, iar cuvintele se vor desemna prin litere de la sfârşitul alfabetului.
Pentru simplificarea descrierii noţiunilor legate de limbaje, în continuare se vor utiliza câteva
notaţii:
• Se numeşte cuvânt vid şi se notează cu ε, o secvenţă care nu conţine nici un simbol;
• Se notează cu Σ+ mulţimea tuturor cuvintelor nevide din alfabetul Σ;
• Se notează cu Σ* mulţimea tuturor cuvintelor din alfabetul Σ:
Σ+ = Σ* ∪ {ε}

Una dintre cele mai uzuale operaţii care se pot aplica asupra cuvintelor (care sunt secvenţe de
simboluri) este operaţia de concatenare. Dacă Σ este un alfabet şi Σ* mulţimea cuvintelor
peste Σ, atunci operaţia de concatenare a două cuvinte peste Σ se notează cu caracterul ‘⋅’ şi
este o aplicaţie definită astfel:
⋅ : Σ *×Σ* → Σ*

De exemplu, dacă x şi y sunt două cuvinte peste Σ, concatenarea lor este tot un cuvânt peste Σ,
notat x⋅y. În cazul în care nu există nici un fel de confuzie, operatorul ‘⋅’ se poate omite, aşa
încât notaţia xy reprezintă în mod uzual concatenarea lui x cu y.

Formal, mulţimea cuvintelor peste un alfabet se poate defini inductiv astfel:

Definţia 1.2. Fie Σ un alfabet.


(1) Cuvântul vid ε este un cuvânt peste Σ;
(2) Dacă x este un cuvânt peste Σ şi a∈Σ un simbol, atunci xa este un cuvânt peste Σ;
(3) y este un cuvânt peste Σ dacă şi numai dacă se poate obţine cu ajutorul regulilor (1) şi (2).

Observaţie. În afară de cuvântul vid, se mai utilizează noţiunea de cuvânt unitar. Un cuvânt
unitar este un cuvânt format dintr-un singur simbol. De multe ori, un cuvânt unitar se
specifică prin simbolul conţinut şi nu trebuie să existe confuzie între utilizarea unui caracter
ca un simbol şi ca un cuvânt. De exemplu, dacă x este un cuvânt şi a un simbol, atunci în
notaţia xa, a reprezintă cuvântul unitar format din caracterul a.

O altă noţiune utilizată este cea de lungime a unui cuvânt. Lungimea unui cuvânt x reprezintă
numărul de simboluri ale cuvântului şi se notează cu |x|. Definirea formală a lungimii unui
cuvât se poate realiza de asemenea într-un mod recursiv:

Definiţia 1.3. Fie Σ un alfabet şi x∈Σ* un cuvânt peste Σ. Lungimea cuvântului x se notează
cu |x| şi este definită astfel:
- |x| = 0, dacă x=ε
- |x| = |y|+1, dacă x=ya, unde y∈Σ* şi a∈Σ

Se observă faptul că definiţia anterioară se aplică în mod recursiv unui cuvânt, prin
contorizarea tuturor simbolurilor acestuia, de la dreapta spre stânga. La ultima aplicare a
relaţiei, cuvântul rămas după înlăturarea simbolurilor este cuvântul vid.

În mod asemănător definiţiei anterioare, se poate defini formal operaţia de concatenare:

Definiţia 1.4. Fie Σ un alfabet şi x,y∈Σ* două cuvinte peste Σ. Concatenarea lui x şi y se
notează x⋅y şi este definită astfel:
- x⋅y = x, dacă x=ε
- x⋅y = (x⋅w)⋅a, dacă x=w⋅a, unde w∈Σ * şi a∈Σ
Notaţie. Dacă a∈Σ, atunci cuvântul a⋅a⋅ … ⋅a, obţinut prin concatenarea de n-1 ori a
simbolului a se notează în mod uzual cu an.

Exemplul 1.1. Dacă Σ = {a}, atunci :


Σ* = {ε , a, a2, …, an , …}
Σ+ = {a, a2, …, an , …}

Deoarece operaţia de concatenare este asociativă, iar cuvântul vid este un element neutru
pentru concatenare (xε = εx = x, pentru orice cuvânt x), mulţimea Σ* formează un monoid
împreună cu compunerea. El se numeşte monoidul liber generat de alfabetul Σ. Neluând în
considerare cuvântul vid, operaţia de concatenare determină un semigrup peste Σ.

Definiţia 1.5. Fie Σ un alfabet, ‘⋅’ operaţia de concatenare peste Σ+ şi ε cuvânul vid.
(1) Semigrupul (Σ+, ⋅) se numeşte semigrup liber peste Σ;
(2) Monoidul (Σ *, ⋅, {ε}) se numeşte monoid liber peste Σ.

Observaţie. Elementele mulţimii Σ joacă rol de generatori pentru semigrupul liber Σ+.

Definiţiile următoare introduc alte câteva notaţii uzuale pentru cuvinte: inversul unui cuvânt,
prefixul şi sufixul al unui cuvânt.

Definiţia 1.6. Fie Σ un alfabet şi x∈Σ*. Inversul cuvântului x se notează cu xR şi reprezintă


şirul de simboluri ale lui x scrise în ordine inversă :
- xR = ε, dacă x=ε;
- xR = ayR, dacă x=ya, unde y∈Σ* şi a∈Σ

Definiţia 1.7. Fie Σ un alfabet şi x, y, cuvinte peste Σ. Atunci x este pentru y :


(1) prefix, dacă y = xu, unde u∈Σ*;
(2) prefix propriu, dacă x este prefix pentru y şi y ≠ x;
(3) sufix, dacă y = ux, unde u∈Σ *;
(4) sufix propriu, dacă x este sufix pentru y şi y ≠ x;

1.1.2 Limbaje

Definiţia 1.8. Se numeşte limbaj peste un alfabet Σ o parte a monoidului liber Σ*.

Deci un limbaj peste un alfabet Σ este o submulţime (nu neapărat proprie) a mulţimii Σ*,
înzestrată cu operaţia de concatenare.

Exemple.
1) Mulţimile Φ şi {ε} sunt două limbaje distincte (primul nu are nici un cuvânt, pe când al
doilea conţine doar cuvântul vid).
2) L = {an | n≥0} = {a}* este un limbaj ale cărui cuvinte conţin zero sau mai multe apariţii
consecutive ale simbolului a.
După cum se poate observa, mulţimea Σ* ce conţine toate cuvintele generate peste alfabetul Σ
poate să fie o mulţime infinită, aşa cum este de exemplu mulţimea {a}*. Această mulţine are
însă o proprietate foarte importantă: ea este numărabilă, după cum se observă din teorema
următoare.

Teorema 1.1. Mulţimea cuvintelor monoidului liber Σ * este numărabilă.


Demonstraţie. Fie aplicaţia ϕ: Σ * → N, definită astfel:
ϕ(ε) = 0
ϕ(ai1ai2 … aik) = i1 + i2*n + … + ik*nk-1,
unde:
n = |Σ| este numărul de simboluri din Σ
i1, i2, …, ik ∈ {1, 2, …, n} şi aij∈Σ.
Vom demonstra că ϕ este o funcţie bijectivă, iar pentru că mulţimea numerelor naturale este
numărabilă, va rezulta faptul că şi mulţimea Σ* este numărabilă.
Să demonstrăm întâi faptul că ϕ este injectivă. Fie x = ai1ai2 … aik, y = bj1bj2 … bjr, aşa
încât ϕ(x) = ϕ(y), adică:
(i1-j1) + (i2-j2)*n + … + (ik-jk)*nk-1 + jk+1*nk + … + jr*nr-1 = 0 (am presupus k<n).
Din ecuaţia anterioară rezultă că i1=j1, … ik=jk, jk+1=0, …, jr=0, adică x = y.
Să demonstrăm acum surjectivitatea lui ϕ. Din definiţia lui ϕ rezultă inegalitatea:
1+n+ … +nk-1 ≤ ϕ(x) ≤ n+n2+ … +nk
Notând ϕ(x) cu m, după câteva transformări, rezultă inegalitatea:
(1) logn((n+m*(n-1))/n) ≤ k ≤ logn((1+m*(n-1))/n)
Notând cu A= logn((n+m*(n-1))/n) şi B= logn((1+m*(n-1))/n), avem următoarele relaţii:
B – A = logn((n+m*(n-1))/(1+m*(n-1))) < logn(n) = 1
Rezultă că lungimea intervalului [A, B] este subunitară, iar pentru că k∈[A, B], din relaţia (1)
se poate determina k în mod unic. Mai mult, din ecuaţia:
ϕ(ai1ai2 … aik) = m
simbolurile ai1, ai2, …, aik se pot determina în mod unic prin determinarea indicilor i1, …, ik,
aşa încât funcţia ϕ este surjectivă.
#

Deoarece un limbaj este în esenţă o mulţime de cuvinte, asupra limbajelor se pot aplica
principalele operaţii aferente mulţimilor. În plus, se poate defini şi operaţia de concatenare a
două limbaje.

Definiţia 1.9. Fie L1 şi L2 două limbaje peste Σ.


(1) Reuniunea limbajelor L1 şi L2 este un limbaj definit astfel:
L1∪L2 = {x | x∈L1 sau x∈L2}
(2) Intersecţia limbajelor L1 şi L2 este un limbaj definit astfel:
L1∩L2 = {x | x∈L1 şi x∈L2}
(3) Diferenţa limbajelor L1 şi L2 este un limbaj definit astfel:
L1−L2 = {x | x∈L1 şi x∉L2}
(4) Complementara limbajului L1 este un limbaj definit astfel:
L1 = Σ*−L1 = {x∈Σ | x∉L1}

Definiţia 1.10. Fie L1 şi L2 două limbaje peste Σ. Se numeşte concatenarea sau produsul
limbajelor L1 şi L2 şi se notează L1L2 limbajul definit astfel:
L1L2 = {xy | x∈L1, y∈L2}
Observaţie. Operaţia de concatenare este distributivă faţă de reuniune:
L1(L2∪L3) = L1L2 ∪L1L3
(L1∪L2)L3 = L1L3 ∪L2L3

Se poate defini în cazul limbajelor ca şi în cazul cuvintelor, un limbaj L ridicat la puterea n. O


definiţie recursivă a acestuia este următoarea:
L0 = {ε}
Ln = LLn-1, pentru n≥1

Definiţia 1.11. Închiderea tranzitivă prin produs a unui limbaj L, numită şi închiderea
pozitivă este un limbaj notat L+ şi definit astfel:
L+ = ∪n≥1 (Ln)
Operaţia de închidere tranzitivă şi reflexivă a limbajului L, numită simplu operaţie de
închiderea este un limbaj notat L* şi definit astfel:
L* = ∪n≥0 (Ln)

Din definiţia anterioară rezulă câteva proprietăţi:


- L* = L+ ∪ {ε}
- L+ = LL* = L*L
- LL* = L*L ∪ L+

Cel mai frecvent utilizat mod prin care se pot face aplicaţii între diferite limbaje este cel dat
de noţiunea de homomorfism. Definirea homomorfismului între limbaje este permisă de
următoarea teoremă.

Teorema 1.2. Fiind dat un alfabet Σ şi un semigrup oarecare S, orice aplicaţie ϕ: Σ → S se


extinde în mod unic la un homomorfism de semigrupuri ϕ1: Σ* → S.
Demonstraţie. Fie x∈Σ*. Definim:
ϕ1(x) = ϕ1(ai1ai2 … ain) := ϕ(ai1)ϕ(ai2)…ϕ(ain)
Se observă faptul că aplicaţia construită este un homomorfism de la Σ* la S. În plus se poate
demonstra că aplicaţia construită este unică.
#

Pe baza teoremei anterioare se pot desprinde câteva observaţii importante.

Observaţii.
1) Fiind date două alfabete Σ 1 şi Σ 2 şi un homomorfism ϕ: Σ1 → Σ2*, acesta se poate extinde
unic la un homomorfism:
ϕ1 : Σ 1 * → Σ 2 *
definit astfel:
ϕ1(ε) = ε,
ϕ1(xa) = ϕ(x)ϕ(a), ∀x∈Σ1*, a∈Σ 1
2) Aplicând homomorfismul ϕ la limbaje, pentru un limbaj L, se poate defini un alt limbaj
ϕ(L) astfel: ϕ(L) = {ϕ(w) | w∈L}

Exemplul 1.2. Dacă, pentru un limbaj L, se doreşte înlocuirea oricărui simbol 0 cu simbolul a
în oricare cuvânt, precum şi înlocuirea lui 1 cu secvenţa bb, se poate defini homomorfismul:
ϕ(0) = a, ϕ(1) = bb
Atunci, pentru limbajul:
L = {0n1n | n≥1}
se obţine limbajul următor:
L1 = ϕ(L) = {anb2n | n≥1}

Nu întotdeauna homomorfismele de limbaje sunt aplicaţii bijective. Din acest motiv, de multe
ori este indicat să se determine inversul unui homomorfism, privit ca o relaţie.

Definiţia 1.12. Dacă ϕ: Σ1 → Σ 2* este un homomorfism, atunci relaţia ϕ-1: Σ 2* → ℘(Σ1*) se


numeşte inversul homomorfismului ϕ dacă este definit astfel :
ϕ-1(y) = {x∈Σ1* | ϕ(x)=y}

Deci, dacă y este un cuvânt peste alfabetul Σ 2, atunci ϕ-1(y) reprezintă mulţimea cuvintelor
peste alfabetul Σ1, care sunt aplicate de ϕ în y.

Observaţie. Dacă L este un limbaj peste Σ2, atunci ϕ-1(L) este un limbaj peste Σ1, care constă
din toate cuvintele care sunt aplicate prin ϕ în cuvinte din L:
ϕ-1(L) = ∪y∈L (ϕ-1(y)) = {x∈Σ1* | ϕ(x)∈L}

Exemple.
(1) Fie ϕ un homomorfism aşa încât ϕ(0)=a şi ϕ(1)= ε. Atunci:
ϕ-1(ε) = 1*
ϕ-1(a) = 1*01*, unde 1*01* reprezintă limbajul {1i01j | i, j≥0}
(2) Dacă ϕ este un homomorfism aşa încât ϕ(0)=a şi ϕ(1)=a. Atunci:
ϕ-1(a) = {0, 1}
ϕ-1(a*) = {0, 1}*

1.2 Gramatici şi limbaje generate


Deoarece un limbaj L peste un alfabet Σ este o submulţime L⊆Σ*, rezultă că L poate fi o
mulţime finită sau infinită de cuvinte peste Σ. În primul caz este posibilă definirea completă a
limbajului prin specificarea tuturor cuvintelor din limbaj, pe când în cazul al doilea acest lucru
nu este posibil.

Este important deci ca specificarea unui limbaj să poată fi realizată într-o manieră finită, altfel
decât prin enumerarea cuvintelor limbajului. Există două metode importante utilizate pentru
definirea finită a limbajelor:
• procedee de recunoaştere a cuvintelor unui limbaj L, care pentru fiecare cuvânt x din
mulţimea Σ*, răspund dacă x aparţine sau nu lui L;
• procedee care permit generarea cuvintelor din limbajul L prin specificarea unor reguli
de formare ale acestora.

Prima metodă utilizează aşa numitele automate de recunoaştere ale cuvintelor, pe când
ultima metodă utilizează un sistem de generare al cuvintelor numit gramatică. Gramaticile
permit ca fiecare cuvânt dintr-un limbaj să poată fi generat cu ajutorul unor metode de
generare numite producţii.

O gramatică este un sistem matematic de definire a limbajelor. Ea utilizează două mulţimi


finite şi disjuncte de simboluri, una conţinând simboluri numite simboluri neterminale şi
desemnată în mod uzual prin litera N, cealaltă conţinând simboluri numite simboluri
terminale şi desemnată prin Σ. Mulţimea simbolurilor terminale reprezintă alfabetul peste
care este definit limbajul, iar mulţimea simbolurilor neterminale este utilizată la generarea
cuvintelor din limbaj.

Cea mai importantă parte a gramaticii este o mulţime finită de reguli de formare a cuvintelor
numite producţii, care este demnată în mod uzual prin litera P.

O producţie este practic o pereche de cuvinte, fiind un element din produsul cartezian:
(N∪Σ)*N(N∪Σ)* × (N∪Σ)*
Cu alte cuvinte, prima componentă conţine cel puţin un simbol neterminal, iar a doua
componentă poate fi orice cuvânt peste alfabetul N∪Σ.

O producţie de forma (α, β) înseamnă faptul că şirul α poate fi înlocuit de şirul β în timpul
operaţiei de generare a unui cuvânt din limbaj. De exemplu, să considerăm că perechea (AB,
CDE) este o producţie. Atunci, dacă α este un cuvânt ce poate fi generat de gramatică şi care
conţine AB ca subşir (partea stângă a producţiei), rezultă că gramatica poate de asemenea să
genereze un alt cuvânt, β, care se obţine din α prin înlocuirea şirului AB cu şirul CDE (partea
dreaptă a producţiei).

O altă notaţie uzuală utilizată în cadrul gramaticilor este cea de derivare. Ea este o noţiune
echivalentă pentru cea de generare. Dacă o gramatică poate genera un cuvânt α, atunci se
spune că α poate fi derivat de gramatica respectivă.

Limbajul generat de o gramatică reprezintă o mulţime de cuvinte formate din simboluri


terminale care pot fi derivate plecând de la un cuvânt special ce este format dintr-un singur
simbol neterminal numit simbol de start şi desmnat în mod uzual prin litera S.

Convenţie. O producţie (α, β) se notează în mod uzual sub forma α→β.

Se poate defini acum în mod formal noţiune a de gramatică.

Definiţia 1.13. O gramatică G este un tuplu:


G = (N, Σ, P, S)
unde:
1) N este mulţimea simbolurilor neterminale
2) Σ este mulţimea simbolurilor terminale, disjunctă de N: N∩Σ=Φ
3) S este un simbol distinct, S∈N, numit simbol de start
4) P este o submulţime:
P ⊆ (N∪Σ)*N(N∪Σ)* × (N∪Σ)*
iar un element (α,β)∈P, scris sub forma α→β se numeşte producţie.

Exemplul 1.3. Fie gramatica:


G = ({A, S}, {0, 1}, P, S)
unde mulţimea producţiilor este:
P: S → 0A1
0A → 00A1
A→ε
Se poate observa faptul că o gramatică defineşte un limbaj într-un mod recursiv. Pentru
aceasta se utilizează o noţiune numită formă propoziţională.

Definiţia 1.14. Fie G = (N, Σ, P, S) o gramatică. Mulţimea formelor propoziţionale ale


gramaticii G se defineşte recursiv astfel :
1) S este o formă propoziţională
2) Dacă αβγ este o formă propoziţională şi β→δ este o producţie din P, atunci αδγ este o
formă propoziţională

Deoarece o formă propoziţională este un cuvânt ce poate conţine atât simboluri terminale, cât
şi simboluri neterminale, se poate defini o noţiune numită propoziţie, care este o formă
propoziţională ce nu conţine decât simboluri terminale.

Definiţia 1.15. Fie G o gramatică. O formă propoziţională a gramaticii G care nu conţine


decât simboluri terminale se numeşte propoziţie generată de G.

Se poate defini acum noţiunea de limbaj generat de o gramatică.

Definiţia 1.16. Fie G o gramatică. Mulţimea tuturor propoziţiilor generate de G se notează


L(G) şi reprezintă limbajul generat de gramatica G.

Se vor introduce acum câteva notaţii uzuale referitoare la gramatici şi limbaje generate de
acestea.

Definiţia 1.17. Fie G = (N, Σ, P, S) o gramatică. Se numeşte derivare directă şi se notează


⇒G o relaţie binară pe mulţimea (N∪Σ)* definită astfel:
dacă αβγ este un cuvânt din (N∪Σ)* şi β→δ o producţie din P, atunci αβγ ⇒G αδγ

Atunci când nu există nici o confuzie asupra gramaticii G, litera respectivă poate fi omisă ca
indice în relaţia de derivare, aşa încât relaţia ⇒G poate fi scrisă simplificat ca ⇒.

Pentru a deriva o propoziţie a limbajului, îm mod uzual nu este suficientă o singură derivare,
fiind necesari mai mulţi paşi.

Definiţia 1.18. Fie G = (N, Σ, P, S) o gramatică.


(1) O secvenţă 〈α1, α2, …, αk+1〉 de k+1 cuvinte peste (N∪Σ)* nu neapărat distincte, astfel
încât αi ⇒G αi+1, ∀i=1, 2, …, k se numeşte derivare în k paşi, sau derivare de lungime k
şi se notează ⇒Gk
(2) Închiderea tranzitivă a relaţiei ⇒G se numeşte derivare netrivială în gramatica G şi se
notează ⇒G+ :
α ⇒G+ β dacă şi numai dacă ∃ k≥1 aşa încât α ⇒Gk β
(3) Închiderea tranzitivă şi reflexivă a relaţiei ⇒G se numeşte derivare în gramatica G şi se
notează ⇒G* :
α ⇒G* β dacă şi numai dacă ∃ k≥0 aşa încât α ⇒Gk β

Folosind noţiunile anterioare, se poate redefini forma propoziţională într-o gramatică.

Definiţia 1.19. Fie G = (N, Σ, P, S) o gramatică. O formă propoziţională w în gramatica G


este un cuvânt peste alfabetul (N∪Σ)* pentru care există o derivare S ⇒G* w.
De asemenea, se poate redefini limbajul generat de o gramatică.

Definiţia 1.20. Fie G = (N, Σ, P, S) o gramatică. Limbajul generat de gramatica G este


mulţimea propoziţiilor :
L(G) = {w | w∈Σ *, S ⇒G* w}

Exemplul 1.4. Pentru gramatica din exemplul anterior:


G = ({A, S}, {0, 1}, P, S)
P: S → 0A1
0A → 00A1
A→ε
putem avea următoarele derivări:
S ⇒ 0A1 ⇒ 00A11 ⇒ 0011
Deci, S ⇒3 0011, adică S ⇒+ 0011, S ⇒* 0011 şi deci 0011∈L(G).

Exemplul 1.5. Fie gramatica:


G = ({S}, {a, b}, P, S)
P: S → aSb
S→ε
Se poate demonstra că limbajul generat de G este: L(G) = {aibi | i≥0}.
Demonstraţie. Deoarece L(G) este o mulţime de cuvinte, pentru a demonstra egalitatea celor
două mulţimi, va trebui arătat că {aibi | i≥0} ⊆ L(G) şi L(G) ⊆ {aibi | i≥0}.
Vom demonstra prima incluziune, {aibi | i≥0} ⊆ L(G). Pentru aceasta, va trebui
demonstrat că orice şir w∈{aibi | i≥0} poate fi derivat din simbolul de start S:
∀n≥0, S ⇒* anbn
Dacă n=0, atunci deoarece a0b0 = ε, utilizând a doua producţie, avem:
S ⇒ a0b0 ∈ {aibi | i≥0}
Pentru orice număr n≥1, utilizând de n ori prima producţie, iar apoi producţia a doua, avem
următoarea secvenţă:
S ⇒ aSb ⇒ … ⇒ anSbn ⇒ anεbn = anbn
Pentru a demonstra a doua incluziune, L(G) ⊆ {aibi | i≥0}, trebuie demonstrat că:
∀w∈Σ* aşa încât S ⇒* w, rezultă că w∈{aibi | i≥0}
Vom demonstra aceasta prin inducţie după lungimea derivării.
Pentru n=0, dacă S ⇒0 w, atunci w=ε, adică w=a0b0.
Presupunem acum că ∀k≤n, dacă S ⇒k v, atunci v∈{aibi | i≥0} şi fie o derivare de lungime
n+1: S ⇒n+1 w. Avem relaţiile:
S ⇒ aSb ⇒n avb = w
Din presupunerea inductivă, v∈{aibi | i≥0}, deci ∃j≥1, aşa încât v=ajbj. Atunci:
w = aajbjb = aj+1bj+1∈{aibi | i≥1} ⊆ {aibi | i≥0}
#

În cazul în care în mulţimea producţiilor unei gramatici există mai multe producţii care au în
partea stângă acelaşi cuvânt, există o scriere uzuală simplifictă. De exemplu, pentru
producţiile:
α→β1
α→β2

α→βn
notaţia uzuală simplificată este următoarea:
α→β1 | β2 | … βn
De asemenea, există notaţii uzuale pentru reprezentarea diferitelor simboluri şi cuvinte
generate de gramatici:
• Pentru simbolurile terminale, se utilizează literele mici, de la începutul alfabetului
latin: a, b, c, …
• Pentru simbolurile neterminale, se utilizează literele mari, de la începutul
alfabetului latin: A, B, C, …
• Pentru simbolul de start al gramaticii se utilizează litera S
• Pentru reprezentarea cuvintelor terminale, se utilizează literele mici de la sfârşitul
alfabetului latin: u, v, w, …, z
• Pentru reprezentarea cuvintelor terminale şi neterminale, se utilizează literele mici
ale alfabetului grec: α, β, γ, δ, …

O clasificare a gramaticilor poate fi făcută în funcţie de forma producţiilor sale.

Definiţia 1.21. Fie G = (N, Σ, P, S) o gramatică.


(1) Gramatica G se numeşte liniară la dreapta, dacă fiecare producţie din P are una din
formele :
A → xB
A→x
unde A,B∈N şi x∈Σ* (fiecare producţie are cel mult un simbol neterminal în partea
dreaptă, aflat pe ultima poziţie).
În mod asemănător, se poate defini o gramatică liniară la stânga care are producţiile de
forma următoare (păstrând notaţiile anterioare):
A → Bx
A→x
(2) Gramatica G se numeşte independentă de context, dacă fiecare producţie din P este de
forma : A → α, unde A∈N şi α∈(N∪Σ)*
(3) Gramatica G se numeşte dependentă de context, dacă fiecare producţie din P este de
forma : α → β, unde α,β∈(N∪Σ)* şi |α|≤|β|
(4) Dacă asupra producţiilor gramaticii G nu se face nici o restricţie, atunci G se numeşte
nerestricţionată.

Observaţii.
(1) Se observă din definiţia anterioară faptul că orice gramatică liniară la dreapta este în
acelaşi timp şi o gramatică independentă de context.
(2) Se observă de asemenea faptul că o gramatică dependentă de context nu permite producţii
de forma A → ε, numite şi ε-producţii. Rezultă faptul că o gramatică independentă de
context ce conţine ε-producţii nu este o gramatică dependentă de contex. Această restricţie
a fost impusă pentru a permite limbajului generat de o gramatică dependentă de context să
fie recursiv sau decidabil, dupe poate observa din teorema care urmează.
(3) În cazul gramaticilor independente de context, se observă faptul că indiferent de contextul
apariţiei sale într-o formă propoziţională, simbolul neterminal A se poate înlocui cu şirul
α.
(4) În cazul gramaticilor dependente de context, producţiile acesteia se pot scrie şi sub forma:
αAβ → αγβ, unde γ≠ε
Din această formă, se observă faptul că un simbol neterminal A se poate substitui prin
şirul γ doar în contextul determinat de α şi β.
(5) Gramaticile liniare la dreapta au această denumire deoarece orice simbolul neterminal care
se înlocuieşte într-o formă propoziţională este întotdeauna aflat în extremitatea dreaptă a
formei propoziţionle.

Motivul principal pentru care nu sunt permise ε-producţiile într-o gramatică dependentă de
context este problema decidabilităţii. Aceasta înseamnă că pentru o gramatică dependentă de
context G = (N, Σ, P, S), se poate găsi un algoritm care determină dacă un cuvânt w∈Σ *
aparţine sau nu limbajului L(G).

Problema decidabilităţii se va relua în capitolele următoare, ea se referindu-se la existenţa


unui algoritm care să determine, pentru un limbaj, dacă un anumit cuvânt face parte sau nu
din limbajul respectiv. În acest paragraf se va demonstra acst lucru doar pentru clasa
limbajelor dependente de context (dacă că pentru un cuvânt x∈Σ*, se poate determina dacă el
aparţine sau nu unui limbaj dependent de context).

Teorema 1.3. Orice limbaj dependent de context este decidabil.


Demonstraţie. Să considerăm o gramatică G = (N, Σ, P, S) şi un cuvânt x∈Σ*, pentru care
|x|=n. Vom demonstra prin inducţie după lungimea cuvântului x că se poate decide dacă
x∈L(G) sau x∉L(G).
În cazul n=1 cuvânul x este de forma x=a, unde a∈Σ şi deci dacă S→a∈P, atunci x∈L(G),
altfel x∉L(G).
Să considerăm cazul n>1. Vom construi o secvenţă de mulţimi de cuvinte peste N∪Σ
definită astfel :
Tn0 = {S}
Tnk = Tnk-1 ∪ {α∈(N∪Σ)* | ∃β∈Tnk-1, aşa încât β⇒α şi |α|≤n}, pentru k≥1
Se observă că fiecare mulţime Tnk depinde de mulţimea Tnk-1 şi reprezintă mulţimea tuturor
cuvintelor care se pot obţine plecând de la cuvinte din mulţimea Tnk-1 printr-o derivare directă.
Deoarece Tn0 conţine doar simbolul de start, înseamnă că mulţimea Tnk conţine toate cuvintele
de lungime cel mult n care se pot deriva din S în cel mult k paşi de derivare.
Tot din aceleaşi relaţii se observă că mulţimile (Tnk)k≥0 formează un şir crescător :
Tn0 ⊆ Tn1 ⊆ … ⊆ Tnk ⊆ …
Se observă de aici că dacă există un indice k pentru care Tnk+1 = Tnk, atunci pentru oricare j>k,
este îndeplinită relaţia : Tnj = Tnk.
Vom demonstra acum că şirul mulţimilor (Tnk)k≥0 este mărginit superior. Notăm cu
t=|N∪Σ| numărul simbolurilor din alfabetul N∪Σ şi cu TN mulţimea cuvintelor de lungime cel
mult n. Numărul elementelor din TN este finit şi are valoarea 1+t+t2+ … +tn, fiind deci
majorat de numărul (t+1)n+1.
Rezultă că şirul mulţimilor (Tnk)k≥0 este mărginit superior de mulţimea TN şi deci
există unic un indice j astfel încât Tnj+1 = Tnj. Indicele j fiind determinat, înseamnă că există
un număr finit de mulţimi distincte în şirul (Tnk)k≥0, adică mulţimile Tn0, Tn1, …, Tnj.
În concluzie, dacă există un indice i, 0≤i≤j, pentru care x∈Tni, atunci x∈L(G), iar în
cazul în care ∀i, 0≤i≤j, x∉Tni, atunci x∉L(G).
#

Cele patru tipuri de gramatici formează aşa-numita ierarhie Chomsky. O gramatică liniară la
dreapta se numeşte gramatică de tipul 3 în această ierarhie. O gramatică independentă de
context se numeşte gramatică de tipul 2 în ierarhia Chomsky, o gramatică dependentă de
context se numeşte gramatică de tipul 1, iar o gramatică nerestricţionată se numeşte gramatică
de tipul 0.

Exemplul 1.6.
1) Gramatică de tipul 3:
G = ({S}, {0, 1}, P, S)
P: S → 0S | 1S | ε
Limbajul generat de gramatică este:
L(G) = {0, 1}*
2) Gramatică de tipul 2 - gramatica expresiilor aritmetice ce pot fi construite cu simbolurile
a, +, *, ( şi ) :
G = ({E, T, F}, {a, +, *, (, )}, P, E}
P: E → E+T | T
T → T*F | F
F → (E) | a
3) Gramatică de tipul 3:
G = ({S, B, C}, {a, b, c)}, P, S}
P: S → aSBC | abC
CB → BC
bB → bb
bC → bc
cC → cc
Limbajul generat de granatică este:
L(G) = {anbncn | n≥1}

Corespunzător celor patru tipuri de gramatici, limbajele generate de acestea se denumesc în


mod corespunzător. Notînd cu k∈{0, 1, 2, 3} tipul din ierarhia Chomsky al unei gramatici, un
limbaj de ordin k este un limbaj generat de o gramatică de ordin k. Mulţimea tuturor
limbajelor de ordin k se notează ℒk. Un limbaj de ordinul 0 se numeşte limbaj recursiv
enumerabil, un limbaj de ordinul 1 se numeşte limbaj dependent de contex, un limbaj de
ordinul 2 se numeşte limbaj independent de contex, iar un limbaj de ordinul 3 se numeşte
limbaj liniar la dreapta sau limbaj regulat.

După cum se poate observa din teorema următoare, între mulţimile limbajelor de diferite
ordine există o relaţie de includere, ceea ce justifică denumirea de ierarhie de limbaje. Orice
limbaj limbaj regulat este un limbaj independent de context. La rândul său, orice limbaj
independent de context care nu conţine şirul vid este o submulţime proprie a unui limbaj
dependent de context. De asemenea, un limbaj dependent de context este o submulţime
proprie a unei mulţimi recursive, care la rândul său este o submulţime a unei mulţimi recursiv
enumerabile.

Pentru a elimina asimetria care există între limbajele ℒ1 şi ℒ2, în mod uzual se consideră că
mulţimea limbajelor dependente de context conţine atât limbajele generate de gramaticile
dependente de context, la care se adaugă, pentru fiecare asemenea limbaj L, limbajul L’ ce
conţine în plus cuvântul vid, L’ = L ∪ {ε}.

Teorema 1.4. Între clasele de limbaje din ierarhia Chomsky există relaţiile următoare:
ℒ0 ⊃ ℒ 1 ⊃ ℒ 2 ⊃ ℒ3
1.3 Automate de recunoaştere (de acceptare)
A doua metodă de specificare finită a unui limbaj constă în definirea unui automat de
recunoaştere sau de acceptare a cuvintelor din limbaj.

În esenţă, un automat de recunoaştere este o procedură utilizată pentru definirea unei mulţimi
de cuvinte. El poate fi reprezentat grafic ca în figura 1.1.
Banda de
a0 a1 an
intrare
Cap de citire

Unitate Memorie
de control auxiliară

Figura 1.1

Banda de intrare este considerată formată dintr-o secvenţă liniară de celule, fiecare conţinînd
exact un simbol de intrare dintr-un alfabet finit de intrare. Capul de citire poate citi în fiecare
moment o celulă şi se poate deplasa de la stânga la dreapta, sau poate rămâne staţionar. Un
asemenea automat se numeşte în mod uzual automat cu o singură cale. În mod uzual, banda
de intrare poate fi folosită doar pentru citire, simbolurile de intrare neputând fi modificate în
timpul evoulţie automatului. Memoria automatului poate stoca orice tip de date. Trebuie însă
să existe un alfabet finit al memoriei şi ea să conţină doar simboluri ale acestui alfabet într-o
organizare oarecare, iar conţinutul memoriei să poată fi descris in fiecare moment într-un mod
finit. În mod uzual, numele unui automat de recunoaştere este dat de tipul memoriei
automatului.

Un exemplu de memorie auxiliară este stiva, sau lista “push-down”, care poate fi reprezentată
în mod abstract printr-un şir de simboluri ale memoriei, (z1, z2, …, zn), care aparţin unui
alfabet al memoriei, notat cu Γ, iar z1 este primul element din şir precum şi singurul care
poate fi accesat de către capul de citire. Un automat cu un astfel de tip de memorie este numit
automat push-down şi este foarte utilizat în cazul limbajelor independente de context.

Comportarea memoriei auxiliare pentru o clasă de automate este caracterizată prin două
funcţii: cea de stocare în memorie, precum şi cea de citire din memorie.

Funcţia de citire din memorie este o aplicaţie definită de la mulţimea configuraţiilor posibile
ale memoriei la o mulţime finită de simboluri de informaţie, care pot fi aceleaşi cu alfabetul
memoriei. De exemplu, pentru o memorie de tip listă push-down, funcţia de citire din
memorie poate fi definită prin:
f: Γ* → Γ,
f(z1z2 … zn) = z1

Funcţia de stocare descrie modul în care memoria poate fi modificată, ea fiind o aplicaţie
definită pe produsul cartezian dintre conţinutul memoriei şi o mulţime de şiruri de control ale
acesteia De exemplu, pentru o listă push-down, funcţia de memorare poate înlocui primul
simbol cu un şir finit de alte simboluri din alfabetul memoriei. O asemenea funcţie se poate
reprezenta astfel:
g: Γ* × Γ* → Γ* ,
g(z1 … zn, y1 … yk) = y1 … ykz2 … zn
Se observă faptul că se poate înlocui z1 cu un şir vid, astfel încât următorul simbol ce va putea
fi citit de următoarea operaţie de citire din memorie este z2.

Evoluţia unui automat de recunoaştere se descrie prin intermediul stărilor acestuia. Gestiunea
automatului se realizează prin intermediul unei unităţi de control a stărilor, sau pe scurt
unitatea de control, care poate fi un program ce determină modul de evoluţie al stărilor
automatului.

Astfel, evoluţia unui automat de recunoaştere poate fi reprezentată printr-o mulţime de stări,
împreună cu o aplicaţie care descrie modificarea stărilor, în funcţie de simbolul curent de
intrare şi de informaţia curentă citită din memorie. De asemenea, la trecerea dintr-o stare
curentă în într-o stare următoare, trebuie determinată informaţia care trebuie memorată în
starea următoare.

O altă noţiune uzuală folosită pentru descrierea evoluţiei unui automat este cea de
configuraţie. O configuraţie a automatului este definită de:
• starea curentă a automatului;
• conţinutul benzii de intrare, precum şi a locaţiei curente de citire de pe aceasta;
• conţinutul memoriei.
Trecerea de la configuraţie la alta se realizează prin intermediul unor mişcări. O mişcare este
determintă în mod uzual de simbolul curent de intrare, precum şi de informaţia curentă citită
din memorie, iar acţiunile determinate de ea sunt:
• mutarea capului de citire cu o celulă spre stânga, spre dreapta, sau rămânerea pe
poziţia curentă;
• memorarea unei anumite informaţii în memoria auxiliară;
• schimbarea stării curente de control.

Configuraţia iniţială a unui automat este în mod uzual unică şi specifică starea curentă de
control ca fiind starea iniţială, capul de citire poziţionat pe simbolul cel mai din stânga al
benzii de intrare, iar conţinutul memoriei ca având o structură iniţială. Configuraţia finală nu
este întotdeauna unică, un automat de recunoaştere putând avea o mulţime de configuraţii
finale posibile, determinate de mulţimea stărilor finale de control. Într-o configuraţie finală,
starea curentă de control a automatului este o stare finală, iar capul de citire este poziţionat
după ultimul simbol de pe banda de intrare.

Trecerea dintr-o stare curentă într-o stare următoare nu este întotdeauna unic determinată, iar
din acest motiv este posibil ca plecând dintr-o anumită configuraţie să existe mai multe
mişcări posibile. Un automat de recunoaştere se spune că este:
• determinist, dacă pentru fiecare configuraţie, există cel mult o singură posibilitate de
mişcare spre configuraţia următoare;
• nedeterminist, dacă în fiecare configuraţie există o mulţime de una sau mai multe
mişcări spre o configuraţie următoare.

Pentru definirea formală a unui automat de acceptare se utilizează următoarele notaţii:


• Σ - alfabetul finit al benzii de intrare;
• Γ - alfabetul finit al memoriei;
• Q - mulţimea finită a stărilor unităţii de comandă;
• δ - funcţia de tranziţie, care descrie funcţionarea unităţii de comandă.

Funcţia δ descrie modul de tranziţie între o stare curentă şi o stare următoare a unităţii de
control. În cazul unui automat determinist, starea următoare unei stări curente este unic
determinată, astfel încât funcţia de tranziţie este definită astfel:
δ: Q × Σ × Γ* → Q × Γ*
δ(q1, a, γ1) = (q2, γ2)
unde:
- q1 reprezintă starea curentă a unităţii de control, iar q2 reprezintă satrea următoare;
- a reprezintă simbolul curent de intrare aflat be banda de intrare şi care urmează să fie
citit de capul de citire;
- γ1 reprezintă starea curentă a memoriei automatului, iar γ2 memoria automatului în
starea următoare.

În cazul unui automat nedeterminist, starea următoare a unităţii de control nu este unic
determinată, astfel încât valorile funcţiei δ reprezintă o mulţime de elemente (q2, γ2). În acest
caz, funcţia se poate defini astfel:
δ: Q × (Σ ∪{ε}) × Γ* → ℘(Q × Γ*)
δ(q1, a, γ1) ⊆ {(q2, γ2) | q2∈Q, γ2∈Γ*}

Se pot acum defini mai formal noţiunile de configuraţie şi cea de mişcare între două
configuraţii. Configuraţia unui automat de acceptare este un tuplu de forma:
(q, x, i, γ)
unde:
- q∈Q reprezintă starea curentă a unutăţii de control;
- x∈Σ * reprezintă şirul de pe banda de intrare; în cazul automatelor cu o singură cale, x
reprezintă şirul de pe banda de intrare necitit încă;
- i∈N reprezintă poziţia capului de citire pe banda de intrare a automatului; în cazul
automatelor cu o singură care, i este o informaţie redondantă;
- γ∈Γ* reprezintă conţinutul curent al memoriei.

Relaţia de mişcare între două configuraţii se notează în mod uzual cu simbolul ⊢ şi se poate
defini pe baza funcţiei δ: între două configuraţii (q1, ax, i, γ1) şi (q2, x, j, γ2) se spune că există
o relaţie de mişcare şi se notează (q1, ax, i, γ1) ⊢ (q2, x, j, γ2) dacă:
δ(q1, ax, i, γ1) = (q2, γ2)
j = i + 1, dacă a∈Σ,
j = i, dacă a = ε

Despre un automat se spune că acceptă sau recunoaşte un cuvânt de intrare w, dacă pornind
de la o configuraţie iniţială şi având simbolurile din w pe banda de intrare, acesta realizează o
secvenţă de mişcări care aduce automatul într-o configuraţie finală.

Limbajul acceptat de un automat de recunoaştere este mulţimea cuvintelor de intrare pe care


automatul recunoaşte.
Pentru fiecare clasă de limbajde din ierarhia Chomsky, există o clasă naturală de automate de
acceptare, care definesc aceeaşi clasă de limbaje. Acestea sunt: automatele finite, automatele
push-down, automatele liniar mărginite şi maşinile Turing.

Definiţia exactă a acestor automate va fi specificată în capitolele următoare, dar relaţia lor cu
limbajele din ierarhia Chomsky poate fi descrisă astfel:
• Un limbaj este liniar la dreapta dacă şi numai dacă este definit de un automat finit
determinst;
• Un limbaj este independent de context dacă şi numai dacă este definit de un automat
nedeterminist push-down;
• Un limbaj este dependent de context dacă şi numai dacă este definit de un automat
nedeterminist liniar mărginit;
• Un limbaj este recursiv enumerabil dacă şi numai dacă este definit de o maşină Turing.
Capitolul 2
Mulţimi regulate (limbaje regulate) şi limbaje liniare la
dreapta

Mulţimile regulate sunt foarte utilizate în cadrul operaţiei de descriere a limbajelor. Între
mulţimile regulate şi gramaticile liniare la dreapta există o strânsă legătură, demonstrată de
Chomsky şi Miller: există o echivalenţă între un limbaj generat de o gramatică liniară la
dreapta şi o mulţime regulată. Din acest motiv, ele se mai numesc şi limbaje regulate.

Pentru a simplifica utilizarea noţiunilor legate de mulţimi şi limbaje regulate, în mod uzual se
utilizează formalismul expresiile regulate, care a fost introduse pentru prima dată de Kleene.

2.1 Muţimi regulate şi expresii regulate


În acest paragraf se va discuta despre mulţimi şi expresii regulate, precum şi despre ecuaţii şi
sisteme de ecuaţii cu mulţimi regulate. Sistemele de ecuaţii cu mulţimi regulate vor fi utilizate
pentru a demonstra echivalenţa celor trei formalisme: gramaticile liniare la dreapta, expresiile
regulate şi automatele finite.

2.1.1 Mulţimi regulate şi algebra expresiilor regulate

Definiţia 2.1. Fie Σ un alfabet nevid. Clasa mulţimilor regulate peste Σ se notează cu µ(Σ) şi
este cea mai mică submulţime a mulţimii ℘(Σ*) care satisface următoarele relaţii:
a) Φ ∈ µ(Σ)
b) {ε} ∈ µ(Σ)
c) {a} ∈ µ(Σ), ∀a∈Σ
d) este închisă la operaţia de reuniune, concatenare şi închidere tranzitivă şi reflexivă;
adică, dacă P,Q∈µ(Σ), atunci:
1) P ∪ Q ∈ µ(Σ)
2) P · Q ∈ µ(Σ)
3) P* ∈ µ(Σ)

Se observă faptul că definiţia anterioară este recursivă. Cu alte cuvinte, o submulţime a


mulţimii Σ* este regulată dacă şi numai dacă aceasta este una din mulţimile Φ, {ε}, {a}
pentru a∈Σ, sau se obţine printr-un număr finit de aplicare asupra acestora a operaţiilor de
reuniune, concatenare sau închidere.

Expresiile regulate au fost introduse de Kleene şi reprezintă un formalism simplu şi eficient


de reprezentare a mulţimilor regulate.
Definiţia 2.2. Fie Σ un alfabet nevid. Clasa expresiilor regulate peste Σ se notează cu ρ(Σ) şi
şi se defineşte ca mulţimea cuvintelor peste alfabetul Σ ∪ {Φ, ε, +, (, ) } care satisface
următoarele condiţii:
a) Φ ∈ ρ(Σ)
b) ε ∈ ρ(Σ)
c) a ∈ ρ(Σ), ∀a∈Σ
d) dacă r, r1, r2 ∈ ρ(Σ), atunci:
1) (r1 + r2) ∈ ρ(Σ)
2) (r1r2) ∈ ρ(Σ)
3) (r)* ∈ ρ(Σ)
e) Toate cuvintele din ρ(Σ) se construiesc cu ajutorul regulilor a), b), c) şi d).

Observaţie. În cazul în care nu există confuzii, se poate renunţa la parantezele rotunde din
cadrul unei expresii regulate.

Reprezentarea mulţimilor regulate prin expresii regulate se face cu ajutorul unei funcţii de
interpretare, notată cu pentru simplitate cu L, prin care se asociază fiecărei expresii regulate o
mulţime regulată (un limbaj regulat). Astfel, o expresie regulată reprezintă o mulţime
regulată. Funcţia de interpretare este o apliacţie:
L: ρ(Σ) → µ(Σ),
definită astfel:
a) L(Φ) = Φ
b) L(ε) = {ε}
c) L(a) = {a}, ∀a∈Σ
d) dacă r, r1, r2 ∈ ρ(Σ), atunci:
L(r1 + r2)) = L(r1) ∪ L(r2)
L(r1r2)) = L(r1)L(r2)
L(r*) = (L(r))*

Exemple.
1) Expresia regulată 01 reprezintă mulţimea regulată {01}
2) Expresia regulată 0* reprezintă mulţimea regulată {0}*
3) Expresia regulată (0+1)* reprezintă mulţimea regulată {0, 1}*
4) Expresia regulată (0+1)*011 reprezintă mulţimea şirurilor de 0 şi 1 terminate cu
011
5) Expresia regulată (a+b)(a+b+0+1)* reprezintă mulţimea cuvintelor din
mulţimea {0, 1, a, b}* care încep cu a sau b.

Ca şi în cazul gramaticilor, există două simboluri frecvent utilizate în cadrul expresiilor


regulate: | şi +. De exemplu:
- a+ reprezintă expresia aa*
- a | b | c reprezintă expresia regulată a + b + c

Dacă pentru o expresie regulată se poate determina cu ajutorul funcţiei de interpretare


mulţimea regulată pe care expresia o reprezintă, problema inversă nu mai are un caracter unic:
pentru o mulţime regulată pot exista mai multe expresii regulate, posibil chiar o infinitate,
care reprezintă mulţimea respectivă. De exemplu, se poate demonstra foarte simplu faptul că
următoarele două expresii regulate: a+b şi b+a reprezintă aceeaşi mulţime regulată, {a, b}.
Pentru rezolvarea acestei probleme se utilizează noţiunea de expresii regulate egale.

Definiţia 2.3. Două expresii regulate, r1 şi r2 sunt egale şi se notează r1 = r2, dacă şi numai
dacă reprezintă aceeaşi mulţime regulată:
L(r1) = L(r2)

Pe baza acestei noţiuni, se pot defini câteva proprietăţi algebrice ale acestora.

Lema 2.1. Fie α şi β două expresii regulate. Următoarele relaţii sunt îndeplinite:
1) α+β = β+α (comutativitate pentru +)
2) α+(β+γ) = (α+β)+γ (asociativitate pentru +)
3) α+Φ = Φ+α = α (Φ este element neutru pentru +)
4) α+α = α (idempotenţă pentru +)
5) α(βγ) = (αβ)γ (asociativitate pentru ⋅)
6) αε = εα = α (ε este element unitate pentru ⋅)
7) αΦ = Φα = Φ (Φ este element unitate pentru ⋅)
8) (α+β)γ = αγ+βγ (distributivitatea lui + faţă de ⋅)
9) α(β+γ) = αβ+αγ (distributivitatea lui ⋅ faţă de +)
10) α* = αα*+ε
11) Φ* = ε
12) (α*)* = α*
Demonstraţie. Fie L1 şi L2 mulţimile regulate pe care expresiile α şi β le reprezintă. Atunci
expresiile α+β, αβ şi α* reprezintă mulţimile L1∪L2, L1∩L2 şi L1*. Iar relaţiile din cadrul
lemei se demnostrează prin demonstrarea relaţiilor corespunzătoare asociate mulţimilor
regulate.
Demonstrarea relaţiilor 1) ÷ 10) este imediată pe baza operaţiilor de reuniune,
intersecţie şi concatenare ale mulţimilor regulate:
L1∪L2 = L2∪L1
L1∪ (L2∪L3) = (L1∪L2) ∪L3
L1∪Φ = Φ∪L1 = L1
L1∪L1 = L1
L1∩ (L2∩L3) = (L1∩L2) ∩L3
L1∩{ε} = {ε}∩L1 = L1
L1∩Φ = Φ∩L1 = Φ
(L1∪L2) ∩L3 = L1∩L3∪L2∩L3
L1∩ (L2∪L3) = L1∩L2∪L1∩L3
L1* = L1L1*∪{ε}
Pentru demonstrarea relaţiei 11) se observă că:
L1(Φ*) = (L1(Φ))* = Φ* = ∪i≥0 (Φi) = Φ0 ∪ (∪i≥1(Φi)) = {ε} ∪ (∪i≥1(Φ)) = {ε} = L1(ε)
Pentru demonstrarea relaţiei 12) va trebui demonstrat că (L1*)* = L1*. Vom demonstra aceasta
prin dubla incluziune:
a) L1* ⊆ (L1*)*; Fie w∈ L1*. Atunci ∃k≥0 aşa încât w∈ L1k. Dar pentru L1k există următoarea
incluziune:
L1k = (L1k)1 ⊆ ∪i≥0(∪j≥0(L1j)i) ⊆ (L1*)*
b) (L1*)* ⊆ L1*; Fie w∈(L1*)*. Atunci w∈∪i≥0(∪j≥0(L1j)i) şi deci ∃k,l≥0 aşa încât w∈ (L1k)l.
Dar în acest caz:
(L1k)l = L1kl ⊆ ∪i≥0(L1i) = L1*
#
În continuare, atunci când nu se pot face confuzii, nu se va face distincţie între o expresie
regulată şi mulţimea regulată pe care o reprezintă (de exemplu, simbolul a reprezintă şi
mulţimea {a}).

2.1.2 Ecuaţii cu mulţimi regulate


Pentru reprezentarea limbajelor, de multe ori sunt utilizate ecuaţii ale căror coeficienţi sau
nedeterminate reprezintă mulţimi regulate. Vom numi în continuare aceste ecuaţii ca ecuaţii
cu expresii regulate.

Exemplul 2.1. Fie ecuaţia:


(2.1) X = αX + β
unde α şi β sunt expresii regulate. Se poate verifica prin substituţie că expresia regulată α*β
este o soluţie a ecuaţiei:
α*β = α(α*β) + β = αα*β + β = (αα* + ε)β = α*β

În general, soluţia unei ecuaţii cu expresii regulate nu este unică. De exemplu, pentru ecuaţia
(2.1) din exemplul precedent, orice expresie de forma α*(β+γ) este soluţie, pentru orice
valoare γ, nu neapărat expresie regulată.

Există totuşi o situaţie în care soluţia α*β este unică: în cazul în care ε∉L(α).

Lema 2.2. (Regula lui Arden) Fie α, β expresii regulate, aşa încât ε∉L(α). Atunci ecuaţia 2.1
în nedeterminata X are o soluţia unică X = α*β.
Demonstraţie. Faptul că expresia regulată α*β este soluţie a ecuaţiei 2.1 s-a verificat anterior.
Să demonstrăm că ea este unică. Vom demonstra că întotdeauna când X = γ este o soluţie a
ecuaţiei, atunci L(γ) = L(α*β).
Deoarece L(αγ + β) = L(γ), rezultă că L(β) ⊆ L(γ), iar de aici următorul şir de relaţii:
L(αβ) ⊆ L(αγ) ⊆ L(γ),
L(α2β) ⊆ L(αγ)⊆ L(γ),

L(αkβ) ⊆ L(γ)
iar în general: L(α*β) ⊆ L(γ).
Pentru demonstrarea relaţiei inverse, să presupunem prin reducere la absurd contrariul:
L(γ) ⊈ L(α*β)
Rezultă că există un cuvânt w∈L(γ) aşa încât w∉L(α*β) şi fie w cel mai mic cuvânt cu
această proprietate. Atunci:
- deoarece w∉L(α*β)=L(α)*L(β)=L0(α)⋅L(β) ∪ ∪k≥1Lk(α)⋅L(β), rezultă că w∉L(β),
- deoarece L(γ) = L(αγ) ∪ L(β) şi w∉L(β), rezultă că w∈L(αγ)=L(α)L(γ).
Fie w = yx, unde y∈L(α), x∈L(γ). Deoarece ε∉L(α), rezultă că |w| > |x|. Dar, deoarece w a
fost ales ca fiind cel mai mic cuvânt w∈L(γ) şi w∉L(α*β), iar x∈L(γ), rezultă de aici că
x∈L(α*β).
Din această ultimă relaţie, rezultă că:
w = yx ∈ L(α)L(α*β) = L(αα*β) ⊆ L(α*β),
şi în concluzie, w ∈ L(α*β), ceea ce reprezintă o contradicţie cu presupunerea iniţială.
Rezultă că L(γ) ⊆ L(α*β), iar în final L(γ) = L(α*β). Dar aceasta înseamnă că γ=α*β
şi deci α*β este soluţia unică a ecuaţie.
#

Observaţie. Dacă ε∈L(α), atunci soluţia nu este unică şi se poate arăta simplu că orice
expresie regulată de forma α*(β+γ) este de asemenea o soluţie a ecuaţiei. Într-adevăr, dacă
se înlocuieşte X=α*(β+γ) în ecuaţia (2.1), rezultă următoarele relaţii:
α(α*(β+γ))+β = αα*β+β+αα*γ = αα*β+β+αα*γ = (αα*+ε)β+αα*γ = α*β+αα*γ
α(α*(β+γ))+β = α*β+αα*γ = α*β+(α+ε)α*γ
Ultima egalitate s-a bazat pe următoarea observaţie: dacă ε∈L(α), atunci L(α) = L(α)∪L(ε),
şi deci în termenii expresiilor regulate: α=α+ε. Revenind la relaţia anterioară şi utilizând
proprietăţile algebrice ale mulţimilor regulate (adică αα*+α* = α*), rezultă:
α(α*(β+γ))+β = α*β+(αα*+α*)γ = α*β+α*γ = α*(β+γ)
şi deci X=α*(β+γ) verifică ecuaţia (2.1).

În cazul în care o ecuaţie cu expresii regulate nu are soluţie unică, în mod uzual se caută o
soluţie minimă a ecuaţiei, cum este α*β din ecuaţia (2.1). O asemenea soluţie se numeşte
punct fix minimal al ecuaţiei.

Atât în cadrul mulţimilor regulate, cât şi al automatelor finite, în afară de ecuaţii, se utilizează
şi sisteme de ecuaţii cu expresii regulate. De exemplu:
(2.2) X = a1X + a2Y + a3
Y = b1X + b2Y + b3
Un asemenea sistem se poate rezolva prin metoda substituţiei. De exemplu, utilizând ecuaţia
precedentă (2.1), în care α este a1 şi β este (a2Y+a3), soluţia primei ecuaţii a sistemului se
scrie sub forma:
(2.3) X = a1*(a2Y+a3)
Înlocuind aceasta în a doua ecuaţie, se obţine:
Y = b1a1*(a2Y+a3) + b2Y + b3 = (b2 + b1a1*a2)Y + b3
Utilizând încă o dată ecuaţia (2.1), o soluţie a primei ecuaţii a sistemului (2.2) este:
Y = (b2 + b1a1*a2)*(a3 + a2b2*b3)
Înlocuind această soluţie în relaţia (2.3), se obţine următoarea soluţie a sistemului:
X = (a1 + a2b2*b1)* (a3 + a2b2*b3)
Y = (b2 + b1a1*a2)* (b3 + b1a2*a3)

Un sistem care are o formă asemănătoare cu sistemul (2.2) din exemplul precedent se numeşte
sistem în formă standard. Sistemele în formă standard sunt des utilizate deoarece permit
determinarea unei soluţii în mod asemănător metodei lui Gauss pentru sisteme liniare.

Definiţia 2.4. Un sistem de ecuaţii cu expresii regulate peste o mulţime de nedeterminate ∆ =


{X1, X2, …, Xn} se spune că este în formă standard dacă pentru fiecare Xi∈∆, există o
ecuaţie de forma:
(2.4) Xi = αi0 + αi1X1 + … + αinXn
unde αij sunt expresii regulate peste un alfabet Σ, disjunct de ∆.

În definiţia anterioară, expresiile αij sunt coeficienţii sistemului. Dacă un coeficient αij = Φ,
atunci termenul αijXj nu apare în ecuaţia respectivă, iar dacă αij = ε, atunci termenul respectiv
se reduce la nedeterminata Xj.
Utilizând o metodă asemănătoare substituţiei lui Gauss, un sistem cu expresii regulate în
formă standard se poate rezolva succesiv începând cu prima ecuaţie a sistemului şi terminând
cu ultima. Ecuaţia de pe poziţia i se poate transforma utilizând relaţiile din lema 2.1 într-o
ecuaţie echivalentă de forma:
(2.5) Xi = αiXi + βi
unde termenul βi are forma:
(2.6) βi = bi0 + bi,i+1Xi+1 + … + binXn
iar coeficienţii bij sunt expresii regulate.

Algoritmul următor foloseşte această metodă.

Algoritm 2.1. Rezolvarea unui sistem de ecuaţii cu expresii regulate în formă standard.
Se consideră un sistem de ecuaţii cu expresii regulate în formă standard specificat de definiţia
2.4.
Intrare:
- n: numărul de ecuaţii;
- α = (αij)i=1..n, j=0..n : coeficienţii ecuaţiilor de forma (2.4), care sunt expresii regulate peste
un alfabet Σ;
Ieşire:
- O mulţime de soluţii de forma: X = {X1=γ1, X2=γ2, …, Xn=γn}, unde γ1, …, γn sunt
expresii regulate peste Σ
Metodă:
procedure SolveRegularExpressionSystem(n, α; X)
for i=1 to n-1 do
* se transform ecuaţia a i-a în forma
dată de relaţiile (2.5)+(2.6):
Xi = αiXi + βi,
βi = bi0 + bi,i+1Xi+1 + … + binXn
for j=i+1 to n do
* în ecuaţia lui Xj se substituie Xi prin expresia
αi*βi
endfor
endfor
for i=n downto 2 do
// Ecuaţia lui Xi este de forma Xi = αiXi + βi
Xi ← αi*βi
for j=i-1 downto 1 do
* în expresiile bj = bj0 + bj,j+1Xj+1 + … + bjnXn se
substituie Xi prin expresiile αi*βi
endfor
endfor
end

Exemplul 2.2. Se consideră sistemul cu expresii regulate:


X1 = ε + 1X1 + 0X2
X2 = 1X2 + 0X3
X3 = 0X1 + 1X3
Se transformă prima ecuaţie în forma (2.5):
X1 = 1X1 + (ε+0X2)
Soluţia ecuaţiei în X1:
X1 = 1*(ε+0X2)
Înlocuirea lui X1 în ecuaţia a treia (ecuaţia a doua nu conţine pe X1):
X3 = 01*(ε+0X2) + 1X3 = 01*0X2 + 1X3 + 01*
Se transformă a doua ecuaţie şi se determină soluţia în X2:
X2 = 1*(0X3)
Se înlocuieşte X2 în ecuaţia transformată a lui X3:
X3 = 01*0X2 + 1X3 + 01* = 01*0(1*0X3) + 1X3 + 01* = (01*01*0+1)X3 + 01*
Se trece acum la partea a doua a algoritmului, deoarece fiecare ecuaţie conţine o singură
nedeterminată. Se determină X3 din ultima ecuaţie:
X3 = (01*01*0+1)*01*
Se substituie X3 în ecuaţia a doua (în prima ecuaţie nu apare X3):
X2 = 1*(0X3) = 1*0(01*01*0+1)*01*
Se substituie X2 în prima ecuaţie şi algoritmul se termină:
X1 = 1*(ε+0X2) = 1*(ε+01*0(01*01*0+1)*01*)

După cum s-a precizat anterior, în general soluţia unei ecuaţii cu expresii regulate nu este
unică, aşa încât nici soluţia unui sistem de ecuaţii cu expresii regulate nu este unică. Deoarece
în algoritmul anterior s-a utilizat soluţia minimală a unei ecuaţii cu expresii regulate, soluţia
determinată de algoritm reprezintă de asemenea o soluţie minimală a sistemului.

Definiţia 2.5. Fie Q un sistem de ecuaţii cu expresii regulate peste un alfabet Σ, cu mulţimea
nedeterminatelor peste alfabetul ∆ şi f o aplicaţie a lui ∆ peste mulţimea limbajelor din Σ*:
f: ∆ →℘(Σ*)
(1) Funcţia f este o soluţie a lui Q, dacă, pentru oricare X∈∆, substituind pe X cu f(X) în
fiecare ecuaţie a sistemului, aceasta devine egalitate.
(2) Aplicaţia f este un punct fix minimal dacă f este o soluţie şi pentru orice altă soluţie g,
următoarea relaţie este îndeplinită:
f(X) ⊆ g(X), ∀X∈∆

Indiferent de numărul soluţiilor unui sistem de ecuaţii cu expresii regulate, punctul fix
minimal este unic.

Lema 2.3. Fiecare sistem standard Q de ecuaţii cu expresii regulate are un unic punct fix
minimal.
Demonstraţie. Pentru orice X∈∆, definim:
f(X) = {w | ∀g, soluţie a lui Q, w∈g(X)}
Rezultă imediat că f(X) este soluţie şi f(X) ⊆ g(X), pentru orice altă soluţie g, deci f este
punct fix minimal.
#

Se poate demonstra că algoritmul 2.1 determină corect punctul fix minimal al sistemului de
ecuaţii standard (2.4), pe baza definiţiei acestuia, a lemei 2.3, precum şi a observaţieie că
perechile de sisteme de ecuaţii înainte şi după execuţia fiecăreia din cele două instrucţiuni
for externe din algoritmul precedent sunt echivalente.
2.2 Muţimi regulate şi gramatici liniare la dreapta
Vom demonstra în acest paragraf o proprietate importantă legată de mulţimile regulate şi
gramaticile liniare la dreapta şi anume faptul că un limbaj este definit de o gramatică liniară la
dreapta dacă şi numai dacă el este o mulţime regulată.

Cu alte cuvinte, mulţimile limbajelor asociate claselor mulţimilor regulate şi a gramaticilor


liniare la dreapta sunt egale:
µ(Σ) = ℒ3(Σ), ∀Σ≠Φ
unde am notat cu ℒ3(Σ) mulţimea limbajelor liniare la dreapta peste alfabetul Σ.

Lema 2.4. Fie Σ un alfabet finit. Mulţimile Φ, {λ} şi {a}, pentru orice simbol a∈Σ sunt
limbaje liniare la dreapta.
Demonstraţie.
G = ({S}, Σ, Φ, S) este o gramatică liniară la dreapta pentru care L(G) = Φ
G = ({S}, Σ, {S→ε}, S) este o gramatică liniară la dreapta pentru care L(G) = {ε}
G = ({S}, Σ, {S→a}, S) este o gramatică liniară la dreapta pentru care L(G) = {a}
#

Lema 2.5. Dacă L1 şi L2 sunt limbaje liniare la dreapta, atunci şi limbajele L1∪L2, L1L2 şi L1*
sunt liniare la dreapta.
Demonstraţie. Deoarece L1 şi L2 sunt limbaje liniare la dreapta, atunci există două gramatici
liniare la dreapta,
G1 = (N1, Σ, P1, S1)
G2 = (N2, Σ, P2, S2)
aşa încât L1 = L(G1) şi L2 = L(G2). Putem presupune, fără a restrânge generalitatea, faptul că
mulţimile de simboluri neterminale N1 şi N2 sunt disjuncte, altfel simbolurile din cele două
mulţimi se pot redenumi.
a) Fie G3 gramatica liniară la dreapta următoare:
G3 = (N1∪N2∪{S3}, Σ, P1∪P2∪{S3→S1|S2}, S3)
unde S3 este un nou simbol neterminal, S3∉N1 şi S3∉N2.
Din definiţia gramaticii G3, se observă imediat că:
L(G3) = L(G1) ∪ L(G2)
pentru că fiecare derivare S3 ⇒G3+ w, este fie S1 ⇒G3+ w, fie S2 ⇒G3+ w. Însă G3 este
gramatică regulată la dreapta, deci limbajul L(G3) este un limbaj regulat la dreapta.
b) Fie G4 gramatica liniară la dreapta următoare:
G4 = (N1∪N2, Σ, P4, S1)
unde mulţimea producţiilor P4 este este definită astfel:
1) dacă producţia A→xB ∈ P1 , atunci A→xB ∈ P4
2) dacă A→x ∈ P1 , atunci A→xS2 ∈ P4
3) toate producţiile din P2 sunt şi în P4
Se observă că dacă există derivarea S1 ⇒G1+ w, atunci există şi derivarea S1 ⇒G4+ wS2. În
mod asemănător, dacă S2 ⇒G2+ x, atunci S2 ⇒G4+ x. Cu alte cuvinte, există incluziunea:
L(G1)L(G2) ⊆ L(G4)
Pentru demonstrarea incluziunii inverse, să presupunem derivarea S1 ⇒G4+ w. Deoarece în
G4 nu sunt producţii de forma A→x, care provin din G1, atunci, notând w=xy, derivarea
anterioară poate fi scrisă astfel:
S1 ⇒G4+ xS2 ⇒G4+ xy
cu observaţia că toate producţiile utilizate în derivarea S1 ⇒G4+ xS2 provin din regulile 1) şi
2) anterioare. Din acest motiv există S1 ⇒G1+ x, precum şi S2 ⇒G2+ y, adică:
L(G4) ⊆ L(G1)L(G2)
În concluzie, L(G4) = L(G1)L(G2), iar L(G4) este un limbaj liniar la dreapta.
c) Pentru ultima relaţie, fie gramatica:
G5 = (N1∪{S5}, Σ, P5, S5)
unde S5 ∉ N1, iar mulţimea producţiilor P5 este definită astfel:
1) dacă A→xB ∈ P1 , atunci A→xB ∈ P5
2) dacă A→x ∈ P1 , atunci ambele producţii A→xS2 ∈ P5, A→x ∈ P5
3) producţia S5 → S1 | ε ∈ P5
Demonstraţia ultimei relaţii, L(G5) = (L(G1))*, se bazează pe următorul raţionament: în
gramatica G5 există şirul de derivări:
S5 ⇒G5+ x1S5 ⇒G5+ x1x2S5 ⇒G5+ … ⇒G5+ x1x2…xn+1S5 ⇒G5+ x1x2…xn
dacă şi numai dacă în gramatica G1 există derivările:
S1 ⇒G1+ x1, S1 ⇒G1+ x2, … , S1 ⇒G1+ xn
#

Se poate demonstra acum teorema principală a acestui paragraf. Lemele 2.5 şi 2.6 sunt un
instrument preţios pentru aceasta, deoarece demonstrează faptul că un limbaj liniar la dreapta
poate fi obţinut în acelaşi mod ca şi o mulţime regulată, plecând de la limbajele elementare Φ,
{λ} şi {a} şi aplicând asupra acestora operaţiile de concatenare, reuniune şi închidere.

Teorema 2.1. Un limbaj este o mulţime regulată dacă şi numai dacă el este un limbaj liniar la
dreapta.
Demonstraţie.
a) Demonstrarea implicaţiei directe este imediată, utilizând lemele 2.5 şi 2.6. Fie L o mulţime
regulată. Atunci conform definiţiei mulţimilor regulate, există un număr n, astfel încât L se
obţine din mulţimile regulate Φ, {λ} şi {a}, pentru a∈Σ, aplicând de n ori într-o anumită
succesiune, una dintre operaţiile de de concatenare, reuniune şi închidere. Dar, conform lemei
2.5, mulţimile Φ, {λ} şi {a} sunt limbaje liniare la dreapta, iar conform lemei 2.6, după
fiecare aplicare a uneia dintre operaţiile respective, mulţimea rezultată este tot un limbaj liniar
la dreapta.
b) Demonstrarea implicaţiei inverse. Fie G = (N, Σ, P, S) o gramatică liniară la dreapta, cu
mulţimea simbolurilor neterminale N = {A1, A2, …, An}.
Pentru fiecare neterminal Ai, vom nota cu L(Ai) mulţimea cuvintelor (care conţin doar
simboluri din Σ) generate de Ai, iar în termenii expresiilor regulate, vom desemna această
mulţime tot cu simbolul Ai. Mulţimea L(Ai) se poate determina plecând de la toate producţiile
din P care au neterminalul Ai în partea stângă:
A → wl, l∈{1, …, k}
A → xiAj, j∈{1, …, m}, i∈{1, …, mj}
Rezultă că:
L(Ai) = ∪1≤l≤k(L(wl)) ∪ (∪1≤j≤m(∪1≤i≤m(L(xiAj)))) =
= ∪1≤l≤k{wl} ∪ (∪1≤j≤m(∪1≤i≤m(xiL(Aj))))
Plecând de la această relaţie, se poate scrie următoarea ecuaţie cu expresii regulate:
(2.9) Ai = αi0 + αi1A1 + … + αinAn , ∀i∈{1, 2, …, n}
unde:
αi0 = w1 + … + wk
αij = x1 + … + xmj
Termenii s-au completat folosind următoarele convenţii:
- αi0 = Φ, dacă k=0
- αij = Φ, dacă mj=0
Dar relaţiile (2.9) formează un sistem standard de ecuaţii cu expresii regulate cu
nedeterminatele A1, A2, …, An, iar conform lemei 2.3, acesta are un unic punct fix minimal.
Vom nota cu f acest punct fix minimal, iar f(Ai) reprezintă soluţia minimală a sistemului
pentru nedeterminata Ai, adică mulţimea tuturor cuvintelor din Σ* care se pot deriva din
neterminalul Ai.
Dar simbolul de start S∈N, iar limbajul L(G) generat de gramatica G este mulţimea
tuturor cuvintelor din Σ* care se pot deriva din S, adică L(G) = f(S). Deoarece f(S) este o
soluţie a sistemului (2.9) cu expresii regulate, el este o mulţime regulată şi deci L(G) este o
mulţime regulată.
#

Exemplul 2.3. Fie G o gramatică liniară la dreapta definită de producţiile:


S → 0A | 1S | ε
A → 0B | 1A
B → 0S | 1B
Sistemul de ecuaţii cu expresii regulate asociat gramaticii G este următorul:
S = ε + 1S + 0A
A = 1A + 0B
B = 0S + 1B
adică exact sistemul din exemplul 2.2, în care s-a înlocuit X1 cu S, X2 cu A şi X3 cu B. Din
exemplul 2.2, se observă că soluţia pentru nedeterminata S este:
S = 1*(ε+01*0(01*01*0+1)*01*)
Cu alte cuvinte, limbajul L(G) generat de această gramatică reprezintă mulţimea cuvintelor al
căror număr de 0 este divizibil cu 3.
Capitolul 3
Automate finite

Automatele finite reprezintă o altă metodă de definire a mulţimilor regulate şi implicit a


limbajelor liniare la dreapta. După cum s-a precizat în paragraful 1.3, automatele finite sunt
automate de acceptare, iar limbajul definit de un automat finit este dat de mulţimea cuvintelor
pe care automatul le acceptă.

În cazul automatelor finite, capacitatea memoriei auxiliare este considerată finită, ceea ce face
ca numărul de stări al unităţii de control să fie de asemenea finit (astfel se justifică denumirea
acestui tip de automat de recunoaştere). În plus, capul de citire se mişcă întotdeauna de la
stânga spre dreapta pe banda de intrare.

3.1 Automate finite deterministe


Un automat finit în general este definit de către mulţimea finită a stărilor unităţii de control,
funcţia de tranziţie a stărilor, starea iniţială a unităţii de control, precum şi mulţimea stărilor
finale, adică acele stări în care automatul poate recunoaşte un cuvânt aflat pe banda de intrare.

Caracteristic pentru automatele deterministe este modul de definire a funcţiei de tranziţie:


pentru o stare curentă şi un simbol curent citit de pe banda de intrare, există o singură stare
următoare.

Definiţia 3.1. Un automat finit determinist este un tuplu de forma:


M = (Q, Σ, δ, q0, F),
unde:
a) Q este o mulţime finită de stări
b) Σ este o mulţime finită de simboluri permise de intrare
c) δ este funcţia de tranziţie a stărilor:
δ: Q×Σ → Q
d) q0∈Q este starea iniţială
e) F⊆Q este mulţimea stărilor finale

În cazul în care funcţia δ este o funcţie totală, definită pentru orice pereche (q, a)∈Q×Σ,
automatul se numeşte total sau complet specificat, iar în cazul în care δ este o funcţie parţială,
definită pe o submulţime B⊂Q×Σ, automatul se numeşte incomplet specificat. În mod uzual
se utilizează automate complet specificate.

În mod uzual, funcţia de tranziţie se poate specifica fie printr-un graf de tranziţie a stărilor,
fie printr-o tabela de tranziţie.

Graful de tranziţie a stărilor este un graf orientat, la care nodurile reprezintă stările
automatului, iar arcele reprezintă tranziţiile între stări. Fiecare nod este etichetat cu numele
stării respective, iar fiecare arc cu simbolul care permite tranziţia între starea curentă şi starea
următoare. Astfel, dacă δ(q1, a) = q2, atunci există un arc orientat de la nodul q1 spre nodul q2.
În plus, starea iniţială a automatului se specifică print-un arc care este conectat doar la nodul
stării iniţiale şi care nu are etichetă, iar stările finale sunt specificate prin cercuri duble.

Pentru un automat complet specificat, numărul de arce de ieşire din fiecare nod este egal cu
numărul de simboluri din Σ; pentru un automat incomplet specificat, există cel puţin un nod la
care numărul de arce de ieşire este mai mic decât |Σ|.

Tabela de tranziţie are un număr de linii egal cu numărul de stări şi un număr de coloane egal
cu numărul de simboluri din alfabetul Σ. Intrările din tabelă reprezintă stările următoare.
Astfel, dacă δ(q1, a) = q2, atunci T[q1, a] = q2 (am notat cu T tabela de tranziţie).

Pentru un automat complet specificat, tabela de tranziţii este completă, adică T[q, a] este
definită şi T[q, a]∈Q, ∀q∈Q. ∀a∈Σ.

Exemplul 3.1. Să considerăm un automat finit determinist care recunoaşte acele cuvinte peste
alfabetul {a, b}, care se termină cu un număr impar de simboluri b. Se pot identifica
următoarele stări distincte:
- q0, starea în care fie nu s-a citit nici un simbol, fie ultimul simbol citit este a (stare
iniţială)
- q1, starea în care s-au citit un număr impar de simboluri b consecutive (stare finală)
- q2, starea în care s-au citit un număr par de simboluri b consecutive (stare
intermediară)
Automatul finit se poate reprezenta astfel:
M = (Q, Σ, δ, q0, F)
unde:
Q = {q0, q1, q2}
Σ = {a, b}
F = {q1}
Graful de tranziţie a stărilor este prezentat în figura 3.1.

a b b

q0 q1 q2
a b
a
Figura 3.1

Tabela de tranziţie a stărilor este următoarea:

a b
q0 q0 q1
q1 q0 q2
q2 q0 q1

Există două moduri uzuale prin care se poate descrie funcţionarea şi semantica dinamică a
unui automat finit: utilizând noţiunile de mişcare şi configuraţie, sau noţiunea de funcţie de
tranziţii extinsă. Primul caz corespunde unei abordări mai intuitive, pe când cel de-al doilea
reprezintă un mod mai formal de specificare.

Pentru a putea determina în fiecare moment evoluţia următoare a automatului, trebuie


cunoscute:
- starea curentă a acestuia,
- şirul de simboluri de pe banda de intrare aflat la dreapta simbolului curent.
Aceste informaţii pot fi descrise prin noţiunea de configuraţie.

Definiţia 3.2. Fie M = (Q, Σ, δ, q0, F) un automat finit determinst. O pereche (q, w) ∈ Q×Σ*,
unde q este starea curentă a automatului, iar w şirul aflat pe banda de intrare după poziţia
curentă a capului de citire, se numeşte configuraţie a lui M. O configuraţie de forma (q0, w)
se numeşte configuraţie iniţială, iar o configuraţie de forma (q, w), q∈F, se numeşte
configuraţie finală.

Observaţie. Noţiunea de configuraţie este valabilă pentru toate tipurile de automate finite.

Noţiunea de mişcare a unui automat reprezintă de fapt tranziţia între două configuraţii
succesive.

Definiţia 3.3. Fie M = (Q, Σ, δ, q0, F) un automat finit determinst. Se numeşte mişcare pentru
automatul M o relaţie binară pe mulţimea configuraţiilor, notată cu ⊢M (sau ⊢ dacă M este
subânţeles) şi definită astfel:
(q, w) ⊢M (p, v) dacă şi numai dacă: w=av şi p∈δ(q, a), ∀w∈Σ*

Observaţii.
1) O configuraţie de forma (q, ε) nu are nici o configuraţie următoare, ceea ce înseamnă
de fapt că automatul s-a oprit în starea q.
2) Pentru automatele complet specificate, deoarece funcţia δ este total definită, pentru
fiecare configuraţie (q, w), pentru care w ≠ ε, există o configuraţie succesoare şi
aceasta este unică.

O mişcare între două configuraţii consumă întotdeauna un simbol de pe banda de intrare,


astfel încât, având iniţial pe banda de intrare un cuvânt w ce conţine |w| simboluri, după |w|
configuraţii consecutive, automatul va ajunge într-o configuraţie de forma (q, ε).

Definiţia 3.4. Fie M = (Q, Σ, δ, q0, F) un automat finit determinst şi (q1, w1) o configuraţie a
sa. Se numeşte drum pentru automatul M şi configuraţia (q1, w1) o secvenţă finită de
configuraţii:
S(M, (q1, w1)) = 〈(q1, w1), (q2, w2), ...〉
pentru care următoarele relaţii sunt îndeplinite:
a) ∀i≥1, (qi, wi) ⊢M (qi+1, wi+1)
b) S este închisă la operaţia de mişcare: ∀i≥1, dacă:
(qi, wi)∈S, wi≠ε şi (qi, wi) ⊢M (qi+1, wi+1)
atunci (qi+1, wi+1)∈S

Se observă din definiţia anterioară faptul că pentru orice configuraţie (q, w)∈Q×Σ*:
- numărul de configuraţii din drumul S definit de (q, w) este egal cu numărul de
simboluri ale lui w,
- ultima configuraţie din S este de forma (p, ε).
În concluzie, un drum S(M, (q, w)) este unic pentru o configuraţie (q, w) a automatului M.

Ca şi în cazul operaţiei de derivare într-o gramatică, operaţia de mişcare ⊢M a unui automat M


se poate extinde la o relaţie notată ⊢nM şi definită astfel:
(q, w) ⊢nM (p, v), dacă (p, v) este al (n+1)-lea element al drumului S(M, (q, w)),
adică există secvenţa:
(q, w) ⊢M (q1, w1) ⊢M (q2, w2) ⊢M ... ⊢M (qn, wn) = (p, v)
În plus, (q, w) ⊢0M (p, v) dacă şi numai dacă (q, w) = (p, v).

Definiţia 3.5. Închiderea tranzitivă şi reflexivă a relaţiei ⊢M se notează cu ⊢*M şi este tot o
relaţie binară pe mulţime aconfiguraţiilor automatului M definită astfel:
(q, w) ⊢*M (p, v) dacă şi numai dacă ∃n≥0, aşa încât (q, w) ⊢nM (p, v).

Se poate defini acum noţiunea de cuvânt acceptat de un automat finit determinst, precum şi
cea de limbaj acceptat de un asemenea automat. Intuitiv, un cuvânt w este acceptat de un
automat M dacă drumul parcurs de automat plecând din configuraţia iniţială (q0, w), cu w aflat
pe banda de intrare, se sfârşeşte într-o configuraţie finală de forma (p, ε), unde p∈F. Limbajul
acceptat de automatul M se notează in mod uzual cu L(M) şi reprezintă mulţimea tuturor
cuvintelor acceptate de M.

Definiţia 3.6. Limbajul acceptat de automatul finit determinist M = (Q, Σ, δ, q0, F) este
mulţimea:
L(M) = {w∈Σ* | (q0, w) ⊢*M (q, ε), q∈F)

Pentru definirea funcţiei extinse de tranziţie a stărilor, trebuie făcute următoarele observaţii:
a) O mişcare a automatului de la o configuraţie curentă la configuraţia următoare
corespunde unei tranziţii în graful de tranziţii între nodul stării curente şi cel al
stării următoare;
b) Un drum al automatului S(M, (q, w)) = ((q, w), ... , (p, ε)), unde w=a1a2…ak
reprezintă de fapt un drum în graful de tranziţii între nodul stării q şi nodul p
corespunzător ultimei configuraţii din secvenţă, drumul fiind etichetat cu
simbolurile a1, a2, …, ak.

Funcţia de tranziţii extinsă a unui automat finit determinist se mai numeşte funcţia de
accesibilitate şi extinde funcţia de tranziţii a acestuia pentru cuvinte în loc de simboluri.
Practic, funcţia de tranziţii extinsă, determină pentru o configuraţie curentă a automatului (q,
w), starea asociată configuraţiei finale din drumul S(M, (q, w)), adică starea finală din drumul
respectiv al grafului de tranziţii.

Definiţia 3.7. Fie M = (Q, Σ, δ, q0, F) un automat finit determinst. Funcţia de tranziţii
extinsă a automatului M este o aplicaţie notată cu δ*:
δ*: Q×Σ* → Q
şi definită astfel:
- δ*(q, w) = q, dacă w=ε
- δ*(q, w) = δ(δ*(q, v), a), dacă w=va

De exemplu, pentru automatul din figura 3.1, pentru w = aabbb şi q=q0 avem:
δ*(q0, aabbb) = δ(δ*(q0, aabb), b) = δ(δ(δ*(q0, aab), b), b) =
δ(δ(δ(δ*(q0, aa), b), b), b) = δ(δ(δ(δ(δ*(q0, a), a), b), b), b) =
δ(δ(δ(δ(δ(δ*(q0, ε), a), a), b), b), b) = δ(δ(δ(δ(δ(q0, a), a), b), b), b) =
δ(δ(δ(δ(q0, a), b), b), b) = δ(δ(δ(q0, b), b), b) = δ(δ(q1, b), b) =
δ(q2, b) = q1 ∈ F

Din definiţia precedentă se observă legătura între funcţia de tranziţii extinsă şi închiderea
tranzitivă şi reflexivă a relaţiei de mişcare:
δ*(q, w) = p ⇔ (q, w) ⊢* (p, ε)

Această observaţie permite o nouă definire a limbajului acceptat de un automat finit


determinist, bazat pe funcţia de tranziţii extinsă.

Definiţia 3.8. Limbajul acceptat de automatul finit determinist M = (Q, Σ, δ, q0, F) este
mulţimea:
L(M) = {w∈Σ* | δ*(q, w)∈F}

În continuare se va nota cu ℑAFD clasa automatelor finite deterministe şi cu ℒAFD clasa


limbajelor acceptate de automatele finite deterministe.

3.2 Automate finite nedeterministe


Automatele finite nedeterministe reprezintă un mecanism eficient pentru specificarea şi
proiectarea analizoarelor lexicale şi a procesoarelor de texte (de exemplu comanda grep a
sistemului de operare Unix), însă din păcate ele nu sunt direct implementabile într-un mod
nedeterminist.

Vom defini automatele finite nedeterministe în două etape: în prima etapă vom considera că
funcţia de tranziţie a stărilor permite determinarea unei mulţimi de stări posibil următoare
stării curente, dacă s-a citit un simbol curent de pe banda de intrare, iar în a doua etapă se va
permite în plus ca tranziţia între două stări adiacente să poată fi realizată şi fără citirea vreunui
simbol de pe banda de intrare. Un automat din prima categorie se va numi automat
nedeterminist fără ε-tranziţii, iar unul din ultima categorie se va numi automat nedeterminist
cu ε-tranziţii.

3.2.1 Automate finite nedeterministe fără ε-tranziţii


Principala deosebire a automatelor nedeterministe faţă de cele determinste o constituie modul
de definire a funcţiei de tranziţie a stărilor. Starea următoare definită de această funcţie nu mai
este unică, ea poate fi orice submulţime a mulţimii stărilor automatului.

Definiţia 3.9. Un automat finit nedeterminist este un tuplu de forma:


M = (Q, Σ, δ, q0, F),
unde:
a) Q este o mulţime finită de stări
b) Σ este o mulţime finită de simboluri permise de intrare
c) δ este funcţia de tranziţie a stărilor:
δ: Q×Σ → ℘(Q)
d) q0∈Q este starea iniţială
e) F⊆Q este mulţimea stărilor finale

Şi în acest caz, funcţia δ este totală pentru automatele complet specificate.

Fie (q, a)∈Q×Σ:


- Dacă |δ(q, a)| = 1, atunci pentru starea curentă q şi simbolul curent a citit de pe banda
de intrare există o unică stare următoare, ca şi în cazul automatelor deterministe.
- Dacă |δ(q, a)| = 0, atunci pentru starea curentă q şi simbolul curent a nu mai există nici
o stare următoare şi automatul se opreşte în această stare, chiar dacă pe banda de
intrare mai există simboluri necitite.
- Dacă |δ(q, a)| > 1, atunci pentru starea curentă q şi simbolul curent a există mai multe
stări următoare posibile, caz care sugerează şi numele acestor automate.

În acest caz, fiecare element al matricii de tranziţie a stărilor este o submulţime a mulţimii Q.

Exemplul 3.2. Să considerăm un automat finit nedeterminist care recunoaşte acele cuvinte
peste alfabetul {1, 2, 3}, la care ultimul simbol citit este identic cu un simbol anterior, iar între
acestea nu există alte simboluri mai mari (de exemplu: ...11, ...21112, ...321113, etc.). Se pot
identifica următoarele stări distincte:
- q0: starea în care nu s-a citit încă un simbol care este identic cu simbolul de sfârşit
al şirului,
- q1, q2, q3: stările în care s-a citit un simbol identic cu simbolul de sfârşit, dar
simbolul de sfârşit nu s-a citit încă,
- q4: starea în care s-a citit şi simbolul de sfârşit.
Automatul finit se poate reprezenta astfel:
M = (Q, Σ, δ, q0, F)
unde:
Q = {q0, q1, q2, q3, q4}
Σ = {1, 2, 3}
F = {q4}
Graful de tranziţie a stărilor este prezentat în figura 3.2.

1,2,3 1 q1 1

2 2
q0 q2 q4
1
3 3
q3
1,2

Figura 3.2
Pentru descrierea funcţionării unui automat finit nedeterminist se utilizează şi în acest caz
noţiunile de configuraţie, mişcare, drum, precum şi funcţia de tranziţii extinsă.

Noţiunea de configuraţie este aceeaşi ca şi la automatele deterministe: o configuraţie este o


pereche (q, w)∈Q×Σ*, unde w reprezintă şirul de simboluri necitite încă de pe banda de
intrare, iar q starea curentă a automatului.

Noţiunea de mişcare se defineşte în mod formal la fel ca şi în cazul automatelor deterministe,


dar în acest caz, pentru o configuraţie curentă, mişcarea posibilă spre o configuraţie următoare
nu mai este unică.

Definiţia 3.10. Fie M = (Q, Σ, δ, q0, F) un automat finit nedeterminst. Se numeşte mişcare
pentru automatul M o relaţie binară pe mulţimea configuraţiilor, notată cu ⊢M (sau ⊢ dacă M
este subânţeles) şi definită astfel:
(q, w) ⊢M (p, v) dacă şi numai dacă: w=av şi p∈δ(q, a), ∀w∈Σ*

Datorită modului în care este definită funcţia de tranziţie, noţiunea de mişcare are următoarele
particularităţi. Fie (q, av) configuraţia curentă:
- dacă δ(q, a) = Φ, atunci pentru simbolul curent a de pe banda de intrare, nu există
nici o mişcare spre o configuraţie următoare şi automatul se opreşte;
- dacă card(δ(q, a)) > 1, atunci pentru simbolul curent a de pe banda de intrare,
există mai multe mişcări posibile spre o configuraţie următoare, dar bineânţeles că
doar una dintre ele (nepredictibilă) se va realiza.

Noţiunea de drum este modificată, deoarece dintre mai multe mişcări posibile, doar una
trebuie luată în considerare la specificarea unui drum, deşi aceasta nu poate fi prezisă.

Definiţia 3.11. Fie M = (Q, Σ, δ, q0, F) un automat finit nedeterminst şi (q1, w1) o configuraţie
a sa. Un drum pentru automatul M şi configuraţia (q1, w1) este o secvenţă finită de
configuraţii:
〈(q1, w1), (q2, w2), ...〉
pentru care următoarele relaţii sunt îndeplinite:
a) ∀i≥1, (qi, wi) ⊢M (qi+1, wi+1)
b) S este închisă la operaţia de mişcare: ∀i≥1, dacă (qi, wi)∈S şi (qi, wi) are cel puţin
un succesor, atunci unul dintre aceştia, notat cu (qi+1, wi+1), face parte din secvenţă:
(qi, wi) ⊢M (qi+1, wi+1) şi (qi+1, wi+1)∈S
Mulţimea drumurilor asociate configuraţiei (q1, w1) se notează cu S(M, (q1, w1)).

Spre deosebire de automatele deterministe, în acest caz, drumul asociat unei configuraţii nu
mai este unic. Mai mult, un automat nedeterminist se poate opri fie când şirul de pe banda de
intrare s-a citit în întregime (w=ε), fie când o configuraţie din acest drum nu mai are nici o
configuraţie succesoare.

Ca şi în cazul automatelor deterministe, relaţia de mişcare se poate extinde pentru mai multe
mişcări consecutive.
Definiţia 3.12. Fie M = (Q, Σ, δ, q0, F) un automat finit determinst. Relaţiile ⊢nM şi ⊢*M se
definesc astfel:
(1) (q, w) ⊢nM (p, v), dacă şi numai dacă există un drum S1 ∈ S(M, (q, w)), aşa încât
configuraţia (p, v) este al (n+1)-lea element al secvenţei S1. Dacă este verificată
relaţia (q, w) ⊢nM (p, v), atunci configuraţia (p, v) este un al n-lea succesor al
configuraţiei (q, w).
(2) (q, w) ⊢*M (p, v) dacă şi numai dacă există un drum S1 ∈ S(M, (q, w)), aşa încât
configuraţia (p, v)∈ S1.

Se poate demonstra foarte uşor faptul că relaţia ⊢*M reprezintă închiderea reflexivă şi
tranzitivă a relaţiei ⊢M .

Se poate defini acum limbajul acceptat de un automat finit nedeterminist, definiţia fiind în
mod formal similară celei din cazul automatelor deterministe.

Definiţia 3.13. Limbajul acceptat de automatul finit nedeterminist M = (Q, Σ, δ, q0, F) este
mulţimea:
L(M) = {w∈Σ* | (q0, w) ⊢*M (q, ε), q∈F)

Deci, pentru ca un cuvânt w∈Σ* să fie recunoscut de automatul M, este suficient să existe cel
puţin un drum asociat configuraţiei iniţiale (q0, w) care să se termine într-o configuraţie finală
de forma (p, ε), unde p∈F.

Exemplul 3.3. Se consideră automatul nedeterminist:


M = ({0, 1, 2, 3}, {a, b}, δ, 0, {0, 2})
la care funcţia de tranziţie este specificată prin matricea de tranziţie a stărilor:
a B
0 {1, 3} Φ
1 {2, 3} {0, 1, 2, 3}
2 {3} Φ
3 {3} {0, 2}

Se observă faptul că w = abb este un cuvânt acceptat de automat, deoarece există pentru el un
drum ce verifică definiţia anterioară:
S1 = ((0, abb), (1, bb), (3, b), (0, ε))
Drumul S1 nu este însă unic. Pentru w mai există şi alte drumuri asociate care verifică aceeaşi
relaţie:
S2 = ((0, abb), (1, bb), (1, b), (0, ε))
S3 = ((0, abb), (1, bb), (1, b), (2, ε))
De asemenea, pentru acelaşi cuvânt w, există şi drumuri care nu verifică definiţia anterioară.
De exemplu:
S4 = ((0, abb), (1, bb), (1, b), (3, ε))
S5 = ((0, abb), (1, bb), (2, b))

Funcţia de tranziţii extinsă nu va returna stări, ci mulţimi de stări.


Definiţia 3.14. Fie M = (Q, Σ, δ, q0, F) un automat finit nedeterminst. Funcţia de tranziţii
extinsă a automatului M este o aplicaţie notată cu δ*:
δ*: Q×Σ* → ℘(Q)
şi definită astfel:
- δ*(q, w) = q, dacă w=ε
- δ*(q, w) = ∪q1∈δ*(q, v) δ(q1, a), dacă w=va

Practic, funcţia de accesibilitate δ*(q, w), pentru w=a1a2...ak, determină toate drumurile din
graful de tranziţii care pleacă din nodul q şi care sunt etichetate cu simbolurile a1,a2, ... , ak şi
reţine ultimul nod din fiecare astfel de drum. O exprimare echivalentă a ultimei relaţii este
următoarea:
δ*(q, va) = {q2 | ∃q1∈δ*(q, v), astfel încât q2∈δ(q1, a)}

Utilizând funcţia de tranziţii extinsă, limbajul acceptat de un automat nedeterminist se poate


redefini astfel:

Definiţia 3.15. Limbajul acceptat de automatul finit nedeterminist M = (Q, Σ, δ, q0, F) este
mulţimea:
L(M) = {w∈Σ* | δ*(q, w)∩F ≠ Φ}

În continuare se va nota cu ℑAFN clasa automatelor finite nedeterministe fără ε-tranziţii şi cu


ℒAFN clasa limbajelor acceptate de către aceste automate.

3.2.2 Automate finite nedeterministe cu ε-tranziţii


Se va adăuga automatelor finite un nou grad de nedeterminism, şi anume ca tranziţiile să
poată să aibă loc independent de simbolurile de pe banda de intrare. Asemenea tranziţii pentru
care nu se citeşte nici un simbol de pe banda de intrare se numesc ε-tranziţii, sau tranziţii
vide.

Exemplul 3.4. Să considerăm automatul din figura 3.3.


0

1 ε
q0 q1 q2
0 ε

Figura 3.3
Când automatul se află în starea q1, el poate trece imediat în starea q2 fără să consume nici un
simbol de pe banda de intrare. În mod asemănător, când se află în starea q2, el poate trece în
starea q0 consumând simbolul 1 de pe banda de intrare, sau poate trece în starea q1 fără să
consume nici un simbol.
În acest caz, cuvântul 001 de pe banda de intrare poate fi recunoscut dacă automatul
parcurge drumul q0, q2, q1, q0, q1, q2, care are eticheta 0ε01ε = 001.
Definiţia 3.16. Un automat finit nedeterminist cu ε-tranziţii este un tuplu de forma:
M = (Q, Σ, δ, q0, F),
unde:
a) Q este o mulţime finită de stări
b) Σ este o mulţime finită de simboluri permise de intrare
c) δ este funcţia de tranziţie a stărilor:
δ: Q×(Σ∪{ε}) → ℘(Q)
d) q0∈Q este starea iniţială
e) F⊆Q este mulţimea stărilor finale

Pentru a redefini noţiunea de mişcare în acest caz, va trebui determinată secvenţa de tranziţii
care se poate realiza. Deoarece ε-tranziţiile pot apare fără consumarea vreunui simbol, există
două cazuri în care ele trebuie luate în considerare: înainte de o tranziţie care consumă un
simbol de pe banda de intrare, sau după aceasta.

De exemplu, în cazul automatului din figura 3.3, dacă automatul se află în starea q2, pentru
consumarea simbolului curent 0 de pe banda de intrare, se pot realiza două tranziţii, prima
fiind o tranziţie vidă: q2→q1 şi q1→q0. Dacă automatul se află în starea q0, pentru consumarea
simbolului curent 1 de pe banda de intrare, se pot realiza două tranziţii, a doua fiind o tranziţie
vidă: q0→q1 şi q1→q2.

În general, pentru un simbol curent a aflat pe banda de intrare, automatul poate trece printr-o
secvenţă de zero sau mai multe ε-tranziţii, apoi printr-o singură a-tranziţie, urmată de
asemenea de o secvenţă de zero sau mai multe ε-tranziţii. Pentru a putea specifica o asemenea
secvenţă de tranziţii, se va utiliza închiderea tranzitivă a ε-tranziţiilor care plecaă dintr-o
anumită stare. Această închidere tranzitivă este specificată de o funcţie numită ε-Closure,
care, pentru o anumită stare q, determină toate stările ce pot fi atinse prin orice secvenţă de ε-
tranziţii plecând din starea q (închiderea tranzitivă a ε-tranziţiilor care pleacă din starea q).

Funcţia de închidere tranzitivă a ε-tranziţiilor este o aplicaţie:


ε-Closure : Q →℘(Q)
definită recursiv astfel: pentru orice stare q∈Q, următoarele relaţii sunt îndeplinite:
a) q ∈ ε-Closure(q)
b) dacă q1 ∈ ε-Closure(q), atunci δ(q1, ε) ∈ ε-Closure(q)
c) toate valorile lui ε-Closure(q) se obţin cu ajutorul relaţiilor a) şi b)

Se poate extinde funcţia ε-Closure la o mulţime de stări:


ε-Closure : ℘(Q) →℘(Q)
unde, dacă S⊆Q, atunci:
ε-Closure(S) = ∪q∈S (ε-Closure(q))

Se poate defini un algoritm simplu pentru determinarea valorilor lui ε-Closure(S), folosind o
stivă.

Algoritmul 3.1. Determinarea închiderii tranzitive ε-Closure(S).


Se consideră un automat finit nedeterminist cu ε-tranziţii, M = (Q, Σ, δ, q0, F).
Algoritmul utilizează o stivă locală notată st.
Operaţiile din algoritm sunt operaţii cu mulţimi.
Intrare.
- S⊆Q, mulţimea de stări pentru care se calculează ε-Closure
- Funcţia de tranziţie a stărilor δ, sau matricea de tranziţie
Ieşire.
- T⊆Q, T = ε-Closure(S)
Metodă.
procedure ε-Closure(S, δ; T)
init(st)
for ∀q∈S do
push(st, q)
endfor
T ← S
while st ≠ Φ do
p ← pop(st)
for ∀r∈Q do
if p∈δ(r,ε) then
if r∉T then
T ← T ∪ {r}
push(st, r)
endif
endif
endfor
endwhile
end

Se poate arăta simplu faptul că algoritmul anterior determină în mod corect ε-Closure(S),
pentru S⊆Q.

Pe baza funcţiei ε-Closure se poat redefini acum noţiunea de mişcare.

Definiţia 3.17. Fie M = (Q, Σ, δ, q0, F) un automat finit nedeterminst cu ε-tranziţii. Se


numeşte mişcare pentru automatul M o relaţie binară pe mulţimea configuraţiilor, notată cu
⊢M (sau ⊢ dacă M este subânţeles) şi definită astfel:
(q, w) ⊢M (p, v) dacă şi numai dacă: w=av şi p∈ε-Closure(δ(ε-Closure(q), a)), ∀w∈Σ*

Pentru simplitate, vom defini limbajul recunoscut de un automat cu ε-tranziţii doar cu ajutorul
funcţiei de tranziţii extinsă.

Definiţia 3.18. Fie M = (Q, Σ, δ, q0, F) un automat finit nedeterminst cu ε-tranziţii. Funcţia
de tranziţii extinsă a automatului M este o aplicaţie notată cu δ*:
δ*: Q×Σ* → ℘(Q)
şi definită astfel:
- δ*(q, w) = ε-Closure(q), dacă w=ε
- δ*(q, w) = ∪q1∈δ*(q, v) (ε-Closure(δ(q1, a))), dacă w=va

Definiţia anterioară este recursivă şi aparent diferă de definiţia 3.17, deoarece la consumarea
unui simbol curent a de pe banda de intrare nu se parcurge decât şirul de ε-tranziţii dinainte de
consumarea simbolului a. Şirul de ε-tranziţii după consumarea lui a va fi parcurs însă la
apelul imediat următor, unde şirul de pe banda de intrare este v.

Utilizând noua formă a funcţiei de tranziţii extinse, definiţia limbajului recunoscut de un


automat nedeterminist cu ε-tranziţii nu se schimbă.

Definiţia 3.19. Limbajul acceptat de automatul nedeterminist ε-tranziţii M = (Q, Σ, δ, q0, F)


este mulţimea:
L(M) = {w∈Σ* | δ*(q, w)∩F ≠ Φ}

Exemplul 3.5. Să considerăm automatul din exemplul 3.4. Funcţia de tranziţii extinsă pentru
cuvânul w=001 şi starea iniţială se poate calcula recursiv astfel:
δ*(q0, ε) = {q0}
δ*(q0, 0) = ∪p∈{q0}(ε-Closure(δ(p, 0))) = ε-Closure(δ(q0, 0)) = ε-Closure(q2) = {q1, q2}
δ*(q0, 00) = ∪p∈{q1,q2}(ε-Closure(δ(p, 0))) = ε-Closure(δ(q1, 0)) ∪ ε-Closure(δ(q2, 0)) =
= ε-Closure(q0) = {q0}
δ (q0, 001) = ∪p∈{q0}(ε-Closure(δ(p, 1))) = ε-Closure(δ(q0, 1)) = ε-Closure(q1) =
*

= {q2, q1}
Deoarece F = {q2}, se observă că {q2, q1} ∩ F ≠ Φ şi deci w=001 este acceptat de automat.

În continuare se va nota cu ℑε-AFN clasa automatelor finite nedeterministe cu ε-tranziţii şi cu


ℒε-AFN clasa limbajelor acceptate de către aceste automate.

3.3 Echivalenţa automatelor finite


Automatele finite au o importantă proprietate: toate clasele de automate finite sunt
echivalente. Aceasta înseamnă că:
- clasa automatelor finite nedeterminste fără ε-tranziţii este echivalentă cu clasa
automatelor finite nedeterminste fără ε-tranziţii,
- clasa automatelor finite determinste este echivalentă cu clasa automatelor finite
nedeterminste.

A afirma faptul că două clase de automate finite ℑ1 şi ℑ2 sunt echivalente înseamnă a afirma
faptul că clasele ℒ1 şi ℒ2 ale limbajelor acceptate de acestea sunt echivalente:
- pentru orice automat M1∈ℑ1, există un automat M2∈ℑ2, aşa încât L(M1) = L(M2);
- pentru orice automat M2∈ℑ2, există un automat M1∈ℑ1, aşa încât L(M1) = L(M2).

3.3.1 Echivalenţa claselor de automate finite nedeterministe

Avantajul automatelor finite nedeterministe cu ε-tranziţii constă în faptul că se permite


construirea unui automat nedeterminist într-o manieră bottom-up, plecând de la automate
simple, prin compunerea lor în automate din ce în ce mai complexe, dar în general existenţa ε-
tranziţiilor nu măreşte puterea de exprimare a unor asemnea automate.
Dacă se demonstează echivalenţa celor două clase de automate, aceasta înseamnă că pentru
orice automat nedeterminist cu ε-tranziţii, se poate construi un automat fără ε-tranziţii, care
recunoaşte acelaşi limbaj.

Incluziunea ℒAFN ⊆ ℒε-AFN este imediată, după cum se poate observa din definiţiile celor două
tipuri de automate şi a funcţiilor de tranziţie extinse asociate. Vom demonstra în continuare
cealaltă incluziune: ℒε-AFN ⊆ ℒAFN.

Lema 3.1. Fie M un automat finit nedeterminst cu ε-tranziţii. Atunci există un automat finit
nedeterminst fără ε-tranziţii M1, astfel încât L(M) = L(M1).
Demonstraţie.
Fie M = (Q, Σ, δ, q0, F) automatul fără ε-tranziţii. Demonstrarea lemei este constructivă, în
sensul că se va construi automatul M1 care verifică proprietatea lemei.
Fie M1 = (Q, Σ, δ1, q0, F1), unde:
δ1(q, a) = δ*(q, a), ∀q∈Q, ∀a∈Σ
iar mulţimea stărilor finale este definită astfel:
- F1 = F ∪ {q0}, dacă δ*(q0, ε)∩F ≠ Φ
- F1 = F, în celelalte cazuri
Se observă din definiţia funcţiei δ1 faptul că automatul M1 este fără ε-tranziţii. Vom
demonstra că pentru un cuvânt oarecare w∈Σ*, w∈L(M) ⇔ w∈L(M1).
a) Cazul w=ε se tratează distinct. Din definiţia mulţinii F1 rezultă următoarele echivalenţe:
ε∈L(M1) ⇔ δ1*(q0, ε)∩F1 ≠ Φ
⇔ q0 ∈ F1
⇔ (q0 ∈ F) ∨ (δ*(q0, ε)∩F ≠ Φ)
⇔ δ*(q0, ε)∩F ≠ Φ //deoarece q0∈δ*(q0, ε)
⇔ ε∈L(M)
b) Pentru cazul când |w|>0, va trebui demonstrat că ∀w∈Σ*, următoarea relaţie este
îndeplinită:
δ*(q0, w)∩F ≠ Φ ⇔ δ1*(q0, w)∩F1 ≠ Φ
Pentru aceasta, vom demonstra că ∀q∈Q, ∀w∈Σ* cu proprietatea că |w|>0, următoarea
relaţie este îndeplinită:
δ*(q, w) = δ1*(q, w)
Să demonstrăm relaţia precedentă prin inducţie după lungimea şirului w.
Pentru |w|=1, avem:
δ1*(q, a) = ∪p∈δ1*(q,ε)(δ1(q, a)) = δ1(q, a) = δ*(q, a)
Să presupunem relaţia adevărată pentru orice cuvânt v pentru care |v|=n şi fie un cuvânt w
de lungime n+1, adică w=va, unde |v|=n şi a∈Σ. Avem în acest caz următoarele egalităţi:
δ1*(q, va) = ∪p∈δ1*(q,v)( δ1(p, a)) = ∪p∈δ*(q,v)(δ*(p, a))) =
= ∪p∈δ*(q,v)(δ(p, a)) = δ*(q, va)
#

Exemplul 3.6. Să considerăm automatul cu ε-tranziţii din exemplul 3.4. Automatul echivalent
M1 fără ε-tranziţii are aceeaşi mulţime de stări şi aceeaşi mulţime de stări finale, deoarece
δ*(q0, ε) = {q0} ⊄ F. Pentru construirea funcţiei de tranziţie δ1 se utilizează următoarea relaţie:
δ*(q, a) = ∪p∈ε-Closure(q)(ε-Closure(δ(p, a))), ∀a∈Σ
Diagrama de tranziţii a automatului M1 este determinată de relaţiile următoare:
δ1(q0, 0) = δ*(q0, 0) = ε-Closure(δ(q0, 0)) = ε-Closure(q2) = {q2, q1}
δ1(q0, 1) = ε-Closure(δ(q0, 1)) = {q1, q2}
δ1(q1, 0) = ε-Closure(δ(q1, 0)) ∪ ε-Closure(δ(q2, 0)) = {q0}
δ1(q1, 1) = ε-Closure(δ(q1, 1)) ∪ ε-Closure(δ(q2, 1)) = {q0}
δ1(q2, 0) = ε-Closure(δ(q1, 0)) ∪ ε-Closure(δ(q2, 0)) = {q0}
δ1(q2, 1) = ε-Closure(δ(q1, 1)) ∪ ε-Closure(δ(q2, 1)) = {q0}
şi este specificată în figura 3.4.
0,1

0,1 q2
q0 q1
0,1

0,1
Figura 3.4

3.3.2 Echivalenţa între automatele finite deterministe şi cele nedeterministe


Automatele nedeterministe au în general o mai mare putere de specificare decât cele
deterministe, însă ele nu sunt direct implementabile, datorită nedeterminismului funcţiei de
tranziţie. De exemplu, simularea unui automat nedeterminist implică utilizarea paralelismului,
pentru simularea tranziţiilor ce au loc paralel. În practică se utilizează automatele deterministe
pentru implementare.

Dacă se demonstrează echivalenţa între cele două clase de automate, aceasta înseamnă că
pentru un automat nedeterminst se poate construi un automat determinst echivalent, care
acceptă alcelaşi limbaj şi care poate fi eventual utilizat pentru o implementare practică. Pentru
a simula un automat nedeterminist, se va determina automatul determinist echivalent şi se va
simula acesta din urmă, fără să mai intervină paralelismul în simularea automatului.

În continuare, se va considera pentru simplitate doar cazul automatelor nedeterminste fără ε-


tranziţii, deoarece s-a demonstrat anterior echivalenţa lor cu automatele nedeterministe cu ε-
tranziţii.

Incluziunea ℒAFD ⊆ ℒAFN este imediată, după cum se poate observa din definiţiile celor două
tipuri de automate şi a funcţiilor de tranziţie extinse asociate. Un automat determinist este un
caz particular al unui automat nedeterminist pentru care |δ(q, a)| = 1, ∀q∈Q, ∀a∈Σ.

Vom demonstra în continuare cealaltă incluziune: ℒAFN ⊆ ℒAFD. Ideea de bază, este
asemănătoare cu cea din paragraful precedent: plecând de la un automat nedeterminst, va
trebui construit un automat determinst echivalent cu acesta, care acceptă acelaşi limbaj. După
cum se va vedea, dezavantajul unui asemenea automat determinst constă în faptul că are în
general un număr mult mai mare de stări decât automatul nedeterminst iniţial.

Fie:
MN = (QN, Σ, δN, q0N, FN)
un automat finit nedeterminist. Cea mai simplă metodă de a construi un automat finit
determinist
MD = (QD, Σ, δD, q0D, FD)
echivalent cu MN, constă în a ataşa fiecărei submulţimi de stări din QN o stare în mulţimea QD,
iar funcţia δD va fi determinată astfel încât orice cuvânt recunoscut de MN să fie recunoscut şi
de MD. Un asemenea automat este relativ simplu de construit, însă el are dezavantajul că are
un număr foarte mare de stări, iar multe dintre ele sunt redundante şi nu pot fi atinse niciodată.

Din acest motiv, nu toate submulţimile V∈℘(QN) vor avea o stare echivalentă în MD, ci doar
acelea care pot fi returnate de funcţia de tranziţii extinsă pentru diferitele cuvinte w din
limbajul L(MN).

Astfel, pentru fiecare submulţime V⊆QN, se va adăuga o nouă stare în QD, dacă şi numai
dacă:
∃w∈Σ*, aşa încât δ*N(q0N, w) = V
Această alegere este justificată, deoarece stările din V pot fi atinse plecând din starea iniţială
şi având w pe banda de intrare. În concluzie:
(3.1) QD = {V⊆QN | ∃w∈Σ*, aşa încât δ*N(q0N, w) = V}

Simbolul de start al automatului MD se obţine astfel:


(3.2) q0D = {q0N}

Stările finale ale automatului MD corespund acelor submulţimi de stări ale lui MN care sunt
incluse în mulţimea stărilor finale FN:
(3.3) FD = {V⊆QN | V∩FN ≠ Φ}

Funcţia de tranziţie a stărilor:


δD : QD×Σ → QD
trebuie să fie o funcţie totală, definită astfel:
(3.4) ∀a∈Σ, ∀V⊆QN aşa încât V∈QD:
δD (V, a) = ∪q∈V (δN(q, a))

Algoritmul următor generează automatul MD conform elementelor schiţate. Deoarece


construirea automatului determinist se bazează pe generarea submulţimilor stărilor
automatului nedeterminist, algoritmul se mai numeşte algoritmul de construire a
submulţimilor. Algoritmul utilizează o stivă locală pentru memorarea submulţimilor generate.

Algoritmul 3.2. Construirea submulţimilor.


Algoritmul utilizează:
- o stivă locală notată st pentru memorarea submulţimilor generate,
- funcţia T pentru asocierea stărilor automatului MD.
Operaţiile din algoritm sunt operaţii cu mulţimi.
Intrare.
- Un automat finit nedeterminist MN = (QN, Σ, δN, q0N, FN)
Ieşire.
- Un automat finit determinist MD = (QD, Σ, δD, q0D, FD)
Metodă.
procedure SubsetConstruction(QN,Σ,δN,q0N,FN; QD,δD,q0D,FD)
init(st)
q0D ← {q0N}
QD ← {q0D}
FD ← Φ
push(st, {q0N}) // (a)
while st≠Φ do
R ← pop(st) // (b)
for ∀a∈Σ do
V ← ∪q∈R (δN(q, a)) // (c)
if V∉QD then
push(st, V)
QD ← QD ∪ {V} // (d)
if V∩FN ≠ Φ then
FD ← FD ∪ {V} // (e)
endif
endif
δD(R, a) ← V // (f)
endfor
endwhile
end

În algoritmul precedent, mulţimea de stări R din QN corespunde stării curente din automatul
MD, iar fiecare mulţime V corespunde unei stări următoare.

Se poate arăta imediat faptul că automatul MD generat de algoritmul precedent este un


autoamat finit determinst şi verifică relaţiile (3.1), (3.2), (3.3) şi (3.4). De fapt, algoritmul 3.2
este un algoritm de parcurgere depth-first a grafului de tranziţii al automatului MN, plecând
din starea iniţială q0N.

Lema 3.3. Automatul generat de algoritmul 3.2 este un automat finit determinist care verifică
relaţiile (3.1), (3.2), (3.3) şi (3.4).
Demonstraţie.
Automatul MD generat de algoritmul 3.2 este finit, deoarece numărul maxim de stări al
acestuia este egal cu numărul de submulţimi al mulţimii QN (şi deci finit). El este şi
determinist, datorită faptului că instrucţiunea (f) din funcţia SubsetConstruction se aplică o
singură dată pentru fiecare mulţime R, după care aceasta este scoasă din stivă şi nu mai este
introdusă niciodată. Deci există cel mult o mulţime V care este starea următoare a unei stări R.
Relaţia (3.2) rezultă imediat din instrucţiunea (a) a funcţiei SubsetConstruction. Vom
demonstra în continuare relaţia (3.1). Vom nota cu QDDef mulţimea stărilor definită de relaţia
(3.1) şi cu QDAlg mulţimea stărilor determinată de algoritmul 3.2 şi vom demonstra relaţia:
QDDef = QDAlg
Există următoarele echivalenţe:
V∈QDDef ⇔ ∃w∈Σ*, aşa încât δ*N(q0N, w) = V // din relaţia (3.2)
⇔ (V = δ*N(q0N, ε)) ∨ // din definiţia funcţiei δ*
(∃v∈Σ*, ∃a∈Σ, aşa încât V = ∪p∈δ*(q, v) δ(p, a))
⇔ (V = {q0N}) ∨ // din instrucţiunea (a) a algoritmului
(∃R∈QDAlg, ∃a∈Σ, aşa încât V = ∪p∈R δ(p, a))
// din instrucţiunile (b), (c) şi (d) ale algoritmului
⇔ V∈QDAlg
Relaţia (3.3) rezultă imediat din instrucţiunea (e) a algoritmului, iar relaţia (3.4) din
instrucţiunile (c) şi (f).
#

Mai mult, se poate demonstra faptul că automatul MD construit de algoritmul 3.2 recunoaşte
acelaşi limbaj ca şi automatul MN.

Lema 3.3. Pentru fiecare automat finit nedeterminist MN = (QN, Σ, δN, q0N, FN), există un
automat finit determinist MD = (QD, Σ, δD, q0D, FD) pentru care L(MN) = L(MD).
Demonstraţie. Fie MD = (QD, Σ, δD, q0D, FD) automatul determinist generat de algoritmul 3.2.
Vom demonstra întâi următoarea relaţie:
(3.5) ∀w∈Σ*,
δD*(q0D, w) = δN*(q0N, w)
Vom demonstra relaţia anterioară după lungimea cuvântului w.
Dacă |w|=0, atunci w=ε şi atunci:
δD*(q0D, ε) = {q0N} = δN*(q0N, ε)
şi deci relaţia (3.5) se verifică.
Să presupunem că relaţia (3.5) este verificată de orice cuvânt v pentru care |v|≤k şi să
demonstrăm relaţia pentru un cuvânt w pentru care |w|=k+1. Fie w=va, unde |v|≤k şi a∈Σ.
Atunci avem:
δD*( q0D, va) = δD(δD*( q0D, v), a) // din definiţia funcţiei δD*
= δD(δN (q0N, v), a)
*
// din ipoteza inductivă
= ∪p∈δ*N(q0N,v)(δN*(p, a)) // din relaţia (3.4) verificată de automatul MD
= δN*(q0N, va) // din definiţia funcţiei δN*
şi deci relaţia (3.5) se verifică.
Avem atunci următorul şir de echivalenţe:
w∈L(MD) ⇔ δD*(q0D, w)∈FD // din definiţia limbajului L(MD)
⇔ δD*(q0D, w)∩FN ≠ Φ // din relaţia (3.3) verificată de automatul MD
⇔ δN*(q0N, w)∩FN ≠ Φ // din relaţia (3.5)
⇔ w∈L(MN) // din definiţia limbajului L(MN)
#

Exemplul 3.7. Să considerăm automatul nedeterinist:


M = ({q0, q1, q2}, {0, 1}, δ, q0, {q2})
a cărui matrice de tranziţii este următoarea:
0 1
q0 {q1, q2} Φ
q1 {q2} {q0}
q2 Φ {q0, q1}

Aplicând algoritmul 3.2, rezultă automatul determinist următor:


MD = (QD, Σ, δD, q0D, FD),
unde:
QD = {Φ, {q0}, {q2}, {q0, q1}, {q1, q2}}
q0D = {q0}
FD = {{q2}, {q1, q2}}
iar matricea de tranziţie a automatului MD este următoarea:
0 1
Φ Φ Φ
{q0} {q1, q2} Φ
{q2} Φ {q0, q1}
{q0, q1} {q1, q2} {q0}
{q1, q2} {q2} {q0, q1}

Se observă faptul că sunbulţimile {q1} şi {q0, q2} nu apar ca stări în automatul MD, deoarece
ele nu sunt accesibile în din funcţia de tranziţii extinsă δN* şi nu verifică relaţia (3.1).

3.4 Automate finite şi mulţimi regulate


În paragraful anterior s-a demonstrat faptul că toate clasele de automate finite sunt egale. Din
acest motiv, vom nota cu ℒAF mulţimea limbajelor recunoscute de automatele finite,
indifierent de clasa acestora.

În acest paragraf vom demonstra faptul că automatele finite şi mulţimile regulate sunt
echivalente, în sensul că mulţimea limbajelor recunoscute de automatele finite şi mulţimea
expresiilor regulate sunt egale:
ℒAF(Σ) = µ(Σ), ∀Σ≠Φ
unde am notat cu ℒAF(Σ) mulţimea limbajelor peste alfabetul Σ acceptate de automatele finite.

Pe de altă parte, în paragraful 2.2 s-a demonstrat echivalenţa între mulţimile regulate şi
limbajele liniare la dreapta:
ℒ3(Σ) = µ(Σ), ∀Σ≠Φ
ceea ce înseamnă că toate cele trei formalisme de reprezentare a limbajelor sunt echivalente:
ℒ3(Σ) = µ(Σ) = ℒAF(Σ), ∀Σ≠Φ

3.4.1 Incluziunea µ(Σ) ⊆ ℒAF


Pentru a demonstra această incluziune, va trebui arătat că, plecând de la un limbaj regulat
(mulţime regulată), se poate construi un automat finit care recunoaşte acelaşi limbaj. Dar orice
mulţime regulată se poate descrie printr-o expresie regulată, aşa încât construcţia automatului
finit echivalent se poate face plecând de la o expresie regulată.

Lema 3.4. Fie Σ un alfabet nevid, R o expresie regulată şi L(R)⊆Σ* mulţimea regulată
asociată. Atunci există un automat finit M aşa încât L(R) = L(M).
Demonstraţie.
Pentru simplitate, vom considera doar cazul în care automatul finit generat are o singură stare
finală. Vom demonstra afirmaţia lemei prin inducţie după numărul de operatori +, ⋅ şi * ai
expresiei R. Fie k numărul de operatori din mulţimea {+, ⋅, *} care apar în expresia R.
a) În cazul k=0, expresia R poate fi Φ, ε sau a, unde a∈Σ.
- Dacă R=Φ, atunci automatul M este descris în figura 3.5:
q0 qf

Figura 3.5
Se observă că M nu recunoaşte nici un cuvânt, deci L(M) = Φ
- Dacă R=ε, atunci automatul M este descris în figura 3.6. Se observă faptul că singurul
cuvânt recunoscut de M este cuvântul vid şi deci L(M) = {ε}.
ε
q0 qf

Figura 3.6
- Dacă R=a, atunci automatul M este descris în figura 3.7. Se observă faptul că singurul
cuvânt recunoscut de M este a şi deci L(M) = {a}.

a
q0 qf

Figura 3.7
b) Să presupunem acum afirmaţia din cadrul lemei este adevărată pentru orice expresie
regulată R care are l<k operatori şi să o demonstrăm pentru k operatori. O expresie
regulată R ce conţine k operatori poate fi de forma: R=S1+S2, R=S1⋅S2 sau R=S1*, unde
expresiile S1 şi S2 au cel mult k-1 operatori. Atunci există două automate finite M1 şi M2
care au o singură stare finală, pentru care L(S1) = L(M1) şi L(S2) = L(M2):
M1 = (Q1, Σ, q01, δ1, {qf1})
M2 = (Q2, Σ, q02, δ2, {qf2})
- Dacă R = S1⋅S2, formăm automatul următor:
M = (Q1∪Q2, Σ, q01, δ, {qf2})
unde funcţia de tranziţie este definită de graful de tranziţie din figura 3.8.
M1 M2

ε
q01 qf1 q02 qf2

Figura 3.8
Se observă că ∀∈Q1∪Q2 şi ∀a∈Σ∪{ε} avem:
δ(q, a) = δ1(q, a), dacă q∈Q1-{qf1}
δ(qf1, a) = δ1(qf1, a), dacă a≠ε
δ(qf1, ε) = δ1(qf1, ε)∪{q02}
δ(q, a) = δ2(q, a), dacă q∈Q2
Cu alte cuvinte, există un drum de la q01 la q2f etichetat cu cuvântul w dacă şi numai
dacă w = uv, unde u este eticheta drumului de la q01 la q1f, iar v este eticheta drumului
de la q02 la q2f. Dar aceasta înseamnă că:
L(M) = L(M1)⋅L(M2) = L(S1)⋅L(S2) = L(S1⋅S2) = L(R)
- Dacă R = S1+S2, formăm automatul următor:
M = (Q1∪Q2∪{q0, qf}, Σ, q0, δ, {qf})
unde funcţia de tranziţie este definită de graful de tranziţie din figura 3.9.
M1
ε q01 qf1 ε

q0 qf
M2
ε q02 qf2 ε

Figura 3.9
Se observă că ∀∈Q1∪Q2∪{q0}∪{qf} şi ∀a∈Σ∪{ε} avem:
δ(q, a) = δ1(q, a), dacă q∈Q1-{qf1}
δ(qf1, a) = δ1(qf1, a), dacă a≠ε
δ(qf1, ε) = δ1(q, ε)∪{qf}
δ(q, a) = δ2(q, a), dacă q∈Q2-{qf2}
δ(qf2, a) = δ2(qf2, a), dacă a≠ε
δ(qf2, ε) = δ2(q, ε)∪{qf}
δ(q0, ε) = {q01, q02}
Cu alte cuvinte, există un drum de la q0 la qf etichetat cu cuvântul w dacă şi numai dacă
există un drum de la q01 la q1f etichetat cu w, sau există un drum de la q02 la q2f etichetat
cu w. Dar aceasta înseamnă că:
L(M) = L(M1)∪L(M2) = L(S1)∪L(S2) = L(S1+S2) = L(R)
- Dacă R = S1*, formăm automatul următor:
M = (Q1∪{q0}∪{qf}, Σ, q0, δ, {qf})
unde funcţia de tranziţie este definită de graful de tranziţie din figura 3.10.
ε

ε M1 ε
q0 q01 qf1 qf

ε
ε
Figura 3.10
Se observă că ∀∈Q1∪{q0}∪{qf} şi ∀a∈Σ∪{ε} avem:
δ(q, a) = δ1(q, a), dacă q∈Q1-{qf1}
δ(qf1, a) = δ1(qf1, a), dacă a≠ε
δ(qf1, ε) = δ1(qf1, ε)∪{qf, q01}
δ(q0, ε) = {q01, qf}
În acest caz există un drum de la q0 la qf etichetat cu cuvântul w dacă şi numai dacă
există zero sau mai multe drumuri de la q01 la q1f etichetate cu w, ceea ce înseamnă că:
L(M) = (L(M1))*
şi deci:
L(M) = L(M1)* = L(S1)* = L(S1*) = L(R)
#

Observaţii.
1. Din lema precedentă se observă că operaţia de construire a unui automat finit echivalent
cu o expresie regulată se realizează într-o manieră bottom-up: se pleacă de la subexpresii
elementare corespunzătoare cazului a) al lemei, iar automatele rezultate se asamblează în
automate din ce în ce mai complexe folosind cazul b).
2. Pentru a păstra unicitatea numelor stărilor în automatul final, stările din automatele
parţiale trebuie eventual redenumite pentru ca să nu existe mai multe stări cu acelaşi
nume.

Exemplul 3.8. Se va construi automatul finit echivalent expresia regulată:


R = (a|b)*a
1. Se construiesc automatele echivalente pentru sub-expresiile elementare ale lui R (a şi b),
ca în figura 3.11:
a
2 3 R1 = a

b
4 5 R2 = b

Figura 3.11
2. Se construieşte automatul echivalent pentru sub-expresia R1|R2, ca în figura 3.12:

a
2 3 ε
ε

1 6 R3 = (R1|R2)

ε b
4 5 ε

Figura 3.12
3. Se construieşte automatul echivalent pentru sub-expresia (R1|R2)*, ca în figura 3.13:
ε a
2 3 ε
ε
ε
ε 6 7 R4 = (R1|R2)*
0 1
ε b
4 5 ε
ε

Figura 3.13
4. Se construieşte automatul echivalent pentru sub-expresia R5 = a.
5. Se construieşte automatul echivalent pentru expresia R6 = R4R5, ca în figura 3.14:
ε a
2 3 ε
ε
ε a
ε 6 8
0 1 7
ε b
4 5 ε R4 = (R1|R2)*
ε

Figura 3.14

3.4.2 Incluziunea ℒAF ⊆ µ(Σ)


În acest caz se pleacă de la un automat finit M şi limbajul recunoscut de acesta L(M) şi va
trebui determină o expresie regulată R aşa încât L(R) = L(M). Deoarece clasele automatelor
finite sunt echivalente, în continuare vom considera pentru simplitate clasa automatelor finite
deterministe.

Lema 3.5. Fie M un automat finit determinist şi L(M)⊆Σ* limbajul recunoscut de acesta.
Atunci există o expresie regulată R aşa încât L(M) = L(R).
Demonstraţie.
Pentru a putea determina mulţimea regulată L(R), va trebui ca limbajul recunoscut de
automatul M să poată fi pus sub forma unei expresii regulate. Pentru aceasta se va ataşa lui M
un sistem de ecuaţii cu expresii regulate, cum este descris în paragraful 2.1.
Fie M = (Q, Σ, q0, δ, F) un automat finit determinist. Notând Q = { q0, q1, q2, …, qn},
pentru fiecare stare qi∈Q, se ataşează o nedeterminată Ri, precum şi o ecuaţie cu expresii
regulate, Ei, folosită pentru a descrie mulţimea cuvintelor ce sunt recunoscute de automat
plecând din starea qi:
(3.6) L(Ri) = {w∈Σ* | δ*(qi, w)∈F}
Deci L(Ri) este un limbaj reprezentând mulţimea cuvintelor ce sunt recunoscute de automat
plecând din starea qi. Dar mulţimea L(Ri) se mai poate scrie:
L(Ri) = ∪a∈Σ {av∈Σ* | δ*(δ(qi,a),v)∈F}
În mod evident, mulţimea L(Ri) va conţine şi şirul vid, dacă qi∈F. Rezultă că pentru L(Ri) se
poate defini o formulă recursivă:
(3.7) - L(Ri) = ∪a∈Σ (a⋅L(Rδ(qi,a))), dacă qi∉F
- L(Ri) = ∪a∈Σ (a⋅L(Rδ(qi,a))) ∪ {ε}, dacă qi∈F
Relaţiile (3.7) se pot rescrie în termenii expresiilor regulate astfel:
- Ri = +a∈Σ (a⋅Ri,a), dacă qi∉F
- Ri = +a∈Σ (a⋅Ri,a) + ε, dacă qi∈F
unde am notat cu qk = qi,a = qδ(qi,a) starea δ(qi,a) = qk.
Rezultă astfel că ecuaţia Ei ataşată stării qi se poate scrie astfel:
(3.8) Ri = αi0 + αi1R1 + … + αinRn, i=0, 1, 2, …, n
unde:
- αi0 = ε dacă qi∈F şi αi0 = Φ dacă qi∉F
- αij = +P(a,i,j) (a)
unde notaţia P(a, i, j) reprezintă următoarea propoziţie logică: (a∈Σ) ∧ (δ(qi,a) = qj). Cu alte
cuvinte exprsia αij reprezintă suma tuturor simbolurilor a pentru care pentru starea curentă qi
şi având simbolul curent a pe banda de intrare, starea următoare este qj.
Sistemul definit de relaţiile (3.8) este un sistem ce expresii regulate, datorită modului
în care a fost construit. Se obţine astfel un sistem de |Q|=n+1 ecuaţii cu expresii regulate, de
forma sistemului (2.4) din paragraful 2.1. Conform lemelor 2.3 şi 2.4, sistemul are un punct
fix minimal unic, f(R1), …, f(Rn), unde f(Ri) reprezintă o soluţie minimală a ecuaţiei Ei,
∀i=0,1,…,n.
Dar q0 este starea iniţială, iar f(R0) este o mulţime regulată. Dar din construcţia
mulţimilor L(Ri) din relaţia (3.6), rezultă că f(R0) reprezintă chiar mulţimea cuvintelor
recunoscute de automatul M şi deci f(R0) este chiar mulţimea regulată din enunţul lemei.
#

Exemplul 3.9. Fie automatul detereminist din exemplul 3.1, care are următoarea tabelă de
tranziţii:
a b
q0 q0 q1
q1 q0 q2
q2 q0 q1
Sistemul asociat de ecuaţii cu mulţimi regulate este următorul:
R0 = aR0 + bR1
R1 = aR0 + bR2 + ε
R2 = aR0 + bR1
Din prima ecuaţie avem:
R0 = a*(bR1)
R1 = a(a*bR1) + bR2 + ε
R2 = a(a*bR1) + bR1 = (aa*b+b)R1
Substituind ultima ecuaţie în ecuaţia a doua avem:
R1 = aa*bR1 + b(aa*b+b)R1 + ε = (aa*b+b(aa*b+b))R1 + ε
Substituind soluţia acestei ecuaţii:
R1 = (aa*b+b(aa*b+b))*ε = ((ε+b)(aa*b+b))*
în prima ecuaţie a sistemului, expresia regulată asociată stării iniţiale q0 este următoarea:
R0 = a*b((ε+b)(aa*b+b))*
si ea reprezintă mulţimea cuvintelor recunoscute de automat.
Capitolul 4
 
Propriet i ale automatelor finite  i ale mul imilor
regulate

Formalismul mul imilor regulate  i cel al automatelor finite au o serie de propriet  i utile,
utilizate destul de des în cadrul studiului limbajelor regulate. În acest capitol se vor discuta
câteva grupuri de propriet  i:
• lema de pompare  i folosirea ei pentru a determina dac  un limbaj este sau nu regulat;
• minimizarea automatelor finite, adic determinarea unor automate finite cu num  r
minim de st  ri;
• propriet  i de închidere ale mul imilor regulate, fa  de anumite opera ii;
• probleme de decidabilitate asupra limbajelor regulate, ceea ce înseamn posibilitatea
de a putea determina dac  un anumit limbaj regulat satisface anumite propriet  i.

4.1 Lema de pompare


i aplica iile ei
O important  problem  de decidabilitate pentru mul imile regulate const  în faptul de a
determina dac  o anumit  mul ime de cuvinte este mul ime regulat  sau nu.

Pentru a demonstra c  o anumit  mul ime de cuvinte L este mul ime regulat  se poate utiliza
una dintre cele dou  metode importante:
- fie se determin un automat finit M, pentru care se poate demonstra faptul c 
accept  limbajul respectiv, L(M) = L;
- fie se determin o expresie regulat  R, pentru care se poate demonstra c 
reprezint  limbajul L: L(R) = L.

Problema invers , cea în care se cere demonstrarea faptului c  o anumit  mul ime de cuvinte
L nu este mul ime regulat  este principial mai dificil . În acest caz, dac  s-ar utiliza una din
cele dou  metode, ar trebui demonstrat c  nu exist  nici un automat finit, respectiv nici o
expresie regulat  , pentru care limbajul asociat lor este chiar mul imea L.

Principalul avantaj al lemei de pompare const  în faptul c permite într-un mod relativ simplu
rezolvarea acestei probleme inverse de decidabilitate. Practic, pentru a demostra c  un limbaj
L nu este o mul ime regulat  , înseamn a demonstra c  el nu verific  lema de pompare pentru
mul imile regulate.

4.1.1 Lema de pompare


Ideea de baz a lemei de pompare se refer  la o anumit  limitare a automatelor finite privind
lungimea cuvintelor acceptate  i periodicitatea acestora.

Fie M = (Q, Σ, δ, q0, F) un automat finit care are n st  ri, |Q|=n, precum  i un cuvânt
recunoscut de acesta w∈L(M) cu o lungime cel pu in n:
w = a1a2...ak, k≥n, ai∈Σ, i=1,2,…,k

Pentru w exist  o secven  succesiv de k+1 st  ri:


q0, qa1, qa2, ..., qak
unde:
qa1 = δ(q0, a1),
qaj = δ(q aj-1, aj), ∀j=2,3,...,k
care conduce automatul într-o stare final de acceptare: q ak∈F

Deoarece automatul are doar n<k+1 st  ri, rezult  c  în secven a anterioar  exist  cel pu in
dou  st  ri identice:
∃i,j∈{1, 2, …, k}, i<j, astfel încât q ai = q aj
În cazul în care exist  mai multe asemenea st  ri, vom re ine starea asociat  simbolului cu
indicele cel mai mic. Aceste dou  st  ri vor împ  r i cuvâtul w în trei sub  iruri:
w = xyz
unde:
x = a1a2…ai
y = ai+1ai+2…aj
z = aj+1aj+2…ak

A  a cum se vede în figura 4.1, notând cu qc starea comun (q c = qai = q aj), secven a de st  ri ce
corespunde sub  irului y formeaz  o bucl în graful de st  ri al automatului.

qai+1
aj
ai+1
a1 a2 ak
q0 qa1 qc qaj+1 qk
ai aj+1
Figura 4.1

Se observ c eliminând bucla din secven a de st  ri, secven a r  mas , q0, qa1, q ai, qaj+1, ... , qak,
conduce automatul M pentru cuvântul a1a2…aiaj+1…ak = xz în starea final q k  i deci
xz∈L(M).

În mod asem  n tor, parcurgând de t ori bucla, secven a respectiv duce conduce automatul M
pentru cuvântul xytz în starea final  i deci xytz∈L(M).

Sub  irurile x  i z pot fi eventual vide, dar y nu, pentru c  el trebuie s formeze bucla  i con ine
cel pu in simbolul aj. De asemenea, deoarece starea q c a fost aleas ca fiind prima stare care
formeaz  o bucl în secven a q0, q a1, q a2, ..., qak, înseamn c   irul xy = a1a2…aiai+1…aj are o
lungime mai mic  decât m, pentru c  în caz contrar s-ar putea relua ra ionamentul anterior,
utilizând cuvântul a1…ai…aj în locul lui a1…ai…aj…ak.

În concluzie, dac  un automat finit M cu n st  ri accept  cuvinte w cu o lungime mai mare


decât n, atunci M accept  toate cuvintele de forma z = xyiz, ∀i≥0, pentru sub  irurile x, y, z,
pentru care w = xyz, |xy|≤n  i |y|≥1. Aceasta este esen a lemei de pompare.
Lema 4.1. Pentru orice limbaj regulat L, exist  o constant  m care depinde de L, astfel încât
pentru orice cuvânt w∈L, dac  |w| ≥ m , atunci exist  cuvintele x, y  i z astfel încât :
(1) w = xyz
(2) |xy| ≤ m
(3) |y| ≥ 1
(4) ∀i≥0, xyiz∈L
Demonstra ie.
Fie M = (Q, Σ, δ, q0, F) un automat finit astfel încât L(M) = L. Vom fixa constanta m astfel
încât m = |Q|. Fie de asemenea un cuvânt w de lungime cel pu in m:
w = a1a2...ak, k≥m, ai∈Σ, i=1,2,…,k
Atunci exist  numerele 1≤i<j≤k, precum  i o stare qx∈Q pentru care:
δ*(q 0, a1a2…ai) = q x = δ*(q 0, a1a2…aiai+1…aj)
Fie i cel mai mic indice pentru care este adev rat  rela ia precedent  . Deoarece w∈L  i  inând
seama de rela ia precedent  , rezult  :
δ*(q x, aj+1aj+2…ak) ∈ L
Notând:
x = a1a2…ai
y = ai+1ai+2…aj
z = aj+1aj+2…ak
avem:
w = xyz
|xy| ≤ m
|y| ≥ 1
În plus, ∀t≥0 avem:
δ*(q 0, x) = δ*(q 0, xyt) = q x
Rezult  deci c  :
δ*(q 0, xyt) = δ*(q 0, x) = q x
adic  :
xytz ∈ L, ∀t≥0
#

4.1.2 Aplica ii ale lemei de pompare




Pentru a demonstra faptul c un anumit limbaj L nu este regulat, va trebui demonstrat c lema
de pompare nu este adev rat  pentru acel limbaj. Cu alte cuvinte, trebuie ar  tat c  pentru orice
constant  m, exist  un cuvânt w∈L de lungime mai mare ca m, |w|≥m, astfel încât pentru
oricare cuvinte x, y, z, pentru care w = xyz  i |xy|≤m, |y|≥1, exist  un întreg i pentru care
xyiz∉L.

În concluzie, pentru a demonstra c un limbaj L nu este regulat, se pot parcurge urm  torii
pa  i:
• Se presupune c  L este limbaj regulat.
• Atunci trebuie s existe constanta m din enun ul lemei (despre m nu se poate face
nici o presupunere  i trebuie privit  ca un parametru al demonstra iei).
• Se alege un cuvânt w despre care se  tie c  face parte din limbajul L (în mod uzual
alegerea lui w depinde de constanta m).
• Conform lemei, cuvântul w poate fi desp  r it în trei sub  iruri, x, y  i z, astfel încât
w = xyz (în mod asem n tor, despre alegerea lui x, y  i z nu se poate face nici o
presupunere  i ele trebuie privite tot ca parametri în cadrul demonstra iei).
• Se alege un întreg i, pentru care se poate demonstra c  xyiz∉L, ceea ce reprezint 
o contradic ie a presupunerii ini iale (constanta i poate depinde de m, x, y  i z).
• Rezult  astfel c  presupunerea ini ial este eronat   i L nu este limbaj regulat.

Se observ din etapele descrise anterior faptul c în succesiunea demonstra iei se pot face
alegeri doar pentru cuvântul w  i constanta i, iar m, x, y  i z trebuie privite ca parametri.

Exemplul 4.1. S  se demonstreze c  limbajul:


L = {anbn | n≥0}
nu este limbaj regulat.
Demonstra ie. A  a cum s-a specificat anterior, vom demonstra prin reducere la absurd.
Presupunem c  L este limbaj regulat  i fie m constanta din lema de pompare.
Fie un cuvânt w∈L de forma : w = ambm.
Din lema de pompare rezult  c  exist  cuvintele x,y,z∈L astfel încât :
w = xyz, |xy|≤m, |y|≥1  i xyiz∈L, ∀i≥0
Deoarece |xy|≤m, rezult  c ambele sub  iruri vor con ine doar simbolul a. În plus, deoarece
|y|≥1, rezult  c  y va con ine cel pu  in un simbol a. Rezult  deci c  exist  numerele j, k  i l
astfel încât:
x = aj, y = ak, z = albm,
j+k+l = m, k≥1
Fix m acum valoarea t = 0  i s determin m xytz:
xy0z = xz = ajalbm,
unde:
j+l=m–k<m
Rezult  c  :
ajalbm = aj+lb m < ambm
Cu alte cuvinte, pentru t = 0, xytz∉L  i deci lema de pompare nu se verific pentru limbajul L,
ceea ce este în contradic ie cu presupunerea f cut  . Rezult  deci c  L este un limbaj regulat.
#

Exemplul 4.2. S  se demonstreze c  limbajul:


L = {w∈{0, 1}* | w = wR}
nu este limbaj regulat.
Demonstra ie.
Presupunem, prin reducere la absurd c  L este limbaj regulat  i fie m constanta din lema de
pompare.
Alegem un cuvânt w∈L de forma: w = 0m10m.
Din lema de pompare rezult  c  exist  o parti ionare a lui w de forma:
w = xyz, |xy|≤m, |y|≥1
Deoarece |xy|≤m  i |y|≥1, rezult  c ambele sub  iruri vor con ine doar simboluri 0, iar y va
avea cel pu in un simbol 1. În acest caz, z va fi de forma :
z = 0 m-|xy|⋅1⋅0m
iar w va fi de forma:
w = 0 |x|⋅0 |y|⋅0m-|xy|⋅1⋅0 m
Alegem acum t = 0  i s calcul m xytz:
xy0z = 0 |x|⋅0m-|xy|⋅1⋅0 m = 0m-|y|⋅1⋅0m
Dar xz = 0m-|y|⋅1⋅0 m ∉ L, deoarece m-|y| < m  i deci xz ≠ (xz)R.
Rezult  de aici c  lema de pompare nu se verific pentru limbajul L  i deci presupunerea
ini ial nu este corect  , adic  L nu este limbaj regulat.
#

4.2 Minimizarea automatelor finite


O important  proprietate a limbajelor regulate este cea care afirm  c  pentru orice limbaj
regulat, exist  un automat finit determinist cu un num  r minim de st  ri, care este unic pân la
un izomorfism.

În principal, dou  automate finite deterministe sunt izomorfe, dac  au aceea i structur  ,
numele st  rilor fiind redenumite în cele dou  automate. Pentru a defini formal mo  iunea de
izomorfism de automate, vom introduce o rela ie de echivalen  pe mul imea automatelor
finite deterministe, notat  ≡iso.

Defini ia 4.1. Fie M1 i M2 dou automate finite deterministe:


 

M1 = (Q1, Σ, δ1, q01, F1)


M2 = (Q2, Σ, δ2, q02, F2)
M1 i M2 se numesc izomorfe i se noteaz M1 ≡iso M2 dac exist o func ie bijectiv :
      

f: Q1 ↔ Q2
astfel încât:
- q02 = f(q01)
- q∈Q1 ⇔ f(q)∈Q2
- q∈F1 ⇔ f(q)∈F2
- ∀a∈Σ, δ1(q, a)=p ⇔ δ2(f(q), a)=f(p)

Se observ din defini ia anterioar c func iile de tranzi ie δ1 i δ2 sunt identice pân la un
       

izomorfism.

Exemplu. Fie automatele:


M1 = (Q1, Σ, δ1, q0, F1)
M2 = (Q2, Σ, δ2, q4, F2)
unde:
Q1 = {q0, q1, q2, q 3, q 4, q 5, q 6}, Q2 = {q0, q1, q2, q 3, q 4, q 5, q 6}
F1 = {q 3, q 4, q 5}, F2 = {q 0, q 1, q 2}
0 1 0 1
q0 q0 q1 q0 q0 q3
q1 q2 q4 q1 q2 q1
q2 q6 q3 q2 q2 q3
q3 q3 q6 q3 q3 q3
q4 q5 q4 q4 q4 q6
q5 q5 q6 q5 q3 q0
q6 q6 q6 q6 q5 q1

Se observ c M1 ≡iso M2, deoarece exist urm toarea bijec ie care verific defini ia 4.1:
      

f: Q1 ↔ Q2
f(q0) = q4
f(q1) = q6
f(q2) = q5
f(q3) = q0
f(q4) = q1
f(q5) = q2
f(q6) = q3

Pentru a reduce num rul de st ri ale unui automat finit trebuie eliminate:
 

• st rile inaccesibile, care nu pot fi atinse pentru oricare cuvânt din limbaj,
• st rile inseparabile, adic acele st ri care nu pot fi distinse de c tre cuvintele
  

limbajului.

Deoarece cele dou categorii de st ri sunt independente una de cealalt , vom trata separat cele
  

dou categorii. Un algoritm de minimizare va efectua secven ial opera iile pentru cele dou
   

grupuri de st ri. 

4.2.1 Eliminarea st rilor inaccesibile 

Defini ia 4.2. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist i q∈Q o stare. 

(1) Starea q este accesibil dac ∃w∈Σ*, δ*(q 0, w) = q. 

(2) Starea q este inaccesibil dac ∀w∈Σ*, δ*(q 0, w) ≠ q. 

Pentru determinarea st rilor inaccesibile ale unui automat se poate utiliza un algoritm de


parcurgere depth-first al grafului de tranzi ie al automatului. Astfel, se marcheaz toate st rile


  

în care se poate ajunge plecând din starea ini ial q0, iar nodurile r mase nemarcate reprezint    

st rile inaccesibile.


Algoritmul 4.1. Marcarea st rilor accesibile 

Algoritmul utilizeaz o coad local pentru memorarea st rilor accesibile


   

Opera iile din algoritm sunt opera ii cu mul imi.


  

Intrare.
- Un automat finit determinist M = (Q, Σ, δ, q 0, F), δ fiind specificat prin graful de 

tranzi ie 

Ie ire.


- Mul imea st rilor accesibile Q1 ⊆ Q, Q1 = {q∈Q | ∃w∈Σ*, a.î. q=δ*(q0, w)}


 

Metod . 

procedure AccesibleStates(Q,Σ,δ,q0; Q)
Initq()
Q1 ← {q0} // (a)
Addq(q0)
while ¬Empty() do
q ← Delq() // (b)
Mark(q)
for ∀a∈Σ do
if NotMarked(δ(q,a)) then
Q1 ← Q ∪ {δ(q,a)} // (c)
Addq(δ(q,a))
endif
endfor
endwhile
end
#

Se poate demonstra imediat faptul c algoritmul anterior determin în mod corect st rile
inaccesibile.

Lema 4.2. Algoritmul 4.1 determin corect st rile inaccesibile ale automatului M.
Demonstra ie. 

Not m cu Q1 st rile accesibile ale automatului M i vom demonstra c Q1 = Q1, unde Q1 este


mul imea st rilor determinat de algoritm.




Se observ din modul de definire al algoritmului c :


a) q 0∈Q1 - din instruc iunea (a) 

b) q∈Q1 ⇔ ∃a∈Σ, ∃q1∈Q1 a a încât q = δ(q1, a) - din instruc iunile (b) i (c)
  

Fie q o stare accesibil a lui M. Atunci:


q∈Q1 ⇔ ∃w a a încât δ*(q0, w) = q


Vom demonstra prin induc ie dup lungimea cuvântului w echivalen a:


 

q∈Q1 ⇔ ∃w a a încât δ*(q0, w) = q




• Dac |w|=1, atunci w=a, a∈Σ i avem echivalen a:  

δ*(q 0, a) = q ⇔ q∈Q1 - din instruc iunea (a) 

• Presupunem c rela ia este adev rat pentru orice cuvânt v, pentru care |v|≤n i fie un
 

cuvânt w de lungime n+1: w=va, unde a∈Σ i |v|≤n. Avem irul de echivalen e:
  

δ*(q 0, va) = q ⇔
δ(δ*(q0, v), a) = q
Fie q1 = δ*(q 0, v). Din ipoteza inductiv avem:
δ*(q 0, v) = q1 ⇔ q1∈Q1
Rezult atunci:
δ(δ*(q0, v), a) = q ⇔ q∈Q1 - din instruc iunile (b) i (c)  

Rezult ca mul imea st rilor inaccesibile este diferen a a dou mul imi: Q-Q1.
  

4.2.2 Eliminarea st rilor inseparabile




În acest paragraf se presupune c în automatul finit nu mi sunt st ri inaccesibile, ele fiind


eliminate anterior.

A a cum s-a afirmat anterior, în mod intuitiv, dou st ri ale aunui automat sunt inseparabile


dac nu exist nici un cuvânt din limbaj care s le disting . Un cuvânt w distinge dou st ri qI
i qj, dac drumurile parcurse de automat plecând din cele dou st ri privite ca st ri ini iale, 

conduc automatul în alte dou st ri, dintre care una este stare final (recunoa tc cuvântul w), 

iar cealalt nu este stare final (nu recunoa te cuvântul w).




Defini ia 4.3. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist i q i,q j∈Q dou st ri
 

distincte. Se spune c un cuvânt w∈Σ* distinge st rile qi i qj dac i numai dac exact una
 

dintre st rile δ*(qi, w) i δ*(qj, w) este stare final .



Defini ia 4.4. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist i q i,q j∈Q dou st ri
 

distincte. Atunci q i i qj sunt: 

• separabile ⇔ ∃w∈Σ*, a a încât w distinge pe q i de qj 

• inseparabile ⇔ ∀w∈Σ*, w nu distinge pe qi de qj

Aceea i no iune se poate descrie în mod echivalent folosind no iunea de limbaj de cuvinte
  

recunoscute plecând dintr-o anumit stare.

Propozi ia 4.1. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist i qi,q j∈Q dou st ri
 

distincte, iar Lqi i Lqj limbajele recunoscute de M plecând din st rile qi i q j:


 

Lqi = {∀w∈Σ * | δ*(qi, w)∈F}


Lqj = {∀w∈Σ * | δ*(qj, w)∈F}
Atunci:
• q i i qj sunt separabile ⇔ Lqi ≠ Lqj


• q i i qj sunt inseparabile ⇔ Lqi = Lqj




Demonstra ie. 

Demonstra ia este evident i decurge din defini iile 4.3 i 4.4.


   

Este evident faptul c dou st ri inseparabile, q i i qj, sunt redondante. O modalitate de a 

simplifica un asemenea automat const în eliminarea celor dou st ri i înlocuirea lor cu o 

singur stare, notat q{i,j}. De exemplu:


• se elimin qi i qj din mul imea Q;  

• se adaug o nou stare notat cu q{i,j};


• se modific fun ia δ astfel: 

- toate tranzi iile care sosesc în st rile qi i q j vor deveni tranzi ii care sosesc în noua
  

stare q{i,j};
- toate tranzi iile care pleac dn st rile q i i qj vor deveni tranzi ii care pleac din
  

q {i,j};

Astfel, automatul modificat va recunoa te acela i limbaj, dar va avea cu o stare mai pu in.
  

În cazul în care exist mai multe st ri inseparabile, va trebui determinat mul imea acestora. 

În continuare se va determina aceast mul ime, privit ca o clas de echivalen .  

Se observ c defini ia 4.4 determin o rela ie de echivalen peste mul imea Q×Q, numit
   


rela ie de inseparabilitate  i care se va nota cu ∼. Fie qi,qj∈Q dou  st  ri. Atunci qi ∼ q j dac  i
numai dac q i  i qj sunt inseparabile.

Utilizând propozi ia 4.1, se poate da o defini ie echivalent  a rela iei ∼ de inseparabilitate:


qi ∼ qj dac  i numai dac  Lqi = Lqj

Observa ie. Rela ia ∼ este o rela ie de chivalen :


qi ∼ qi, ∀qi∈Q
qi ∼ qj ⇔ qj ∼ q i, ∀q i,qj∈Q
qi ∼ qj ∧ qj ∼ qk  qi ∼ q k, ∀qi,qj,q k∈Q
Fiecare clas de echivalen  indus de rela ia ∼ reprezint  o mul ime de st  ri care nu se pot
distinge  i se vor reprezenta printr-o singur  stare în automatul rezultat prin minimizarea
automatului ini ial. Mul imea claselor de echivalen  ale rela iei ∼ reprezint  num  rul total de
st  ri ale automatului redus.

Practic, clasele de echivalen  ale rela iei ∼ sunt dificil de determinat direct. Ele se determin
în mod uzual printr-un  ir de aproxima ii succesive: se pleac  de la o parti ie ini ial a
mul imii Q  i se rafineaz  apoi aceasta cât timp este posibil; ultima parti ie reprezint  chiar
clasele de echivalen  ale rela iei de inseparabilitate.

Înainte de a descrie metoda utilizat  pentru determinarea rela iei de inseparabilitate, se vor
descrie câteva no iuni privind parti ia unei mul imi finite  i rafinarea acesteia.

Defini ia 4.5. Fie A o mul ime finit   i nevid  . O parti ie a mul imii A este o familie de
submul imi nevide ale lui A:
Pk = {A1, A2, …, Ak}
care verific urm toarele propriet   i:
a) Ai∩Aj = Φ, ∀i≠j
b) ∪1≤i≤k (Ai) = A

Defini ia 4.6. Fie A o mul ime finit   i nevid   i Pn = {A11, …, A1n}, Pm = {A21, …, A2m}
dou  parti ii ale sale. Se spune c Pm este o rafinare a lui Pn  i se noteaz Pm ⊆ Pn dac   i
numai dac :
a) |Pm| > |Pn|
b) ∀A2i∈Pm, ∃A1j∈Pn, a  a încât A2i ⊆ A1j

Exemplu. Fie A = {1, 2, 3, 4}, P1 = {{1, 2}, {3}, {4}}, P2 = {{1}, {2}, {3}, {4}}. Se observ
c  P2 este o rafinare a lui P1: P2 ⊆ P1.

Din defini ia anterioar  se observ c  plecând de la o anumit  parti ie a unei mul imi,  irul de
rafin ri ale acesteia este m rginit.

Propozi ia 4.2. Fie A o mul ime finit   i nevid  . Atunci exist  o parti ie P a sa, astfel încât
pentru orice alt  parti ie Q a lui A, P ⊆ Q.
Demonstra ie.


Demonstra ia este evident  . Fie A = {a1, a2, …, an}. Atunci:


P = {{a1}, {a2}, …, {an}}
este parti ia din enun ul problemei.
#

Revenind la rela ia de inseparabilitate, ideea de baz  const  în estimarea lungimii cuvintelor


w care pot separa dou  st  ri qi  i q j. Utilizând lema de pompare, se observ c  exist  o
margine superioar  pentru aceast  lungime: |Q|-1, unde Q este mul imea st  rilor automatului.
Într-adev r, dac  un cuvânt w are o lungime mai mare, |w|≥|Q|, atunci, deoarece automatul are
doar |Q| st  ri, iar drumul parcurs de automat asociat cuvântului w trece prin |Q|-1 st  ri,
înseamn c acest drum con ine cel pu in o bucl  . Eliminând aceast  bucl din  irul de st  ri,
cuvântul r  mas dup  eliminare va con ine mai pu  in de |Q| simboluri.

Plecând de la aceast  observa ie, se va defini no iunea de k-inseparabilitate.


Defini ia 4.7. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist  i q i,q j∈Q dou  st  ri
distincte.
(a) St  rile qi  i qj sunt k-inseparabile dac   i numai dac ∀w∈Σ*, |w|≤k, w nu distinge starea
q i de qj;
(b) St  rile q i  i q j sunt k-separabile dac   i numai dac  ∃w∈Σ*, |w|≤k, a  a încât w distinge
starea qi de qj.

Ca  i în cazul defini ieie 4.4, k-inseparabilitatea  i k-separabilitatea se pot defini prin


intermediul limbajelo Lkqi  i Lkqi, care reprezint  mul imea cuvintelor de lungime cel mult k,
recunoscute de automat din st  rile qi, respectiv qj:
Lkqi = {∀w∈Σ* | |w|≤k, δ*(q i, w)∈F}
Lkqj = {∀w∈Σ* | |w|≤k, δ*(q j, w)∈F}

Atunci, st  rile q i  i qj sunt:


• k-inseparabile, dac   i numai dac  Lkqi = Lkqj
• k-separabile, dac   i numai dac  Lkqi ≠ Lkqj

Ca  i în cazul rela iei de inseparabilitate, defini ia 4.7 determin o rela ie de echivalen  pe


mul imea Q×Q, numit  rela ia de k-inseparabilitate  i notat  cu ∼k. Fie qi,qj∈Q:
qi ∼k qj ⇔ qi  i q j sunt k-inseparabile

Particularizând pentru k=0 în defini ia 4.7 rezult  c :


qi ∼0 qj ⇔ (qi∈F ∧ qj∈F) ∨ (q i∉F ∧ qj∉F)
deoarece cuvintele de lungime 0 sunt recunoscute f r  a face nici o tranzi ie din starea ini ial .

Aceasta înseamn c  rela ia ∼0 determin dou  clase de echivalen  , F  i Q-F, care reprezint 
o parti ie a mul imii Q. Utilizând opera ia de rafinare, se pot determina clasele de achivalen 
pentru rela iile ∼1, ∼2, …

În mod intuitiv,  irul de rela ii ∼0, ∼1, ∼2, … reprezint  un  ir de rafin ri succesive ale parti iei
ini iale {F, Q-F} a mul imii Q:
∼0 ⊇ ∼1 ⊇ ∼2 ⊇ …

Observa ie. În rela ia precedent  , nota ia ∼k reprezint  de fapt mul imea claselor de
echivalen  ale rela iei ∼k de k-inseparabilitate.

Lema urm toare ofer  suportul pentru demonstrarea incluziunii ∼k ⊆ ∼k-1.

Lema 4.3. Fie M = (Q, Σ, δ, q 0, F) un automat finit determinist, qi,qj∈Q dou  st  ri distincte  i
k un întreg, 1≤k≤|Q|-1. Atunci:
qi ∼k q j ⇔ (qi ∼k-1 qj) ∧ (∀a∈Σ, δ(qi, a) ∼k-1 δ(qj, a))
Demonstra ie.


Demonstra ia este evident  , deoarece orice cuvânt w∈Σ*, |w|≤k, poate fi descompus astfel:
w = av, ∀a∈Σ, ∀v∈Σ *, |v|≤k-1
#

Lema 4.4. Fie M = (Q, Σ, δ, q 0, F) un automat finit determinist  i ∼k mul imea claselor de
echivalen  ale rela iei de k-inseparabilitate asociate lui M, k≥1 Atunci:
a) ∼k ⊆ ∼k-1
b) dac  ∼k = ∼k-1, atunci ∀j≥k, avem ∼j = ∼k
Demonstra ie.


Fie [q i]k mul imea st  rilor din Q ce reprezint  clasa de echivalen a lui qi în raport cu rela ia
∼k. Atunci, din lema 4.3 rezult  :
1) Dac  pentru orice simbol a∈Σ avem δ(q i, a)∈[q i]k-1, atunci [qi]k = [q i]k-1  i deci:
∼k = ∼k-1
2) Dac  ∃a∈Σ, ∃q j∈Q a  a încât δ(q i, a)∈[q j]k-1≠[qi]k-1 atunci [q i]k ⊂ [q i]k-1  i deci:
∼k ⊂ ∼k-1
Rela ia b) rezult  din lema 4.2. Într-adev r,  irul de rafin ri ale unei parti ii este finit  i
majorat de parti ia {{q 1}, {q 2}, …, {q n}}, unde am presupus c Q = {q 1, q 2, …, qn}.
#

Rezul din lema anterioar  faptul c  exist  un indice k astfel încât:


∼0 ⊃ ∼1 ⊃ … ⊃ ∼k = ∼k+1 = …
Acest cel mai mic indice k pentru care ∼k = ∼k+1 reprezint  chiar rela ia de inseparabilitate ∼.

Lema 4.5. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist. Atunci exist  un un întreg k,
0≤k≤|Q|-1, pentru care ∼ = ∼k.
Demonstra ie.


Din lema precedent  , fie k cel mai mic indice pentru care ∼k = ∼k+1. El este majorat de |Q|-1
deoarece  irul de rela ii ∼0, ∼1, … reprezint  o succesiune de rafin ri ale parti iei:
P0 = {F, Q-F} = ∼0
pentru care |P0|=2. Conform propozi iei 4.2,  irul este majorat de o parti ie Pk=∼k care are |Q|
submul imi, fiecare fiind format  din elemente singulare ale lui Q. Rezul c  Pk se ob ine din
maxim |Q|-2 rafin ri succesive, deci indicele k este cel mult |Q|-1.
Fie acum qi  i qj dou  st  ri distincte oarecare. Plecând de la afirma ia lemei precedente, avem
 irul de echivalen e:
∀qi,qj∈Q, ∀t≥k, q i ∼t qj ⇔ qi ∼k qj

∀qi,qj∈Q, ∀t≥k, Ltqi = Ltqj ⇔ Lkqi = Lkqj

∀qi,qj∈Q, Lqi = Lqj ⇔ Lkqi = Lkqj

q∀q i,q j∈Q, i ∼ qj ⇔ qi ∼k qj

∼ = ∼k
#

Lemele anterioare permit definirea unui algoritm pentru determinarea claselor de echivalen
ale rela iei de inseparabilitate ∼.

Algoritmul 4.2. Determinarea claselor de echivalen


Variabila P reprezint  parti ia curent  , iar RP reprezint  rafinarea parti iei P.
Variabila C reprezint  clasa de echivalen curent  din parti ia P.
Opera iile din algoritm sunt opera ii cu mul imi.
Intrare.
- Un automat finit determinist M = (Q, Σ, δ, q 0, F)
Ie ire.
- O parti ie a mul imii Q ce reprezint  clasele de echivalen ale rela iei de inseparabilitate:
P = {[q]∼ | q∈Q} = {C1, C2, …, Cr}
Metod .
procedure EquivalenceClasses(Q,Σ,δ,F; P)
P ← {F, Q-F}
do
RP ← Φ
splited ← false
for ∀C∈P do
RP ← RP ∪ SplitClass(C, P, splited)
endfor
P ← RP
while splited
end
#

În algoritmul anterior, func ia principal este SplitClass, care împarte o clas de echivalen
din parti ia ∼k în unul sau mai multe clase de echivalen  ale parti iei ∼k+1 i returneaz  clasele


ob  inute. În cazul în care au rezultat mai multe clase, parametrul de intrae/ie ire splited este


pozi ionat pe true.

Un exemplu de descriere al func iei SplitClass este prezentat în algoritmul 4.3. Acesta
utlilzeaz  mul imea claselor de echivalen  ale parti iei P ca o list  de clase, pentru care se
poate determina indexul fiec rei clase din list  . Deoarece, pentru fiecare stare q din clasa
curent  de echivalen , trebuie determinate clasele de echivalen la care apar in st  rile
urn toare δ(q, a), ∀a∈Σ, se vor utiliza cuvinte formate din indici ai claselor de echivalen  .
Pentru fiecare astfel de stare q, se va ata a un cuvânt de lungime |Σ| (câte un indice pentru


fiecare simbol a).

Se va utiliza în plus o list  L de perechi de forma (w, lq), unde lq reprezint  mul imea tuturor
st  rilor din starea curent  care au asociat acela i cuvânt w, adic  acele st  ri care verific lema


4.3: q i ∼k qj ⇔ (q i ∼k-1 qj) ∧ (∀a∈Σ, δ(qi, a) ∼k-1 δ(qj, a)).

Algoritmul 4.3. Împ  r irea unei clase de echivalen


Variabila w reprezint  un cuvânt format din indici ai unor clase de achivalen din parti ia P.
Variabila L reprezint  o list  de elemente de forma (w, lq), unde lq reprezint  o mul ime de
st  ri din mul imea Q.
Variabile SC reprezint  mul imile de st  ri în care s-a rafinat clasa curent  de echivalen .
Opera iile din algoritm sunt opera ii cu mul imi.
Intrare.
- Alfabetul Σ
- Clasa de echivalen curent  C
- Parti ia curent  P asociat  lui ∼k
Ie ire.
- splited, o variabil boolean care indic  faptul c clasa curent  a fost parti ionat  sau nu;
- SC, care reprezint  rafinarea parti iei P, asociat  lui ∼k+1
Metod .
function SplitClass(Σ,C,P; splited)
L ← Φ
for ∀q∈C do
w ← ε
for ∀a∈Σ do
i ← GetElemIndex(δ(q,a), P)
w ← w⋅i
endfor
if ∃(w,lq)∈L then
(w,lq) ← (w,lq ∪ {q})
else
L ← L ∪ (w,{q})
endif
endfor
SC ← Φ
for ∀(w,lq)∈L do
SC ← SC ∪ {lq}
endfor
return SC
end
#

Algoritmul 4.3 determin num  rul minim de st  ri ale unui automat finit determinist M1,
plecând de la un alt automat finit M:
M = (Q, Σ, δ, q0, F)
Notând cu Qr mul imea claselor de echivalen determinate de algoritmul 4.3, automatul
minimizat Mr va avea forma urm toare :
(4.1) Mr = (Qr, Σ, δr, q0r, Fr)
unde:
- q0r = [q 0]
- Fr = { [q] | q∈F }
- Func ia de tranzi ie δr se determin astfel:
δr([p], a) = [q] dac  i numai dac δ(p, a) = q


Se poate ar  ta simplu faptul c automatul construit astfel este consistent, adic oricare ar fi
alegerea unui reprezentant din clasa [p], rezult  aceea i clas de echivalen pentru δr([p], a).


Într-adev r, fie o alt  stare, p1∈[p], p1≠p. Atunci, p1 ∼ p, ceea ce implic  faptul c  :
∀k≥0, p 1 ∼k p
Dar din lema 4.3 rezult  c  :
(p1 ∼k-1 p) ∧ (δ(p 1, a) ∼k-1 δ(p, a), ∀a∈Σ)
ceea ce înseamn c  :
[δ(p 1, a)] = [δ(p, a)]

Mai mult, se poate demonstra c  automatele M i Mr recunosc acela i limbaj.


 

Prpozi ia 4.3. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist i Mr automatul determinat


în rela ia (4.1) de algoritmul 4.3. Atunci L(M) = L(Mr).


Demonstra ie.
Demonstra ia este evident  , dac  se observ c  :
∀w∈Σ *, δ*(q0, w) = q ⇔ δr*([q 0], w) = [q]
#

Exemplu. Se consider  automatul finit determinist definit în figura 4.2 [Hopcroft, Ullman,
1979]:

0 1
0 1 0
q0 q1 q2 q3
0
1
1
0 1
1 1 0
q4 q5 q6 q7
1 0
0

Figura 4.2
Conform algoritmilor 4.2 i 4.3, vom avea urm torul ir de parti ii i de parti ion ri. Parti ia
  

ini ial :
a) P1 = {{q0, q1, q3, q 4, q 5, q 6, q7}, {q2}}
Pentru clasa C1 = {q0, q1, q3, q 4, q 5, q 6, q7} avem:
q0 → 11 (deoarece δ(q0,0) = q1∈C1, δ(q0,1) = q5∈C1)
q1 → 12 (deoarece δ(q1,0) = q6∈C1, δ(q1,1) = q2∈C2)
q3 → 21
q4 → 11
q5 → 21
q6 → 11
q7 → 12
Rezult  urm  toarea parti ionare a lui C1:
{q 0, q 4, q 6}, {q 1, q7}, {q3, q5}
Pentru clasa C2 = {q2} avem:
q2 → 12 (deoarece δ(q2,0) = q0∈C1, δ(q2,1) = q2∈C2)
Clasa C2 r  mâne neschimbat  .
Rezult  parti ia:
b) P2 = {{q0, q 4, q 6}, {q 1, q 7}, {q 3, q5}, {q2}}
Pentru clasa C1 = {q0, q4, q6 } avem:
q0 → 23
q4 → 23
q6 → 11
Rezult  urm  toarea parti ionare a lui C1:
{q 0, q 4}, {q 6}
Pentru clasa C2 = {q1, q7} avem:
q1 → 14
q7 → 14
Clasa C2 r  mâne neschimbat  .
Pentru clasa C3 = {q3, q5} avem:
q3 → 41
q5 → 41
Clasa C3 r  mâne neschimbat  .
Pentru clasa C4 = {q2} avem:
q2 → 14
Clasa C4 r  mâne neschimbat  .
Rezult  parti ia:
c) P3 = {{q0, q4}, {q6} {q 1, q 7}, {q 3, q 5}, {q 2}}
Se poate verifica u or c  la itera ia urm  toare, parti ia P3 r  mâne neschimbat 
 

i algoritmul se
opre te.


Rezult  c  automatul minimizat va avea 5 st  ri în loc de 8, ca în figura 4.3.

0 0 1
q35 q2
1 1

q04 1
0 0 0
q17 q6
1

Figura 4.3

4.2.3 Unicitatea unui automat finit cu un num r minim de st ri


În paragraful anterior s-a modul în care pentru un automat finit determinist M se poate
determina un automat echivalent M1 cu un num r minim de st  ri. Îns pentru un limbaj
regulat L pot exista mai multe automate deterministe M pentru care L(M)=L. Problema
unicit   ii automatului cu num  r minim de st  ri care recunoa te limbajul L const  în a ar  ta c 


pentru orice automat determinist M pentru care L(M)=L, exist  un unic automat M1 pentru
care L(M)=L(M1).

Demonstrarea faptului c automatul construit în paragraful precedent este minimal i unic se 

va face în dou  etape:


- într-o prim etap  se va determina num  rul de st  ri dintr-un automat minimal i se va 

ar  ta c  acest num  r este unic;


- în etapa a doua se va demonstra c automatul construit în paragraful precedent are
acela i num  r de st  ri ca un automat minimal.


Prima parte a demonstra iei este cunoscut  sub numele de teorema lui Myhill-Nerode. Pentru
aceasta se vor introduce înc  dou  rela ii de echivalen .

Fie L un limbaj regulat peste un alfabet Σ. Atunci exist  un automat finit determinist:
M = (Q, Σ, δ, q0, F)
pentru care L(M) = L. Pe mul imea cuvintelor Σ* se va defini o rela ie binar  notat  ≈M  i
definit  astfel:
∀x,y∈Σ*, x ≈M y dac  i numai dac δ*(q0, x) = δ*(q 0, y)
Cu alte cuvinte, o pereche de cuvinte x, y ∈ ≈M dac   i numai dac  ele conduc automatul în


aceea i stare.

Se poate verifica cu u  urin  faptul c rela ia ≈M este o rela ie de echivalen  . Astfel, mul imea
Σ* este parti ionat  de rela ia ≈M în mai multe clase de echivalen  , al c  ror num  r este dat de
num  rul total al st  rilor accesibile din graful de tranzi ie al st  rilor. Notând cu Index(M)
num  rul claselor de echivalen  al rela iei ≈M rezult  c  :
Index(M) ≤ |Q|
Rela ia de egalitate, Index(M) = |Q|, exist  doar în cazul în care din automatul M s-au eliminat
toate st  ril inaccesibile.

Se observ faptul c  rela ia ≈M este invariant  la dreapta relativ la opera ia de concatenare. Fie
x,y∈Σ* dou  cuvinte care conduc automatul în aceea i stare: δ*(q0, x)= δ*(q 0, y). Atunci,
concatenând la dreapta cu orice cuvânt v, cuvintele xv  i yv vor conduce automatul tot în
aceea i stare:
(4.2) (x ≈M y)  (∀v∈Σ*, xv ≈M yv)

Utilizând rela ia ≈M, limbajul L al cuvintelor recunoscute de M poate fi parti ionat în clase de
echivalen  astfel:
L = ∪δ*(q0,w)∈F [w]≈M
unde am notat cu [w]≈M clasa de echivalen  a cuvântului w în raport cu rela ia ≈M .

Rela ia (4.2) de invarian  la dreapta a rela iei ≈M conduce la o alt  implica ie:
(4.3) (x ≈M y) 
(∀v∈Σ*, xv∈L ⇔ yv∈L)
Plecând de la aceast  proprietate, vom considera o alt  rela ie de echivalen  pe mul imea Σ*,
asociat  de data aceasta cu un limbaj L  i nu cu un automat. Rela ia se noteaz  cu ≈L  i este
definit  astfel:
∀x,y∈Σ*, x ≈L y dac   i numai dac  ∀v∈Σ*, xv∈L ⇔ yv∈L

Se observ c  rela ia ≈L este de asemenea invariant  la dreapta relativ la opera ia de


concatenare:
∀x,y,v∈Σ*, dac x ≈L y atunci xv ≈L yv

Între ≈M  i ≈L exist  o anumit  rela ie: ≈M este o rafinare a lui ≈L în sensul c parti ia lui L
determinat  de clasele de echivalen  ale lui ≈M este o rafinare a parti iei determinat  de
clasele de echivalen  ale lui ≈L. Demonstrarea acestei afirma ii rezult  din  irul urm  tor de
implica ii:
x ≈M y

(∀v∈Σ *, xv∈L ⇔ yv∈L) // rela ia (4.3)
 x ≈L y // defini ia rela iei ≈L

Deci fiecare clas de echivalen  din ≈L este reuniunea a una sau mai multe clase de
echivalen  din ≈M. Notând cu Index(L) num  rul claselor de echivalen  ale rela iei ≈L, exist 
inegalitatea:
Index(L) ≤ Index(M)

Urm toarea teorem  reprezint  o form modificat  a teoremei lui Myhill-Nerode.


Teorema 4.1. Fie L⊆Σ* un limbaj regulat. Atunci exist  un automat finit determinist M care
verific urm toarele propriet   i:
a) L(M) = L
b) M este minimal în raport cu num  rul de st  ri peste mul imea automatelor finite
deterministe.
c) M este unic.
Demonstra ie.
Se va construi automatul M care recunoa  te limbajul L pe baza rela iei de echivalen  ≈L:
M = (Q, Σ, δ, q0, F)
definit astfel:
- Q = { [w]≈L | w∈Σ* }
- q0 este clasa de echivalen ce con ine cuvântul vid: q 0 = [ε]≈L
- F este dat  de mul imea claselor de echivalen ce con in cuvinte din L:
F = { [w]≈L | w∈L }
- δ([w]≈L, a) = [wa]≈L, ∀a∈Σ
Se observ faptul c  func ia de tranzi ie este bine definit  , deoarece din proprietatea de
invarian  la dreapta a rela iei ≈L rezult  :
∀x∈Σ*, ∀a∈Σ, dac  x∈[w]≈L, atunci xa∈[wa]≈L
a) Pentru a demonstra c  L(M) = L, va trebui demonstrat întâi c  :
∀w∈Σ *, δ*(q0, w) = [w]≈L
Demonstra ia se va face prin induc ie dup  lungimea cuvântului w:
- Pentru |w|=0: δ*(q 0, ε) = q 0 = [ε]≈L
- Presupunem rela ia adev rat  pentru orice cuvânt v, |v|≤n  i fie un cuvânt w=va, a∈Σ.
Atunci: δ*(q 0,va) = δ(δ*(q0,v), a) = δ([v]≈L, a) = [va]≈L = [w]≈L
Rezult  în final c  :
L(M) = { w | δ*(q 0,w)∈F } = { w | [w]≈L∈F } = { w | w∈L } = L
b) Pentru a demonstra c  M are un num r minim de st  ri, s presupunem c  exist  un alt
automat, M1 = (Q1, Σ, δ1, q01, F1), a  a încât L(M1) = L  i |Q1| < |Q|. Aceasta înseamn c 
exist  cel pu  in dou  st  ri distincte în M, [x]≈L ≠ [y]≈L, care vor fuziona în automatul M1
într-o singur  stare.
Dar dac [x]≈L ≠ [y]≈L, atunci din defini ia rela iei ≈L, exist  un cuvânt v∈Σ *, a  a încât
doar unul din cuvintele xv  i yv va fi în limbajul L. Deoarece [x]≈L  i [y]≈L vor reprezenta o
singur  stare în automatul M1, aceasta înseamn c cele dou  cuvnte, xv  i yv vor fi
ambele, fie acceptate de M1, fie respinse. Rezul o contradic ie  i deci presupunerea este
fals .
Observa ie. Pentru automatul M construit astfel, ≈M = ≈L.


c) Pentru ultima rela ie, s presupunem c  exist  un alt automat cu un num  r minim de st  ri
care recunoa  te limbajul L, M2 = (Q2, Σ, δ2, q 02, F2), pentru care |Q| = |Q2|. Din observa ia
de la punctul precedent rezult  c :
≈M2 = ≈L = ≈M
Fie un izomorfism al lui M2, M2 ≡iso M3, a  a încât M3 = (Q, Σ, δ3, q0, F). Rzult  de aici c  :
≈M3 = ≈M = ≈L
adic automatele M  i M3 recunosc aceea  i mul ime de cuvinte.
Rezult  , conform defini iei lui ≈M, c  ∀x,y∈Σ*, exist  urm torul  ir de echivalen e:
(x ≈M y) ⇔ (x ≈M3 y) ⇔ (δ*(q 0,x) = δ*(q0,y)) ⇔ (δ3*(q 0,x) = δ3*(q0,y))
Dar de aici rezult  c  δ3 = δ  i deci c M3 = M.
#
Din teorema anterioar  , rezult  c  exist  un automat unic cu un num  r minim de st  ri care
recunoa te un limbaj L,
M = (Q, Σ, δ, q0, F)
pentru care |Q| = Index(L). Pentru a demonstra c  automatul construit în paragraful precedent
definit de rela ia 4.1 este un automat minimal relativ la num rul de st  ri, va trebui demonstrat
c  num  rul de st  ri generat de algoritmul 4.3 este chiar Index(L).

Lema 4.6. Fie L un limbaj regulat  i Mr = (Qr, Σ, δr, q 0r, Fr) automatul finit determinist
determinat de rela ia (4.1), pentru care L = L(Mr). Atunci |Qr| = Index(L).
Demonstra ie.
Fie M = (Q, Σ, δ, q 0, F) automatul minimal determinat de teorema 4.1, pentru care
|Q|=Index(L). Rezult  c  |Qr| ≥ |Q|. S  presupunem prin absurd c |Qr| > Index(L).
Deoarece parti ia indus de rela ia ≈Mr este o rafinare a parti iei determinat  de clasele de
echivalen  ale rela iei ≈L, rezult  c  exist  cuvintele wi,wj,wk∈Σ*, a  a încât [wi]≈Mr ≠ [wj]≈Mr,
pentru care:
(4.4) [wi]≈Mr ∪ [wj]≈Mr ⊆ [wk]≈L
Fie q i∈[wi]≈Mr, qj∈[wj]≈Mr, qi,qj∈Qr. Atunci q i  i qj trebuie s fie separabile  i deci:
∃w∈Σ*, δr(q i, w)∈Fr ⇔ δr(q j, w)∉Fr.
De aici rezult  c exist  x∈[wi]≈Mr  i y∈[wj]≈Mr, a  a încât:
(4.5) xw∈L(M) ⇔ yw∉L(M)
Dar din rela ia (4.4) rezult  c  :
x∈[wk]≈L ∧ y∈[wk]≈L
ceea ce este o contradic ie, deoarece, dac x,y∈[wk]≈L, atunci x ≈L y, dar:
(x ≈L y) ⇔ (∀w∈Σ*, xw∈L(M) ⇔ yw∈L(M))
iar ultima propozi ie este în contradic ie cu rela ia (4.5).
Rezult  c  presupunerea |Qr| > Index(L) este fals  i deoarece |Qr| ≥ Index(L), rezult  c  :
|Qr| = Index(L).
#

Observa ie. Forma teoremei lui Myhill-Nerode a fost aleas a  a încât s permit 


demonstrarea u  oar  a unicit   ii unui automat finit minimal. Forma uzual a acestei teoreme
este urm  toarea:

Teorema 4.1.1. Fie L un limbaj peste un alfabet Σ. Atunci urm  toarele propozi ii sunt
echivalente:
a) L este limbaj regulat
b) L este reuniunea unor clase de echivalen  ale unei rela ii de echivalen  invariante
la dreapta
c) Rela ia de echivalen ≈L are index finit

Propozi ia de la punctul b) se refer  la rela ia ≈M definit  anterior.

Observa ie. Aceast  ultim form  a teoremei Myhill-Nerode poate fi utilizat  , atât pentru a


demonstra c  un anumit limbaj este regulat, cât  i pentru a demonstra c  un anumit limbaj nu
este regulat. În primul caz va trebui ar  tat c rela ia ≈L are index finit, pe când în cazul al
doilea va trebui ar  tat c  rela ia ≈L nu are index finit.

Exemplu. S demonstr  m c  limbajul urm tor nu este regulat.


L = {anbn | n≥0}
Demonstra ie.
Fie secven a infinit  de cuvinte:
S = a0, a1, …, an, … 

Vom demonstra c  num  rul claselor de echivalen ale rela iei ≈L este cel pu in egal cu
num  rul de elemente ale secven ei S.
Fie i  i j doi indici diferi i: i,j≥0, i≠j. Atunci cuvintele ai  i aj sunt diferite  i pentru orice
cuvânt v de forma v=aj avem:
(aiv ∉ L) ∧ (ajv ∈ L)
De aici rezult  c  ∀i=0, 1, …, elementele ai∈S fac parte din clase de echivalen diferite ale
rela iei ≈L. Deoarece S are un num  r infinit de elemente, rezult  c  num  rul claselor de
echivalen  ale lui ≈L este infinit  i din teorema lui Myhill-Nerode rezult  c L nu este regulat.
#

4.3 Propriet i de închidere pentru mul imile regulate


Clasa limbajelor regulate reprezint  o familie de limbaje, iar în acest paragraf se vor studia
propriet   ile de închidere ale acestei familii fa  de diferite opera ii. În mod formal, o familie
de limbaje se define te astfel:

Defini ia 4.8. Pentru un alfabet Σ, o familie de limbaje peste Σ se noteaz cu ℜΣ  i este o




submul ime a tuturor limbajelor posibile peste Σ:


ℜΣ ∈℘(℘(Σ*))

Clasa mul imilor regulate peste un alfabet Σ se noteaz cu RegΣ  i este o familie de limbaje:
RegΣ ∈℘(℘(Σ*))

Când nu exist  nici o confuzie, indicele Σ al unei familii de limbaje se poate omite.

Deoarece limbajele sunt mul imi de cuvinte, asupra lor se pot aplica diferi i operatori. Fie Ψ
un operator cu aritatea k, care se aplic asupra a k limbaje dintr-o familie de limbaje ℜ.

Defini ia 4.9. O familie de limbaje ℜ este închis în raport cu un operator Ψ cu aritatea k,


dac   i numai dac :


∀L1,L2,…,Lk∈ℜ, ℜ( L1,L2,…,Lk)∈ℜ

4.3.1 Închiderea fa  de opera  ii booleene

Mul imea operatorilor {∪, ∩, -, } formeaz  o algebr  boolean în raport cu mul imea
cuvintelor din Σ*. Din acest motiv, cele patru opera ii de mai sus se mai numesc opera ii
booleene.

Teorema 4.2. Familia limbajelor regulate este închis fa


 de opera iile de reuniune,
concatenare  i închidere Kleene.
Demonstra ie.
Fie L1  i L2 dou  limbaje regulate. Atunci, din defini ia mul imilor regulate, rezult  imediat c 
 i limbajele:
L1 ∪ L2
L1 ⋅ L2
L1*
sunt limbaje regulate.
#

Cea mai mare parte a demonstra iilor urm  toare sunt constructive  i se bazeaz pe faptul c 
pentru orice limbaj L, exist  un automat finit determinist M pentru care L = L(M).

Teorema 4.3. Familia limbajelor regulate este închis fa


 de opera ia de intersec ie.
Demonstra ie.
Fie L1  i L2 dou  limbaje regulate peste un alfabet Σ. Atunci exist  dou  automate finite
deterministe,
M1 = (Q1, Σ, δ1, q01, F1)
M2 = (Q2, Σ, δ2, q02, F2)
pentru care L1 = L(M1)  i L2 = L(M2).
Se va construi un automat finit determinist M, a  a încât L(M) = L1 ∩ L2. Deoarece automatul
M este finit determinist, limbajul L(M) aceeptat de el este un limbaj regulat, de unde rezult 
c   i L1∩L2 este un limbaj regulat.
Automatul M va fi construit astfel încât el va accepta un cuvânt w dac   i numai dac 
amândou  automatele M1  i M2 vor recunoa  te pe w:
M = (Q1×Q2, Σ, δ, q 0, F1×F2)
unde:
- q0 = q01, q02 

- δ( q, p , a) = δ1(q, a), δ2(p, a) , ∀a∈Σ, ∀q∈Q1, ∀p∈Q2


Se poate demonstra simplu, prin induc ie dup  lungimea unui cuvânt w∈Σ*, faptul c  :
 

(4.6) δ*( q, p , w) = δ1*(q, w), δ2*(p, w)


• În cazul când |w|=0, w=ε  i avem:
 

δ*( q, p , ε) = q, p = δ1*(q, ε), δ2*(p, ε)


• Presupunem c  rela ia (4.6) este adev rat  pentru orice cuvânt v∈Σ *, |v|≤n  i fie un cuvânt
  

w de lungime n+1: w = va, a∈Σ. Avem urm torul  ir de egalit  i:


δ*( q, p , va) = δ(δ*( q, p , v), a)) = δ( δ1*(q, v), δ2(δ2*(p, v) ), a) =
  

= δ1(δ1*(q, v), a), δ2(δ2*(p,v), a) = δ1*(q, va), δ2*(p, va)


Din rela ia (4.6) rezult  :
 

w ∈ L(M) ⇔ δ*( q01, q02 , w) ∈ F1×F2




⇔ δ1*(q 01, w), δ2*(q 02, w) ∈ F1×F2




⇔ w ∈ L1 ∧ w ∈ L2
⇔ w ∈ L1∩L2
#

Teorema 4.4. Familia limbajelor regulate este închis fa


 de opera ia de complement.
Demonstra ie.
Fie L un limbaj regulat. Atunci exist  un automat finit determinist:
M = (Q, Σ, δ, q0, F)
a  a încât L = L(M). Urmând acela  i ra ionament ca în teorema anterioar  , pentru a ar  ta c  L
este un limbaj regulat, va trebui determinat un automat finit determinist M1 pentru care:
L(M1) =L
Un asemenea automat trebuie s recunoasac  toate cuvintele pe care M nu le recunoa  te,
adic  , w∈L(M1) ⇔ w∉L(M):
M = (Q, Σ, δ, q0, Q-F)
Rezul astfel:
w∈L(M1) ⇔ δ*(q 0, w)∈Q-F
⇔ δ*(q0, w)∈Q ∧ δ*(q0, w)∉F
⇔ w ∉ L(M)
#

Observa ie. Ultimele dou  teoreme nu sunt total independente. Dac  s-a demonstrat c 
familia limbajelor regulate este închis fa de opera ia de complement, datorit  faptului c 
opera iile {∪, ∩, -, } formeaz  o algebr  boolean , din legile lui DeMorgan rezult  :
∀L1 , L 2 ∈ Re g  L1 , L 2 ∈ Re g  L1 ∪ L 2 ∈ Re g 
 
L1 ∪ L 2 ∈ Re g L1 ∩ L 2 ∈ Re g

Utilizând aceea i metod  ca  i în teorema 4.3, se poate demonstra o proprietate asem  n toare
pentru opera ia de diferen .

Teorema 4.5 . Familia limbajelor regulate este închis fa de opera ia de diferen .
Demonstra ie.
Fie L1  i L2 dou  limbaje regulate. Pentru a demonstra c  L1-L2 este limbaj regulat, va trebui
construit un automat finit determinist M a  a încât L(M) = L1-L2. Fie M1  i M2 automatele care
recunosc limbajele L1  i L2:
M1 = (Q1, Σ, δ1, q01, F1), L(M1) = L1
M2 = (Q2, Σ, δ2, q02, F2), L(M2) = L2
Vom defini automatul M astfel:
M = (Q1×Q2, Σ, δ, q0, F)
unde:
- q0 =  q01, q02
- δ( q, p , a) =  δ1(q, a), δ2(p, a) , ∀a∈Σ, ∀q∈Q1, ∀p∈Q2
- F = F1×(Q2-F2)
Utilizând ra
ionamentul din terorema 4.3, se poate demonstra c :
w ∈ L(M) ⇔ δ*( q01, q02 , w) ∈ F1×(Q2-F2)
⇔ (δ1*(q 01, w) ∈ F1) ∧ (δ2*(q 02, w) ∉ F2)
⇔ w ∈ L1 ∧ w ∉ L2
⇔ w ∈ L1-L2
#

Observa ie. În multe cazuri, se poate demonstra c un anumit limbaj este regulat, dac el se
poate exprima ca o expresie ce con
ine limbaje regulate mai simple i operatori booleeni, iar
pentru limbajele mai simple se poate ar ta c sunt regulate.

Exemplu. Se consider limbajul L ⊆ {a, b}*, care con


ine doar cuvinte pentru care num rul
de simboluri a este divizibil cu 3, dar nu este divizibil cu 2. S se demonstreze c L este
limbaj regulat.
Demonstra ie.
Vom considera dou limbaje mai simple:
L2 = {w∈{a, b}* | #a(w) este divizibil cu 2}
L3 = {w∈{a, b}* | #a(w) este divizibil cu 3}
unde nota
ia # c(w) reprezint num rul de apari
ii ale simbolului c în cuvântul w.
Se observ c limbajul L poate fi exprimat în func
ie de L2 i L3 astfel:
L = L3 ∩L2
Dar L2 i L3 sunt limbaje regulate, deoarece pot fi descrise de urm toarele expresii regulate:
L2 = L(b*ab*ab *)
L3 = L(b*ab*ab *ab *)
i deci conform teoremelor referitoare la intersec
ie i complementare, limbajul L este regulat.
#

4.3.2 Închiderea fa  de opera iile de cât, invers, prefix  i sufix


În afar de opera
iile cu limbaje specificate în paragraful 1.1.2, vom mai defini înc dou
opera
ii, câtul a dou limbaje i inversul unui limbaj, care vor fi utile în definirea i
demonstrarea propriet
ilor de închidere pentru opera
iile de prefix i sufix a unui limbaj.

Defini ia 4.10. Fie L1 i L2 dou limbaje peste un alfabet Σ.


1) Câtul (la dreapta) al limbajelor L1 i L2 se noteaz L1/L2 i se define te astfel:
L1/L2 = {w∈Σ* | ∃v∈L2, wv∈L1}
2) Inversul limbajului L1 se noteaz L1R i se define te astfel:
L1R = {w∈Σ* | wR∈L1}

Cu alte cuvinte, inversul unui limbaj L este limbajul format din toate cuvintele inversate ale
lui L, iar câtul limbajelor L1 i L2 este dat de mul
imea prefixelor din limbajul L1, pentru care
sufixele asociate sunt din L2.

Exemplu. Fie urm toarele limbaje specificate prin expresii regulate:


L1 = L(a*(bc)*)
L2 = L((cb*)(cb*)*)
Pentru a putea determina cuvintele din L1/L2, trebuie identificate, pentru cuvintele w∈L1
sufixele care sunt în limbajul L2. Dac un cuvânt de forma wv este din L1, atunci exist
întregii m,n∈N, a a încât:
wv = am(bc)n
iar dac v∈L2, atunci exist întregii i1,i2,...ik∈N, i k≥1 a a încât:
v = (bci1)(bci2)...(bcik)
Vom pune expresia lui wv într-o form în care s fie eviden
iat un sufix din L2:
wv = am(bc)n = amb(cb)n-1c = amb(cb)n-t-1(cb)tc = amb(cb)n-t-1(cb1)t(cb 0)1
unde t, t<n-1 este un num r arbitrar.
Se observ c sufixul (cb 1)t(cb0)1 al cuvântului wv este de forma cuvintelor din L2 i îl
reprezint pe v, iar în acest caz prefixul w este:
w = amb(cb)n-t-1 ∈ L(a*b(cb)*)
Rezult deci c :
L1/L2 = L(a*b(cb)*)

Un alt mod de a specifica inversul unui limbaj îl reprezint expresiile regulate, iar pentru
aceasta va trebui definit no
iunea de invers al unei expresii regulate.

Defini ia 4.11. Fie r o expresie regulat . Inversul expresiei r se noteaz cu rR i este definit
astfel:

Φ, daca : r = Φ
ε, daca : r = ε

a , daca : r = a
R
r =
(s R + t R ), daca : r = (s + t )
( t R ⋅ s R ), daca : r = (s ⋅ t )

(s R )* , daca : r = (s* )

Propozi ia 4.3. Fie r o expresie regulat  peste un alfabet Σ  i L(r)⊆Σ* limbajul desemnat de
aceasta. Atunci:
(4.7) ∀w∈Σ *, w∈L(r) ⇔ wR∈L(rR)
Demonstra ie.
Vom demonstra rela ia prin induc ie dup  lungimea cuvântului w.
a) Cazul |w|=0. În acest caz w=ε  i deoarece εR=ε, va trebui demonstrat  echivalen a:
(4.8) ε∈L(r) ⇔ ε∈L(rR)
Rela ia (4.8) o vom demonstra de asemenea prin induc ie, dup  num  rul k de operatori ai
expresiei r.
- Dac  k=0, atunci singura expesie regulat  simpl care desemneaz un limbaj ce
recunoa te cuvântul vid este r=ε. Atunci din defini ia inversului unei expresii
regulate rezult  :
ε∈L(ε) ⇔ ε∈L(εR)
- Presupunem c  rela ia (4.8) adev rat  pentru orice expresie regulat  cu un num  r
de operatori mai mic decât k. O expresie r ce con ine k operatori poate avea
urm  toarele forme: r=s+t, r=st, r=s*, unde expresiile regulate s  i t au mai pu in de
k operatori  i verific  rela ia (4.8). Avem pentru fiecare caz în parte:
i. ε∈L(s+t) ⇔ ε∈L(s) ∨ ε∈L(s) ⇔ ε∈L(sR) ∨ ε∈L(sR) ⇔ ε∈L(sR+tR)=L(rR)
ii. ε∈L(st) ⇔ ε∈L(s)L(t) ⇔ ε∈L(s) ∧ ε∈L(t) ⇔ ε∈L(tR) ∧ ε∈L(sR) ⇔
⇔ ε∈L(tR)L(sR)= L(tRsR)=L(rR)
iii. ε∈L(s*) ⇔ ε∈L*(s)=L0(s)∪(∪i≥1 Li(s)) ⇔ (ε∈L0(s) ∨ (∃j≥1, ε∈Lj(s))) ⇔
⇔ (ε∈L0(s) ∨ ε∈L(s)) ⇔ (ε∈L0(sR) ∨ ε∈L(sR)) ⇔ L0(sR)∪(∪i≥1 Li(sR)) ⇔
⇔ ε∈L((sR)*)=L(rR)
b) Presupunem c  rela ia (4.7) este adev rat  pentru orice cuvânt v, |v|≤n  i fie un cuvânt
w=va, unde a∈Σ, v∈Σ*, |v|=n. În acest caz, wR=(va)R=avR  i avem urm  toarele
echivalen e:
va∈L(r) ⇔ r=sa ∧ v∈L(s) ⇔ rR=asR ∧ vR∈L(sR) ⇔
⇔ avR∈aL(sR)=L(asR)=L((sa)R)=L(rR)
#

Teorema 4.6. Familia limbajelor regulate este închis fa  de opera ia de inversare.
Demonstra ie.
Demonstra ia nu utilizeaz automate finite, ci expresii regulate. Fie L un limbaj regulat  i r
expresia regulat  asociat  , pentru care L = L(r). Utilizând propozi ia 4.3, rezult  egalit 
 ile:
LR = LR(r) = L(rR)
Deoarece rR este o expresie regulat  , rezult  c limbajul L(rR) este un limbaj regulat  i deci LR
este limbaj regulat.
#

Exemplu. Fie limbajul L1 din exemplul anterior, specificat prin expresii regulate:
L1 = L(a*(bc)*)
Inversul lui L1 este limbajul:
L1R = L((a*(bc)*)R) = L(((bc)*)R(a*)R) = L((cRb R)*(aR)*)

Revenind la câtul a dou  limbaje, se poate demonstra o proprietate asem  n toare de închidere
pentru aceast  opera ie.

Teorema 4.7. Fie L1 un limbaj regulat peste un alfabet Σ  i L2 un limbaj oarecare peste acela i
alfabet. Atunci limbajul L1/L2 este un limbaj regulat peste Σ.
Demonstra ie.
Fie M1 = (Q, Σ, δ, q0, F) un automat finit determinist care recunoa  te limbajul L1, L(M1) = L1.
Vom construi un alt automat determinist, M1, care trebuie s recunoasc  limbajul L1/L2. Fie
M1 definit astfel:
M1 = (Q, Σ, δ, q0, F1)
unde:
F1 = {q∈Q | ∃v∈L2, a  a încât δ*(q, v)∈F}
Pentru a demonstra c L(M1) = L1/L2, trebuie ar  tat c  :
∀w∈Σ *, w∈L(M1) ⇔ w∈L1/L2
Dar aceast  rela ie rezult  din urm  torul  ir de echivalen e:
w∈L(M1) ⇔ δ*(q0, w) = q∈F1 ⇔
⇔ (δ*(q0, w) = q) ∧ (∃v∈L2, a a încât δ*(q, v)∈F) ⇔
⇔ δ*(q0, wv)∈F ⇔
⇔ wv∈L1 când v∈L2 ⇔
⇔ w∈L1/L2
#

Observa ie. De  i utilizeaz un automat determinist, teorema anterioar  nu este constructiv ,


în sensulc  nu descrie o metod  efectiv de construire a mul imii st  rilor finale F1. Deoarece
L2 este un limbaj oarecare, dac  nu se poate decide efectiv dac  v∈L2, atunci nu se poate
decide nici dac o stare q din Q apar ine  i mul imii F1. Îns , chiar dac  nu se poate decide
efectiv care este mul imea F1, aceasta este cu siguran  o submul ime a lui Q.
În cazul în care limbajul L2 este un limbaj regulat, dup  cum se va vedea ulterior,
problema apartenen ei unui cuvânt la L2 este decidabil  (exist  un algoritm care determin
acest lucru)  i deci mul imea F1 se poate construi efectiv utilizând acest algoritm.

Utilizând teorema anterioar  , se poate demonstra proprietatea de închidere a familiei


limbajelor regulate fa  de opera ia de prefix.

Defini ia 4.12. Fie L un limbaj peste un alfabet Σ. Prefixul limbajului L se noteaz  Prefix(L)
 i se define  te astfel:

Prefix(L) = {w∈Σ* | ∃v∈Σ*, wv∈L}

Observa ie. Din defini ia câtului la dreapta, se observ c opera ia de prefix al unui limbaj L
se poate defini în termenii câtului la dreapta al lui L fa  de mul imea total Σ*:
Prefix(L) = L/Σ*

Teorema 4.8. Familia limbajelor regulate este închis fa  de opera ia de prefix.
Demonstra ie.
Demonstra ia rezult  imediat din observa ia anterioar   i din teorema 4.7.
#

Sufixul unui limbaj se define  te în mod asem n tor prefixului.

Defini ia 4.13. Fie L un limbaj peste un alfabet Σ. Sufixul limbajului L se noteaz Sufix(L)  i
se define te astfel:
Sufix(L) = {w∈Σ* | ∃v∈Σ *, vw∈L}

Opera iile de prefix  i sufix sunt legate prin intermediul opera iei de inversare a unui limbaj.

Propozi ia 4.4. Fie L un limbaj peste un alfabet Σ. Atunci:


Sufix(L) = (Prefix(LR))R
Demonstra ie.
Demonstra ia se bazeaz  pe urm  toarea echivalen  :
∀v,w∈Σ*, vw∈L ⇔ (vw)R∈LR ⇔ wRvR∈LR
Notând vR cu u, avem egalit  ile:
Sufix(L) = {w∈Σ* | ∃v∈Σ *, vw∈L} =
= {w∈Σ* | ∃u∈Σ*, wRu∈LR} =
= {wR∈Σ* | ∃u∈Σ*, wu∈LR} =
= {wR | w∈Prefix(LR)} =
= (Prefix(LR))R
#

Teorema 4.9. Familia limbajelor regulate este închis fa  de opera ia de sufix.
Demonstra ie.
Demonstra ia rezult  imediat din observa ia anterioar   i din propozi ia 4.4, deoarece, pentru
un limbaj regulat L, atât LR, cât  i Prefix(LR)  i (Prefix(LR))R sunt regulate.
#


4.3.3 Închiderea fa de homomorfism  i substitu ie
În paragraful 1.1.2 s-a definit no iunea de homomorfism relativ la mul imi de cuvinte. Fiind
date dou  alfabete Σ1  i Σ2, un homomorfism ϕ este definit astfel :
ϕ: Σ 1 → Σ2*
 i se poate extinde unic la un homomorfism având la baz  cuvinte  i nu simboluri:

ϕ(w): Σ1* → Σ 2*
definit astfel:
ϕ(w)(ε) = ε,
ϕ(w)(x⋅a) = ϕ (w)(x)⋅ϕ(w)(a), ∀x∈Σ1*, a∈Σ1

Mai mult, homomorfismul ϕ(w) se poate extinde  i la limbaje astfel :


ϕ(L): ℘(Σ1*) → ℘(Σ2*)
unde:
ϕ(L)(L) = {ϕ(w)(w) | w∈L}, ∀L∈℘(Σ1*)

Observa ie. Mul imea ℘(Σ*) reprezint  de fapt mul imea tuturor limbajelor definite peste
alfabetul Σ.
Datorit  modului de definire a homomorfismelor ϕ, ϕ(w)  i ϕ(L), pentru homomorfismul ϕ(L) se
pot demonstra u  or câteva egalit 
 i.

Propozi ia 4.5. Fie Σ un alfabet  i L1  i L2 dou  limbaje peste Σ. Atunci urm  toarele rela ii
sunt adev rate :
a) ϕ(L1∪L2) = ϕ(L1)∪ϕ(L2)
b) ϕ(L1⋅L2) = ϕ(L1)⋅ϕ(L2)
c) ϕ(L1*) = (ϕ(L1))*

Se poate demonstra faptul c familia limbajelor regulate este închis fa  de homomorfismul
ϕ(L). Aceast  demonstra ie va rezulta îns ca un caz particular al unei alte opera ii, mai
generale, care înlocuie  te un simbol nu cu un cuvânt, ca în cazul homomorfismului ϕ, ci cu un
întreg limbaj. Opera ia respectiv se nume te substitu ie.

Defini ia 4.14. Fie Σ 1 i Σ2 dou alfabete. O substitu ie este o func ie f de la mul imea
    

simbolurilor din Σ1 la mul imea limbajelor peste Σ2: 

f: Σ1 → ℘(Σ2*)
Substitu ia f se poate extinde la cuvinte astfel:


f(w): Σ1* → ℘(Σ 2*),


f(w)(ε) = {ε},
f(w)(x⋅a) = f(w)(x)⋅f(w)(a), ∀x∈Σ1*, a∈Σ1
(w)
Substitu ia f se poate extinde la limbaje astfel:


f(L): ℘(Σ1*) → ℘(Σ2*),


f(L)(L) = {f(w)(w) | w∈L}, ∀L∈℘(Σ1*)

Atunci când nu exist confuzii, se poate renun a la indicele (w) sau (L) al func iilor de
  

homomorfism i substitu ie, deoarece argumentul unei asemenea func ii determin în mod
   

unic în cazul în care ea este o extensie, ce tip de extensie este func ia respectiv .  

Exemplu. Fie Σ1 = Σ2 = {a, b, c}, L = {aa, ab bb, bc cc, bcc} i substitu ia f definit astfel:   

f(a)=Φ, f(b)={ε}, f(c)={ab}. Rezult : 

f(aa) = f(a)f(a) = Φ
f(ab) = f(a)f(b) = Φ
f(bb) = f(b)f(b) = {ε}
f(bc) = f(b)f(c) = {ab}
f(cc) = f(c)f(c) = {abab}
f(bcc) = f(b)f(cc) = {ε, abab}
f(L) = {ε, ab, abab}
Se observ c dac , pentru un simbol a, f(a)=Φ, atunci f va terge toate cuvintele din L care
   

con in a, iar dac f(a)={ε}, atunci f va terge doar apari iile simbolului a în cuvintele din L.
   

Observa ie. Propozi ia 4.5 r mâne valabil


     i pentru substitu ie.


Propozi ia 4.6. Fie Σ un alfabet i L1 i L2 dou limbaje peste Σ. Atunci urm toarele rela ii
     

sunt adev rate : 

- f(L1∪L2) = f(L1)∪f(L2)
- f(L1⋅L2) = f(L1)⋅f(L2)
- f(L1*) = (f(L1))*
Proprietatea de închidere a limbajelor regulate pentru opera ia de substitu ie este valabil doar   

dac pentru fiecare simbol, limbajul substituit acestuia este regulat.




Defini ia 4.15. O substitu ie f: Σ1 → ℘(Σ2*) se nume te regulat dac


     i numai dac , ∀a∈Σ, 

f(a) este un limbaj regulat.

Se observ c o substitu ie regulat define te o aplica ie. Fie a∈Σ un simbol ce va fi substituit
     

cu limbajul regulat f(a)∈℘(Σ2*). Atunci, pentru f(a) exist o expresie regulat ra∈µ(Σ2),  

pentru care f(a)=L(ra). Vom defini o aplica ie gf subordonat lui f astfel:  

gf : Σ 1 → µ(Σ2),
∀a∈Σ1, gf(a) = ra ⇔ f(a) = L(ra)

În mod asem n tor substitu iei, vom extinde func ia gf de la simboluri la expresii regulate:
   

gf : µ(Σ1) → µ(Σ 2),


astfel:
gf(Φ) = Φ
gf(ε) = ε
gf(s+t) = gf(s)+gf(t), ∀s,t∈µ(Σ 1)
gf(s⋅t) = gf(s)⋅gf(t), ∀s,t∈µ(Σ1)
gf(s*) = (gf(s))*, ∀s∈µ(Σ1)
Se observ c rela iile anterioare sunt corect definite.
  

Aplia ia gf realizeaz acelea i substitu ii ale simbolurilor dintr-o expresie regulat , ca i


     

substitu iile func iei f aplicate asupra simbolurilor din cuvinte.


 

Se poate demonstra acum terorema referitoare la substitu iile regulate. 

Teorema 4.10. Familia limbajelor regulate este închis fa de opera ia de substitu ie regulat .      

Demonstra ie. 

Fie Σ1 i Σ 2 dou alfabete, f: Σ1 → ℘(Σ2*) o substitu ie regulat i M∈℘(Σ1*) un limbaj


    

regulat. Va trebui demonstrat c limbajul N∈℘(Σ2*), N=f(M) este de asemenea un limbaj 

regulat.
Deoarece M este un limbaj regulat, exist o expresie regulat r∈µ(Σ1) a a încât   

M=L(r). Pentru a demonstra c i N este regulat, este suficient s se determine o expresie   

regulat s∈µ(Σ 2) pentru care N=L(s).




Deoarece:
N = f(M) = f(L(r))
va trebui ca asupra lui r s se aplice o substitu ie subordonat lui f, adic gf(r) i deci expresia
    

s este dat de: 

s = gf(r)
Cu alte cuvinte, va trebui demonstrat c : 

(4.9) f(L(r)) = L(gf(r)), ∀r∈µ(Σ1)


ceea ce înseamn c limbajul ob inut prin aplicarea substitu iei f asupra limbajului generat de
   

expresia r este acela i ca cel generat de expresia rezult dup aplicarea lui gf asupra lui r.
  

Vom demonstra rela ia (4.9) prin induc ie dup num rul k de operatori ai expresiei r.
   

a) Cazul k=0 se demonstreaz simplu, pentru fiecare tip de expresie elementar :  

- r = Φ; în acet caz L(Φ)=Φ, gf(Φ)=Φ i deci: 

f(Φ) = Φ = L(Φ)
- r =ε; în acet caz L(ε)={ε}, gf(ε)=ε i deci: 

f({ε}) = {ε} = L(ε)


- r =a, a∈Σ1; în acet caz L(a)={a}, gf(a)=ra i deci: 

f({a}) = f(a) = L(ra)


b) Presupunem rela ia (4.9) adev rat pentru orice expresie ce con ine k<n operatori i fie o
    

expresie r cu n operatori. Atunci r are una dintre formele: r=s+t, r=st, r=s*, iar din
propozi ia 4.6 i defini ia func iei gf avem egalit ile:
     

- f(L(r)) = f(L(s+t)) = f(L(s)∪L(t)) = f(L(s))∪f(L(t)) = L(gf(s))∪L(gf(t)) =


= L(gf(s)+gf(t)) = L(gf(s+t)) = L(gf(r))
- f(L(r)) = f(L(s⋅t)) = f(L(s)⋅L(t)) = f(L(s))⋅f(L(t)) = L(gf(s))⋅L(gf(t)) =
= L(gf(s)⋅gf(t)) = L(gf(s⋅t)) = L(gf(r))
- f(L(r)) = f(L(s*)) = f(L*(s)) = f*(L(s)) = L*(gf(s)) = L(g*f(s)) = L(gf(s*)) = L(gf(r))
#

Exemplu. Fie Fie Σ1 = {0, 1} Σ2 = {a, b} i limbajul L specificat prin expresii regulate:

L = L(01(00+11)*10)
Definim o substitu ie astfel:


f(0) = L(aa)
f(1) = L((bbaa)*)
Limbajul f(L) se determin astfel: 

r = 01(00+11)*10
gf(r) = (aa)(bbaa)*((aa)(aa)+(bbaa)*(bbaa)*)*(bbaa)*(aa) =
= (aa)(bbaa)*(aaaa+(bbaa)*)*(bbaa)*(aa)
f(L) = L(gf(r)) = L((aa)(bbaa)*(aaaa+(bbaa)*)*(bbaa)*(aa))

Revenind la homomorfism, se observ c acesta este un caz particular al substitu iei. Într-
  

adev r, pentru un simbol a∈Σ1, ϕ(a)∈Σ2* este un cuvânt, pe când f(a)∈℘( Σ 2*) este un limbaj.


Astfel, ϕ(a) poate fi privit ca un limbaj cu un sigur cuvânt, iar func ia ϕ poate fi privit ca  

func ia f pentru care |ϕ(a)|=1, ∀a∈Σ1. Rezult deci urm torul corolar.
  

Corolarul 4.1. Familia limbajelor regulate este închis fa de opera ia de homomorfism.    

Demonstra ie. 

Demonstra ia este imediat din observa ia precedent i din faptul c un limbaj format dintr-
     

un singur cuvânt este limbaj regulat.


#

Observa ie. Folosind teorema substitu iei, se pot demonstra u or i alte propriet i ale
     

limbajelor regulate. De exemplu, fie L1 i L2 dou limbaje regulate. Pentru a demonstra c i


   

limbajele:
a) L1L2
b) L1∪L2
c) L1*
sunt limbaje regulate, se poate proceda astfel:
a) Se consider limbajul regulat L = {ab} ⊆ {a, b}* i substitu ia s definit astfel:
   

s(a) = L1
s(b) = L2
Atunci, din teorema substitu iei, urm torul limbaj este regulat:
 

S(L) = s({ab}) = L1L2


b) Se consider limbajul regulat L = {a, b} ⊆ {a, b}* i substitu ia s definit astfel:
   
s(a) = L1
s(b) = L2
Atunci, din teorema substitu iei, urm torul limbaj este regulat:
 

S(L) = s({a, b}) = L1 ∪ L2


c) Se consider limbajul regulat L = {a*} i substitu ia s definit astfel:
   

s(a) = L1
Atunci, din teorema substitu iei, urm torul limbaj este regulat:
 

S(L) = s({a*}) = L1*

4.4 Probleme de decidabilitate


Decidabilitatea reprezint un caz particular al problemelor de decizie. O problem de decizie
 

privind limbajele regulate înseamn a determina dac o anumit proprietate a limbajelor este
  

verificat de un anumit limbaj regulat.




În mod uzual limbajele nu sunt specificate prin mul imea cuvintelor con inute, deoarece  

aceast mul ine este în cele mai multe cazuri infinit . Se prefer o reprezentare finit a
    

limbajelor, utilizând un formalism adecvat specificare. Pentru limbajele regulate,


formalismele utilizate sunt gramaticile liniare la dreapta, automatele finite i expresiile 

regulate.

Pentru o reprezentare finit a limbajelor regulate, principalele propriet i ce se doresc a fi


  

verificate sunt urm toarele:




a) Problema apartenen ei: dac un cuvânt apar ine sau nu limbajului asociat unei
 

reprezent ri finite; 

b) Problema limbajului vid: dac limbajul asociat reprezent rii este vid sau nu;
 

c) Problema limbajului finit: dac limbajul asociat reprezent rii este finit sau nu;
 

d) Problema echivalen ei limbajelor: dac dou limbaje asociate unor reprezent ri   

finite sunt echivalente sau nu.

În cazul în care o asemenea problem de decizie se poate rezolva în mod algoritmic, atunci


proprietatea asociat problemei se spune c este decidabil .


 

În mod uzual, pentru probleme de decidabilitate, se prefer specificarea limbajelor cu ajutorul 

automatelor finite, deoarece sunt simple i permit descrierea algoritmic a multor propriet i
   

ale acestora.

4.4.1 Problema apartenen ei


Utilizând automatele finite deterministe, aceast problem este relativ simpl : se poate utiliza   

un algoritm care simuleaz func ionarea unui automat determinist, iar în cazul în care ultima
 

stare atins de automat pentru un anumit cuvânt de intrare este stare final , atunci se poate
 

afirma c automatul recunoa te cuvântul respectiv.


 

Fie M = (Q, Σ, δ, q 0, F) un automat finit determinst pentru care L = L(M) i w = a1a2...an un 

cuvânt peste alfabetul Σ. Pentru a simula func ionarea lui M pentru cuvântul de intrare w, va 
trebui determint întâi secven a de st ri q0, q1=δ(q0, a1), q 2=δ(q1, a2), ..., q n=δ(q n-1, an). Dac
   

starea q n este final , q n∈F, atunci w∈L(M), altfel w∉L(M).




Dup cum s-a specificat anterior în paragraful despre automate finite deterministe, secven a
 

q0, q1, ..., qn este finit i unic determinat . Algoritmul urm tor determin aceast secven .
       

Algoritmul 4.4. Problema apartenen ei. 

Intrare.
- Automatul determinist M = (Q, Σ, δ, q0, F)
- Cuvântul de intrare w = a1a2...an
Metod .
function Apartine(δ, q0, F, w)
q ← q0
for i←1 to |w| do
q ← δ(q, a1)
endfor
if q∈F then
return true
else
return false
endif
end

Se observ c algoritmul anterior este bine definit i are o complexitate liniar , depinzând de
   

lunginea cuvântului w i num rul de st ri finale din mul imea F. Rezult urm toarea teorem :
      

Teorema 4.11. Pentru familia limbajelor regulate, problema apartenen ei este decidabil .  

4.4.2 Problema limbajului vid

Fie L un limbaj regulat i M = (Q, Σ, δ, q0, F) un automat finit determinst pentru care


L=L(M).

Teoretic, aceast problem poate fi rezolvat apelând func ia Apartine pentru fiecare cuvânt
   

din Σ*; dac func ia returneaz true pentru cel pu in un cuvânt, limbajul este nevid, altfel el
   

este vid.

Îns mul imea Σ* este în cele mai multe cazuri o mul ime infinit , a a încât un asemenea
    

algoritm nu este finit. Utilizând lema de pompare, se poate restrânge num rul de cuvinte care 

trebuie testate, a a încât s fie finit: se vor testa toate cuvintele ce con in simboluri din
  

alfabetul Σ, care au o lungime mai mic decât |Q|. În acest mod, de i ineficient, algoritmul de  

testare este finit.

O variant mai simpl const în utilizarea grafului de tranzi ie al automatului M: dac


    

limbajul L(M) este nevid, atunci înseamn c exist cel pu in un drum în graful de tranzi ie     

care pleac din q 0 i se termin într-o stare final q∈F.


   
Algoritmul urm tor determin mul imea S a st rilor accesibile din q0. În cazul în care S∩F≠Φ,
   

înseamn c S con ine cel pu in o stare final i deci limbajul L(M) nu este vid.
     

Algoritmul 4.5. Problema limbajului vid.


Intrare.
- Automatul determinist M = (Q, Σ, δ, q0, F)
Metod .
function LimbajVid(Q, δ, q0, F, w)
S ← Travers(Q, δ, q0)
if S∩F=Φ then
return true
else
return false
endif
end

S-a notat cu Travers o func ie de parcurgere a grafului având q 0 ca nod ini ial. Func ia   

returneaz mul imea nodurilor atinse din graf.


 

Se observ c algoritmul anterior este bine definit, deoarece pentru orice stare final qk∈F
  

care este atins , exist un drum în graf:  

q0 →ai1 q 1 →ai2 q2 ... →aik qk


care corespunde cuvântului w = ai1ai1...aik recunoscut de automat. Timpul de execu ie este de 

asemenea finit i depinde de m rimea grafului de tranzi ie al automatului. Rezult deci


   

urm toarea teorem :


 

Teorema 4.12. Pentru familia limbajelor regulate, problema limbajului vid este decidabil . 

4.4.3 Problema limbajului finit


Aceast problem este mai complex decât cea precedent , deoarece nu trebuie s se
    

determine dac limbajul are cel pu in un cuvânt, ci dac num rul cuvintelor este finit sau nu.
   

Ca i în cazul precedent, utilizând lema de pompare, se poate restrânge num rul cuvintelor
 

care trebuie testate, astfel încât acesta s fie finit. 

Lema 4.7. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist. Atunci limbajul L(M) este
finit dac i numai dac ∃w∈L(M) astfel încât |Q| ≤ |w| < 2*|Q|.
  

Demonstra ie. 

• Implica ia “⇐”. Dac |Q| ≤ |w| < 2*|Q|, atunci |w|≥|Q| i din lema de pompare rezult c w
    

se poate scrie ca: w = xyz, iar ∀i≥0, cuvintele wi = xyiz fac parte din limbaj. Rezult c  

L(M) este infinit.


• Implica ia “ ”. Dac L(M) este un limbaj infinit, atunci el con ine cuvinte cu o lungime
   

cel pu in egal cu |Q| i fie w∈L(M) cel mai mic cuvânt pentru care: |w| ≥ |Q|.
  

Dac |w| ≥ 2*|Q|, atunci lema de pompare genereaz o contradic ie, deoarece w se poate
  

scrie ca:
w = xyz, unde |xy|≤|Q|, |y|≥1 i xz∈L(M) 

iar |xz|≥|Q| i deci w nu este cel mai mic cuvânt cu aceast proprietate.
 
Rezult deci c |w| < 2*|Q|.
 

Utilizând lema anterioar , rezult c este suficient s se testeze doar cuvintele w∈Σ*, cu
   

proprietatea c : |Q| ≤ |w| < 2*|Q|, iar mul imea acestora este evident finit . Dac se g se te cel
     

pu in un asemenea cuvânt w∈L(M), atunci conform lemei precedente, limbajul L(M) este


infinit.

Algoritmul 4.6. Problema limbajului finit.


Intrare.
- Automatul determinist M = (Q, Σ, δ, q0, F)
Metod .
function LimbajFinit(Q, Σ, δ, q0, F)
for i←1 to 2*|Q|-1 do
k ← 0
do
w ← GenereazaCuvant(i, Σ, k)
if Apartine(δ, q0, F, w) then
return false
endif
while k≠0
endfor
return true
end

Func ia GenereazaCuvant(i, Σ, k) genereaza iterativ toate cuvintele de lungime i formate cu




simboluri din alfabetul Σ, deci genereaz aranjamentele A|Σ|i. Parametrul k este utilizat pentru 

a putea determina succesorul lexicografic al cuvântului curent w.

Se observ c algoritmul anterior este finit i bine definit. Rezult deci teorema:
   

Teorema 4.13. Pentru familia limbajelor regulate, problema limbajului finit este decidabil . 

Exist îns i al i algoritmi, mai performan i decât cel precedent, care rezolv aceast
      

problema . De exemplu, utilizând graful de tranzi ie al automatului M, se poate proceda


 

astfel:
a) se determin mul imea ciclurilor din graf i mul imea C a nodurilor din aceste
   

cicluri;
b) se determin mul imea tuturor drumurilor aciclice între starea q 0 i st rile finale
   

din mul imea F, precum i mul imea P a nodurilor din aceste drumuri;
  

c) dac C∩P≠Φ, atunci graful con ine cel pu in un ciclu pe un drum ce une te starea
   

ini ial cu o stare final i deci L(M) este infinit, altfel el este finit.
   

4.4.4 Problema echivalen ei limbajelor

Fie M1 = (Q1, Σ, δ1, q 01, F1) i M2 = (Q2, Σ, δ2, q02, F2) automatele finite deterministe care


recunosc limbajele L1 i L2. Se observ faptul c pentru ca limbajele L1 i L2 s fie


    
echivalente, adic L(M1) = L(M2), este necesar ca ambele automate s aib în primul rând
  

acela i alfabet de intrare.




Pentru a putea determina dac L(M1) = L(M2), se poate utiliza algoritmul de minimizare 

descris în paragraful 4.2. Fie:


Ma = (Qa, Σ, δa, q0a, Fa)
Mb = (Qb, Σ, δb, q0b, Fb)
automatele rezultate dup minimizarea automatelor M1 i M2. Dac L(M1) = L(M2), atunci   

conform teoremei 4.1, deoarece automatul minimal este unic, trebuie ca Ma i Mb s fie  

identice pân la un izomorfism. 

Rezult de aici c , dac se poate descrie un algoritm care s determine dac dou automate
     

finite deterministe sunt izomorfe, problema echivalen ei limbajelor este decidabil .  

Un asemenea algoritm se poate descrie plecând de la defini ia automatelor izomorfe. Pentru 

aceasta, va trebui determinat o func ie bijectiv , h: Qa ↔ Qb, pentru care:   

a) q 0b = h(q0a)
b) q∈Qa ⇔ h(q)∈Qb
c) q∈Fa ⇔ h(q)∈Fb
d) ∀a∈Σ, δa(q, a)=p ⇔ δb(h(q), a)=h(p)
Rela ia d) specific faptul c cele dou automate trebuie s aib aceea i structur intern .
        

Deoarece mul imile Qa i Qb sunt finite, algoritmul va determina o asemenea bijec ie


  

specificat prin mul imea perechilor de forma:


 

P = { q, p ∈Qa×Qb | p=h(q)} 

Perechile vor fi determinate recursiv, plecând de la perechea ini ial :  

q0a, q0b 

i generând, cât timp este posibil, noi perechi în modul urm tor: 

• dac o pereche q, p , p=h(q), a fost deja determinat , atunci ∀a∈Σ, se vor ad uga la
   

mul imea P i perechile urm toare:


  

δa(q, a), δb(p, a) 

unde δb(p, a) = h(δa(q, a))

Dup determinarea mul imii P, se pot determina i perechile urm toare:


   

Q = h(Qa) = {p | q, p ∈P} 

F = h(Fa) = {p | q, p ∈P ∧ q∈Fa} 

Rezult c automatele Ma i Mb sunt izomorfe dac :


    

(Qb = Q) ∧ (Fb = F)

Observa ie. S-a presupus c ambele automate au acela i alfabet de intrare, precum i c ele
    

nu au st ri inaccesibile (un automat minimizat nu mai con in st ri inaccesibile).


  

Algoritmul 4.7. Automate izomorfe.


Algoritmul utilizeaz o stiv local , ale c rei elemente sunt perechi de forma q,p
   

Intrare.
- Automatele finite deterministe:
Ma = (Qa, Σ, δa, q0a, Fa)
Ma = (Qb, Σ, δb, q0b, Fb)
Metod .
function AutomateIzomorfe(Ma, Mb)
P ← { q0a, q0b } 

Q ← F ← Φ
initq()
push( q0a, q0b ) 

while ¬ empty() do
q, p ← pop() 

Q ← Q ∪ {p}
if q∈Fa then
Q ← Q ∪ {p}
endif
for ∀a∈Σ do
if δa(q,a), δb(p,a) ∉ P then 

P ← P ∪ { δa(q,a), δb(p,a) } 

push( δa(q,a), δb(p,a) ) 

endif
endfor
endwhile
if (Qb = Q) ∧ (Fb = F) then
return true
else
return false
endif
end

Se observ faptul c algoritmul anterior este finit, deoarece mul imile Qa i Qb sunt finite i
    

deci exist un num r finit de perechi de forma q, p , p=h(q). De asemenea, mul imea P
   

determinat în cadrul algoritmului, verific rela iile a) i d) ale defini iei func iei h. În plus,
     

ultima instruc iune if a algoritmului verific i rela iile b) i c) ale lui h i deci algoritmul
     

este bine definit.

În concluzie, pentru a determina dac dou limbaje sunt echivalente, se poate utiliza
 

urm torul algoritm:




Algoritmul 4.8. Echivalen a limbajelor.




Intrare.
- Automatele finite deterministe:
M1 = (Q1, Σ, δ1, q01, F1)
M2 = (Q2, Σ, δ2, q02, F2)
Metod .
function LimbajeEchivalente(Ma, Mb)
Ma ← Minimizare(M1)
Mb ← Minimizare(M2)
if AutomateIzomorfe(Ma, Mb) then
return true
else
return false
endif
end

S-a notat cu Minimizare func ia care determin automatul cu num r minim de st ri,
   

determinat de rela ia (4.1) i algoritmul 4.3.


 

Rezult urm toarea teorem :


  

Teorema 4.14. Pentru familia limbajelor regulate, problema echivalen ei limbajelor este


decidabil .
AUTOMATE FINITE
(continuare)
Marius Brezovan
AUTOMATE FINITE

• Automate finite determinste


• Automate finite nedeterminste
• Echivalenta claselor de automatelor finite
• Automate finite si multimi regulate
ECHIVALENTA CLASELOR DE
AUTOMATELOR FINITE
• Două clase de automate finite ℑ1 şi ℑ2 sunt echivalente ⇔
clasele ℓ1 şi ℓ2 ale limbajelor acceptate de acestea sunt
echivalente
• Toate clasele de automate finite sunt echivalente:
o ℓ𝐴𝐹𝑁 = ℓ𝐴𝐹𝐷
o ℓ𝐴𝐹𝑁 = ℓ𝜀−𝐴𝐹𝑁
Echivalenţa ℓ𝐴𝐹𝑁 = ℓ𝜀−𝐴𝐹𝑁
• Incluziunea ℓ𝐴𝐹𝑁 ⊆ ℓ𝜀−𝐴𝐹𝑁 rezultă imediat definiţiile celor
două tipuri de automate şi a funcţiilor de tranziţie extinse
asociate
• Lema următoare se refera la cealalta incluziune ℓ𝜀−𝐴𝐹𝑁 ⊆ ℓ𝐴𝐹𝑁
• Lema 1. Pentru un automat finit nedeterminst cu 𝜀-tranziţii 𝑀,
există un automat finit nedeterminst fără 𝜀 -tranziţii 𝑀1 , astfel
încât 𝐿(𝑀) = 𝐿(𝑀1 ).
• Demonstratia este constructiva:
Echivalenţa ℓ𝐴𝐹𝑁 = ℓ𝜀−𝐴𝐹𝑁
• Fie automatul finit nedeterminst cu 𝜀-tranzitii:
𝑀 = (𝑄, Σ, 𝛿, 𝑞0 , 𝐹)
• Automatul finit nedeterminst fara 𝜀-tranzitii va fi urmatorul:
𝑀1 = (𝑄, Σ, 𝛿1 , 𝑞0 , 𝐹1 )
unde:
o 𝛿1 𝑞, 𝑎 = 𝛿 ∗ 𝑞, 𝑎 , ∀𝑞 ∈ 𝑄, ∀𝑎 ∈ Σ
o 𝐹1 = 𝐹 ∪ {𝑞0 }, daca 𝛿 ∗ 𝑞0 , 𝜀 ∩ 𝐹 ≠ ∅
o 𝐹1 = 𝐹, in celelalte cazuri
Echivalenţa ℓ𝐴𝐹𝑁 = ℓ𝜀−𝐴𝐹𝑁
• Exemplul 1. Să considerăm automatul M din cursul trecut:
0

1 𝜀 𝑞2
𝑞0 𝑞1

0 𝜀

1
• Deoarece 𝛿 ∗ 𝑞0 , 𝜀 = {𝑞0 } si {𝑞0 } ∩ 𝐹 = ∅, rezulta ca 𝐹1 = 𝐹
• Pentru functia 𝛿1 : 𝛿1 𝑞, 𝑎 = 𝛿 ∗ 𝑞, 𝑎 = ∪𝑝∈𝛿∗ 𝑞,𝜀 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒(𝛿 𝑝, 𝑎 )
𝛿1 𝑞, 𝑎 = 𝛿 ∗ 𝑞, 𝑎 = ∪𝑝∈𝜀−𝐶𝑙𝑜𝑠𝑢𝑟𝑒(𝑞) 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒(𝛿 𝑝, 𝑎 )
Echivalenţa ℓ𝐴𝐹𝑁 = ℓ𝜀−𝐴𝐹𝑁
• 𝛿1 𝑞0 , 0 = 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝛿 𝑞0 , 0 =
0
= 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝑞2 = {𝑞1 , 𝑞2 }

1 𝜀 𝑞2
𝑞0 𝑞1

0 𝜀

• 𝛿1 𝑞0 , 1 = 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝛿 𝑞0 , 1 = {𝑞1 , 𝑞2 } 1
• 𝛿1 𝑞1 , 0 = 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝛿 𝑞1 , 0 ∪ 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝛿 𝑞2 , 0 = {𝑞0 }
• 𝛿1 𝑞1 , 1 = 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝛿 𝑞1 , 1 ∪ 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝛿 𝑞2 , 1 = {𝑞0 }
• 𝛿1 𝑞2 , 0 = 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝛿 𝑞1 , 0 ∪ 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝛿 𝑞2 , 0 = {𝑞0 }
• 𝛿1 𝑞2 , 1 = 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝛿 𝑞1 , 1 ∪ 𝜀 − 𝐶𝑙𝑜𝑠𝑢𝑟𝑒 𝛿 𝑞2 , 1 = {𝑞0 }
Echivalenţa ℓ𝐴𝐹𝑁 = ℓ𝜀−𝐴𝐹𝑁
• Rezulta urmatorul automat fara 𝜀-tranzitii 𝑀1 :

0,1

0,1 𝑞1 𝑞2
𝑞0

0,1

0,1
Echivalenţa ℓ𝐴𝐹𝑁 = ℓ𝐴𝐹𝐷
• Incluziunea ℓ𝐴𝐹𝐷 ⊆ ℓ𝐴𝐹𝑁 rezultă imediat din definiţiile celor
două tipuri de automate
o Un automat determinist este un caz particular al unui automat nedeterminist,
pentru care fiecare stare are o unica stare urmatoare, pentru un anumit simbol
de intrare
• Demonstrarea incluziunii ℓ𝐴𝐹𝑁 ⊆ ℓ𝐴𝐹𝐷 este constructivă (ca şi
în cazul precedent)
o Plecând de la un automat nedeterminst, trebuie construit un automat determinst
echivalent cu acesta, care acceptă acelaşi limbaj
• Principalul dezavantaj constă în faptul că automatul
determinist are în general un număr mult mai mare de stări
decât automatul nedeterminst iniţial
Echivalenţa ℓ𝐴𝐹𝑁 = ℓ𝐴𝐹𝐷
• Notăm cu:
𝑀𝑁 = (𝑄𝑁 , Σ, 𝛿𝑁 , 𝑞0𝑁 , 𝐹𝑁 )
automatul finit nedeterminist de la care se pleacă, şi cu:
𝑀𝐷 = (𝑄𝐷 , Σ, 𝛿𝐷 , 𝑞0𝐷 , 𝐹𝐷 )
automatul determinist echivalent cu 𝑀𝑁 , care recunoaşte acelaşi
limbaj
• Ideea construcţiei:
o Pentru fiecare submulţime de stări din 𝑄𝑁 , se poate ataşa o stare în mulţimea 𝑄𝐷
• Observație: multe dintre stările unui asemenea automat sunt
redundante şi nu pot fi atinse niciodată
Echivalenţa ℓ𝐴𝐹𝑁 = ℓ𝐴𝐹𝐷
• Din acest motiv, doar acele submulţimi 𝑉 ⊆ 𝑄𝑁 care pot fi returnate de
funcţia de tranziţii extinsă 𝛿𝑁∗ , pentru diferitele cuvinte 𝑤 ∈ 𝐿(𝑀𝑁 ), vor
avea o stare echivalentă în 𝑀𝐷
• Pentru o submulţime 𝑉 ⊆ 𝑄𝑁 , se va adăuga o stare în 𝑄𝐷 ⇔ ∃ 𝑤 ∈ Σ ∗ ,
aşa încât 𝛿𝑁∗ (𝑞0𝑁 , 𝑤) = 𝑉
• Rezulta urmatorul automat determinist:
o 𝑄𝐷 = 𝑉 ⊆ 𝑄𝑁 ∃𝑤 ∈ Σ ∗ , 𝑎𝑠𝑎 𝑖𝑛𝑐𝑎𝑡 𝛿𝑁∗ (𝑞0𝑁 , 𝑤) = 𝑉}
o 𝑞0𝐷 = {𝑞0𝑁 }
o 𝐹𝐷 = 𝑉 ⊆ 𝑄𝑁 𝑉 ∩ 𝐹𝑁 ≠ ∅}
o 𝛿𝐷 : 𝑄𝐷 × Σ → 𝑄𝐷 , definita astfel:
∀𝑎 ∈ Σ, ∀𝑉 ⊆ 𝑄𝑁 , 𝑎𝑠𝑎 𝑖𝑛𝑐𝑎𝑡 𝑉 ∈ 𝑄𝐷 ,
𝛿𝐷 𝑉, 𝑎 = ∪𝑞∈𝑉 𝛿𝑁 (𝑞, 𝑎)
Echivalenţa ℓ𝐴𝐹𝑁 = ℓ𝐴𝐹𝐷
procedure SubsetConstruction(𝑄𝑁 , Σ, 𝛿𝑁 , 𝑞0𝑁 , 𝐹𝑁 ; 𝑄𝐷 , 𝛿𝐷 , 𝑞0𝐷 , 𝐹𝐷 )
initq(st); 𝑞0𝐷 ← {𝑞0𝑁 }; 𝑄𝐷 ← {𝑞0𝐷 }; 𝐹𝐷 ← ∅
push(st, {𝑞0𝑁 })
while 𝑠𝑡 ≠ ∅ :
R ← pop(st)
for ∀𝑎 ∈ Σ :
𝑉 ← ∪𝑞∈𝑅 𝛿𝑁 (𝑞, 𝑎)
if 𝑉 ∉ 𝑄𝐷 :
push(st, V)
𝑄𝐷 ← 𝑄𝐷 ∪ {𝑉}
if 𝑉 ∩ 𝐹𝑁 ≠ ∅ :
𝐹𝐷 ← 𝐹𝐷 ∪ {𝑉}
𝛿𝐷 𝑅, 𝑎 ← 𝑉
Echivalenţa ℓ𝐴𝐹𝑁 = ℓ𝐴𝐹𝐷
o Exemplul 2. Se considera automatul nedeterminist 𝑀𝑁 :
o Aplicând algoritmul anterior, rezultă automatul determinist 𝑀𝐷 :
• 𝑄𝐷 = {∅, {𝑞0 }, {𝑞2 }, {𝑞0 , 𝑞1 }, {𝑞1 , 𝑞2 }} 0
• 𝑞0𝐷 = {𝑞0 } 𝑞1
• 𝐹𝐷 = {{𝑞2 }, {𝑞1 , 𝑞2 }} 1
𝑞2 𝑞0
1 0
𝟎 𝟏 0 1 0 0
∅ ∅ ∅ 1 𝑞2
{𝒒𝟎 } {𝒒𝟏 , 𝒒𝟐 } ∅ 𝑞01 𝑞∅ 1
𝑞12
{𝒒𝟐 } ∅ {𝒒𝟎 , 𝒒𝟏 } 0
0,1
{𝒒𝟎 , 𝒒𝟏 } {𝒒𝟏 , 𝒒𝟐 } {𝒒𝟎 }
0 1 1
{𝒒𝟏 , 𝒒𝟐 } {𝒒𝟐 } {𝒒𝟎 , 𝒒𝟏 }
𝑞0
AUTOMATE FINITE SI MULTIMI
REGULATE
• Notam cu ℓ𝐴𝐹 mulţimea limbajelor recunoscute de automatele
finite
• Se poate demonstra faptul că automatele finite şi mulţimile
regulate sunt echivalente: ℓ𝐴𝐹 Σ = 𝜇(Σ)
• Înr-un paragraf anterior s-a demonstrat echivalenţa între
mulţimile regulate şi limbajele liniare la dreapta: ℓ3 Σ = 𝜇(Σ)
• Rezulta astfel că toate cele trei formalisme sunt echivalente:
ℓ3 Σ = 𝜇 Σ = ℓ𝐴𝐹 Σ , ∀Σ ≠ ∅
Incluziunea 𝜇 Σ ⊆ ℓ𝐴𝐹 Σ
• Pentru o mulţime regulată, se poate construi un automat finit
care recunoaşte acelaşi limbaj
• Dar orice mulţime regulată se poate descrie printr-o expresie
regulată
o ⇒ construcţia automatului finit echivalent se poate face plecând de la
o expresie regulată
• Lema 3. Fie Σ un alfabet nevid, 𝑅 o expresie regulată şi 𝐿 𝑅 ⊆
Σ∗ mulţimea regulată asociată lui 𝑅. Atunci există un automat
finit 𝑀 aşa încât 𝐿(𝑅) = 𝐿(𝑀).
Incluziunea 𝜇 Σ ⊆ ℓ𝐴𝐹 Σ
• Demonstraţia prin inducţie după numărul 𝑘 de operatori ai expresiei 𝑅:
+,⋅ şi ∗
• Observatie: Se va considera doar cazul în care automatul finit generat
are o singură stare finală
• Se poate demonstra ca pentru orice AF cu mai multe stari finale, exista
un 𝜀-AFN care recunoaste acelasi limbaj

𝑀 𝑀1 𝑞𝑓1 𝜀
𝑞𝑓1

𝑞0 𝑞0 𝑞𝑓

𝑞𝑓𝑘 𝑞𝑓𝑘 𝜀
Incluziunea 𝜇 Σ ⊆ ℓ𝐴𝐹 Σ
• Cazul k=0: Expresia 𝑅 poate fi ∅, 𝜀 sau 𝑎, unde 𝑎 ∈ Σ
o 𝑅 = ∅, 𝐿(𝑀) = ∅ 𝑞0 𝑞𝑓

𝜀
o 𝑅 = 𝜀, 𝐿(𝑀) = {𝜀} 𝑞0 𝑞𝑓

𝑎
o 𝑅 = 𝑎, 𝐿(𝑀) = {𝑎} 𝑞0 𝑞𝑓

• Presupunem că afirmaţia este adevărată pentru orice expresie


𝑆 care are 𝑙 < 𝑘 operatori
o O expresie regulată 𝑅 ce conţine 𝑘 operatori poate fi de forma:
𝑅 = 𝑆1 + 𝑆2 , 𝑅 = 𝑆1 ⋅ 𝑆2 , 𝑅 = 𝑆1∗
unde 𝑆1 si 𝑆2 au cel mult 𝑘 − 1 operatori
Incluziunea 𝜇 Σ ⊆ ℓ𝐴𝐹 Σ
• Pentru 𝑆1 şi 𝑆2 există două automate finite 𝑀1 şi 𝑀2 cu o
singură stare finală, pentru care: 𝐿(𝑆1 ) = 𝐿(𝑀1 ), 𝐿(𝑆2 ) = 𝐿(𝑀2 )
𝑀1 = 𝑄1 , Σ, 𝑞01 , 𝛿1 , 𝑞𝑓1 , 𝑀2 = (𝑄2 , Σ, 𝑞02 , 𝛿2 , {𝑞𝑓2 })
• Pentru 𝑅 = 𝑆1 ⋅ 𝑆2 , se formeaza automatul
M = 𝑄1 ∪ 𝑄2 , Σ, 𝑞01 , 𝛿, 𝑞𝑓2
pentru care: 𝐿 𝑀 = 𝐿 𝑀1 ⋅ 𝐿(𝑀2 )
𝑀1 𝑀2

𝜀
𝑞01 𝑞𝑓1 𝑞02 𝑞𝑓2
Incluziunea 𝜇 Σ ⊆ ℓ𝐴𝐹 Σ
• Pentru 𝑅 = 𝑆1 + 𝑆2 , se formeaza automatul
M = 𝑄1 ∪ 𝑄2 ∪ {𝑞0 , 𝑞𝑓 }, Σ, 𝑞0 , 𝛿, 𝑞𝑓
pentru care: 𝐿 𝑀 = 𝐿 𝑀1 ∪ 𝐿(𝑀2 )
𝑀1

𝑞01 𝑞𝑓1
𝜀 𝜀

𝑞0 𝑀2 𝑞𝑓

𝜀 𝜀
𝑞01 𝑞𝑓1
Incluziunea 𝜇 Σ ⊆ ℓ𝐴𝐹 Σ
• Pentru 𝑅 = 𝑆1∗ , se formeaza automatul
M = 𝑄1 ∪ 𝑄2 ∪ {𝑞0 , 𝑞𝑓 }, Σ, 𝑞0 , 𝛿, 𝑞𝑓

pentru care: 𝐿 𝑀 = 𝐿 𝑀1
𝜀

𝑀1

𝜀 𝜀
𝑞0 𝑞01 𝑞𝑓1 𝑞𝑓

𝜀
Incluziunea 𝜇 Σ ⊆ ℓ𝐴𝐹 Σ
• Exemplul 3. Construirea unui AFN pentru expresia regulata:
𝑅 = 𝑎 + 𝑏 ∗𝑎
• Se construieste in maniera bottom-up, incepand cu expresiile
simple
𝑎
• Pentru 𝑅1 = 𝑎, 𝑅2 = 𝑏: 2 3 4
𝑏
5

𝜀 𝑎
2 3 𝜀

• Pentru 𝑅3 = 𝑅1 + 𝑅2 : 1 6
𝑏
𝜀 4 4 𝜀
Incluziunea 𝜇 Σ ⊆ ℓ𝐴𝐹 Σ
• Pentru 𝑅4 = 𝑅1 + 𝑅2 ∗ : 𝑎
𝜀
𝜀 𝜀
2 3
𝜀 𝜀
0 1 6 7
𝜀
𝑏
4 4 𝜀

𝜀
• Pentru 𝑅4 = 𝑅1 + 𝑅2 ∗ 𝑅1 = 𝑎 + 𝑏 ∗ 𝑎
𝜀

𝜀 𝑎
2 3 𝜀
𝜀 𝜀 𝑎
0 1 6 7 8
𝑏
𝜀 4 4 𝜀

𝜀
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• În acest caz se pleacă de la un automat finit 𝑀 si va trebui
determină o expresie regulată 𝑅 aşa încât 𝐿(𝑅) = 𝐿(𝑀)
• Deoarece clasele automatelor finite sunt echivalente, se va
considera pentru simplitate clasa automatelor finite
deterministe
• Lema 4. Fie 𝑀 un automat finit determinist şi 𝐿 𝑀 ⊆ Σ∗
limbajul recunoscut de acesta. Atunci există o expresie
regulată 𝑅 aşa încât 𝐿(𝑀) = 𝐿(𝑅)
• Demonstratie:
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Demonstratie:
• Pentru determinarea mulţimii regulate 𝐿(𝑅), trebuie ca
limbajul recunoscut de 𝑀 să fie pus sub forma unei expresii
regulate
• Se va ataşa lui 𝑀 un sistem de ecuaţii cu expresii regulate.
𝑀 = 𝑄, Σ, 𝑞0 , 𝛿, 𝐹 , 𝑄 = {𝑞0 , 𝑞1 , … , 𝑞𝑛 }
• Pentru fiecare stare 𝑞𝑖 ∈ 𝑄, se ataşează:
o O nedeterminată 𝑅𝑖
o O ecuaţie 𝐸𝑖 cu expresii regulate, care descrie mulţimea cuvintelor
recunoscute de automat plecând din starea 𝑞𝑖
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Ecuaţia 𝐸𝑖 ataşată stării 𝑞𝑖 se poate scrie astfel:
𝑅𝑖 = 𝛼𝑖0 + 𝛼𝑖1 𝑅1 + ⋯ + 𝛼𝑖𝑛 𝑅𝑛 , 𝑖 = 0, 1, 2, … , 𝑛
unde:
o 𝛼𝑖0 = 𝜀 dacă 𝑞𝑖 ∈ 𝐹 şi 𝛼𝑖0 = ∅ dacă 𝑞𝑖 ∉ 𝐹
o 𝛼𝑖𝑗 reprezintă suma tuturor simbolurilor 𝑎 pentru care, din starea
curentă 𝑞𝑖 şi având simbolul curent 𝑎 pe banda de intrare, starea
următoare este 𝑞𝑗
• Sistemul definit de ecuaţiile 𝐸𝑖 este un sistem de ecuaţii cu expresii
regulate, care are un punct fix minimal unic
• Pentru starea iniţială 𝑞0 , soluţia minimală in 𝑅0 este o mulţime regulată
• Conform notatiei initiale, 𝐿 𝑅0 = 𝐿(𝑀) ⇒ 𝐿(𝑀) este multime regulata
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Exemplul 4. Fie automatul determinist: 𝑀 = ({𝑞0 , 𝑞1 , 𝑞2 }, {𝑎, 𝑏}, 𝛿, 𝑞0 , {𝑞1 }):
𝒂 𝒃
𝒒𝟎 𝑞0 𝑞1
𝒒𝟏 𝑞0 𝑞2
𝒒𝟐 𝑞0 𝑞1

• Sistemul asociat de ecuaţii cu mulţimi regulate este următorul:


𝑅0 = 𝑎𝑅0 + 𝑏𝑅1
𝑅1 = 𝑎𝑅0 + 𝑏𝑅2 + 𝜀
𝑅2 = 𝑎𝑅0 + 𝑏𝑅1
• Solutia sistemului in 𝑅0 , care este si expresia regulata a limbajului
∗ ∗ ∗
recunoscut de automat: 𝑅0 = 𝑎 𝑏 𝜀 + 𝑏 𝑎𝑎 𝑏 + 𝑏
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Modul de construire a sistemului de ecuatii cu expresii
regulate din Lema 4, precum si rezolvarea sistemului poate fi
neatragator
• O alternativa a Lemei 4 permite o construire iterativa a
expresiei regulate a limbajului recunoscut de un automat finit
• Pentru aceasta se poate defini o categorie speciala de automate
finite, numite automate finite generalizate (AFG)
• Un asemenea automat este asociat unui automat finit
determinist
• Tranzitiile intre starile acestor automate sunt expresii regulate
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Pentru un automat finit determinsit M, un automat finit
generalizat asociat lui M se noteaza cu 𝐴𝐹𝐺𝑀 si defineste
astfel:
𝑀 = 𝑄, Σ, 𝛿, 𝑞0 , 𝐹 ,
𝐴𝐹𝐺𝑀 = (𝑄 ∪ {𝑞𝑓 }, Σ, 𝛿1 , 𝑞0 , {𝑞𝑓 }), unde:
o 𝑞𝑓 ∉ 𝑄, este noua stare finala a automatului
o 𝛿1 : 𝑄 ∪ {𝑞𝑓 } × 𝑄 ∪ {𝑞𝑓 } → 𝜇 Σ , este noua functie de tranzitie, pentru care:
• ∀𝑞 ∈ 𝐹, 𝛿1 𝑞, 𝑞𝑓 = 𝜀
• ∀𝑞 ∈ 𝑄, 𝛿1 𝑞𝑓 , 𝑞 = ∅, in mod uzual, aceste tranzitii nu se mai specifica
• 𝛿1 𝑞, 𝑝 = 𝛿 𝑞, 𝑝 , 𝑝 ≠ 𝑞𝑓
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Exemplu de construire a unui AFG. Fie automatul finit
determinist M. Automatul AFG(M) este prezentat mai jos
a a a a,b
b b b
𝑞0 𝑞1 𝑞2 𝑞3

a a a a+b
b b b
𝑞0 𝑞1 𝑞2 𝑞3

𝜀 𝜀
𝑞𝑓
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Se poate demonstra ca limbajul generat de un automat 𝐴𝐹𝐺𝑀
este acelasi ca si limbajul generat de automatul asociat 𝑀
• Lema 4.1. Fie un automat finit determinist 𝑀 si automatul finit
generalizat 𝐴𝐹𝐺𝑀 asociat lui 𝑀. Atunci 𝐿 𝑀 = 𝐿(𝐴𝐹𝐺𝑀 )
• Plecand de la un AFG, se poate descrie o procedura iterativa
de simplificare a acestuia, prin eliminarea pe rand a catei unei
stari, pana cand automatul redus va contine doar doua stari,
𝑞0 si 𝑞𝑓
• Ordinea de eliminare nu va afecta limbajul generat de
automatul final
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Pentru eliminarea unei stari 𝑞 dintr-un automat finit generalizat, 𝑀𝐺, se
efectueaza urmatoarele operatii:
o Se considera toate arcele de intrare 𝑞𝑖 → 𝑞 si arcele de iesire 𝑞 → 𝑞𝑗 ale starii 𝑞
o Se considera toate drumurile 𝑞𝑖 → 𝑞𝑗 care trec prin starea 𝑞
o Se genereaza expresiile regulate 𝑟𝑖𝑗 asociate drumurilor 𝑞𝑖 → 𝑞𝑗
o Se adauga un nou arc intre 𝑞𝑖 si 𝑞𝑗 cu eticheta 𝑟𝑖𝑗
o Daca intre 𝑞𝑖 si 𝑞𝑗 exista deja un arc cu eticheta 𝑟𝑘 , atunci noua expresie va fi
𝑟𝑖𝑗 + 𝑟𝑘
o La sfarsit se elimina starea 𝑞 si arcele asociate acestuia
• Se poate demonstra ca noul AFG, 𝑀𝐺𝑞 , rezultat din 𝑀𝐺 prin eliminarea
lui 𝑞 folosind procedura anterioara genereaza acelasi limbaj (Lema 4.2):
𝐿 𝑀𝐺 = 𝐿(𝑀𝐺𝑞 )
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Folosind Lema 4.1 si 4.2, rezulta ca dupa eliminarea tuturor
starilor, in afara de 𝑞0 si 𝑞𝑓 , automatul 𝐴𝐹𝐺𝑀 si automatul 𝑀
asociat vor recunoaste acelasi limbaj
• Observatie: Deoarece pentru orice secventa de eliminare a
starilor, va rezulta o expresie diferita, rezulta ca toate
expresiile rezultate vor fi egale.
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Exemplul 5. Fie automatul AFG(M) din exemplul anterior.
a a a a+b
b 𝑞1 b 𝑞2 b 𝑞3
𝑞0
𝜀 𝜀
𝑞𝑓

• Vom elimina prima data starea 𝑞3


• Arcele de intrare in 𝑞3 : 𝑞2 → 𝑞3
• Arcele de iesire din 𝑞3 : 𝑞3 → 𝑞𝑓
• Un singur arc (drum) asociat lui 𝑞3 : 𝑞3 → 𝑞𝑓
• Se calculeaza expresia regulata pentru drumul𝑞3 → 𝑞𝑓
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
a a a a+b
b 𝑞1 b 𝑞2 b 𝑞3
𝑞0
𝜀 𝜀
𝑞𝑓

• Expresia regulata pentru drumul 𝑞3 → 𝑞𝑓 : 𝑟2𝑓 = 𝑏 𝑎 + 𝑏 ∗

• Se elimina starea 𝑞3 : a a a
b 𝑞1 b
𝑞0 𝑞2

𝜀 𝑏 𝑎+𝑏 ∗

𝑞𝑓
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Vom elimina starea 𝑞2 a a a
• Arcul de intrare in 𝑞2 : 𝑞1 → 𝑞2 b 𝑞1 b
𝑞2
𝑞0
• Arcul de iesire din 𝑞2 : 𝑞2 → 𝑞𝑓
𝜀 𝑏 𝑎+𝑏 ∗
• Un singur arc: 𝑞1 → 𝑞𝑓 ⇒ 𝑟1𝑓 = 𝑏𝑎∗ 𝑏 𝑎 + 𝑏 ∗
𝑞𝑓
• Se adauga si arcul initial ⇒ 𝑟1𝑓 = 𝜀 + 𝑏𝑎∗ 𝑏 𝑎 + 𝑏 ∗

• Rezulta automatul: a a
b 𝑞1
𝑞0
𝜀 + 𝑏𝑎∗ 𝑏 𝑎 + 𝑏 ∗

𝑞𝑓
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
a a
• Vom elimina starea 𝑞1
b 𝑞1
• Exista un singur arc: 𝑞0 → 𝑞𝑓 𝑞0
𝜀 + 𝑏𝑎∗ 𝑏 𝑎 + 𝑏 ∗
• Expresia pentru arcul 𝑞0 → 𝑞𝑓 : 𝑟0𝑓 = 𝑏𝑎∗ 𝑏 𝑎 + 𝑏 ∗

• Se adauga si arcul initial ⇒ 𝑟1𝑓 = 𝑏𝑎∗ (𝜀 + 𝑏𝑎∗ 𝑏 𝑎 + 𝑏 ∗ ) 𝑞𝑓


• Rezulta automatul: a

• Expresia regulata dintre 𝑞0 si 𝑞𝑓 : 𝑞0


𝑏𝑎∗ (𝜀 + 𝑏𝑎∗ 𝑏 𝑎 + 𝑏 ∗ )
𝑟0𝑓 = 𝑎∗ 𝑏𝑎∗ (𝜀 + 𝑏𝑎∗ 𝑎 + 𝑏 ∗ )
• Conform lemelor anterioare, limbajul recunoscut de 𝑀: 𝑞𝑓
𝐿(𝑀) = 𝐿(𝑎∗ 𝑏𝑎∗ 𝜀 + 𝑏𝑎∗ 𝑎 + 𝑏 ∗ )
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Exemplul 6. Pentru automatul din exemplul 4, se creaza
automatul 𝐴𝐺𝐹_𝑀: b a 𝑞1
a
𝑞0
b b

b 𝜀 𝑞2
a 𝑞1 𝑞𝑓 a
a
𝑞0
b b

a 𝑞2
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Se elimina starea 𝑞2
• Exista doua arce (drumuri) asociate lui 𝑞2 : 𝑞1 → 𝑞0 si 𝑞1 → 𝑞1
• 𝑞1 → 𝑞0 : 𝑟10 = 𝑏 𝑏𝑏 ∗ 𝑎
• 𝑞1 → 𝑞1 : 𝑟11 = 𝑏𝑏 b 𝜀
a 𝑞1 𝑞𝑓
• La 𝑞1 → 𝑞0 se adauga si arcul initial a
𝑞0
• Automatul redus: b b
bb

a 𝑞2
b 𝜀
a 𝑞1 𝑞𝑓

𝑞0
𝑎 + 𝑏 𝑏𝑏 ∗ 𝑎
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Se elimina starea 𝑞1
• Exista doua arce (drumuri) asociate lui 𝑞1 : 𝑞0 → 𝑞𝑓 si 𝑞0 → 𝑞0
∗ bb
∗ ∗
• 𝑞0 → 𝑞𝑓 : 𝑟0𝑓 = 𝑏 𝑎 + 𝑏 𝑏𝑏 𝑎 𝑏 𝑏𝑏
• 𝑞0 → 𝑞0 : 𝑟00 = 𝑏 𝑏𝑏 ∗ (𝑎 + 𝑏 𝑏𝑏 ∗ 𝑎) a b
𝑞1
𝜀
𝑞𝑓
• Automatul redus:
𝑎 + 𝑏 𝑏𝑏 ∗ (𝑎 + 𝑏 𝑏𝑏 ∗ 𝑎) 𝑞0

𝑏 𝑎 + 𝑏 𝑏𝑏 ∗ 𝑎 𝑏 𝑏𝑏 ∗ 𝑎 + 𝑏 𝑏𝑏 ∗ 𝑎
𝑞0 𝑞𝑓

• Limbajul recunoscut de automat:


∗ ∗𝑎 ∗ ∗𝑎 ∗ ∗
𝐿 𝑀 =𝐿 𝑎 + 𝑏 𝑏𝑏 𝑎 + 𝑏 𝑏𝑏 𝑏 𝑎 + 𝑏 𝑏𝑏 𝑏 𝑏𝑏
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Observatie. In ultimul exemplu, limbajul 𝐿(𝑀) este:
∗ ∗ ∗ ∗ ∗ ∗
𝐿 𝑀 =𝐿 𝑎 + 𝑏 𝑏𝑏 𝑎 + 𝑏 𝑏𝑏 𝑎 𝑏 𝑎 + 𝑏 𝑏𝑏 𝑎 𝑏 𝑏𝑏
• In exemplul 4, solutia sistemului de ecuatii cu expresii regulate este:

𝐿(𝑅0 ) = 𝐿(𝑀) = 𝐿(𝑎∗ 𝑏 𝜀+𝑏 𝑎𝑎∗ 𝑏
+𝑏 )
• Pentru ca limbajul recunoscut de un automat finit este unic, cele doua
expresii regulate sunt egale:
∗ ∗
R = 𝑎 + 𝑏 𝑏𝑏 𝑎 + 𝑏 𝑏𝑏 𝑎 𝑏 𝑎 + 𝑏 𝑏𝑏 𝑎 𝑏 𝑏𝑏 ∗ =
∗ ∗ ∗


= 𝑅0 = 𝑎∗ 𝑏𝜀+𝑏 𝑎𝑎∗ 𝑏
+𝑏
• Expresia regulata 𝑅0 este mai simpla, pentru ca reprezinta solutia
minimala a sistemului de ecuatii cu expresii regulate
Incluziunea ℓ𝐴𝐹 Σ ⊆ 𝜇(Σ)
• Tema 1. Determinati limbajul recunoscut de automatul din figura
urmatoare, folosind un automat finit generalizat.
Capitolul 4
PROPRIETĂŢI ALE AUTOMATELOR
FINITE ŞI ALE MULŢIMILOR REGULATE
❑ Câteva grupuri de proprietăţi:
• lema de pompare → se poate determina dacă un limbaj
este sau nu regulat;
• minimizarea automatelor finite - automate cu număr
minim de stări;
• proprietăţi de închidere ale mulţimilor regulate, faţă de
anumite operaţii;
• probleme de decidabilitate asupra limbajelor regulate.

© 2020 Marius Brezovan


A) LEMA DE POMPARE
❑ O importantă problemă de decidabilitate pentru
mulţimile regulate:
• dacă o mulţime de cuvinte este mulţime regulată
• dacă o mulţime de cuvinte nu este mulţime regulată
❑ Pentru prima problemă:
• se determină un automat finit M, pentru care L(M)=L
• se determină o expresie regulată R, pentru care L(R)=L
❑ Pentru a doua problemă (mai dificilă) → lema de
pompare

© 2020 Marius Brezovan


❑ Ideea lemei de pompare se referă la limitarea automatelor
finite privind lungimea cuvintelor acceptate.
❑ Fie:
• M = (Q, , , q0, F) un automat finit cu n stări, |Q|=n.
• un cuvânt wL(M) cu o lungime cel puţin n:
w = a1a2...ak, kn
❑ Pentru w există o secvenţă succesivă de k+1 stări care
conduce automatul într-o stare finală de acceptare:
q0, qa1, qa2, ..., qak, qakF
❑ Deoarece automatul are doar n<k+1 stări  în secvenţa
anterioară există cel puţin două stări identice:
i, j  {1, 2, …, k}, i<j, aşa încât qai = qaj
© 2020 Marius Brezovan
❑ În cazul în care există mai multe asemenea stări, se va
reţine starea asociată simbolului cu indicele cel mai mic.
❑ Aceste două stări vor împărţi cuvâtul w în trei subşiruri:
w = xyz
x = a1a2…ai, y = ai+1ai+2…aj, z = aj+1aj+2…ak
❑ Secvenţa de stări ce corespunde subşirului y formează o
buclă în graful de stări al automatului.

qai+1 aj

a1 a2 ai+1 ak
q0 qa1 qx qaj+1 qk
ai aj+1

© 2020 Marius Brezovan


❑ Dacă se elimină bucla din secvenţa de stări, secvenţa rămasă,
q0,qa1…qai,qai+1...qak, conduce automatul în starea finală qk
pentru cuvântul de intrare xz=a1a2…aiai+1…ak şi deci
xzL(M).

qai+1 aj

a1 a2 ai+1 ak
q0 qa1 qx qaj+1 qk
ai aj+1

❑ În mod asemănător, parcurgând de t ori bucla, secvenţa


respectivă duce conduce automatul în starea finală qk pentru
cuvântul xytz şi deci xytzL(M).
❑ Subşirurile x şi z pot fi eventual vide, dar y nu (el trebuie să
formeze bucla şi conţine cel puţin simbolul aj).

© 2020 Marius Brezovan


❑ Deoarece qx este prima stare care formează o buclă,
înseamnă că şirul xy=a1a2…aiai+1…aj are o lungime mai
mică decât m (în caz contrar s-ar putea relua
raţionamentul utilizând cuvântul a1…ai…aj în locul lui
a1…ai…aj…ak).
❑ În concluzie, dacă un automat finit M cu n stări acceptă
cuvinte w cu o lungime mai mare decât n, atunci M acceptă
toate cuvintele de forma z = xyiz, i0, pentru subşirurile x,y,z,
pentru care w = xyz, |xy|n şi |y|1.
Lema 1. Pentru orice limbaj regulat L, există o constantă m care
depinde de L, aşa încât wL, dacă |w|m, atunci există
cuvintele x, y, z astfel încât :
(1) w = xyz (3) |y|  1
(2) |xy|  m (4) i0, xyizL
© 2020 Marius Brezovan
Aplicaţii ale lemei de pompare
❑ Pentru a demonstra că un limbaj L nu este regulat, se va
demonstra că lema de pompare nu este adevărată :
• pentru orice constantă m, există un cuvânt wL de
lungime mai mare ca m, astfel încât pentru oricare
cuvinte x, y, z, pentru care w = xyz şi |xy|m, |y|1,
există un întreg i pentru care xyizL
❑ Demonstraţia parcurge următorii paşi:
• Se presupune că L este limbaj regulat
• Atunci trebuie să existe constanta m din enunţul lemei
(m trebuie privită ca un parametru al demonstraţiei)

© 2020 Marius Brezovan


• Se alege un cuvânt w despre care se ştie că face parte din
limbajul L (alegerea lui w depinde de constanta m)
• Conform lemei, cuvântul w poate fi despărţit în trei
subşiruri, x,y,z, astfel încât w=xyz (x, y şi z reprezintă tot
parametri în cadrul demonstraţiei)
• Se alege un întreg i, pentru care se poate demonstra că
xyizL, ceea ce reprezintă o contradicţie a presupunerii
iniţiale (constanta i poate depinde de m, x, y şi z).
• Rezultă că presupunerea iniţială este eronată şi L nu este
limbaj regulat.

© 2020 Marius Brezovan


Exemplu. Să se demonstreze că limbajul:
L = {anbn | n0}
nu este limbaj regulat.
Demonstraţie.
• Presupunem că L este limbaj regulat şi fie m constanta din lema
de pompare
• Fie un cuvânt wL de forma : w = ambm
• Din lema de pompare rezultă că există cuvintele x,y,zL aşa
încât : w = xyz, |xy|m, |y|1 şi xyizL, i0
• |xy|m  cuvintele x şi y vor conţine doar simbolul a
|y|1  y conţine cel puţin un simbol a
 există numerele j, k şi l astfel încât:
x = aj, y = ak, z = albm, j+k+l=m, k1

© 2020 Marius Brezovan


• Fixăm valoarea t = 0 şi vom determina xytz:
xy0z = xz = ajalbm,
unde: j + l = m – k < m
• Rezultă că:
ajalbm = aj+lbm < ambm
• În concluzie, pentru t=0, xytzL şi lema de pompare nu se
verifică, ceea ce este în contradicţie cu presupunerea făcută.
• Rezultă că L este un limbaj regulat.
#

© 2020 Marius Brezovan


B) MINIMIZAREA AUTOMATELOR FINITE

❑ O proprietate importantă a limbajelor regulate: pentru orice


limbaj regulat, există un automat finit determinist cu un
număr minim de stări, care este unic până la un izomorfism.
❑ Două automate finite deterministe sunt izomorfe, dacă au
aceeaşi structură (numele stărilor fiind redenumite în cele
două automate). Pentru aceasta se utilizează o relaţie de
echivalenţă notată cu iso.

© 2020 Marius Brezovan


Exemplu. Automatele următoare sunt izomorfe:
M1 = (Q1, , 1, q01, F1)
M2 = (Q2, , 2, q02, F2)
unde:
Q1 = {q0, q1, q2, q3, q4, q5, q6} Q2 = {q0, q1, q2, q3, q4, q5, q6}
F1 = {q3, q4, q5} F2 = {q0, q1, q2}
0 1 0 1
q0 q0 q3 q0 q0 q1
q1 q2 q1 q1 q2 q4
q2 q2 q3 q2 q6 q3
q3 q3 q3 q3 q3 q6
q4 q4 q6 q4 q5 q4
q5 q3 q0 q5 q5 q6
q6 q5 q1 q6 q6 q6

© 2020 Marius Brezovan


❑ Pentru a reduce numărul de stări ale unui automat finit
trebuie eliminate:
• stările inaccesibile: stările care nu pot fi atinse pentru
oricare cuvânt din limbaj
• stările inseparabile: stările care nu pot fi distinse de
către cuvintele limbajului

© 2020 Marius Brezovan


Eliminarea stărilor inaccesibile

❑ Fie M=(Q, , , q0, F) un automat finit determinist şi qQ.


• Starea q este accesibilă dacă w*, *(q0, w) = q
• Starea q este inaccesibilă dacă w*, *(q0, w)  q

❑ Stările inaccesibile se poate determina utilizând un


algoritm de parcurgere al grafului de tranziţie al
automatului:
• se marchează toate stările în care se poate ajunge
plecând din starea iniţială q0 (nodurile rămase
nemarcate reprezintă stările inaccesibile).

© 2020 Marius Brezovan


procedure AccesibleStates(Q,,,q0; Q)
Initq()
Q1  {q0}
Addq(q0)
while Empty() do
q  Delq()
Mark(q)
for a do
if  Marked((q,a)) then
Q1  Q  {(q,a)}
Addq((q,a))
endif
endfor
endwhile
end
© 2020 Marius Brezovan
Eliminarea stărilor inseparabile

❑ Fie M=(Q,,,q0,F) un automat finit determinist şi qi,qjQ


două stări distincte.
• Un cuvânt w* distinge stările qi şi qj  doar una dintre
stările *(qi,w) şi *(qj,w) este stare finală.
• Stările qi şi qj sunt:
- inseparabile  w*, w nu distinge pe qi de qj
- separabile  w*, aşa încât w distinge pe qi de qj
❑ Se notează cu Lq limbajul recunoscut de automatul M plecând
din starea q:
Lq = {w* | *(q, w)F}

© 2020 Marius Brezovan


❑ Fie qi şi qj două stări distincte. Atunci:
• qi şi qj sunt separabile  Lqi  Lqj
• qi şi qj sunt inseparabile  Lqi = Lqj
❑ Noţiunea de inseparabilitate defineşte o relaţie de echivalenţă,
numită relaţie de inseparabilitate şi notă cu .
❑ Fie qi, qjQ. Atunci qi  qj  qi şi qj sunt inseparabile.
Sau echivalent: qi  qj  Lqi = Lqj
❑ Observaţii:
• Fiecare clasă de echivalenţă indusă de relaţia  este o
mulţime de stări care nu se pot distinge şi se vor reprezenta
printr-o singură stare în automatul minimizat.
• Mulţimea claselor de echivalenţă ale relaţiei  reprezintă
numărul total de stări ale automatului redus.
© 2020 Marius Brezovan
❑ Clasele de echivalenţă ale relaţiei  sunt dificil de determinat
direct. Ele se determină în mod uzual printr-un şir de
aproximaţii succesive:
• se pleacă de la o partiţie iniţială a mulţimii Q şi se rafinează
apoi aceasta cât timp este posibil
• ultima partiţie reprezintă chiar clasele de echivalenţă ale
relaţiei de inseparabilitate
❑ Ideea de bază a acestei metode constă în estimarea lungimii
cuvintelor w care pot separa două stări qi şi qj.
❑ Utilizând lema de pompare, se observă că există o margine
superioară pentru această lungime, |Q|-1:
• automatul are doar |Q| stări, iar drumul parcurs de automat
asociat unui cuvânt maximal w trece prin |Q|-1 stări.

© 2020 Marius Brezovan


❑ Fie M=(Q, , , q0, F) un automat finit determinist şi
qi,qjQ două stări distincte. Stările qi şi qj sunt:
• k-inseparabile  w*, |w|k, w nu distinge qi de qj
• k-separabile  w*, |w|k, a. î. w distinge qi de qj
❑ Şi în acest caz, k-inseparabilitatea şi k-separabilitatea se
pot defini prin intermediul limbajelor. Mulţimea
cuvintelor de lungime cel mult k, recunoscute de automat
din starea q se notează cu Lkq:
Lkq = {w* | |w|k, *(q, w)F}
❑ Atunci, stările qi şi qj sunt:
• k-inseparabile  Lkqi = Lkqj
• k-separabile  Lkqi  Lkqj

© 2020 Marius Brezovan


❑ Definiţia noţiunii de k-inseparabilitate determină o relaţie
de echivalenţă notată cu k
• Fie qi,qjQ. Atunci:
qi k qj  qi şi qj sunt k-inseparabile
❑ Pentru k=0: qi 0 qj  (qiF  qjF)  (qiF  qjF)
❑ Relaţia 0 determină două clase de echivalenţă: F şi Q-F,
care reprezintă partiţia iniţială a mulţimii Q.
❑ Şirul de relaţii 0, 1, 2, … reprezintă o secvenţă de
rafinări succesive ale partiţiei iniţiale {F, Q-F}:
0  1  2  …
❑ k  k-1 înseamnă că partiţia determinată relaţia k este o
rafinare a partiţiei lui k-1

© 2020 Marius Brezovan


❑ Lema următoare oferă suportul pentru demonstrarea
incluziunii k  k-1.
Lema 2. Fie M=(Q, , , q0, F) un automat finit determinist,
qi,qjQ două stări distincte şi k un întreg, 1k|Q|-1. Atunci:
qi k qj  (qi k-1 qj)  (a, (qi, a) k-1 (qj, a))
Demonstraţie. Orice cuvânt w*, |w|k, poate fi descompus:
w = av, a, v*, |v|k-1
#
❑ Dar operaţia de rafinare a partiţiei unei mulţimi
A = {a1, …, an}
este majorată de către partiţia
P = {{a1}, …, {an}}
ceea ce înseamnă că şi secvenţa de rafinări 0, 1, 2, … are un
majorant.
© 2020 Marius Brezovan
❑ Clasele de echivalenţă ale relaţiei  reprezintă acest majorant.
0  1  2  …  
Următoarele două leme demonstrează acest lucru.
❑ Lema 3. Fie M=(Q, , , q0, F) un automat finit determinist şi
k mulţimea claselor de echivalenţă ale relaţiei de k-
inseparabilitate asociate lui M, k1 Atunci:
a) k  k-1
b) dacă k = k-1, atunci jk, avem j = k
Demonstraţie.
Fie [qi]k clasa de echivalenţă a lui qi în raport cu relaţia k. Atunci din
lema 2 rezultă:
1) Dacă a, (qi, a)[qi]k-1  [qi]k = [qi]k-1  k = k-1
2) Dacă a, qjQ a. î. (qi, a)[qj]k-1[qi]k-1  [qi]k[qi]k-1 
 k  k-1
Punctul b) afirmă faptul că şirul de rafinări este majorat.
© 2020 Marius Brezovan
Lema 4. Fie M=(Q, , , q0, F) un automat finit determinist.
Atunci există un un întreg k, 0k|Q|-1, pentru care  = k.
Demonstraţie.
• Din lema precedentă, fie k cel mai mic indice pentru care k = k+1.
• k|Q|-1, deoarece şirul 0, 1, … reprezintă o succesiune de rafinări
ale partiţiei: P0 = {F, Q-F} = 0, |P0|=2
• Fie qi şi qj două stări distincte. Din lema precedentă avem:
(qi,qjQ, tk, qi t qj  qi k qj) 
 (qi,qjQ, tk, Ltqi = Ltqj  Lkqi = Lkqj) 
 (qi,qjQ, Lqi = Lqj  Lkqi = Lkqj) 
 qqi,qjQ, i  qj  qi k qj) 
 ( = k)
#

© 2020 Marius Brezovan


Algoritmul 2. Determinarea claselor de echivalenţă
procedure EquivalenceClasses(Q,,,F; P)
P  {F, Q-F}
do
RP  
splited  false
for CP do
RP  RP  SplitClass(C, P, splited)
endfor
P  RP
while splited
end

• P reprezintă partiţia curentă, iar RP reprezintă rafinarea partiţiei P


• C reprezintă clasa de echivalenţă curentă din partiţia P
© 2020 Marius Brezovan
Algoritmul 3. Împărţirea unei clase de echivalenţă
function SplitClass(,C,P; splited)
L  
for qC do
w  
for a do
i  GetElemIndex((q,a), P)
w  wi
endfor
if (w,lq)L then
(w,lq)  (w,lq  {q})
else
L  L  (w,{q})
endif
endfor

© 2020 Marius Brezovan


SC  
for (w,lq)L do
SC  SC  {lq}
endfor
return SC
end

• C - Clasa de echivalenţă curentă


• P - Partiţia curentă asociată lui k
• w - un cuvânt format din indici ai unor clase de achivalenţă din
partiţia P
• L - o listă de elemente de forma (w, lq), unde lq reprezintă o
mulţime de stări din mulţimea Q.
• SC - rafinarea partiţiei P, asociată lui k+1

© 2020 Marius Brezovan


Exemplu. Se consideră următorul automat finit determinist:

1
0
0 1 0
q0 q1 q2 q3
0
1
1
0 1
1 1 0
q4 q5 q6 q7

1 0

© 2020 Marius Brezovan


• Partiţia iniţială: P1 = {{q0, q1, q3, q4, q5, q6, q7}, {q2}}
Pentru clasa C1 = {q0, q1, q3, q4, q5, q6, q7} avem:
q0 → 11 q5 → 21
q1 → 12 q6 → 11
q3 → 21 q7 → 12
q4 → 11
Rezultă următoarea partiţionare a lui C1:
{q0, q4, q6}, {q1, q7}, {q3, q5}
Pentru clasa C2 = {q2} avem:
q2 → 12
• Rezultă partiţia: P2 = {{q0, q4, q6}, {q1, q7}, {q3, q5}, {q2}}
Pentru clasa C1 = {q0, q4, q6 } avem:
q0 → 23 q6 → 11
q4 → 23
Rezultă următoarea partiţionare a lui C1:
{q0, q4}, {q6}
© 2020 Marius Brezovan
1
0
0 1 0
q0 q1 q2 q3
0
1
1
0 1
1 1 0
q4 q5 q6 q7

1 0

© 2020 Marius Brezovan


Pentru clasa C2 = {q1, q7} avem:
q1 → 14
q7 → 14
Clasa C2 rămâne neschimbată.
Pentru clasa C3 = {q3, q5} avem:
q3 → 41
q5 → 41
Clasa C3 rămâne neschimbată.
Pentru clasa C4 = {q2} avem:
q2 → 14
Clasa C4 rămâne neschimbată.
• Rezultă partiţia: P3 = {{q0, q4}, {q6} {q1, q7}, {q3, q5}, {q2}}
• La iteraţia următoare, partiţia P3 rămâne neschimbată şi algoritmul
se opreşte.

© 2020 Marius Brezovan


0 0 1
q35 q2
1 1

q04 1
0 0 0
q17 q6
1

© 2020 Marius Brezovan


❑ Automatul minimizat Mr va avea forma următoare :
(4.1) Mr = (Qr, , r, q0r, Fr)
- q0r = [q0], Fr = { [q] | qF }
- r([p], a) = [q]  (p, a) = q

0 0 1
q3 q2
1 5 1

q0 1
4 0 0 0
q1 q6
1 7

© 2020 Marius Brezovan


Tema 1. Să se demonstreze că următoul limbaj este regulat:
L = {w{a,b}* | #a(w) este divizibil cu 3, dar nu este divizibil cu 2}

© 2020 Marius Brezovan


PROPRIETĂŢI ALE
AUTOMATELOR FINITE ŞI ALE
MULŢIMILOR REGULATE
(continuare)
Marius Brezovan
PROPRIETĂŢI ALE AUTOMATELOR
FINITE ŞI ALE MULŢIMILOR REGULATE

• Lema de pompare
• Minimizarea automatelor finite
• Proprietatii de inchidere ale multimilor regulate
• Probleme de decidabilitate
PROPRIETATII DE INCHIDERE
• O familie de limbaje peste un alfabet Σ :
o Se noteaza in mod uzual cu ℜΣ ,
o Reprezinta o submulţime a tuturor limbajelor posibile peste Σ:
ℜΣ ⊆ ℘(℘ Σ ∗ )
• Fie Ψ un operator cu aritatea 𝑘, care se aplică asupra a 𝑘
limbaje dintr-o familie de limbaje ℜΣ
• Familia ℜΣ este inchisa in raport operatorul Ψ dacă şi numai
dacă:
∀𝐿1 , … , 𝐿𝑘 ∈ ℜΣ , Ψ 𝐿1 , … , 𝐿𝑘 ∈ ℜΣ
• In continuare vom considera familia multimilor regulate
Inchiderea fata de operatii booleene,
concatenare si inchidere Kleene
• Mulţimea operatorilor {∪,∩, −, ഥ } formează o algebră
booleană în raport cu mulţimea cuvintelor din Σ∗
• In plus, se considera si operatorii specifici pentru limbaje: {⋅,∗}
• Teorema 2. Familia limbajelor regulate este închisă faţă de
operaţiile de reuniune, concatenare şi închidere Kleene.
• Demonstraţie. Din definiţia mulţimilor regulate.
• Fie 𝐿1 , 𝐿2 doua limbaje regulate ⇒ Urmatoarele limbaje sunt
regulate:
𝐿1 ∪ 𝐿2 , 𝐿1 ⋅ 𝐿2 , 𝐿∗1
Inchiderea fata de operatii booleene,
concatenare si inchidere Kleene
• Teorema 3. Familia limbajelor regulate este închisă faţă de
operaţia de intersecţie.
• Demonstraţie.
o Fie 𝐿1 şi 𝐿2 limbaje regulate peste un alfabet Σ.
o Atunci există automatele finite:
𝑀1 = (𝑄1 , Σ, 𝛿1 , 𝑞01 , 𝐹1 )
𝑀2 = (𝑄2 , Σ, 𝛿2 , 𝑞02 , 𝐹2 )
asa incat 𝐿1 = 𝐿 𝑀1 , 𝐿2 = 𝐿(𝑀2 )
Inchiderea fata de operatii booleene,
concatenare si inchidere Kleene
• Se determina un automat finit determinist 𝑀, aşa încât 𝐿 𝑀 = 𝐿1 ∩ 𝐿2 .
• 𝑀 este AFD:
⇒ 𝐿(𝑀) este un limbaj regulat
⇒ 𝐿1 ∩ 𝐿2 este un limbaj regulat
• 𝑀 acceptă un cuvânt 𝑤 ⇔ 𝑀1 şi 𝑀2 acceptă pe 𝑤:
𝑀 = (𝑄1 × 𝑄2 , Σ, 𝛿, 𝑞0 , 𝐹1 × 𝐹2 )
𝑞0 = ⟨𝑞01 , 𝑞02 ⟩
𝛿 𝑞, 𝑝 , 𝑎 = 𝛿1 𝑞, 𝑎 , 𝛿2 𝑝, 𝑎 , ∀𝑎 ∈ Σ, ∀𝑞 ∈ 𝑄1 , ∀𝑝 ∈ 𝑄2
• Se poate demonstra ca 𝐿 𝑀 = 𝐿 𝑀1 ∩ 𝐿(𝑀2 )
Inchiderea fata de operatii booleene,
concatenare si inchidere Kleene
• Teorema 4. Familia limbajelor regulate este închisă faţă de
operaţia de complement.
• Demonstraţie.
• Complementul unui limbaj 𝐿 peste alfabetul Σ este: 𝑳ത = Σ ∗ − 𝐿
• Notam cu 𝑀 = (𝑄, Σ, 𝛿, 𝑞0 , 𝐹) automatul finit care recunoaste pe 𝐿
• Se determina un automat 𝑀1 care recunoaste limbajul 𝐿ത : 𝐿(𝑀1 ) = 𝐿ത
• 𝑀1 trebuie să recunoasacă toate cuvintele pe care 𝑀 nu le recunoaşte:
𝑤 ∈ 𝐿 𝑀1 ⇔ 𝑤 ∉ 𝐿(𝑀)
• Rezulta: 𝑀1 = (𝑄, Σ, 𝛿, 𝑞0 , 𝑄 − 𝐹)
Inchiderea fata de operatii booleene,
concatenare si inchidere Kleene
• Teorema 5. Familia limbajelor regulate este închisă faţă de
operaţia de diferenţă.
• Demonstraţie. Similara cu cea din Teorema 3.
• Fie 𝐿1 şi 𝐿2 două limbaje regulate şi 𝑀1 şi 𝑀2 automatele finite care
recunosc limbajele 𝐿1 şi 𝐿2 :
𝑀1 = (𝑄1 , Σ, 𝛿1 , 𝑞01 , 𝐹1 ), 𝑀2 = (𝑄2 , Σ, 𝛿2 , 𝑞02 , 𝐹2 )
• Trebuie construit un automat 𝑀 aşa încât 𝐿(𝑀) = 𝐿1 − 𝐿2
𝑀 = (𝑄1 × 𝑄2 , Σ, 𝛿, 𝑞0 , 𝐹)
𝑞0 = ⟨𝑞01 , 𝑞02 ⟩, 𝐹 = 𝐹1 × (𝑄2 − 𝐹2)
𝛿 𝑞, 𝑝 , 𝑎 = 𝛿1 𝑞, 𝑎 , 𝛿2 𝑝, 𝑎 , ∀𝑎 ∈ Σ, ∀𝑞 ∈ 𝑄1 , ∀𝑝 ∈ 𝑄2
Inchiderea fata de operatii booleene,
concatenare si inchidere Kleene
• Exemplul 1. Sa se demonstreze ca limbajul urmator, 𝐿, peste
alfabetul Σ = {𝑎, 𝑏} este regulat:
a. Subsirul 𝑎𝑎 nu apare in nici un cuvant din 𝐿
b. Daca un cuvant contine subsirul 𝑎𝑏, atunci el contine si subsirul 𝑏𝑎
• Rezolvare.
o Deoarece 𝐿 indeplineste simultan conditiile (a) si (b), rezulta ca el
poate fi scris ca intersectia a doua limbaje:
• 𝐿1 : limbajul care indeplineste conditia (a)
• 𝐿2 : limbajul care indeplineste conditia (b)
• 𝐿 = 𝐿1 ∩ 𝐿2
Inchiderea fata de operatii booleene,
concatenare si inchidere Kleene
o 𝐿1 este conjugatul unui alt limbaj, 𝐿3 : limbajul in care cuvintele
contin subsirul 𝑎𝑎
• 𝐿1 = 𝐿3
o Este simplu de demonstrat ca limbajul 𝐿3 este regulat:
• Expresia regulata pentru 𝐿3 : 𝑟3 = 𝑎 + 𝑏 ∗ 𝑎𝑎 𝑎 + 𝑏 ∗
• 𝐿 𝑟3 = 𝐿 𝑎 + 𝑏 ∗ 𝑎𝑎 𝑎 + 𝑏 ∗ = {𝑎, 𝑏}∗ {𝑎𝑎}{𝑎, 𝑏}∗
• Se demonstreaza imediat ca 𝐿3 = 𝐿(𝑟3 )
• Rezulta ca 𝐿3 este limbaj regulat
o Conform proprietatii de inchidere la operatia de complementare:
⇒ 𝐿1 este limbaj regulat
Inchiderea fata de operatii booleene,
concatenare si inchidere Kleene
o Proprietatea (b) este o implicatie logica:
1. 𝑎𝑏 apare in 𝑤 ⇒ 𝑏𝑎 apare in 𝑤
2. Din logica matematica: 𝑃 ⇒ 𝑄 ≡ ¬𝑃 ∧ 𝑄
3. Din relatiile anterioare rezulta: 𝐿4 ⇒ 𝐿5 ≡ 𝐿4 ∩ 𝐿5 = 𝐿2 , unde
o𝐿4 : limbajul in care cuvintele contin subsirul 𝑎𝑏
o𝐿5 : limbajul in care cuvintele contin subsirul 𝑏𝑎
o In mod asemanator, se poate demonstra simplu ca limbajele 𝐿4 si 𝐿5
sunt limbaje regulate:
Inchiderea fata de operatii booleene,
concatenare si inchidere Kleene
• Expresia regulata pentru 𝐿4 : 𝑟4 = 𝑎 + 𝑏 ∗ 𝑎𝑏 𝑎 + 𝑏 ∗

• 𝐿 𝑟4 = 𝐿 𝑎 + 𝑏 ∗ 𝑎𝑎 𝑎 + 𝑏 ∗ = {𝑎, 𝑏}∗ {𝑎𝑏}{𝑎, 𝑏}∗


• Se demonstreaza imediat ca 𝐿4 = 𝐿(𝑟4 )
• In mod asemanator pentru 𝐿5
o Rezulta la 𝐿4 si 𝐿5 sunt limbaje regulate
o Din proprietatea de inchidere la complement ⇒ 𝐿4 este regulat
o Din proprietatea de inchidere la intersectie ⇒ 𝐿2 este limbaj regulat
o Din faptul ca 𝐿1 si 𝐿2 sunt limbaje regulate si din proprietatile de
inchidere, rezulta ca si 𝐿 este limbaj regulat
Inchiderea fata de operaţiile de cât,
invers, prefix şi sufix
• Câtul (la dreapta) al limbajelor 𝐿1 şi 𝐿2 peste un alfabet Σ se
𝐿2 , 𝑤𝑣 ∈ 𝐿1 }
• Cu alte cuvinte, limbaul cânotează 𝐿1 /𝐿2 şi se defineşte astfel:
𝐿1 /𝐿2 = 𝑤 ∈ Σ ∗ ∃𝑣 ∈ 𝐿2 , 𝑤𝑣 ∈ 𝐿1 }
• 𝐿 este format din toate prefixele cuvintelor 𝑤 din 𝐿1 , pentru
care exista un suffix din 𝐿2
• Exemplul 2. Fie limbajele 𝐿1 = {𝑎𝑛 𝑏 𝑛 𝑐 𝑛 | 𝑛 ≥ 0}, 𝐿2 = {𝑏}∗ {𝑐}∗
Pentru a determina 𝐿1 /𝐿2 , trebuie puse in evidenta prefixele
cuvintelor din 𝐿1 care au sufixe din 𝐿2 . Sunt 2 cazuri
Inchiderea fata de operaţiile de cât,
invers, prefix şi sufix
1. Sufixul 𝑦 contine doar simboluri 𝑐 (𝑦 = 𝑐 𝑖 , 𝑖 ≤ 𝑛)
2. Sufixul 𝑦 contine simboluri 𝑏 urmate de simboluri 𝑐 (𝑦 = 𝑏 𝑗 𝑐 𝑛 , 𝑗 ≤
𝑛)
• Fie 𝑤 = 𝑎𝑛 𝑏 𝑛 𝑐 𝑛 , 𝑤 = 𝑥𝑦. In cele doua cazuri avem:
1. 𝑦 = 𝑐 𝑖 , rezulta 𝑥 = 𝑎𝑛 𝑏 𝑛 𝑐 𝑛−𝑖
2. 𝑦 = 𝑏 𝑗 𝑐 𝑛 , rezulta 𝑥 = 𝑎𝑛 𝑏𝑛−𝑗
• Rezulta ca limbajul cat 𝐿1 /𝐿2 este:
𝐿 = {𝑎𝑖 𝑏 𝑗 𝑐 𝑘 | 𝑖 = 𝑗 ∧ 𝑘 < 𝑗 ∨ 𝑖 > 𝑗 ∧ 𝑘 = 0 }
cazul 1. cazul 2.
Inchiderea fata de operaţiile de cât,
invers, prefix şi sufix
• Teorema 6. Fie 𝐿1 un limbaj regulat peste un alfabet Σ şi 𝐿2 un
limbaj oarecare peste acelaşi alfabet. Atunci limbajul
𝐿1 /𝐿2 este un limbaj regulat peste Σ.
• Demonstratie.
• Fie automatul finit determinist 𝑀1 = (𝑄, Σ, 𝛿, 𝑞0 , 𝐹) , 𝐿(𝑀1 ) = 𝐿1 .
• Automatul 𝑀1 care recunoaşte limbajul 𝐿1 /𝐿2 este urmatorul:
𝑀1 = (𝑄, Σ, 𝛿, 𝑞0 , 𝐹1 )
𝐹1 = 𝑞 ∈ 𝑄 ∃𝑣 ∈ 𝐿2 , 𝑎ş𝑎 î𝑛𝑐â𝑡 𝛿 ∗ 𝑞, 𝑣 ∈ 𝐹}
Inchiderea fata de operaţiile de cât,
invers, prefix şi sufix
• Observatie. Spre deosebire de celelalte teoreme, teorema
anterioara nu este constructiva:
o Nu descrie o metoda constructiva de creare a multimii 𝐹1
o Daca 𝐿2 este un limbaj oarecare, nu se poate decide dacă o stare 𝑞 ∈
𝑄 aparţine şi mulţimii 𝐹1
o Dacă insa 𝐿2 este regulat:
⇒ problema apartenenţei lui 𝑞 este decidabilă
⇒ mulţimea 𝐹1 se poate construi efectiv
Inchiderea fata de operaţiile de cât,
invers, prefix şi sufix
• Inversul limbajului 𝐿1 se notează 𝐿𝑅1 şi se defineşte astfel:
𝐿𝑅1 = 𝑤 ∈ Σ ∗ 𝑤 𝑅 ∈ 𝐿1 }
• Teorema de inchidere pentru inversul unui limbaj se bazeaza pe
expresii regulate si inversul unei expresii regulate
• Fie 𝑟 o expresie regulată. Inversul expresiei 𝒓 se notează cu 𝒓𝑹 şi este
definita astfel:
o ∅, 𝑑𝑎𝑐𝑎 𝑟 = ∅; 𝜀, 𝑑𝑎𝑐𝑎 𝑟 = 𝜀
o 𝑎, 𝑑𝑎𝑐𝑎 𝑟 = 𝑎, ∀𝑎 ∈ Σ
o 𝑠 𝑅 + 𝑡 𝑅 , 𝑑𝑎𝑐𝑎 𝑟 = 𝑠 + 𝑡
o 𝑡 𝑅 ⋅ 𝑠 𝑅 , 𝑑𝑎𝑐𝑎 𝑟 = 𝑠 ⋅ 𝑡
o 𝑠 𝑅 ∗ , 𝑑𝑎𝑐𝑎 𝑟 = 𝑠 ∗
Inchiderea fata de operaţiile de cât,
invers, prefix şi sufix
• Propoziţia 1. Fie 𝑟 o expresie regulată peste un alfabet Σ şi
𝐿 𝑟 ∈ Σ ∗ limbajul desemnat de aceasta. Atunci:
∀𝑤 ∈ Σ ∗ , 𝑤 ∈ 𝐿 𝑟 ⇔ 𝑤 𝑅 ∈ 𝐿(𝑟 𝑅 )
• Teorema 7. Familia limbajelor regulate este închisă faţă de
operaţia de inversare.
• Demonstratie.
o 𝐿𝑅 = 𝐿𝑅 (𝑟) = 𝐿(𝑟 𝑅 )
o 𝑟 𝑅 expresie regulată
⇒ 𝐿(𝑟 𝑅 ) limbaj regulat
⇒ 𝐿𝑅 limbaj regulat
Inchiderea fata de operaţiile de cât,
invers, prefix şi sufix
• Fie 𝐿 un limbaj peste un alfabet Σ. Prefixul limbajului 𝐿 se
notează 𝑃𝑟𝑒𝑓𝑖𝑥(𝐿) şi se defineşte astfel:
𝑃𝑟𝑒𝑓𝑖𝑥 𝐿 = 𝑤 ∈ Σ ∗ ∃𝑣 ∈ Σ ∗ , 𝑤𝑣 ∈ 𝐿}
• Observatie. Din definiţia câtului la dreapta rezultă că:
𝑃𝑟𝑒𝑓𝑖𝑥(𝐿) = 𝐿/Σ ∗
• Teorema 8. Familia limbajelor regulate este închisă faţă de
operaţia de prefix.
• Demonstratie.
• Rezulta imediat din teorema 6 si observatia anterioara.
Inchiderea fata de operaţiile de cât,
invers, prefix şi sufix
• Fie 𝐿 un limbaj peste un alfabet Σ. Sufixul limbajului 𝐿 se
notează 𝑆𝑢𝑓𝑖𝑥(𝐿) şi se defineşte astfel:
𝑆𝑢𝑓𝑖𝑥 𝐿 = 𝑤 ∈ Σ ∗ ∃𝑣 ∈ Σ ∗ , 𝑣𝑤 ∈ 𝐿}
• Propoziţia 2. Fie 𝐿 un limbaj peste un alfabet Σ. Atunci:
𝑆𝑢𝑓𝑖𝑥(𝐿) = 𝑃𝑟𝑒𝑓𝑖𝑥(𝐿𝑅 ) 𝑅

• Teorema 9. Familia limbajelor regulate este închisă faţă de


operaţia de sufix.
• Demonstratie.
• Rezulta imediat din teorema 8 si propozitia 2.
Închiderea faţă de homomorfism şi
substituţie
• Fiind date două alfabete Σ1 şi Σ2 , un homomorfism 𝜑 este
definit astfel : 𝜑: Σ1 → Σ2∗
• Homomorfismul 𝜑 se poate extinde unic la un homomorfism
având parametri cuvinte şi nu simboluri:
𝜑 𝑤 : Σ1∗ → Σ2∗ , definit astfel:
𝜑 𝑤 𝜀 = 𝜀,
𝜑 𝑤 𝑥 ⋅ 𝑎 = 𝜑 𝑤 𝑥 ⋅ 𝜑 𝑤 𝑎 , ∀𝑥 ∈ Σ1∗ , ∀𝑎 ∈ 𝜑 𝑤
• Homomorfismul 𝜑 𝑤 se poate extinde si la limbaje 𝐿 peste Σ1 :
𝜑 𝐿 : ℘(Σ1∗ ) → ℘(Σ2∗ ), definit astfel:
𝜑 𝐿 𝐿 = 𝜑 𝑤 𝑤 𝑤 ∈ 𝐿}, ∀𝐿 ∈ ℘(Σ1∗ )
Închiderea faţă de homomorfism şi
substituţie
• Cand nu exista nicio confuzie, se va folosi notatia 𝜑 si in ;ocul lui
𝜑 𝑤 si 𝜑𝐿
• Propoziţia 3. Fie Σ un alfabet şi 𝐿1 şi 𝐿2 două limbaje peste Σ.
Atunci următoarele relaţii sunt adevărate :
o 𝜑 𝐿1 ∪ 𝐿2 = 𝜑 𝐿1 ∪ 𝜑(𝐿2 )
o 𝜑 𝐿1 ⋅ 𝐿2 = 𝜑 𝐿1 ⋅ 𝜑(𝐿2 )

o 𝜑(𝐿∗1 ) = 𝜑 𝐿1
• Se poate demonstra faptul că familia limbajelor regulate este
închisă faţă de homomorfismul 𝜑𝐿 .
• Această demonstraţie va rezulta însă ca un caz particular al unei
alte operaţii mai generale, numită substituţie
Închiderea faţă de homomorfism şi
substituţie
• Substituţia înlocuieşte un simbol nu cu un cuvânt, ca în cazul
homomorfismului 𝜑, ci cu un întreg limbaj.
• Notand cu 𝑓 functia de substitutie: 𝑓: Σ1 → ℘(Σ2∗ )
• Substitutia 𝑓 se poate extinde la cuvinte:
𝑓 𝑤 : Σ1∗ → ℘(Σ2∗ ):
𝑓 𝑤 𝜀 = {𝜀},
𝑓 𝑤 𝑥 ⋅ 𝑎 = 𝑓 𝑤 𝑥 ⋅ 𝑓 𝑤 𝑎 , ∀𝑥 ∈ Σ1∗ , ∀𝑎 ∈ 𝜑𝑤
• Substitutia 𝑓 𝑤 se poate extinde si la limbaje 𝐿 peste Σ1 :
𝑓 𝐿 : ℘(Σ1∗ ) → ℘(Σ2∗ ) :
𝑓 𝐿 𝐿 = 𝑓 𝑤 𝑤 𝑤 ∈ 𝐿}, ∀𝐿 ∈ ℘(Σ1∗ )
Închiderea faţă de homomorfism şi
substituţie
• Exemplul 3. Fie Σ1 = Σ2 = {𝑎, 𝑏, 𝑐}, 𝐿 = {𝑎𝑎, 𝑎𝑏 𝑏𝑏, 𝑏𝑐 𝑐𝑐, 𝑏𝑐𝑐} şi
substituţia 𝑓 definită astfel: 𝑓(𝑎) = 𝜙, 𝑓(𝑏) = {𝜀}, 𝑓(𝑐) = {𝑎𝑏}.
• 𝑓(𝐿) se determina astfel:
𝑓(𝑎𝑎) = 𝑓(𝑎)𝑓(𝑎) = 𝜙
𝑓(𝑎𝑏) = 𝑓(𝑎)𝑓(𝑏) = 𝜙
𝑓(𝑏𝑏) = 𝑓(𝑏)𝑓(𝑏) = {𝜀}
𝑓(𝑏𝑐) = 𝑓(𝑏)𝑓(𝑐) = {𝑎𝑏}
𝑓(𝑐𝑐) = 𝑓(𝑐)𝑓(𝑐) = {𝑎𝑏𝑎𝑏}
𝑓(𝑏𝑐𝑐) = 𝑓(𝑏)𝑓(𝑐𝑐) = {𝑎𝑏𝑎𝑏}
𝑓(𝐿) = {𝜀, 𝑎𝑏, 𝑎𝑏𝑎𝑏}
• Observatii: (𝑓(𝑎) = 𝜙) ⇒ 𝑓 şterge cuvintele din 𝐿 care conţin 𝑎
(𝑓(𝑏) = 𝜀) ⇒ 𝑓 şterge aparitiile simbolului 𝑎 din cuvintele din 𝐿
Închiderea faţă de homomorfism şi
substituţie
• Proprietatea de închidere pentru substituţie este valabilă doar
dacă limbajul substituit unui simbol este un limbaj regulat

• O substituţie 𝑓: Σ1 → ℘(Σ2 ) se numeşte substitutie regulată ⇔
∀𝑎 ∈ Σ, 𝑓(𝑎) este un limbaj regulat
• O substituţie regulată 𝑓 defineşte o aplicaţie subordonată 𝑔𝑓 :
o Fie 𝑎 ∈ Σ şi 𝑓 𝑎 ∈ ℘(Σ2∗ ) limbajul regulat substituit
⇒ ∃𝑟𝑎 ∈ 𝜇(Σ2 ), pentru care: 𝑓(𝑎) = 𝐿(𝑟𝑎 )
o Se defineşte aplicaţia 𝑔𝑓 subordonată lui 𝑓 astfel:
𝑔𝑓 ∶ Σ1 → 𝜇 Σ2 , ∀𝑎 ∈ Σ1 , 𝑔𝑓 𝑎 = 𝑟𝑎 ⇔ 𝑓(𝑎) = 𝐿(𝑟𝑎 )
Închiderea faţă de homomorfism şi
substituţie
• Observatie: Aplicaţia 𝑔𝑓 realizează aceleaşi substituţii ale
simbolurilor dintr-o expresie regulată, ca şi substituţiile
funcţiei 𝑓 aplicate asupra simbolurilor din cuvinte
• Teorema 10. Familia limbajelor regulate este închisă faţă de
operaţia de substituţie regulată
• Exemplul 4. Fie Fie Σ1 = {0, 1}, Σ2 = {𝑎, 𝑏} şi limbajul 𝐿
specificat prin expresii regulate: 𝐿 = 𝐿(01 00 + 11 ∗ 10)
Închiderea faţă de homomorfism şi
substituţie
• Se defineste o substituţie:
o 𝑓(0) = 𝐿(𝑎𝑎)
o 𝑓(1) = 𝐿( 𝑏𝑏𝑎𝑎 ∗ )
• Limbajul 𝑓(𝐿), care este limbaj regulat, se determină astfel:
𝑟 = 01 00 + 11 ∗ 10
𝑔𝑓 (𝑟) = 𝑎𝑎 𝑏𝑏𝑎𝑎 ∗ 𝑎𝑎 𝑎𝑎 + 𝑏𝑏𝑎𝑎 ∗ 𝑏𝑏𝑎𝑎 ∗ ∗ 𝑏𝑏𝑎𝑎 ∗ (𝑎𝑎) =
= 𝑎𝑎 𝑏𝑏𝑎𝑎 ∗ 𝑎𝑎𝑎𝑎 + 𝑏𝑏𝑎𝑎 ∗ ∗ 𝑏𝑏𝑎𝑎 ∗ (𝑎𝑎)
𝑓(𝐿) = 𝐿(𝑔𝑓 (𝑟)) = 𝐿( 𝑎𝑎 𝑏𝑏𝑎𝑎 ∗ 𝑎𝑎𝑎𝑎 + 𝑏𝑏𝑎𝑎 ∗ ∗ 𝑏𝑏𝑎𝑎 ∗ (𝑎𝑎))
• Pentru ca 𝐿 este un limbaj regulat, rezulta ca si 𝑓(𝐿) este limbaj
regulat
Închiderea faţă de homomorfism şi
substituţie
• Revenind la homomorfisme, se observa faptul ca acestea sunt
cazuri particulare ale substitutiei:
o Pentru un simbol 𝑎 ∈ Σ1 : (1) 𝜑 𝑎 ∈ Σ2∗ este un cuvânt, pe cand (2)
𝑓 𝑎 ∈ ℘(Σ2∗ ) este un limbaj
o Astfel, 𝜑(𝑎) poate fi privit ca un limbaj cu un sigur cuvânt, iar
functia 𝜑 poate fi privita ca functia 𝑓, pentru care 𝜑 𝑎 = 1, ∀𝑎 ∈ Σ1
• Rezulta urmatorul corolar:
• Corolarul 4.1. Familia limbajelor regulate este închisa fata de
operatia de homomorfism.
Închiderea faţă de homomorfism şi
substituţie
• Principalul mod de utilizare al operatiilor de inchidere consta in
demonstrarea ca un anumit limbaj este limbaj regulat (Exemplul 1)
• Tot operatiile de inchidere permit si demonstrarea proprietatii
inverse: ca un anumit limbaj nu este limbaj regulat
• Demonstratia se bazeaza pe doua elemente:
o Principiul demonstratiei prin reducere la absurd, ca si in cazul lemei
de pompare
o Folosirea unui limbaj standard, despre care se cunoaste ca nu este
limbaj regulat
• In mod uzual, ca limbaj standard care nu este regulat se foloseste
limbajul: 𝐿0 = {0𝑛 1𝑛 | 𝑛 ≥ 0}
Închiderea faţă de homomorfism şi
substituţie
• Exemplul 5. Sa se demonstreze ca limbajul urmator nu este regulat:
𝐿 = {𝑎3 𝑏 𝑛 𝑐 𝑛−3 |𝑛 > 3}
• Demonstratie.
o Presupunem ca L este limbaj regulat
o Definim un homomorfism: 𝜑1 : {𝑎, 𝑏, 𝑐} → {𝑎, 𝑏, 𝑐}∗ astfel:
𝜑1 𝑎 = 𝑎, 𝜑1 𝑏 = 𝑎, 𝜑1 𝑐 = 𝑏,
o Imaginea prin homomorfismul 𝜑1 a limbajului 𝐿 este:
𝜑1 𝐿 = {𝑎3 𝑏 𝑛 𝑐 𝑛−3 𝑛 > 3} = {𝑎𝑛+3 𝑏 𝑛−3 𝑛 > 3} = 𝐿1
o Limbajul 𝐿2 = {𝑏 6 } este un limbaj regulat
o Rezulta ca si concatenarea celor doua limbaje este un limbaj regulat:
𝐿3 = {𝑎𝑛+3 𝑏 𝑛−3 |𝑛 > 3} ⋅ {𝑏 6 } = {𝑎𝑛+3 𝑏 𝑛+3 |𝑛 > 3}
Închiderea faţă de homomorfism şi
substituţie
o Definim un homomorfism: 𝜑2 : {𝑎, 𝑏} → {0, 1}∗ astfel:
𝜑2 𝑎 = 0, 𝜑2 𝑏 = 1,
o Imaginea prin homomorfismul 𝜑2 a limbajului 𝐿3 este:
𝜑2 𝐿3 = {𝑎𝑛+3 𝑏 𝑛+3 𝑛 > 3} = {0𝑛+3 1𝑛+3 𝑛 > 3} = 𝐿4
o Limbajul 𝐿5 = {𝜀, 01, 02 12 , 03 13 , 04 14 , 05 15 , 06 16 } este un limbaj regulat
o Rezulta ca limbajul 𝐿6 = 𝐿4 ∪ 𝐿5 este un limbaj regulat:
𝐿6 = {0𝑛 1𝑛 |𝑛 ≥ 0}
o Am ajuns la o contradictie, pentru ca limbajul 𝐿6 este chiar limbajul 𝐿0 , care este
neregulat
o Rezulta ca presupunerea este falsa, deci 𝐿 este un limbaj neregulat.
Operatii de inchidere
• Tema 1. Să se demonstreze că următorul limbaj este un
limbaj regulat:
𝐿 = 𝑤 ∈ 𝑎, 𝑏 ∗ #𝑎 (𝑤) 𝑒𝑠𝑡𝑒 𝑑𝑖𝑣𝑖𝑧𝑖𝑏𝑖𝑙 𝑐𝑢 3, 𝑑𝑎𝑟 𝑛𝑢 𝑒𝑠𝑡𝑒 𝑑𝑖𝑣𝑖𝑧𝑖𝑏𝑖𝑙 𝑐𝑢 2}
• Tema 2. Sa se demonstreze ca urmatorul limbaj nu este
regulat:
𝐿 = 𝑎𝑛 𝑏 𝑛 𝑐 𝑛 𝑛 > 0}

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