Documente Academic
Documente Profesional
Documente Cultură
Reprezentarea limbajelor
În acest capitol se vor defini noţiunile principale legate de limbaje, precum şi de cele două
metode de specificare a limbajelor.
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.
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.
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.
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.
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.
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.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
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)
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ă.
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.
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}*
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.
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ă.
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.
Se vor introduce acum câteva notaţii uzuale referitoare la gramatici şi limbaje generate de
acestea.
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.
Î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: α, β, γ, δ, …
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).
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}
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.
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ă.
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.
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* ∈ µ(Σ)
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.
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}).
Î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.
Î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.
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
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ă.
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ă.
#
Î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.
Î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
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.
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ă.
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.
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, ε)
Definiţia 3.8. Limbajul acceptat de automatul finit determinist M = (Q, Σ, δ, q0, F) este
mulţimea:
L(M) = {w∈Σ* | δ*(q, w)∈F}
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.
Î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ă.
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.
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))
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)}
Definiţia 3.15. Limbajul acceptat de automatul finit nedeterminist M = (Q, Σ, δ, q0, F) este
mulţimea:
L(M) = {w∈Σ* | δ*(q, w)∩F ≠ Φ}
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).
Se poate defini un algoritm simplu pentru determinarea valorilor lui ε-Closure(S), folosind o
stivă.
Se poate arăta simplu faptul că algoritmul anterior determină în mod corect ε-Closure(S),
pentru S⊆Q.
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.
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.
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).
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
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.
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}
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 ≠ Φ}
Î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.
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)
#
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).
Î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(Σ), ∀Σ≠Φ
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.
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
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.
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.
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
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.
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.
Î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.
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.
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.
Defini ia 4.2. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist i q∈Q o stare.
Pentru determinarea st rilor inaccesibile ale unui automat se poate utiliza un algoritm de
în care se poate ajunge plecând din starea ini ial q0, iar nodurile r mase nemarcate reprezint
st rile inaccesibile.
Intrare.
- Un automat finit determinist M = (Q, Σ, δ, q 0, F), δ fiind specificat prin graful de
tranzi ie
Ie ire.
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
b) q∈Q1 ⇔ ∃a∈Σ, ∃q1∈Q1 a a încât q = δ(q1, a) - din instruc iunile (b) i (c)
• 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.
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),
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
Aceea i no iune se poate descrie în mod echivalent folosind no iunea de limbaj de cuvinte
Propozi ia 4.1. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist i qi,q j∈Q dou st ri
Demonstra ie.
- 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.
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.
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.
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 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}.
#
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
∼ = ∼k
#
Lemele anterioare permit definirea unui algoritm pentru determinarea claselor de echivalen
ale rela iei de inseparabilitate ∼.
Î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
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
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
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)]
Prpozi ia 4.3. Fie M = (Q, Σ, δ, q0, F) un automat finit determinist i Mr automatul determinat
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.
0 0 1
q35 q2
1 1
q04 1
0 0 0
q17 q6
1
Figura 4.3
pentru orice automat determinist M pentru care L(M)=L, exist un unic automat M1 pentru
care L(M)=L(M1).
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
Î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)
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
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.
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.
#
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 ℜ.
∀L1,L2,…,Lk∈ℜ, ℜ( L1,L2,…,Lk)∈ℜ
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.
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).
⇔ w ∈ L1 ∧ w ∈ L2
⇔ w ∈ L1∩L2
#
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.
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.
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
#
Defini ia 4.12. Fie L un limbaj peste un alfabet Σ. Prefixul limbajului L se noteaz Prefix(L)
i se define te astfel:
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.
#
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.
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
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
f: Σ1 → ℘(Σ2*)
Substitu ia f se poate extinde la cuvinte astfel:
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(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.
Propozi ia 4.6. Fie Σ un alfabet i L1 i L2 dou limbaje peste Σ. Atunci urm toarele rela ii
- 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
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),
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:
Teorema 4.10. Familia limbajelor regulate este închis fa de opera ia de substitu ie regulat .
Demonstra ie.
regulat.
Deoarece M este un limbaj regulat, exist o expresie regulat r∈µ(Σ1) a a încât
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 = gf(r)
Cu alte cuvinte, va trebui demonstrat c :
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.
f(Φ) = Φ = L(Φ)
- r =ε; în acet caz L(ε)={ε}, gf(ε)=ε i deci:
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:
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.
Demonstra ie.
Demonstra ia este imediat din observa ia precedent i din faptul c un limbaj format dintr-
Observa ie. Folosind teorema substitu iei, se pot demonstra u or i alte propriet i ale
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(a) = L1
Atunci, din teorema substitu iei, urm torul limbaj este regulat:
privind limbajele regulate înseamn a determina dac o anumit proprietate a limbajelor este
Î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
regulate.
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;
În cazul în care o asemenea problem de decizie se poate rezolva în mod algoritmic, atunci
automatelor finite, deoarece sunt simple i permit descrierea algoritmic a multor propriet i
ale acestora.
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
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
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 .
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 .
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
limbajul L(M) este nevid, atunci înseamn c exist cel pu in un drum în graful de tranzi ie
înseamn c S con ine cel pu in o stare final i deci limbajul L(M) nu este vid.
S-a notat cu Travers o func ie de parcurgere a grafului având q 0 ca nod ini ial. Func ia
Se observ c algoritmul anterior este bine definit, deoarece pentru orice stare final qk∈F
Teorema 4.12. Pentru familia limbajelor regulate, problema limbajului vid este decidabil .
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
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
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.
simboluri din alfabetul Σ, deci genereaz aranjamentele A|Σ|i. Parametrul k este utilizat pentru
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
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.
Fie M1 = (Q1, Σ, δ1, q 01, F1) i M2 = (Q2, Σ, δ2, q02, F2) automatele finite deterministe care
Pentru a putea determina dac L(M1) = L(M2), se poate utiliza algoritmul de minimizare
conform teoremei 4.1, deoarece automatul minimal este unic, trebuie ca Ma i Mb s fie
Rezult de aici c , dac se poate descrie un algoritm care s determine dac dou automate
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 .
P = { q, p ∈Qa×Qb | p=h(q)}
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
Q = h(Qa) = {p | q, p ∈P}
F = h(Fa) = {p | q, p ∈P ∧ q∈Fa}
(Qb = Q) ∧ (Fb = F)
Observa ie. S-a presupus c ambele automate au acela i alfabet de intrare, precum i c ele
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) }
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
În concluzie, pentru a determina dac dou limbaje sunt echivalente, se poate utiliza
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,
Teorema 4.14. Pentru familia limbajelor regulate, problema echivalen ei limbajelor este
decidabil .
AUTOMATE FINITE
(continuare)
Marius Brezovan
AUTOMATE FINITE
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 𝑞𝑓
𝜀
𝑞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
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
𝜀 𝜀
𝑞𝑓
• 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𝑓 = 𝑏𝑎∗ 𝑏 𝑎 + 𝑏 ∗
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 𝑞𝑓
∗
= 𝑅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.
qai+1 aj
a1 a2 ai+1 ak
q0 qa1 qx qaj+1 qk
ai aj+1
qai+1 aj
a1 a2 ai+1 ak
q0 qa1 qx qaj+1 qk
ai aj+1
1
0
0 1 0
q0 q1 q2 q3
0
1
1
0 1
1 1 0
q4 q5 q6 q7
1 0
1 0
q04 1
0 0 0
q17 q6
1
0 0 1
q3 q2
1 5 1
q0 1
4 0 0 0
q1 q6
1 7
• 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 = 𝑎 + 𝑏 ∗ 𝑎𝑏 𝑎 + 𝑏 ∗