Sunteți pe pagina 1din 10

Capitolul 2

Mulţimi regulate (limbaje regulate) şi limbaje liniare la


dreapta

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

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

2.1 Muţimi regulate şi expresii regulate


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

2.1.1 Mulţimi regulate şi algebra expresiilor regulate

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

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


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

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


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

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

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

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

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


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

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


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

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

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

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

2.1.2 Ecuaţii cu mulţimi regulate


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

Exemplul 2.1. Fie ecuaţia:


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

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

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

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

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

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

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

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

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

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


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

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

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

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

Exemplul 2.2. Se consideră sistemul cu expresii regulate:


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

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

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

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

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

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

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


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

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

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

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

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

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


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

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