Descărcați ca pdf sau txt
Descărcați ca pdf sau txt
Sunteți pe pagina 1din 107

Prefat

a
Cartea contine materia pentru studentii informaticieni din anul III,
nvatamant la distanta. Continutul cartii este mpartit n cinci teme.
Fiecare tema este formata dintr-o prezentare teoretica, insistandu-se
pe clasificarea notiunilor introduse si mai putin pe demonstrarea tuturor teoremelor, dupa care urmeaza cate un set de exercitii rezolvate
si propuse spre rezolvare.
Cu toate ca lipsesc demonstratiile unor teoreme, cartea este utila
si studentilor din anul II de la nvatamant de la zi.
Sper ca munca depusa n redactarea acestui material sa fie de folos
studentilor informaticieni.

Autorul

Cuprins

Prefat
a
Tema 1. Limbaje si gramatici generative
1. Notiuni introductive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Gramatici generative si limbaje generate de gramatici . . . . . . . . 5
3. Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Tema 2. Automate finite si gramatici de tip 3
1. Automate finite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
2. Caracterizarea limbajelor regulate cu
ajutorul relatiilor de echivaleta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
3. Constructia automatului minimal . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4. Automate nedeterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5. Limbaje regulate si limbaje de tip 3 . . . . . . . . . . . . . . . . . . . . . . . . . 36
6. Exercitii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

ii

Tema 3. Limbaje independente de context si


automate pushdown nedeterministe
1. Automate pushdown nedeterministe . . . . . . . . . . . . . . . . . . . . . . . . 53
2. Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Tema 4. Forme normale. Arbori de derivare.
Teorema lui Ogden si aplicatii.
Automate pushdown deterministe.
1. Forme normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2. Arbori de derivare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3. Automate pushdown deterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4. Exercitii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Tema 5. Familiile de limbje L0 si L1 .
1. Proprietati de nchidere pentru framille L0 si L1 . . . . . . . . . . . . 89
2. Gramatici monotone si limbaje independente de context. . . . .92
3. Masini Turing si limbaje de tip 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4. Automate liniar marginite si limbaje de tip 1 . . . . . . . . . . . . . . 101
5. Exercitii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6. Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

iii

Tema 1
Limbaje si gramatici
generative
1

Notiuni introductive

Prelucrarea informatiilor cu ajutorul calculatoarelor electronice


presupune lucrul cu siruri de caractere, de aceea este important de
studiat proprietatile si modurile de generare a sirurilor de caractere.
In acest paragraf vom introduce notiunile de baza pentru limbaje formale si teoria automatelor.
Definitia 1.1.1. O multime finita si nevida V se numeste alfabet.
Elementele lui V se numesc simboluri sau simboli.
Definitia 1.1.2. Se numeste cuvant peste alfabetul V o aplicatie
p : {1, 2, . . . , n} V . Numarul n se numeste lungimea cuvantului p
si se noteaza cu l(p) sau |p|.
Cuvantul p se noteaza cu p(1)p(2) . . . p(n). Multimea cuvintelor
peste alfabetul V se noteaza cu V + .
Exemplul 1.1.3. Fie V = {a, b, c, d} si cuvantul p : {1, 2, 3} V
definit prin p(1) = a, p(2) = c, p(3) = d. Acest cuvant se scrie acd.
Fie u : {1, 2, 3, 4, 5} V definit prin u(1) = b, u(2) = a, u(3) = c,
u(4) = d si u(5) = a. Acest cuvant se scrie bacda.

Pe multimea cuvintelor peste un alfabet se poate defini operatia


de concatenare.
Definitia 1.1.4. Fie p : {1, 2, . . . , n} V si
q : {1, 2, . . . , m} V . Atunci concatenarea cuvintelor p si q este
cuvantul p q : {1, 2, . . . , n + m} V definit prin
p q(j) =

p(j)
daca i j n
q(j n) daca n + 1 j n + m

Concatenarea cuvintelor p si q se noteaza cu p q sau simplu pq.


Din definitie urmeaza ca pq = p(1) . . . p(n)q(1) . . . q(m).
Vom nota cu V = V + {}, unde este un element nou, 6 V +
pentru care extindem operatia de concatenare p = p = p pentru
orice p V + si = . Vom defini l() = 0. Cuvantul se numeste
cuvant vid sau cuvant nul.
Observatia 1.1.5. Operatia de concatenare este o operatie asociativ
a, adica: (pq)r = p(qr) p, q, r V .
Observatia 1.1.6. (V , ) este monoid, se numeste monoidul liber
generat de V .
Observatia 1.1.7. Aplicatia l : V N care asociaza unui
cuvant p V lungimea sa l(p) este un homomorfism, adica l(pq) =
l(p) + l(q); lungimea unui cuvant p se mai noteaza si cu |p|.
Semigrupul (V , ) se numeste monoidul liber peste alfabetul V . De
asemenea vom identifica cuvintele de lungime unu cu simbolurile lui
V . Vom nota cu |V | numarul simbolurilor alfabetului V .
Lema 1.1.8. Numarul cuvintelor de lungime k peste alfabetul V
este egal cu |V |k .
Demonstratie. Fie n = |V |. Numarul cuvintelor de lungime 1
este egal cu n; numarul cuvintelor de lungime 0 este 1. Presupunem
proprietatea adevarata pentru cuvinte de lungime cel mult k 1 si o
demonstram pentru cuvinte de lungime k. Deci numarul cuvintelor de
2

lungime k 1 este nk1 . Cuvintele de lungime k le putem obtine din


cuvinte de lungime k 1 adaugand la sfarsit un simbol din V . Deci
din fiecare cuvant de lungime k 1 obtinem n cuvinte de lungime k.
Deci numarul cuvintelor de lungime k este nk1 n = nk .
Observatia 1.1.9. Multimea cuvintelor peste un alfabet V este
o multime num
arabil
a, ca reuniune numarabila de multimi finite.

V = {} k=1
{p | p V , l(p) = k}.
Observatia 1.1.10. Monoidul (V , ) nu este comutativ.
De exemplu, daca luam V = {a, b} si cuvintele p = ab si q = bb,
avem p q 6= q p.
Definitia 1.1.11. Cuvantul q este prefix al cuvantului p daca
v V , p = qv si este prefix propriu daca v V + . Cuvantul q este
sufix al cuvantului p daca u V , p = uq si este sufix propriu daca
u V +.
Lema 1.1.12. Orice aplicatie : V S, unde S este un semigrup cu operatia , se extinde n mod unic la un homomorfism de
semigrupuri : V + S.
Demonstratie. Fie p = i1 . . . in un cuvant oarecare din V + . Vom
defini (p) prin (i1 . . . in ) = (i1 ) (i2 ) . . . (in ). Se verifica
imediat ca aplicatia astfel extinsa este un homomorfism de la V + la
S.
Sa demonstram unicitatea lui . Sa presupunem ca ar mai exista
un homomorfism : V + S cu (i) = (i), oricare ar fi i V . Sa
demonstram ca (p) = (p), oricare ar fi p V + . Vom demonstra
prin inductie dupa lungimea cuvintelor. Pentru cuvinte de lungime 1,
propozitia este adevarata. Presupunem propozitia adevarata pentru
un cuvant de lungime cel mult k si o demonstram pentru cuvinte de
lungime k + 1. Fie p cu l(p) = k + 1. Atunci p = qi, cu l(q) = k si
l(i) = 1. Avem (p) = (q i) = (q) (i) = (q) (i) = (qi) =
(p).
3

Definitia 1.1.13. Vom numi limbaj peste V orice submultime a


lui V .
Un limbaj fiind o multime de cuvinte, putem utiliza operatiile cu
multimi ca: reuniune, intersectie si complementariere.
Limbajele fiind multimi specifice ale caror elemente sunt cuvinte,
putem defini operatii proprii acestor multimi.
Definitia 1.1.14. Operatia de produs a limbajelor este definita
pe P(V ) P(V ) cu valori n P(V ), care ataseaza fiecarei perechi
(L1 , L2 ) un limbaj notat prin L1 L2 definit prin:
L1 L2 = {p | p = uv, u L1 si v L2 }
Produsul L1 L2 se mai noteaza simplu prin L1 L2 .
Prin definitie avem L = L = pentru orice L P(V ).
Observatia 1.1.15.
Limbajul {} este element neutru,
deoarece se poate verifica imediat ca:
{} L = L {} = L, L P(V ).
Observatia 1.1.16. Se poate verifica usor ca operatia de produs a
doua limbaje este asociativ
a.
Din definitia produsului de limbaje, se poate verifica ca pentru
orice trei limbaje L1 , L2 si L3 peste alfabetul V avem: (L1 L2 ) L3 =
L1 (L2 L3 ). Multimea P(V ) nzestrata cu operatia de produs este
un semigrup cu element neutru {}.
Definitia 1.1.17. Puterea unui limbaj L se defineste inductiv
prin:
L0 = {}
L1 = L
Ln+1 = Ln L, n N.

Vom nota cu L+ = n=1


Ln si cu L = n=0
Ln . Limbajul L se numeste
iteratul limbajului L.
4

Gramatici generative si
limbaje generate de gramatici

Un program ntr-un limbaj de programare poate fi privit ca un


sir de caractere generat dupa niste reguli precizate, pornind de la
un alfabet. Generarea sirurilor de caractere se poate formaliza prin
introducerea notiunii de gramatica.
Definitia 1.2.1. O gramatica este un 4-uplu G = (VN , VT , x0 , P )
unde:
- VN este o multime finita si nevida, elementele sale se numesc
neterminali sau variabile;
- VT este o multime finita si nevida, elementele sale se numesc
terminali si VN VT = ;
- x0 VN este un simbol special numit simbol initial sau simbol de
start;
- fie V = VN VT , atunci P este o multime finita si P V VN V

V .
Multimea P se numeste multimea regulilor de generare sau
multimea productiilor gramaticii G. Vom nota perechea (u, v) P
prin u v. Se observa ca n orice regula u v cuvantul u contine
cel putin un simbol neterminal.
Vom defini o relatie binara peste V numita derivare directa, notata
cu V V .
G

Definitia 1.2.2. Vom spune ca perechea (, ) daca exista o


G
regula u v P si = 1 u2 , = 1 v2 .
Deci doua cuvinte si sunt n relatie de derivare directa daca
se obtine din prin nlocuirea membrului stang al unei reguli prin
membrul drept al regulii (adica u prin v). Daca (, ) , vom nota
G
aceasta prin , care este mai sugestiva, se obtine din prin
G
aplicarea unei reguli din G. Inchiderea reflexiva si tranzitiva a relatiei

o vom nota cu si o vom numi relatia de derivare. Deci vom spune


G

ca daca are loc una din urmatoarele situatii:


G
i) = (nchiderea reflexiva);
ii) exista cuvintele u1 , . . . , un V astfel ncat = u1 , = un si
ui ui+1 , n 2, i 1, n 1.
G

Definitia 1.2.3. O derivare n gramatica G este un sir de cuvinte


u1 , . . . , un+1, uj V , 1 j n + 1, astfel ncat ui ui+1 , 1 i n.
G

Deci o derivare este un sir de cuvinte care se obtine unul din altul
prin aplicarea unei reguli din G, numarul n din definitia de mai sus
se numeste lungimea derivarii. Deci lungimea derivarii este numarul
regulilor care se aplica pentru a obtine un+1 din u1 . Vom considera ca
printr-o derivare de lungime 0, adica nu se aplica nici o regula
din G.
Atunci cand nu exista posibilitatea de confuzie, vom renunta la

indicele G din notatiile si si vom folosi si .


G

Definitia 1.2.4. Limbajul generat de gramatica G, notat cu L(G),


este definit prin:

L(G) = {p | p VT , x0 p}.
G

Remarcam ca limbajul generat de gramatica G este format din toate


cuvintele peste VT (alfabetul terminalilor) care se obtin din simbolul
de start aplicand reguli din G. Aici se vede rolul special care l are x0 ;
toate derivarile care ne dau cuvinte din L(G) ncep cu simbolul x0 .
Definitia 1.2.6. Doua gramatici G1 = (VN1 , VT1 , x01 , P1 ) si
G2 = (VN2 , VT2 , x02 , P2 ) se numesc echivalente daca L(G1 ) = L(G2 ).
Deci gramaticile sunt echivalente daca genereaza acelasi limbaj.
Vom considera o cale simpla de a obtine gramatici echivalente.
Vom da o metoda de construire a gramaticilor echivalente.
Data o gramatica G = (VN , VT , x0 , P ) construim gramatici G =
(VN , VT , x0 , P ) unde VN = {x | x VN } iar P se obtine nlocuind n
fiecare regula din P simbolii x cu x .
6

Se poate arata ca cele doua gramatici sunt echivalente.


Observatia
1) Din cele de mai sus rezulta ca nu conteaza cum notam terminalii,
conteaza numai forma regulilor.
2) Daca lucram cu doua sau mai multe gramatici si ne intereseaza
limbajele generate de gramatici putem considera ca gramaticile
au multimile simbolilor neterminale disjuncte.
Fie G = (VN , VT , x0 , P ) o gramatica. Vom construi o gramatica G
echivalenta cu G. Consideram multimea VN = {x | x VN }. Consideram bijectia : VN VN definita prin (x) = x . Vom extinde
bijectia la V prin:
h(y) =

(y) daca y VN
y
daca y VT

Aplicatia considerata h : V V se poate prelungi n mod unic,


conform lemei 1.1.12., la un homomorfism de semigrupuri prin h(pi) =
h(p)h(i) de la V la V , V = VT VN . Cuvantul h(p) se obtine
din cuvantul p prin nlocuirea simbolurilor x din VN prin x din VN
si simbolii terminali raman neafectati. Consideram gramatica G =
(VN , VT , x0 , P ), unde P = {h(u) h(v) | u v P }.
Vom arata ca gramaticile G si G sunt echivalente, adica L(G) =
L(G ). Pentru aceasta vom demonstra ca u v daca si numai daca
G
h(u) h(v).
G
Intr-adevar, daca u v, avem ca u = u1 u2 , v = u1 u2 si
G

P . Din P avem ca h() h() P si din h(u) =


h(u1 )h()h(u2 ) si h(v) = h(u1 )h()h(u2) rezulta ca h(u) h(v).
G
Invers, din h(u) h(v) avem ca h(u) = z1 h()z2 , h(v) =
G
z1 h()z2 , h() h() P , z1 , z2 (VN VT ) . Exista t1 si t2 cu
z1 = h(t1 ), z2 = h(t2 ); t1 si t2 se obtin din z1 si z2 prin nlocuirea simbolilor x din VN prin simboli x din VN . Din h(u) = h(t1 )h()h(t2 ) =
7

h(t1 t2 ), h(v) = h(t1 )h()h(t2 ) = h(t1 t2 ) si h() h() P , avem


ca u = t1 t2 , v = t1 t2 si P , deci u v.
G
Aplicand la fiecare pas rezultatul de mai sus, avem derivarea
x0 u1 . . . un
G

daca si numai daca


h(x0 ) h(u1 ) . . . h(un )
G

Daca un VT avem h(un ) = un si x0 un daca si numai daca


G

x0 un , deci L(G) = L(G ).


G
Din cele de mai sus, rezulta ca putem schimba simbolurile neterminale ale unei gramatici (prin punerea de accente ca mai sus sau n alt
mod, schimband corespunzator si n regulile gramaticii) fara ca limbajul sa se schimbe. Aceasta ne permite ca atunci cand lucram cu doua
gramatici G1 = (VN1 , VT1 , x01 , P1 ) si G2 = (VN2 , VT2 , x02 , P2 ) si suntem
interesati de limbajele generate, putem presupune ca VN1 VN2 = .
Dupa forma regulilor gramaticilor, gramaticile se pot mparti n diverse clase. Vom da mai jos cea mai cunoscuta ierarhie a gramaticilor,
cunoscuta sub numele de ierarhia lui Chomsky.
Definitia 1.2.7. 1) Gramaticile de tip 0 sunt acele gramatici care
nu au restrictii asupra regulilor lor, altele decat cele prezentate n
definitia gramaticii.
2) Gramaticile de tip 1 sunt acele gramatici care au regulile de
forma uxv urv, unde u, v V , x VN , r V + sau de forma
x0 , caz n care simbolul initial x0 nu apare n partea dreapta a
vreunei reguli.
3) Gramaticile de tip 2 sunt acele gramatici care au regulile de
forma x r, unde x VN si r V .
4) Gramaticile de tip 3 sunt acele gramatici care au regulile de
forma x px sau x p, unde x, x VN si p VT .
Observatia 1.2.8. In gramaticile de tip 1, regulile de forma
uxv urv descriu generarea cuvantului r din simbolul neterminal
8

x, dar numai n contextul u v (x si r sunt precedati de u si urmati


de v), de aceea acestea se mai numesc gramatici dependente de context
(sensibile la context). Pentru gramaticile de tip 2, regulile de generare
sunt de forma x r, deci genereaza cuvantul r din neterminalul x
indiferent de context, de aceea aceste gramatici se numesc si gramatici
independente de context.
Definitia 1.2.9. Un limbaj L este de tipul j daca exista o gramatica G de tipul j astfel ncat L(G) = L, unde j {0, 1, 2, 3}.
Vom nota cu Lj clasa limbajelor de tipul j, unde j {0, 1, 2, 3}.
Cu Lj (V ) vom nota clasa limbajelor de tipul j peste alfabetul V , unde
j {0, 1, 2, 3}.
Observatia 1.2.10. Au loc incluziunile evidente L1 L0 si
L3 L2 , deoarece orice gramatica de tipul 1 este si de tip 0 si orice
gramatica de tip 3 este si de tip 2.
Vom demonstra ca are loc si incluziunea L2 L1 , care nu este
evidenta. De asemenea, vom arata mai tarziu ca incluziunile L3
L2 L1 L0 sunt de fapt incluziuni stricte.
Teorema 1.2.11. (Teorema de localizare) Fie G = (VN , VT , x0 , P ),

o gramatica de tipul 2 si derivarea y1 . . . yn . Atunci se poate


G

scrie sub forma 1 . . . n astfel ncat avem yj j , 1 j n.


G

Demonstratie. Vom proceda prin inductie dupa lungimea de


rivarii y1 . . . yn . Fie aceasta lungime k.
G
Pentru k = 0 afirmatia teoremei este evident adevarata luand
j = yj , 1 j n.
Sa presupunem afirmatia teoremei adevarata pentru derivari de

lungime cel mult k 1 si fie y1 . . . yn o derivare de lungime k.


G
Vom pune n evidenta ultimul pas al derivarii; avem

y1 . . . yn u .
G

Derivarea y1 . . . yn u are lungimea k1 si pe baza ipotezei inductive,


G


u are forma u = u1 . . . un si yj uj , 1 j n. In ultimul pas al
G
derivarii de lungime k, se obtine din u prin aplicarea unei reguli de
forma x r, simbolul x al regulii x r apartine lui u, deci exista
un l astfel ncat ul = ul xul , 1 l n. Atunci se descompune n
1 . . . n cu
(
uj
daca j 6= l
j =

ul rul daca j = l

Astfel avem yj uj = j , 1 j n, j 6= l si yl ul xul ul rul =

l , deci yj j , 1 j n.
G

Observatia 1.2.12. Din demonstratia teoremei se observa ca

lungimea derivarilor yj j , 1 j n, este mai mica sau cel mult


G

egala cu lungimea derivarii y1 . . . yn .


G

Teorema Pentru orice gramatica G = (VN , VT , x0 , P ) de tipul 2


exista o gramatica G, de tipul 2 care nu are reguli de forma x si
pentru care avem L(G1 ) = L(G) \ {}.
Definitia Daca gramatica G nu are reguli de forma x atunci
6 L(G) si putem lua G1 = G si L(G1 ) = L(G) = L(G) \ {}.
Daca gramatica G contine reguli de forma x , vom considera
urmatorul sir de multimi:
U1 = {x | x P }
Un+1 = Un {x | x r P, r Un }, n 1.
Sirul de multimi are proprietatile:
(1) U1 U2 . . . Un Un+1 . . . VN .
(2) Deoarece VN este finita rezulta ca exista un k astfel ca Uk = Uk+1 .
(3) Se poate arata prin inductie dupa j ca Uk = Uk+j , j 1.

(4) Se poate demonstra ca, x Uk daca si numai daca x .


G

Constructia gramaticii G1 .
G1 = (VN , VT , x0 , P1 ), unde P1 se obtine din P n modul urmator:
pentru fiecare regula din P , x r, cu r 6= se pun n P1 toate regulile
10

de forma x r1 si r1 se obtine din r prin stergerea a 0, 1, . . . simboli


din Uk .
Se poate arata ca L(G1 ) = L(G) \ {}.
Teorema 1.2.14. Fie G = (VN , VT , x0 , P ) o gramatica de tip 2.
Dac
a L(G), atunci exista o gramatica G de tipul 2, echivalenta
cu G care are ca unica regula cu n partea dreapta, regula x0 ,
unde x0 este simbolul de start al gramaticii G si x0 nu apare n partea
dreapta a vreunei reguli din G .
Demonstratie. Consideram gramatica G = (VN {x0 }, VT , x0 ,
P1 {x0 x0 , x0 }), unde x0 6 VN si P1 se obtine din P ca n
teorema precedenta. Sa demonstram ca L(G) = L(G ).
Incluziunea L(G) L(G). Fie p L(G); exista atunci derivarea

x0 p. Daca p = , atunci n G avem regula x0 P si derivarea


G
x0 , deci p L(G ). Daca p 6= , atunci p L(G)\{} L(G1 )
G
L(G ), deoarece regulile din G1 le avem si n G si avem si regula

x0 x0 , care ne permite ca oricarei derivari de forma x0 sa-i


G1

x0

corespunda
x0 . Gramatica G1 este gramatica din teorema
G
G
precedenta. Deci si n cazul p 6= avem p L(G ).
Sa demonstram acum incluziunea inversa, adica L(G) L(G).

Fie p L(G ); deci exista derivarea x0 p. Prima regula care se


G
aplica n aceasta derivare poate fi x0 sau x0 x0 . Daca prima
regula care se aplica este x0 , atunci p = L(G). Daca prima
regula care se aplica este x0 x0 , atunci derivarea este de forma

x0 x0 p, dar n derivarea x0 p se aplica numai reguli din G1


G
G
G

si deci avem x0 p, p L(G1 ) L(G). In ambele situatii avem


G1

p L(G) ceea ce demonstreaza incluziunea L(G ) L(G).


Daca 6 L(G), atunci consideram G = (VN {x0 }, VT , x0 , P1
{x0 x0 }) si avem L(G ) = L(G) si G este o gramatica fara reguli
cu n partea dreapta. Se demonstreaza imediat ca L(G) = L(G ).
Consecinta 1.2.15. Din teorema precedenta rezulta ca L2 L1 .

11

Intr-adevar, orice limbaj L L2 poate fi generat de o gramatica G


de tipul celei din teorema precedenta care este si de tip 1, deci L L1 .
Teorema 1.2.16. Fiecare din familiile Lj cu 0 j 3 contine
toate limbajele finite.
Demonstratie. Limbajul vid este generat de o gramatica de
forma G = ({x, y}, VT , x, {x y}) care este de tip j cu j {0, 1, 2, 3}.
Fie L = {p1 , . . . , pn } un limbaj finit si fie VT = {i1 , . . . , im }. L este
generat de gramatica
G = ({x0 }, {i1 , . . . , im }, x0 , {x0 p1 , . . . , x0 pn }),
care este o gramatica de tip j cu j {0, 1, 2, 3}.
Teorema 1.2.17. Fiecare din familiile Lj cu j {0, 1, 2, 3} este
nchisa la operatia de reuniune.
Demonstratie. Va trebui sa demonstram ca daca L1 , L2 Lj ,
0 j 3, atunci si L1 L2 Lj . Fie j fixat cu j {0, 1, 2, 3}, atunci
exista gramaticile Gk = (VNk , VTk , x0k , Pk ), k {1, 2}, de tipul j astfel
ncat
L1 = L(G1 ) si L2 = L(G2 ). Putem presupune ca VN1 VN2 = .
Consideram gramatica
G = (VN1 VN2 {x0 }, VT1 VT2 , x0 , P1 P2 {x0 x01 , x0 x02 }),
unde x0 6 VN1 VN2 . Gramatica G este de acelasi tip cu gramaticile
G1 si G2 deoarece regulile x0 x01 si x0 x02 nu schimba tipul
gramaticii.
Vom demonstra ca L(G) = L1 L2 .

Fie p L(G); rezulta ca exista derivarea x0 p. Prima regula


G
aplicata n aceasta derivare este x0 x01 sau x0 x02 , deci derivarea

x0 p este de forma x0 x01 p sau de forma x0 x02 p. In


G

derivarea x01 p se aplica numai reguli din G1 deoarece x01 VN1 si


G

VN1 VN2 = , deci putem scrie x01 p si p L(G1 ) = L1 . Analog,


G1

12

n cazul x02 p derivarea revine la x02 p si p L(G2 ) = L2 . Deci


G
G2
n ambele cazuri p L1 L2 .
Invers, fie p L1 L2 . Din p L1 L2 rezulta ca p L1 sau

p L2 . Daca p L1 = L(G1 ) rezulta ca exista derivarea x01 p


G1

si atunci avem x0 x01 p si p L(G). In mod analog, pentru


G

p L2 = L(G2 ), avem ca p L(G).

Exemple rezolvate
1) Se da gramatica G = ({x0 }, {a, b}, x0 , {x0 ab, x0 ax0 b}). Sa
se arate ca L(G) = {an bn | n 1}.
Rezolvare: Conform definitiei limbajului generat avem ca L(G) =

{p | pGVT x0 p}, deci sunt toate cuvintele din VT care se obtin din
G
x0 prin derivari in G. Pentru a demonstra egalitatea din enunt, trebuie
sa demonstram dubla incluziune.
{an bn | n 1} L(G).

Pentru n = 1 avem: x0 ab, deci ab L(G).


G

Pentru n = 2 avem: x0 ax0 b aabb, deci a2 b2 L(G).


G

Pentru n 3 avem: x0 ax0 b . . . an1 x0 bn1 an bn , deci


G
G
G
G
an bn L(G).
Sa demonstram ca L(G) {an bn | n 1}.
Fie p L(G). Din definitia lui L(G) rezulta ca exista derivarea

x0 p si p VT .
G
Daca la primul pas al derivarii se aplica regula x0 ab, atunci

avem x0 ab si p = ab {an bn | n 1}. Alta posibilitate este sa


G
aplicam la nceput regula x0 ax0 b de ori si apoi regula x0 ab
ca sa eliminam neterminalul x0 , atunci avem:

x ax0 b . . . a x0 b si a+1 b+1 G{an bn | n 1}.


Acestea fiind regulile posibilitatilor avem L(G) {an bn | n 1}.
13

2. Se da gramatica G = ({x0 , x}), {a, b}, x0 , P ) cu P dat prin


1) x0 ax0 .
2) x0 ax.
3) x bx.
4) x b.
Sa se arate ca L(G) = {an bm /n, m 1}.
Rezolvare: Incluziunea .
Pentru n = 1, m = 1,, avem x0 ax ab. Deci ab L(G).
G
G
Pentru n si m arbitrari se aplica regula 1 de n 1 ori, dupa care se
aplica regula 2 si apoi se aplica regula 3 de m 1 ori si la sfarsit regula
4.
X0 ax0 . . . an1 x0 an x an bx . . . an bm1 x an bm .
G

Deci an bm L(G).
Sa demonstram acum ca L(G) {an bm /n, m 1} Fie p L(G);

atunci avem x0 p si p {a, b} .


G
Sa analizam cum poate fi derivarea. La nceput trebuie sa se aplice
regulile 1) sau 2) dupa care trebuie sa se aplice 3) si n final regula 4).
Deci putem considera ca se aplica regula 1) de l ori, cu l 0 (daca
l = 0 regula 1) nu se aplica) dupa care obligatoriu se aplica regula 2)
ca sa eliminam x0 . Aplicarea regulei 2) ne genereaza neterminalul x,
deci mai departe se pot aplica regulile 3) de k ori cu k 0 (daca k = 0
regula 3) nu se aplica) si apoi regula 4) pentru a elimina neterminalul
x. Derivarea are forma:
x0 ax0 . . . al x0 al+1 x al+1 bx . . . al+1 bk x al+1 bk+1 .
G

si avem al+1 bk+1 {an bm |n, m 1}.


3. Fie gramatica G = ({x0 , x}, {a, b, c}, x0 , P ) cu P dat prin:
14

1. x0 ax0 xc
2. x0 abc
3. cx xc
4. bx bb
Sa se arate ca L(G) = {an bn cn |n 1}.
Rezolvare. Sa demonstram ntai ca {an bn cn |n 1} L(G).
Pentru n = 1. Din regula 2) avem x0 abc, deci abc L(G).
Pentru n = 2. Aplicam ntai regula 1) si apoi regula 2) si apoi
regulile 3) si 4). Avem:
x0 ax0 xc a2 bcxc a2 bxc2 a2 b2 c2 .
Pentru n > 2. Vom aplica regula 1) de (n 1) ori si apoi regula 2
si obtinem:
x0 ax0 xc an1 x0 (xc)n1 an bc(xc)n1 .
Mai departe aplicam regula 3) ncat sa comutam toti x cu c si apoi
aplicam de (n 1) n regula 4). Avem:

x0 an bc(xc)n1 an bxn1 cn an bn cn .
Acum sa demonstram ca L(G) {an bn cn |n 1}.

Fie p L(G). Atunci avem x0 p si p {a, b, c} . Derivarea


G

x0 p poate ncepe cu regula 2) sau cu regula 1). Daca ncepe cu


G
regula 2) avem x0 abc si abc {an bn cn |n 1}. Daca se aplica la
G
nceput regula 1) de l ori dupa care trebuie sa aplicam regula 2) sa
eliminam x0 .

Avem: x0 al x0 (xc)l al+1 bc(xc)l .


G
Mai departe trebuie sa eliminam toti neterminalii x. Acest lucru
se face prin comutarea neterminalilor x cu c si apoi se aplica regula 4). Comutarea x cu c se poate face cate un x si apoi aplicam
regula 4), efectul este acelasi. Acestea sunt singurele posibilitati de

derivare. Deci obtinem x0 al+1 bc(xc)l al+1 bl+1 cl+1 , al+1 bl+1 cl+1
G
{an bn cn |n 1} si prin urmare.
4. Fie gramatica G = ({x0 , x1 , x2 }, {a, b, c}, x0 P ) cu P dat prin:
15

1. x0 abc
2. x0 ax1 bc
3. x1 b bx1
4. x1 c x2 bcc
5. bx2 x2 b
6. ax2 aax1
7. ax2 aa
Sa se arate ca L(G) = {an bn cn |n 1}.
Sa demonstram ca {an bn cn |n 1} L(G).
Pentru n=1. Aplicand regula 1) avem x0 abc, deci abc L(G).
Pentru n=2. Aplicam ntai regula 2) si apoi 3), 4), 5) si 7) avem
x0 ax1 bc abx1 c abx2 bcc ax2 bbcc a2 b2 c2 , deci a2 b2 L(G).
G
G
G
G
G
Vom demonstra ca daca avem un cuvant

I
j

aj+1 bj+1 cj+1

j j

() a x1 b c

aj+1x1 bj+1 cj+1

II

Sa analizam posibilitatile de derivare din ajx1 bj cj . Se poate analiza


numai regula 3) de j ori.

aj x1 bj cj aj bj x1 cj .
Mai departe se poate aplica regula 4) si apoi regula 5) de j ori si
acestea sunt singurile reguli care se pot aplica. Avem:

aj x1 bj cj Caj bj x1 cj aj bj x2 bcj+1 aj x2 bj+1 cj+1 .


Acum avem doua posibilitati. Putem aplica sau regula 6) sau
regula 7).
I
j

j+1 j+1

a x2 b

aj+1 bj+1 cj+1

II

aj+1 x1 bj+1 cj+1


16

Acum sa aratam ca pentru n 3, an bn cn L(G). x0 ax1 bc, dar


ax1 bc este de forma aj x1 bj cj cu j = 1. Vom aplica relatia (*) varianta
II de (n 2) ori, la fiecare aplicare creste exponentul lui a, b si c cu o
unitate si aplicam I deci obtinem:
II

x0 ax1 bc an1 x1 bn1 cn1 an bn cn .


G

deci an bn cn L(G).
Sa demonstram ca L(G) {an bn cn /n 1}.

Fie p L(G). Din definitia lui L(G) rezulta ca avem x0 p si


G
p {a, b, c} .

In derivarea x0 p se poate aplica la primul pas sau regula 1) sau


regula 2). Daca se aplica regula 1) avem x0 abc si abc {an bn cn |n
1}.
Daca se aplica regula 1), avem x0 ax1 bc si ax1 bc este de forma
aj x1 bj cj cu j = 1. Din relatia (*) avem ca singurile cuvinte care se
obtin din x0 si contin numai terminali sunt de forma aj bj cj si aj bj cj
{an bn cn |n 1}.
Tema de Control (1)
1) Sa se arate ca gramatica G = ({x0 , x, y}, {a, b, c}, x0, P ).
Cu P :
1) x0 xy
2) x axb
3) x ab
4) y cy
5) y c
genereaza limbajul L(G) = {an bn cm |n, m 1}.
2) Sa se construiasca o gramatica care genereaza limbajele
{an bn cm |n, m 1} si {an bm cn |n, m 1}.
3) Sa se arate ca gramatica G = ({x0 x3 , x2 }, {a, b, c}, x0 )P , cu P :
17

1) x0 ax0 x1 x2
2) x0 ax1 x2
3) x1 x2 x1 x2
4) ax1 ab
5) bx1 bb
6) bx2 bc
7) cx2 cc
genereaza limbajul {an bn cn |n 1}.
4) Sa se arate ca gramatica G = ({A, B, C, E, F }, {M, b, c}, A, P )
cu p :
1) A aAB
2) A abC
3) CB EB
4) EB EF
5) EF BF
6) BF BC
7) C c
8) bB bbc
genereaza limbajul L(G) = {an bn cn |n 0}.
5) Sa se arate ca gramatica G = ({S, A, B, C}, {a}, S, P ) cu P :
1) S BAB
2) BA BC
18

3) CA AAC
4) CB AAB
5) A a
6) B x
n

genereaza limbajul L(G) = {a2 |n 0}.


6) Sa se arate ca gramatica G = ({S, X, A, B}, {, a}, S, P ) cu P :
1) S
2) S B
3) S AABB
4) A XA
5) XA AX
6) XB AAB
7) X B
8) A a
9) B a
2

genereaza limbajul L(G) = {an |n 0}.

19

Tema 2
Automate finite si gramatici
de tip trei
1

Automate finite

In acest capitol vom introduce notiunea de automat finit, vom


studia proprietatile lui si vom arata ca familia limbajelor acceptate de
automatele finite este egala cu familia L3 .
Definitia 2.1.1. Un automat determinist este un 5-uplu
A = (S, , , s0 , F ) unde:
- S este o multime nevid
a, numita multimea starilor;
- este o multime nevid
a si finit
a numita alfabet de intrare;
- este o functie : S S numita functie de tranzitie directa;
- s0 S se numeste stare initiala;
- F S este multimea starilor finale.
Daca S este finita, atunci automatul este automat finit si n practica, acest tip de automate intereseaza.
Un model pentru un automat finit este format dintr-un dispozitiv
de control care se poate afla la un moment dat ntr-o stare din S si
care este prevazut cu un cap de citire cu acces la o banda de intrare pe
care este scris un cuvant din . Automatul aflandu-se n starea s si
citind de pe banda un simbol c va trece n starea (s, c) si va deplasa
capul de citire cu o locatie la dreapta.
21

a b c d c a d
6

Unitate
de control
Fig. 2.1. Model pentru automat determinist
Specificarea unui automat finit revine la precizarea multimilor
S, , F , a starii initiale s0 si la definirea functiei de tranzitie directa .
Definirea functiei de tranzitie se poate face fie tabelar, fie cu ajutorul
unui graf orientat etichetat, care descrie functionarea automatului sau
ca expresie analitica. Descrierea functiei de tranzitie tabelar se face
utilizand o matrice de dimensiune |S| ||, cate o linie pentru fiecare
s S.

i
..
.

s (s, i)
..
.
Fig. 2.2. Tabelul functiilor de tranzitie
Al doilea procedeu consta n atasarea unui graf orientat etichetat
numit graful tranzitiilor (sau uneori diagrama de tranzitie a automatului).
Definitia 2.1.2. Graful tranzitiilor automatului finit
A = (S, , , s0 , F ) este un cuplu (G, ) unde G = (S, U) este un graf
orientat, avand ca multime de noduri, multimea starilor automatului
S si ca multime de arce multimea U = {(sj , sk ), i , (sj , i) = sk },
iar : U P() este o functie de etichetare a arcelor definita n
modul urmator: pentru fiecare arc u U (u) = {i | i , u =
(sj , sk ), (sj , i) = sk }.
Convenim ca pentru starile finale sa desenam doua cercuri, iar
starea initiala sa o marcam printr-o sageata.
22

Exemplul 2.1.3. Consideram automatul


A = ({s0 , s1 , s2 }, {0, 1}, , s0, {s1 , s2 })
si functia definita ca n Figura 2.3.
0 1
s0 s1 s2
s1 s1 s0
s2 s2 s1
Fig. 2.3. Functia de tranzitie
definita tabelar

Rj
s0
0
1
6
1
0
0
W9

j 1 q s1m
j
w s2m

Fig. 2.4. Graful de tranzitii

Functia de tranzitie : S S o putem extinde la S


astfel ncat pentru o stare s si un cuvant p starea (s, p) sa fie
starea n care ajunge automatul dupa parcurgerea celor l(p) simboli
ai cuvantului p.
Definitia 2.1.4. Fie A = (S, , , s0 , F ) un automat. Definim
extensia lui , b : S S prin:
b ) = s, s S;
1) (s,
b
b u), a); s S, u , a .
2) (s, ua) = ((s,

Pentru simplitatea notatiei convenim sa notam n continuare n loc


b Se justific
b u) = (s, u) s S, a .
de .
a acest lucru deoarece (s,
Teorema 2.1.5. Fie A = (S, , , s0 , F ) si p, q . Atunci are
loc egalitatea:
(1)
(s, pq) = ((s, p), q), s S.

Demonstratie. Vom demonstra egalitatea (1) prin inductie dupa


lungimea cuvantului q.
Pentru l(q) = 0, deci q = , avem: (s, p) = ((s, p), ), care
revine la (s, p) = (s, p) si deci (1) este adevarata.
Presupunem egalitatea (1) adevarata pentru cuvinte de lungime
cel mult n si o demonstram pentru cuvinte de lungime n + 1. Fie
q = qi cu i si q cu l(q) = n, deci l(q ) = n + 1.

23

Avem (s, pq ) = (s, pqi) = ((s, pq), i) = (((s, p), q), i) =


((s, p), qi) = ((s, p), q ). S-a folosit ipoteza inductiva si egalitatea
2) din Definitia 2.1.4.
Definitia 2.1.6. Limbajul acceptat de un automat
A = (S, , , s0 , F ) este definit prin:
L(A) = {w | w , (s0 , w) F }.
Definitia 2.1.7. Un limbaj L este regulat daca exista un automat finit A pentru care sa avem L = L(A).
Multimea limbajelor regulate o notam cu LR .
Teorema 2.1.9. Orice limbaj L P( ) este acceptat de un
automat convenabil ales.
Demonstratie. Fie automatul A = ( , , , , L), unde (p, i) =
pi, p si i . Automatul A este infinit deoarece multimea
starilor este infinita.
Functia o putem extinde : ca n Definitia 2.1.4. si
avem (p, q) = p q.
Sa aratam ca L = L(A).
Fie q L atunci avem q = (, q), de unde rezulta ca q L(A).
Invers, fie q L(A); rezulta ca (, q) L, dar (, q) = q L.

Caracterizarea limbajelor regulate cu


ajutorul relatiilor de echivalent
a

In acest paragraf vom da o alta caracterizare a limbajelor regulate


decat aceea ca sunt acceptate de automate finite deterministe.
Fie L un limbaj, L . Vom considera
a:
( functia caracteristic
1 daca p L
L : {0, 1} definita prin L (p) =
0 daca p 6 L.

24

Definitia 2.2.1. Fiecarui limbaj L i atasam relatia L definita


prin L = {(p, q) | p, q , L (pr) = L (qr), r }.
Relatia L se poate defini si n modul urmator: cuvintele p si q
sunt n relatia L daca pr si qr apartin sau nu limbajului L pentru
orice r .
Observatia 2.2.2. Relatia L este o relatie de echivalenta.
Observatia 2.2.3. Echivalenta L este compatibila cu concatenarea la dreapta, adica (p, q) L implica (pu, qu) L oricare
ar fi u .
Intr-adevar, oricare ar fi r avem
L ((pu)r) = L (p(ur)) = L (q(ur)) = L ((qu)r).
Definitia 2.2.4. O relatie de echivalenta peste o multime M
este de rang finit, daca |M/| este finit.
Definitia 2.2.5. Fie A = (S, , , s0 , F ). Consideram relatia A,s0
atasata automatului A definita prin
A,s0 = {(p, q) | p, q , (s0 , p) = (s0 , q)}.
Observatia 2.2.6. Relatia A,s0 este o relatie de echivalenta.
Relatia A,s0 este compatibila cu concatenarea la dreapta.
Teorema 2.2.7. Daca limbajul L este acceptat de automatul
A = (S, , , s0 , F ) atunci A,s0 L .
Demonstratie. Trebuie sa demonstram ca (p, q) A,s0 implica
(p, q) L . Din (p, q) A,s0 avem ca (s0 , p) = (s0 , q). Fie r un
cuvant arbitrar, atunci avem pr L daca si numai daca (s0 , pr) F
daca si numai daca ((s0 , p), r) = ((s0 , q), r) = (s0 , qr) F daca
si numai daca qr L. Deci L (pr) = L (qr), ceea ce implica (p, q)
L .
Teorema 2.2.8. Fie A = (S, , , s0 , F ); exista o injectie
25

: /A,s0 S.
Demonstratie. Definim functia : /A,s0 S prin ([p]) =
(s0 , p), oricare ar fi [p] /A,s0 . Functia este bine definita; nu
depinde de reprezentatul clasei. Fie q [p]A,s0 , atunci [q]a,s0= [p]A,s0 .
Avem ([q]A ,s0 ) = (s0 , q) = (s0 , p) = ([p]A,s0 ). Se verifica imediat ca este injectiva. Intr-adevar, ([p]A,s0 ) = ([q]A,s0 ) implica
(s0 , p) = (s0 , q), care nseamna [p]A,s0 = [q]A,s0 .
Teorema 2.2.9. Limbajul L este acceptat de un automat finit
daca si numai daca L are rang finit.
Demonstratie. Sa demonstram ca, L acceptat de un automat A
finit implica L are rang finit. Din teorema 2.2.8. rezulta ca exista
injectia
: /A,s0 S, de unde rezulta ca | /A,s0 | |S|. Din teorema
2.2.7. rezulta ca A,s0 L care implica ca | /L | | /A,s0 | |S|.
Cum |S| este finit, rezulta ca | /L | este finit, deci L are rang finit.
Invers, sa demonstram ca, L are rang finit implica L este limbaj
regulat.
Consideram automatul AL = ( /L , , , []L , {[w]L | w L}).
Definim functia de tranzitie : /L /L prin
([p]L , i) = [pi]L , p si i .
Sa observam ca functia este bine definita, adica nu depinde de
reprezentantul clasei. Fie q [p]L . Din q [p]L rezulta (p, q) L
care implica (pi, qi) L , i si astfel [pi]L = [qi]L . Prelungim
functia de tranzitie la prin ([p]L , q) = [pq]L . Automatul AL
este automat finit, deoarece este finit si | /L | este finit.
Sa demonstram ca L = L(AL ). Fie p L, rezulta ca [p]L
{[w]L | w L}. Dar ([]L , p) = [p]L {[w]L | w L}, de unde
p L(AL ).
Invers, fie p L(AL ), rezulta ca ([]L , p) {[w]L | w L}, de
unde [p]L {[w]L | w L}. Deci exista w L cu (p, w) L , care
implica L (pr) = L (wr), oricare ar fi r . Luam r = , avem
L (p) = L (w) = 1, de unde p L.
26

Consecinta 2.2.10. Daca L este un limbaj regulat, atunci automatul AL este, conform teoremei 2.2.9., automatul cu cele mai
putine stari care accepta limbajul L.
Demonstratie. Intr-adevar, daca A = (S, , , s0 , F ) un automat
finit care accepta limbajul L, atunci din demonstratia teoremei precedente avem ca | /L | |S|. Dar automatul AL are ca multime de
stari /L si am aratat ca accepta limbajul L.
Automatul AL l vom numi, din acest motiv, automatul minimal
al limbajului L.
Teorema precedenta se poate utiliza pentru a arata ca unele limbaje nu sunt limbaje regulate. Pentru aceasta se arata ca relatia de
echivalenta atasata limbajului nu are rang finit.
Fie limbajul L = {an bn | n 1}, peste alfabetul {a, b}. Acest
limbaj este un limbaj independent de context, fiind generat de o gramatica care are regulile x0 ax0 b si x0 ab, care satisfac conditiile
pentru acest tip de gramatica. Sa aratam ca acest limbaj nu este regulat. Presupunem ca limbajul L este regulat. Consideram echivalenta
L atasata limbajului L, care are rang finit deoarece L este regulat.
Consideram sirul de cuvinte a, a2 , . . . , an , . . .. Deoarece L are rang
finit, exista i < j astfel ncat (ai , aj ) L . Relatia L este compatibila cu concatenarea la dreapta, deci (ai bj , aj bj ) L . Aceasta este
imposibil, deoarece aj bj L si ai bj 6 L, deci L (ai bj ) 6= L (aj bj ).
Teorema precedenta ne permite sa gasim pentru un limbaj regulat
un automat finit AL care sa accepte acest limbaj.
Vom defini o alta relatie de echivalenta care sa caracterizeze
multimea limbajelor regulate.

Constructia automatului minimal


Fie A = (S, , , s0 , F ) un automat finit determinist.
Definitia 2.3.1.

Definim functia caracteristica a multimii F ,

27

: S {0, 1}, prin (s) =

1 daca s F
0 daca s 6 F.

Definitia 2.3.2. Starile s1 si s2 se numesc k- inseparabile n raport


k
cu F , notat s1 s2 , daca pentru orice p cu l(p) k, avem
k

((s1 , p)) = ((s2 , p)). Se verifica imediat ca relatia S S este


o relatie de echivalenta, adica este reflexiva, simetrica si tranzitiva.
Definitia 2.3.3. Starile s1 si s2 sunt inseparabile n raport cu F
daca si numai daca ele sunt k-inseparabile n raport cu F pentru orice
k N.
Vom nota aceasta relatie cu . Se poate arata ca este o relatie de

T k
echivalenta. Din definitia lui rezulta ca =
{ |k N}.
k=0

Definitia 2.3.4. Fie A = (S, , , s0 , F ) un automat finit determinist. O stare s S este accesibila daca exista p astfel ncat
s = (s0 , p) si inaccesibila n caz contrar.
Definitia 2.3.5. Un automat A = (S, , , s0 , F ) se numeste redus
daca nu are stari inaccesibile.

Fiind dat un automat finit determinist A = (S, , , s0 , F ), fie S


starile sale accesibile si F = S F . Consideram automatul A =
(S , , , s0 , F ). Automatul A este redus si n plus L(A) = L(A ).
Intr-adevar, p L(A) (s0 , p) F (s0 , p) F p L(A ).
Dam fara demonstratie urmatoarea lema:
k
Lema 2.3.6 Pentru orice k 1, s1 , s2 S avem s1 s2 daca si
k1
k1
numai daca s1 s2 si (s1 , i) (s2 , i), i .
k

k1

Din lema precedenta rezulta ca , k 1.


Teorema 2.3.9. Fie automatul A = (S, , , s0 , F ) cu |S| = n.
Starile s1 si s2 sunt inseparabile n raport cu F daca si numai daca ele
sunt (n 2)-inseparabile n raport cu F .

28

Demonstratie.
Daca starile s1 si s2 sunt inseparabile atunci ele sunt si (n 2)-inseparabile. Acest fapt decurge din definitiile date.
Invers, sa demonstram ca daca starile s1 si s2 sunt (n 2)-inseparabile atunci ele sunt si inseparabile.
k
k1
Din incluziunea , oricare ar fi k 1, rezulta urmatorul sir
de incluziuni:
k

k1

k2

... ...

(1)

Clasele de echivalenta pentru relatia sunt F si S F , deoarece


singurul cuvant de lungime 0 este si (s, ) = s, oricare ar fi s S,
0
asadar avem ca s1 s2 daca si numai daca s1 , s2 F sau s1 , s2
/F.
Din sirul de incluziuni (1) rezulta urmatorul sir de inegalitati:
(2)

2 = |S/ | |S/ | . . . |S/ | . . . |S/| |S| = n

Deoarece multimea S este finita, rezulta ca exista un k pentru care


k
k+1
avem |S/ | = |S/ |. Fie k cel mai mic numar natural pentru
k

k+1

care avem |S/ | = |S/ |. Deci n (2) avem


k

2 < |S/ | < . . . < |S/ | n

(3)

Deoarece primele k inegalitati din (3) sunt stricte rezulta ca


k

k + 2 |S/ | n
de unde rezulta k n 2.
k+j
k
Se poate demonstra prin inductie dupa j ca S/ = S/ , oricare ar
fi j 1. Atunci relatia (1) devine:
0

(1 )

k+1

n2

... = = ... = ... =


n2

Deci = .
Vom construi automatul minimal care sa accepte un limbaj L,
recunoscut de un automat A = (S, , , s0 , F ). Putem considera, dupa
29

cum am vazut mai nainte, ca automatul A este redus. Am aratat


nainte ca automatul AL este minimal, adica are cele mai putine stari
si este echivalent cu A (i.e. recunosc acelasi limbaj).
Consideram automatul A = (S/, , , [s0 ] , {[s] , s F }) cu
([s] , i) = [(s, i)] , s S si i . Functia este bine definita,
nu depinde de reprezentantul clasei [s] . Intr-adevar, din (s1 , s2 )
avem ca ((s1 , i), (s2 , i)) (Lema 2.3.6).
Definitia 2.3.10. Doua automate A1 = (S1 , , 1 , s01 , F1 ) si A2 =
(S2 , , 2 , s02 , F2 ) sunt izomorfe daca exista o bijectie h : S1 S2 ,
compatibila cu functiile de tranzitie, adica: h(1 (s, i)) = 2 (h(s), i)),
s S si i .
Se poate demonstra usor urmatoarea lema:
Lema 2.3.7 Doua automate izomorfe A1 = (S1 , , 1 , s01 , F1 ) si
A2 = (S2 , , 2 , s02 , F2 ), cu izomorfismul h : S1 S2 care satisface
conditiile h(s01 ) = s02 si h(F1 ) = F2 , recunosc acelasi limbaj.
Teorema 2.3.11. Fie L un limbaj regulat acceptat de
automatul redus A = (S, , , s0 , F ). Automatul AL este izomorf cu
automatul A = (S/, , , [s0 ] ,{[s] , s F }).
Demonstratie. Stim ca AL = ( /L , , , []L ,{[p]L , p L}),
cu ([p]L , i) = [pi]L , p , i .
Definim aplicatia h : /L S/ prin h([p]L ) = [(s0 , p)] .
Se poate arata ca functia h este bine definita, adica nu depinde de
reprezentantul clasei [p]L .
Sa aratam ca h este bijectie. In primul rand h este surjectiva, deoarece oricare ar fi [(s0 , p)] S/ exista [p]L astfel ncat
h([p]L ) = [(s0 , p)] .
Functia h este injectiva. Intr-adevar, din h([p]L ) = h([q]L )
avem [(s0 , p)] = [(s0 , q)] , de unde rezulta (((s0 , p), r)) =
(((s0 , q), r)), deci ((s0 , pr)) = ((s0 , qr)), r . Dar
ultima egalitate implica faptul ca (s0 , pr), (s0 , qr) F sau
(s0 , pr), (s0 , qr) 6 F , de unde pr, qr L sau pr, qr 6 L, r ,
deci [p]L = [q]L .
30

Se poate arata ca h este compatibila cu functiile de tranzitie, deci


A si AL sunt izomorfe, si ca h([]L ) = [s0 ] si h({[p]L | p L}) =
{[s] | s F }, deci L(AL ) = L(A ). Deoarece ntre starile celor doua
automate exista o bijectie, rezulta ca cele doua automate au acelasi
numar de stari, deci amndoua sunt minimale pentru limbajul L.
In continuare vom prezenta algoritmul de constructie a automatului minimal echivalent cu un automat A. Intai vom construi un
automat redus echivalent cu A, prin algoritmul ACC dat mai jos, ce
determina starile accesibile, iar apoi vom construi automatul minimal
prin algoritmul MIN.
Algoritmul ACC
Intrare: Un automat A = (S, , , s0 , F )
Iesire: Starile accesibile S , F = F S si automatul redus
A = (S , , , s0 , F ).
Pas1. G0 = {s0 }; i = 0;
Pas2. i = i + 1; Gi = Gi1 (Gi1 , );
Pas3. Daca Gi = Gi1 , atunci S = Gi ; treci la Pas4,
altfel treci la Pas2.
Pas4. F = F S si A = (S , , , s0 , F ), unde este restrictia lui la S .
Se poate demonstra usor ca o stare este accesibila daca si numai
daca ea apartine multimii S calculate de algoritmul ACC.
Algoritmul de constructie a automatului minimal este:
Algoritmul MIN
Intrare: Un automat A = (S, , , s0 , F ) care recunoaste limbajul
L.
Iesire: Automatul minimal Amin care recunoaste L.
Pas1 Se aplica algoritmul ACC si se determina automatul redus
A = (S , , , s0 , F ).
Pas2 Se calculeaza S /.
Pas3 Amin = (S /, , , [s0 ] , {[s] , s F }).

31

Automate nedeterministe

Definitia 2.4.1. Un automat nedeterminist este un 5-uplu


A = (S, , , s0 , F ) unde:
- S este o multime nevida, multimea starilor automatului nedeterminist;
- este o multime nevida si finita, alfabetul de intrare a automatului nedeterminist;
- : S P(S), functia de tranzitie;
- s0 S este starea initiala a automatului;
- F S este multimea starilor finale.
Daca S este finita, atunci automatul nedeterminist este finit.
Vom considera mai departe numai automate nedeterministe finite.
Faptul ca pentru un (s, i) S , (s, i) este o multime, se interpreteaza ca automatul nedeterminist fiind n starea s si primind ca
intrare simbolul i, poate trece n oricare din starile multimii (s, i), de
unde si denumirea de nedereminist deoarece starea urmatoare nu este
unic determinata, ea va fi aleasa dintr-o multime de stari.
Ca si la automate deterministe finite, definitia functiei de tranzitie
se poate face fie tabelar fie cu ajutorul grafului de tranzitie atasat
automatului. Functia de tranzitie se poate da ca o matrice cu |S| linii
si || coloane, iar elementele matricei sunt (s, i).
Exemplul 2.4.2. Fie automatul finit nedeterminist
A = ({s1 , s2 , s3 }, {a, b}, , s1 , F ) unde este definita prin:

a
S\
s1
{s1 }
s2
{s1 , s3 }
s3
{s1 , s2 }

b
{s1 , s2 }
{s3 }
{s2 }

Fig. 2.4.2.
32

O alta posibilitate de a da functia de tranzitie este cu ajutorul grafului


de tranzitie.
Definitia 2.4.3. Graful tranzitiilor automatului finit nedeterminist A = (S, , , s0 , F ) este cuplul (G, ) unde G = (S, U) este un
graf orientat avand ca multime de varfuri multimea starilor S, iar ca
multime de arce multimea U definita prin U = {(sj , sk ) | sj , sk
S, i , sk (sj , i)}. Functia de etichetare : U P() este
definita prin (u) = {i | i , u = (sj , sk ), sk (sj , i)}, u U.
Graful tranzitiilor automatului finit nedeterminist A din exemplul
precedent este urmatorul:
a, b

N
s
ys1



b
a

s2



)


a, b
a, b

a


s3

:

Fig. 2.4.3.
Un automat nedeterminist pentru care |(s, i)| = 1, (s, i) S
poate fi privit ca un automat determinist. Deci automatele nedeterministe sunt mai generale (se identifica multimile cu un element, cu
elementul nsusi).
Functia de tranzitie : S P(S) se poate extinde la S
prin:
b ) = {s}, s S;
1. (s,

b pi) = S{(s , i) | s (s,


b p)} s S, p , i .
2. (s,

Definitia 2.4.4. Limbajul acceptat de automatul finit nedeterminist A = (S, , , s0 , F ) este L(A) = {p|p , (s0 , p) F 6= }.

33

Conform acestei definitii, un cuvant p este n limbajul L(A)


daca automatul, primind la intrare simbolurile cuvantului p, are posibilitatea sa ajunga ntr-o stare finala din starea initiala, sau n graful
tranzitiilor exist
a cel putin un drum cu arcele etichetate cu simbolurile lui p de la s0 la o stare din F .
Observatia 2.4.5. Se poate defini limbajul acceptat de un automat nedeterminist si prin L(A) = {p | p si (s0 , p) F }, dar
aceasta definitie este mai restrictiva.
Fiecarui automat finit determinist A = (S, , , s0 , F ) i corespunde un automat finit nedeterminist A = (S, , , so , F ) astfel ncat
L(A) = L(A ).
Definim (s, i) = {(s, i)}, (s, i) S . Se verifica imediat
prin inductie dupa lungimea cuvantului p ca (s, p) = {(s, p)},
(s, p) S .
Folosind definitiile limbajelor acceptate de automate finite deterministe si nedeterministe, avem:
L(A ) = {p | p , (s0 , p) F 6= }={p | p , (s0 , p) F 6=
}={p | p , (s0 , p) F } = L(A).
De aici rezulta ca limbajele acceptate de automatele finite deterministe sunt acceptate si de automatele finite nedeterministe.
Interesant este ca multimea limbajelor acceptate de automatele finite nedeterministe coincide cu multimea limbajelor acceptate de automatele finite deterministe. Pentru aceasta, trebuie sa mai aratam
ca pentru orice limbaj care este acceptat de un automat finit nedeterminist exista un automat finit determinist care sa accepte acest
limbaj.
Teorema 2.4.6. Fie L un limbaj acceptat de un automat finit
nedeterminist A = (S, , , s0 , F ). Exista un automat finit determinist
care accepta limbajul L.
Demonstratie. Consideram automatul finit determinist
A = (P(S), , , {s0 }, F ) unde F = {S | S S, S F =
6 } si
: P(S) P(S) este definita prin:

34

(S , i) =

( S

{(s, i)|s S }, S P(S), daca S =


6

,
daca S = .

Putem extinde : P(S) P(S) prin


1. (S , ) = S , S P(S);
2. (S , pi) = ( (S , p), i), S P(S), p , i .
Sa demonstram acum urmatoarea egalitate:
(1)

(s, p) = ({s}, p), s S, p .

Egalitatea (1) o demonstram prin inductie dupa lungimea cuvantului


p.
Pentru l(p) = 0, adica p = , avem (s, ) = {s} = ({s}, ).
Presupunem proprietatea adevarata pentru cuvinte de lungime cel
mult n si o vom demonstra pentru cuvinte de lungime n + 1. Fie
q cu l(q) = n si i ; atunci p = qi are lungimea n + 1. Avem
S
(s, p) = (s, qi) = {(s , i)|s (s, q)}. Pentru membrul drept
al egalitatii (1) avem ({s}, p) = ({s}, qi) = ( ({s}, q), i) =
S
S
{(s , i) | s ({s}, q)} = {(s , i) | s (s, q)}; din egalitatea
(1). Aici am folosit ipoteza inductiva ca ({s}, q) = (s, q) 6= . Daca
(s, q) = ({s}, q) = , atunci avem ({s}, p) = = (s, p).
Luand s = s0 avem:
(1 )

(s0 , p) = ({s0 }, p), p .

Vom arata ca L = L(A ). Fie p L; rezulta ca p L(A) = L, de


unde (s0 , p)F 6= , deci (s0 , p) F . Deoarece (s0 , p) = ({s0 }, p)
avem ca ({s0 }, p) F , deci p L(A ).
Invers, fie p L(A ); atunci avem ({s0 }, p) F , deci ({s0 }, p)
F 6= . Din nou, din ({s0 }, p) = (s0 , p) avem ca (s0 , p) F 6= ,
deci p L(A) = L.

35

Limbaje regulate si limbaje de tip 3

In acest paragraf vom arata ca multimea limbajelor regulate, LR ,


coincide cu multimea limbajelor de tip trei, L3 .
Teorema 2.5.1. Orice limbaj regulat este un limbaj de tip trei.
Demonstratie. Fie L un limbaj regulat. Exista un automat finit
determinist A = (S, , , s0 , F ) astfel ncat L = L(A).
Consideram gramatica G = (S, , s0 , P ), cu P = {s is | s =
(s, i)} {s i | (s, i) F } P0 , unde
P0 =

{s0 }, daca s0 F
,
daca s0 6 F.

Aceasta gramatica G este de tipul trei. Sa aratam acum ca


L = L(G). Sa demonstram L L(G). Fie p L, p 6= ; atunci
p = i1 . . . in , n 1, ij , 1 j n. Din p L rezulta
p L(A), deci (s0 , p) F . Consideram urmatorul sir de stari:
s0 , s1 = (s0 , i1 ), . . . , sj = (sj1, ij ), . . . , sn = (sn1 , in ). Deoarece
sn = (sn1 , in ) = ((sn2, in1 ), in ) = (sn2 , in1 in ) = . . . =
(s0 , i1 . . . in ) = (s0 , p) F , avem ca sn F .
Corespunzator sirului de stari considerate mai sus, avem n gramatica G regulile: s0 i1 s1 , s1 i2 s2 , . . ., sn2 in1 sn1 , sn1 in .
Ultima regula este sn1 in deoarece sn F si sn = (sn1 , in ).
Utilizand aceste reguli obtinem n G urmatoarea derivare:
s0 i1 s1 i1 i2 s2 . . . i1 . . . in1 sn1 i1 . . . in deci p L(G).
Daca L, atunci (s0 , ) = s0 F si prin urmare n G avem regula
s0 si derivarea s0 , deci L(G).
Invers, sa demonstram incluziunea L(G) L.
Fie p L(G) cu p 6= . Din p L(G) rezulta ca exista n gramatica

G derivarea s0 p. Daca p = i1 . . . in , n 1, atunci n derivarea

s0 p se aplica succesiv regulile de forma s0 i1 s1 , s1 i2 s2 ,


. . ., sn2 in1 sn1 , sn1 in , ceea ce antreneaza sj = (sj1, ij ),
1 j n si (sn1 , in ) F . Dar (sn1, in ) = ((sn2 , in1 ), in ) =
. . . = (s0 , i1 . . . in ) = (s0 , p) F , deci p L.
36

Daca p = L(G) atunci p se obtine din derivarea s0 . Deci


n gramatica G exista regula s0 . Dar aceasta regula exista numai
daca s0 F si prin urmare, (s0 , ) F , deci L.
Pentru a demonstra incluziunea L3 LR sunt necesare unele rezultate privind limbajele de tip trei. O parte din rezultate le vom demonstra n cadrul mai general al gramaticilor independente de context.
Definitia 2.5.2. Fie G = (VN , VT , x0 , P ) o gramatica independenta de context. Vom spune ca derivarea w1 w2 . . . wn , n 2
este o derivare stanga a lui wn daca pentru fiecare i, 1 i n 1,
wi = i Ai , wi+1 = i ui i , A ui P si i VT .
O derivare stanga este acea derivare n care se nlocuieste simbolul
neterminal cel mai din stanga din cuvant.
Teorema 2.5.3. Fie G = (VN , VT , x0 , P ) o gramatica independenta de context si w L(G). Exista o derivare stanga a lui w din x0
n gramatica G.
Demonstratie. Vom demonstra mai general ca fiecarei derivari

A w, cu A VN si w V i corespunde o derivare stanga A w.


Demonstratia acestei proprietati o facem prin inductie dupa lungimea
derivarii.

Daca A w este de lungime 1, atunci A w P si aceasta

derivare A w este o derivare stanga.


Presupunem proprietatea adevarata pentru toate derivarile de

lungime cel mult k si fie A y w o derivare de lungime k + 1.


Fie y = y1 . . . yn cu yi VN VT , 1 i n. Aplicand teorema de

localizare pentru derivarea y1 . . . yn w, avem ca w = w1 . . . wn si

yi wi , 1 i n. Derivarile yi wi , 1 i n au lungimile
G
G
cel mult k, deci putem aplica pasul inductiv si exista derivarile stangi

yi wi 1 i n. Cum derivarea A y1 . . . yn este o derivare stanga

si apoi aplicam de la stanga spre dreapta derivarile stangi yi wi ,


1 i n, avem A y1 . . . yn w1 y2 . . . yn . . . w1 . . . wn care
este o derivare stanga.

37

Luand A = x0 avem afirmatia teoremei.


Observatia 2.5.4. Pentru gramatici de tipul 2 sau 3, atunci cand
ne va interesa limbajul generat de gramatica, vom putea considera ca
acest limbaj este generat numai prin derivari stangi. Derivarile stangi
le vom nota cu .
st
Definitia 2.5.5. O gramatica G este fara redenumiri daca ea nu
contine reguli de forma x y cu x, y VN .
Evident, o regula de forma x y cu x, y VN nu genereaza nimic,
schimba numai numele simbolului neterminal din x n y, de aceea o
astfel de regula se numeste redenumire.
Teorema 2.5.6. Orice limbaj L de tipul 2 (sau 3) poate fi generat
de o gramatica de tipul 2 (sau 3) fara redenumiri.
Demonstratie. Fie G = (VN , VT , x0 , P ) o gramatica de tipul 2
sau 3 cu L = L(G). Putem considera ca singura regula cu n partea
dreapta, daca exista, este x0 si n acest caz x0 nu apare n partea
dreapta a vreunei reguli.
Daca gramatica G nu are redenumiri, atunci ea satisface cerintele teoremei. In caz contrar, daca G are redenumiri, atunci consideram gramatica G1 = (VN , VT , x0 , P1 ), cu P1 = P P , unde:
P = {x r | x r P si r 6 VN },
+
P = {x r | x y, y r P si r 6 VN }.
G
Multimea P contine toate regulile din P care nu sunt redenumiri,
iar P contine reguli care le formam cu ajutorul redenumirilor. Se
poate arata usor ca L(G) = L(G1 ), adica cele doua gramatici sunt
echivalente.
Observatia 2.5.7. Conform acestei teoreme, limbajele de tipul 2
sau 3 le putem considera ca fiind generate de gramatici de tipul 2 sau
3 fara redenumiri.
Vom arata mai departe ca limbajele de tip 3 pot fi generate de
gramatici de tip 3 care au o forma particulara numita forma normala.
38

Teorema 2.5.8. Fie L un limbaj de tip trei. Exista o gramatica


de tip trei, G = (VN , VT , x0 , P ) care genereaza limbajul L si G are
regulile de forma x1 ix2 , x i sau x0 , caz n care x0 nu apare
n partea dreapta a vreunei reguli, unde x1 , x2 , x VN si i VT .
Demonstratie. Din L L3 , rezulta ca exista o gramatica de tipul
trei fara redenumiri G1 = (VN1 , VT1 , x0 , P1 ) astfel ncat L = L(G1 ).
Daca L, atunci avem regula x0 caz n care x0 nu apare n
partea dreapta a vreunei reguli si aceasta este singura regula cu n
partea dreapta.
Regulile din P1 de forma x1 px2 au l(p) 1, deoarece nu avem
redenumiri.
Daca l(p) = 1, atunci p VT si x1 px2 este de forma ceruta n
teorema.
In cazul cand l(p) 2, fie p = i1 . . . in , n 2. Vom introduce n1 simboli neterminali noi z1 , . . . , zn1 . Regulii x1 px2 P1 i corespunde
n G urmatorul sir de reguli x1 i1 z1 , z1 i2 z2 ,. . . ,zn2 in2 zn1 ,
zn1 in x2 , care au forma ceruta n teorema. Acest lucru l facem
pentru fiecare regula de acest tip.
O regula de forma x p P1 , cu l(p) = 1, o punem si n P . Unei
reguli de forma x p P1 , cu p = i1 . . . in , n 2 si ij VT , 1
j n, i va corespunde n P regulile x i1 v1 , v1 i2 v2 ,. . . ,vn2
in1 vn1 , vn1 in , unde v1 , . . . , vn sunt simboli neterminali noi.
Procedam analog pentru fiecare regula x p P1 .
Fie gramatica G = (VN Z V, VT , x0 , F ), unde Z este multimea
simbolilor neterminali noi adaugati pentru toate regulile de forma
xi px2 si V este multimea simbolilor noi adaugati pentru reguli
de forma x p. Se observa ca aplicarea regulei x1 px2 si aplicarea succesiva a regulilor x1 i1 z1 , z1 i2 z2 ,. . . ,zn1 in x2 are
acelasi efect, adica generarea cuvantului p si n plus ultimul sir de
reguli se pot aplica numai succesiv toate, deoarece z1 , . . . , zn1 sunt
simboli noi. Acelasi lucru se poate spune despre o regula de forma
x p si sirul x i1 v1 , . . . , vn1 in . Din cele de mai sus, avem ca

x0 p x0 p, deci L = L(G).
G1

39

In continuare vom demonstra incluziunea L3 LR . Acest rezultat


este stabilit n teorema urmatoare.
Teorema 2.5.9. Orice limbaj de tip trei este un limbaj regulat.
Demonstratie. Fie L un limbaj de tip 3. Atunci exista o gramatica G = (VN , VT , x0 , P ) de tip 3 care genereaza L. Daca L(G)
atunci exista regula x0 P si x0 nu apare n partea dreapta
a vreunei reguli din P . Putem presupune ca gramatica G este sub
forma normala, adica regulile sale sunt de forma x ix sau x i,
cu x, x VN si i VT .
Pentru a arata ca L este regulat, vom arata ca exista un automat
finit nedeterminist care sa accepte limbajul L. Pentru aceasta, construim automatul finit nedeterminist A = (VN {
x}, VT , , x0 , F ), unde

este definita prin: (x, i) = {x | x ix P } B, unde


B=

{
x}, daca x i P
, n caz contrar.

Multimea F este data prin:


F =

{
x, x0 }, daca x0 P
{
x}, n caz contrar.

Sa aratam ca L(G) = L(A). Demonstram ntai incluziunea


L(G) L(A). Fie p L(G). Vom considera doua cazuri:
1) daca p = , atunci exista n gramatica G regula x0 P , si
prin urmare (x0 , ) = {x0 } F , de unde rezulta ca L(A).
2) daca p 6= , atunci p = i1 . . . ik , k 1 si ij VT pentru orice

1 j k. Deoarece p L(G) rezulta ca exista derivarea x0 p.


G
Din faptul ca gramatica G este n forma normala rezulta ca aceasta
derivare are forma:
x0 i1 x1 i1 i2 x2 . . . i1 i2 . . . ik1 xk1 i1 . . . ik .
G

Deci n gramatica G exista regulile


(1)

x0 i1 xi , x1 i2 x2 , . . . , xk2 ik1 xk1 si xk1 ik .


40

Din definitia functiei de tranzitie , corespunzator sirului (1) avem:


(2)
x1 (x0 , i1 ) , x2 (x1 , i2 ) , . . . , xk1 (xk2 , ik1 ) si x (xk1 , ik ) .
T
innd cont da faptul ca (x, p) (x , i p) daca x (x , i ), pentru
orice x, x VN , i VT si p VT , proprietate ce se demonstreaza prin
inductie dupa lungimea cuvantului p, avem:
x (xk1 , ik ) (xk2 , ik1 ik ) . . . (x0 , i1 . . . ik ) ,
deci x (x0 , p)F , de unde rezulta ca (x0 , p)F 6= , deci p L(A).
Sa demonstram acum incluziunea inversa, L(A) L(G). Fie p
L(A), rezulta ca (x0 , p) F 6= . Vom considera doua cazuri:
1) daca p = , atunci avem (x0 , ) F 6= , de unde x0 F si prin
urmare exista regula x0 P . Din x0 P rezulta ca exista
derivarea x0 , deci L(G).
G
2) daca p 6= , atunci p = i1 . . . ik , k 1 si ij VT pentru 1 j k.
Din (x0 , i1 . . . ik ) F 6= rezulta ca exista starile x1 , . . . , xk1 , x
cu
(3)
x1 (x0 , i1 ) , x2 (x1 , i2 ) , . . . , xk1 (xk2 , ik1 ) si x (xk1 , ik ) .
Ultima apartenenta este x (xk1 , ik ) si nu x0 (xk1 , ik ) deoarece
daca am avea x0 (xk1 , ik ), atunci n gramatica G ar exista regula
xk1 ik x0 , ceea ce contrazice presupunerea ca n regulile lui G, x0
nu apare n partea dreapta. Din apartenentele din sirul (3) si din
definitia functiei rezulta ca n gramatica G avem regulile
(4)

x0 i1 x1 , x1 i2 x2 , . . . , xk2 ik1 xk1 si xk1 ik .

Atunci n gramatica G putem scrie derivarea:


x0 i1 x1 i1 i2 x2 . . . i1 . . . ik1 xk1 i1 i2 . . . ik ,
G

prin urmare p L(G).


Teorema 2.5.10. Familia L3 este nchisa la produs.
Demonstratie. Fie L1 , L2 L3 ; rezulta ca exista gramaticile de
tip 3 G1 = (VN1 , VT1 , x10 , P1 ) si G2 = (VN2 , VT2 , x20 , P2 ) cu L1 = L(G1 ) si
41

L2 = L(G2 ) si VN1 VN2 = . Consideram gramatica G = (VN1 VN2 , VT1


VT2 , x10 , {x px | x px P1 } {x px20 | x p P1 } P2 ).
Gramatica G este de tip 3.
Vom demonstra prin dubla incluziune ca L1 L2 = L(G).
Sa demonstram ntai ca L1 L2 L(G). Fie p L1 L2 atunci
p = p1p2 cu p1 L1 si p2 L2 . Din p L1 rezulta ca exista derivarea

x10 p1 si din p L2 avem x20 p2 . In derivarea x10 p1 se aplica


G1
G2
G1
reguli de forma x qx cu exceptia ultimei reguli care este de forma
x q, cu q VT ; dar n G avem regula corespunzatoare x qx20 .

Deci putem scrie n G urmatoarea derivare x10 p1 x20 p1 p2 , ceea ce


G
G
nseamna ca p L(G).
Invers, L(G) L1 L2 . Fie p L(G) rezulta ca exista derivarea
1
x0 p. Din constructia gramaticii G si din VN1 VN2 = , deoarece
G
numai regulile din P2 pot elimina neterminali, avem ca derivarea de

sus este de forma x10 p1 x20 p1 p2 . In derivarea x10 p1 x20 regulile


G
G
G
aplicate sunt cele din G1 cu exceptia ultimei reguli care este de forma
x x20 cu VT , dar atunci x P1 . Deci putem scrie n G1 ,

x10 p1 si prin urmare p1 L1 . Din p1 x20 p1 p2 avem ca x20 p2 ,


G1

dar aici se aplica numai reguli din P2 , deci x20 p2 si p2 L2 . Dar


G2
p1 L1 , p2 L si p = p1 p2 implica p L1 L2 .
Teorema 2.5.11. Familia L3 este nchisa la operatia .
Demonstratie. Fie L L3 ; trebuie sa demonstram ca L L3 .
Din L L3 rezulta ca exista o gramatica G = (VN , VT , x0 , P ) cu
L(G) = L. Vom construi o gramatica G = (VN , VT , x0 , P {x
px0 | x p P } {x0 }). Gramatica G este de tipul 3. Putem
considera ca n gramatica G, x0 nu apare n membrul drept al vreunei
reguli din P . Vom demonstra ca L(G ) = L .

Incluziunea L(G) L. Fie p L(G ); rezulta ca x0 p. In


G
aceasta derivare punem n evidenta cuvintele care contin x0 . Simbolul
x0 poate sa apara numai n urma aplicarii unei reguli de forma x

x0 . Deci avem x0 p1 x0 p1 p2 x0 . . . p1 . . . pl1 x0


G
G
G
G
G

p1 . . . pl1 pl . In aceasta derivare apar derivarile x0 pi x0 , 1 i


G

42

l 1 si x0 pl . In derivarile x0 pi x0 , 1 i l 1 se aplica numai


G
G
reguli din G cu exceptia ultimei reguli care este de forma x x0 ,
dar atunci n gramatica G avem regula x . Deci n gramatica G

putem scrie derivarile x0 pi , 1 i l 1, deci pi L, 1 i l 1.


G

inand cont ca
Iar derivarea x0 pl este de fapt n G, deci pl L. T
G

p = p1 . . . pl si pi L, 1 i l, rezulta ca p L .
Incluziunea L L(G). Fie p L ; rezulta ca exista k 0
astfel ncat p Lk . Vom considera trei cazuri:
1. k = 0. Atunci p = si n gramatica G avem x0 , deci
G
p L(G );
2. k = 1. Atunci p L si cum regulile lui G sunt si n G , avem

x0 p, deci p L(G );
G

3. k > 1. In acest caz p = p1 . . . pk si pi L, 1 i k, deci

avem x0 pi , 1 i k. Din constructia gramaticii G avem


G

derivarile x0 pi x0 1 i < k si x0 pk . Deci putem scrie

x0 p1 p2 x0 . . . p1 . . . pk1 x0 p1 . . . pk , prin urmare


G
G
G
G
p L(G ).
Teorema 2.5.12. Familia L3 este nchisa la operatiile de complementariere si intersectie.
Demonstratie. Fie L L3 ; trebuie sa demonstram ca L
L3 . Din L L3 rezulta ca exista un automat finit determinist A =
(S, , , s0 , F ) cu L = L(A). Consideram automatul finit determinist
A = (S, , , s0 , S F ). Sa aratam ca L(A ) = L, ceea ce este
echivalent cu p L(A ) daca si numai daca p 6 L(A).
Din p L(A ) avem (s0 , p) S F , deci p 6 L(A).
Din p 6 L(A) avem (s0 , p) 6 F , deci (s0 , p) S F si rezulta
p L(A ). Vom nota L = L.
Pentru nchiderea la intersectie, folosim L1 L2 = L1 L2 si cum
L3 este nchis la reuniune si complementariere, rezulta ca este nchis
la intersectie.
43

O alta proprietate a limbajelor regulate este descrisa de urmatorul


rezultat, pe care-l vom aminti fara demonstratie:
Lema BarHillel. Fie L un limbaj de tip 3. Exista un numar
k astfel ncat oricare ar fi w L cu |w| k, are o descompunere de
forma w = xyz, unde 0 < |y| k si xy i z L oricare ar fi i 0.

Exercitii rezolvate
1) Sa se arate ca automatul A = ({s0 , s1 , s2 }, {a, b}, , s0 , {s0 , s1 }),
cu definita prin graful de tranzitie din figura urmatoare, accepta
limbajul L = {ai bj | i, j 0}.
a
b


U

W

a
b - s1
s0





a,b

- s2 W


Rezolvare: Trebuie sa demonstram ca L(A) = L. Aratam mai


ntai incluziunea L L(A). Sa luam cteva cuvinte: pentru i = j = 0,
ai bj = , (s0 , ) = s0 F , deci L(A). Pentru i = j = 1,
ai bj = ab, (s0 , ab) = ((s0 , a), b) = (s0 , b) = s1 F , deci L(A).
Pentru i, j 0 arbitrari, avem:
i j

(s0 , a b ) = ((s0 , a ), b ) = (s0 , b ) =

s0 F, daca j = 0
,
s1 F, n caz contrar

deci ai bj L(A).
Invers, sa aratam incluziunea L(A) L. Fie p L(A). Atunci
p {a, b} si (s0 , p) F . Vom arata ca p = ai bj cu i, j 0. Pentru
aceasta, consideram mai multe cazuri posibile:
1. p = , atunci (s0 , ) = s0 F si p = = a0 b0 .
2. p = ai , cu i 1, atunci (s0 , ai ) = s0 F si p = ai b0 .
44

3. p = bj , cu j 1, atunci (s0 , bj ) = s1 F si p = a0 bj .
4. p = ai bj , cu i, j 1, atunci (s0 , ai bj ) = ((s0 , ai ), bj ) =
(s0 , bj ) = s1 F si p = ai bj .
5. p = ai bj au, cu i 0, j 1 si u {a, b} . Atunci (s0 , ai bj au) =
((s0 , ai ), bj au) = (s0 , bj au) = ((s0 , bj ), au) = (s1 , au) =
((s1 , a), u) = (s2 , u) = s2 6 F si prin urmare acest caz este
imposibil, deoarece contrazice faptul ca p L(A).
Deci cuvintele din L(A) sunt de forma ai bj , cu i, j 0.
2) Sa se arate ca automatul A = ({s0 , s1 , s2 , s3 , s4 , s5 }, {a, b, c}, , s0, {s4 }),
cu definita prin graful de tranzitie din figura urmatoare, recunoaste
limbajul L = {ab2 cn | n 1}.
c


R
cs0 a- s1 b- s2 b- s3
s4


a, c

b, c

a, c

a, b


R
?
+
s
s5



a, b

a, b, c

Rezolvare: Trebuie sa demonstram ca L(A) = L. Aratam


mai ntai incluziunea L L(A). Pentru n 1 arbitrar, avem:
(s0 , ab2 cn ) = ((s0 , a), b2 cn ) = (s1 , b2 cn ) = ((s1 , b), bcn ) =
(s2 , bcn ) = ((s2 , b), cn ) = (s3 , cn ) = ((s3 , c), cn1) = (s4 , cn1 ) =
s4 F , deci ab2 cn L(A).
Invers, sa aratam incluziunea L(A) L. Fie w L(A). Atunci
w {a, b, c} si (s0 , w) F . Vom arata ca w = ab2 cn cu n 1.
Pentru aceasta, convenim sa notam cu f irst(w) primul simbol al
cuvantului w, daca w 6= . Consideram mai multe cazuri:
1. w = , atunci (s0 , ) = s0 6 F , ceea ce contrazice ipoteza, deci
acest caz nu este posibil.
45

2. daca f irst(w) = b sau f irst(w) = c, atunci w = bw1 sau w =


cw1 si (s0 , w) = (s5 , w1 ) = s5 6 F , ceea ce contrazice ipoteza.
Deci w nu poate ncepe cu b sau c, prin urmare avem w = aw1 .
3. w = aw1 , atunci (s0 , aw1 ) = ((s0 , a), w1 ) = (s1 , w1 ). Acum
trebuie sa tinem cont de faptul ca trebuie sa ajungem n starea
finala s4 .
Daca f irst(w1 ) = a sau f irst(w1 ) = c, atunci (s1 , w1 ) =
s5 6 F , ceea ce contrazice ipoteza. Deci f irst(w1 ) = b,
prin urmare w1 = bw2 si avem (s1 , bw2 ) = ((s1 , b), w2) =
(s2 , w2 ).
Daca f irst(w2 ) = a sau f irst(w2 ) = c, atunci (s2 , w2 ) =
s5 6 F , ceea ce contrazice ipoteza. Deci f irst(w2 ) = b,
prin urmare w2 = bw3 si avem (s2 , bw3 ) = ((s2 , b), w3) =
(s3 , w3 ).
Daca f irst(w3 ) = a sau f irst(w3 ) = b, atunci (s3 , w3 ) =
s5 6 F , ceea ce contrazice ipoteza. Deci f irst(w3 ) = c,
prin urmare w3 = cw4 si avem (s3 , cw4 ) = ((s3 , c), w4) =
(s4 , w4 ).
Cuvantul w4 trebuie sa contina numai simboli c, deoarece
n caz contrar, daca ar contine macar un a sau b, atunci
automatul ar trece n starea s5 pe care nu ar mai parasio, deci nu am putea ajunge n final la s4 . Prin urmare,
w4 = ck , cu k 0, si avem ca w = aw1 = abw2 = abbw3 =
abbcw4 = ab2 ck+1 .
Deci cuvintele din L(A) sunt de forma w = ab2 cn cu n 1.
3) Sa se construiasca automatul minimal corespunzator automatului A = ({s0 , s1 , s2 , s3 , s4 , s5 , s6 , s7 }, {0, 1}, , s0, {s3 , s4 , s5 , s7 }), cu
definita prin graful de tranzitie din figura urmatoare.

46


0 
s2

s0
q s


>
3
0

6



0 ~
1
1

R

s1



N
K 1

1 

 0
s5 
U
0

s7
s6


1




0, 1



U

s4





Rezolvare: Pentru a construi automatul minimal parcurgem


urmatorii pasi:
1) Determinam starile accesibile utilizand algoritmul ACC si gasim
automatul redus echivalent cu A.
2) Calculam clasele de echivalenta ale relatiei n automatul redus.
3) Construim automatul minimal echivalent cu automatul A, Amin =
(S /, , , [s0 ] , {[s] , s F }).
Sa parcurgem pasii de mai sus:
1) G0 = {s0 }, G1 = G0 (G0 , ) = {s0 } {s1 , s2 } = {s0 , s1 , s2 }; cum
G0 6= G1 , continuam calculul multimilor Gi . G2 = G1 (G1 , ) =
{s0 , s1 , s2 } {s3 , s5 , s6 } = {s0 , s1 , s2 , s3 , s5 , s6 }, G1 6= G2 . G3 = G2
(G2 , ) = {s0 , s1 , s2 , s3 , s5 , s6 } {s4 , s5 } = {s0 , s1 , s2 , s3 , s4 , s5 , s6 },
G2 6= G3 . G4 = G3 (G3 , ) = G3 si deci algoritmul ACC se opreste
cu S = G3 = G4 .
Asadar, starile accesibile sunt S = {s0 , s1 , s2 , s3 , s4 , s5 , s6 }, iar automatul redus este A = ({s0 , s1 , s2 , s3 , s4 , s5 , s6 }, {0, 1}, , s0 , {s3, s4 , s5 }),
unde este restrictia lui la S .
2) Sa construim clasele de echivalenta ale relatiei pentru A .
0
Clasele de echivalenta pentru relatia sunt F si S F , deoarece
singurul cuvant de lungime 0 este si (s, ) = s, oricare ar fi s S,
0
asadar avem ca s1 s2 daca si numai daca ((s1 , )) = ((s2 , )),
daca si numai daca (s1 ) = (s2 ), daca si numai daca s1 , s2 F sau
0
s1 , s2
/ F . Deci S / = {F , S F } = {{s3 , s4 , s5 }, {s0, s1 , s2 , s6 }}.
1
Pentru a determina clasele de echivalenta pentru relatia aplicam
47

k1

k1

lema: s1 s2 daca si numai daca s1 s2 si (s1 , i) (s2 , i),


i . Deci pentru ca doua stari sa fie n aceeasi clasa fata de
k
k1
relatia , ele trebuie sa fi fost n aceeasi clasa fata de relatia si, n
plus, (s1 , i) si (s2 , i) sa fi fost si ele n aceeasi clasa fata de relatia
k1

, si aceasta pentru toti simbolii i ai alfabetului de intrare.


1
0
Pentru , luam deci fiecare clasa pentru si verificam daca este
ndeplinita conditia a doua.
I. Pentru clasa {s3 , s4 , s5 } avem:
1) Pentru perechea {s3 , s4 } avem (s3 , 0) = s5 , (s4 , 0) = s5 , si
0
0
(s3 , 1) = s4 , (s4 , 1) = s4 . Deoarece s5 s5 si s4 s4 , rezulta
1
ca s3 s4 .
2) Pentru perechea {s3 , s5 } avem (s3 , 0) = s5 , (s5 , 0) = s5 , si
0
0
(s3 , 1) = s4 , (s5 , 1) = s5 . Deoarece s5 s5 si s4 s5 , rezulta
1
ca s3 s5 .
1

Cum este o relatie de echivalenta, rezulta ca {s3 , s4 , s5 }


1
formeaza o clasa de echivalenta fata de relatia .
II. Pentru clasa {s0 , s1 , s2 , s6 } avem:
1) Pentru perechea {s0 , s1 } avem (s0 , 0) = s1 , (s1 , 0) = s2 , si
0
0
(s0 , 1) = s2 , (s1 , 1) = s6 . Deoarece s1 s2 si s2 s6 , rezulta
1
ca s0 s1 .
2) Pentru perechea {s0 , s2 } avem (s0 , 0) = s1 , (s2 , 0) = s3 , si
0
1
(s0 , 1) = s2 , (s2 , 1) = s5 . Deoarece s1
6 s3 , rezulta ca s0
6 s2 .
3) Pentru perechea {s0 , s6 } avem (s0 , 0) = s1 , (s6 , 0) = s1 , si
0
0
(s0 , 1) = s2 , (s6 , 1) = s2 . Deoarece s1 s1 si s2 s2 , rezulta
1
ca s0 s6 .
1

Cum este o relatie de echivalenta, rezulta ca {s0 , s1 , s6 }


1
formeaza o clasa de echivalenta fata de relatia , iar {s2 }
1
formeaza separat o alta clasa fata de .
48

Deci pentru clasele de echivalenta sunt:


1
S / = {{s3 , s4 , s5 }, {s0 , s1 , s6 }, {s2 }}.
2
1
Similar, pentru , luam fiecare clasa pentru si verificam daca
este ndeplinita conditia a doua din lema amintita mai sus.
III. Pentru clasa {s3 , s4 , s5 } se constata, facand calculele ca la etapa
precedenta, ca {s3 , s4 , s5 } formeaza o clasa de echivalenta fata
2
de relatia .
IV. Pentru clasa {s0 , s1 , s6 } avem:
1) Pentru perechea {s0 , s1 } avem (s0 , 0) = s1 , (s1 , 0) = s2 , si
1
2
(s0 , 1) = s2 , (s1 , 1) = s6 . Deoarece s1
6 s2 , rezulta ca s0
6 s1 .
2) Pentru perechea {s0 , s6 } avem (s0 , 0) = s1 , (s6 , 0) = s1 , si
1
1
(s0 , 1) = s2 , (s6 , 1) = s2 . Deoarece s1 s1 si s2 s2 , rezulta
2
ca s0 s6 .
2

Deci pentru clasele de echivalenta sunt:


2
S / = {{s3 , s4 , s5 }, {s0 , s6 }, {s1}, {s2 }}.
3
2
Apoi, pentru , luam fiecare clasa pentru si verificam daca este
ndeplinita conditia a doua din lema amintita mai sus.
Facand calculele ca la etapa precedenta, se constata ca clasele
{s3 , s4 , s5 }, {s1 }, si {s2 } ramn neschimbate. Pentru perechea {s0 , s6 }
3
3
2
din calculele de mai sus se observa ca s0 s6 , si prin urmare =.
Deci clasele de echivalenta ale relatiei pentru A sunt:
S / = {{s0 , s6 }, {s1}, {s2 }, {s3 , s4 , s5 }} = {[s0 ], [s1 ], [s2 ], [s3 ]} ,
unde prin [s0 ] = {s0 , s6 } am notat clasa lui s0 , prin [s1 ] = {s1 } clasa
lui s1 , s.a.m.d.
3) In final obtinem ca automatul minimal echivalent cu automatul A
este urmatorul: Amin = ({[s0 ], [s1 ], [s2 ], [s3 ]}, {0, 1}, , [s0 ], {[s3 ]}), cu
definita prin graful de tranzitie din figura urmatoare.

49

R


[s0 ]

0

- [s1 ]


1


[s3 ] 







?
s

0, 1

0, 1

[s2 ]



4) Sa se arate ca limbajul L = {an bn | n 1} nu este limbaj regulat


(de tip 3).
Rezolvare: Presupunem prin reducere la absurd ca L este limbaj
regulat. Atunci, aplicand lema Bar-Hillel (lema de pompare), rezulta
ca exista un numar k N astfel ncat cuvintele w L cu |w| k au
proprietatile din lema.
Alegem un cuvant w = an bn cu |w| = 2n k. Consideram
toate cazurile posibile de descompunere a lui w si vom arata ca n
nici un caz nu sunt satisfacute toate proprietatile din lema. Vom face
rattionamentul dupa cuvantul y (cel care se pompeaza).
Cazul I: w = xyz cu y = al bt , l, t 1, si x = anl , z = bnt .
Atunci, stim din lema ca xy i z L, i 0. Dar, luand i = 2, avem
ca xy 2 z = anl al bt al bt bnt = an bt al bn
/ L, din cauza ca apare a dupa
b n acest cuvant (ntruct l, t 1).
Cazul II: y = al , l 1, si x = anlt , z = at bn , cu t 0.
Luam i = 0 si avem ca xy 0 z = xz = anlt at bn = anl bn
/ L, din
cauza ca n l < n.
Cazul III: y = bl , l 1, si x = an bt , z = bnlt , cu t 0.
Luam i = 0 si avem ca xy 0 z = xz = an bt bnlt = an bnl
/ L, din
cauza ca n > n l.
Acestea fiind singurele posibilitati de descompunere w = xyz,
rezulta ca presupunerea pe care am facut-o, aceea ca limbajul L ar
fi regulat, este falsa, deci L nu este limbaj regulat.

50

Tema de control (2)


1) Sa se arate ca automatul A = ({s0 , s1 , s2 , s3 }, {a, b}, , s0 , {s2 }),
cu definita prin graful de tranzitie din figura urmatoare, recunoaste
limbajul L = {an bm | n, m 1}.
a
b



U

W
a - s1 
a
b - s2
s0




b

a,b

- s3 W

3

2) Se considera automatul A = ({s0 , s1 , s2 , s3 }, {0, 1}, , s0, F ), cu


definita prin graful de tranzitie din figura urmatoare.

R

s0




- s1
 0


1
?

s3 



?

s Y


2

0, 1
a) Sa se gaseasca L(A) pentru F
b) Sa se gaseasca L(A) pentru F
c) Sa se gaseasca L(A) pentru F
d) Sa se gaseasca L(A) pentru F

= {s0 } ;
= {s1 } ;
= {s2 } ;
= {s3 } .

3) Sa se arate ca automatul A = ({s0 , s1 , s2 , s3 , s4 }, {a, b, c}, , s0 , {s3 }),


cu definita prin graful de tranzitie din figura urmatoare, recunoaste
limbajul L = {an cbm | n, m 1}.
51


W
R
s0 a- s1


a, c

b, c

b


b
- s2
- s3




R

+
s

a, c

s4




a, b, c

4) Sa se arate ca limbajul Lm = {an bn+m | n 1}, cu m 1 fixat, nu


este limbaj regulat (de tip 3).

52

Tema 3
Limbaje independente de
context si automate
pushdown
1

Automate pushdown nedeterministe

In capitolul precedent am vazut ca familia L3 coincide cu familia limbajelor acceptate de automate deterministe sau nedeterministe. Pentru limbajele din clasa L2 exista un alt tip de automat care sa accepte
limbajele din L2 si anume automate pushdown nedeterministe.
Un model pentru un automat pushdown nedeterminist este dat n
Figura 3.1.1.
Modelul prezentat mai sus consta dintr-o banda de intrare pe care
sunt plasate simboluri dintr-un alfabet de intrare, , o memorie numita memorie pushdown n care sunt plasate simboluri dintr-un alfabet si o unitate de comanda. Unitatea de comanda este prevazuta
cu doua capete de citire, unul pentru banda de intrare, care se poate
deplasa spre dreapta, si unul pentru memoria pushdown care vizeaza
numai primul simbol din memorie. Unitatea de comanda care se afla
ntr-o stare s si vizeaza pe banda de intrare simbolul ai si n memoria pushdown simbolul z1 va trece ntr-o noua stare s , capul de citire
de pe banda de intrare se va deplasa cu o locatie spre dreapta sau
ramane pe loc, iar simbolul z1 din memoria pushdown se nlocuieste

53

a1 a2 a3 a4 a5

...

ai
6

Unitatea
de
comanda

...

banda
de
intrare

z1
z2
..
.
zn
..
.

memorie
pushdown
Fig. 3.1.1.

cu un cuvant peste alfabetul . Inlocuirea lui z1 cu se face cu


mpingerea n jos a simbolurilor z2 , . . . , zn , daca || > 1, astfel ca se
plaseaza n capul stivei, de aici denumirea de pushdown (cu toate ca
daca || = 0 simbolurile din memoria pushdown urca, iar cand || = 1
aceste simboluri raman pe loc).
Definitia 3.1.1. Un automat pushdown nedeterminist este un
7-uplu P = (S, , , , s0 , z0 , F ), unde:
1. S este o multime finita si nevida, numita multimea starilor automatului pushdown;
2. este o multime finita si nevida, numita alfabetul de intrare;
3. este o multime finita si nevida numita alfabetul pushdown;
4. este o functie : S ( {}) P(S ), numita
functie de tranzitie;
54

5. s0 S se numeste starea initiala a automatului pushdown;


6. z0 se numeste simbolul pushdown initial;
7. F S se numeste multimea starilor finale.
Definitia 3.1.2. Se numeste configuratie a unui automat pushdown
o tripleta (s, w, ) S .
Pe modelul dat, cele trei elemente ale unei configuratii le putem
interpreta n felul urmator:
1. s S reprezinta starea n care se afla unitatea de comanda n
momentul considerat;
2. w reprezinta partea necitita de pe banda de intrare, adica
partea delimitata la stanga de capul de citire si la dreapta de
ultimul simbol diferit de blanc, inclusiv;
3. reprezinta continutul memoriei pushdown, primul caracter al
lui este cel vizat. In cazul = spunem ca memoria pushdown este vida.
O configuratie reprezinta starea automatului la un moment dat. Pe
multimea configuratiilor C, definim o relatie binara P C C care
defineste miscarea automatului pushdown.
Definitia 3.1.3. Configuratia (s, aw, z) este n relatia P cu
configuratia (s , w, ), scris (s, aw, z)P (s , w, ), daca (s , )
(s, a, z), unde s, s S, a {}, z , w si , .
Observam ca pentru a fi posibila miscarea automatului dintr-o
configuratie n alt
a configuratie, memoria pushdown trebuie
s
a fie nevid
a. Daca memoria pushdown este vida, miscarea automatului pushdown nu mai este posibila.
Consideram nchiderea reflexiva si tranzitiva a relatiei P pe care
o notam cu P . Atunci cand automatul pushdown este subnteles, noi
vom renunta la indicele P si vom scrie n loc de P .
55

Definitia 3.1.4. Limbajul acceptat de un automat pushdown cu


stari finale P = (S, , , , s0 , z0 , F ) este

L(P ) = {w | w , (s0 , w, z0) (s, , ), s F, }


P

Exemplu. Fie P = ({s0 , s1 , s2 , s3 }, {0, 1}, {0, z}, , s0, z, {s3 }) unde:
1. (s0 , 0, z) = {(s1 , 0z)}
2. (s1 , 0, 0) = {(s1 , 00)}
3. (s1 , 1, 0) = {(s2 , )}
4. (s2 , 1, 0) = {(s2 , )}
5. (s2 , , z) = {(s3 , )}
6. (s, a, ) = n celelalte cazuri.
Sa vedem daca cuvantul 0011 apartine limbajului L(P ). Consideram secventa de tranzitii:
(s0 , 0011, z) (s1 , 011, 0z) (s1 , 11, 00z) (s2 , 1, 0z) (s2 , , z) (s3 , , );
cum s3 este starea finala, rezulta ca 0011 L(P ).
In Definitia 3.1.4 observam ca pentru ca un cuvant w sa apartina
limbajului trebuie ca sa existe un sir de tranzitii din configuratia
initiala (s0 , w, z) ntr-o configuratie (s, , ) cu s F si .
Putem defini un nou limbaj acceptat de un automat pushdown n
care sa slabim conditia ca starea s sa apartina multimii F si vom lasa
aceasta stare arbitrara din S, dar vom ntari conditia , vom
cere ca = .
Definitia 3.1.5. Fie P = (S, , , , s0 , z0 , ) un automat pushdown. Vom numi limbaj acceptat de automatul pushdown P cu memorie pushdown vida, urmatorul limbaj:

L (P ) = {w | w , (s0 , w, z0 ) (s, , ), s S}
In exemplul dat nainte se observa ca 0011 este un cuvant acceptat de
automatul pushdown cu memorie pushdown vida.
56

Problema care se pune este ce legatura este ntre cele doua familii
de limbaje? In urmatoarele doua teoreme vom arata ca cele doua
familii de limbaje sunt egale.
Teorema 3.1.6. Fie P = (S, , , , s0 , z0 , ) un automat pushdown cu memorie pushdown vida. Exista un automat pushdown P
astfel ncat L(P ) = L (P ).
Demonstratie. Fie P = (S {s0 , sf }, , {x}, , s0 , x, {sf }),
unde s0 , sf 6 S, x 6 si functia este definita prin:
1. (s0 , , x) = {(s0 , z0 x)};
2. (s, a, z) = (s, a, z) pentru s S, a {} si z ;
3. (s, , x) = {(sf , )} pentru s S;
4. (s, a, z) = n celelalte cazuri.
Egalitatea L(P ) = L (P ) o vom demonstra prin dubla incluziune.
a) Sa demonstram L(P ) L(P ). Fie w L (P ); atunci exista
s S astfel ncat avem
(1)

(s0 , w, z0 ) (s, , )
P

Folosind definitia lui si anume punctul 1), avem:


(2)

(s0 , w, x) (s0 , w, z0 x).


P

Folosind punctul 2) din definitia lui , avem:


(1 )

(s0 , w, z0 ) (s, , )
P

Folosind relatiile (2), (1) si punctul 3) din definitia lui , putem scrie
urmatorul sir de tranzitii n P :
(s0 , w, x)P (s0 , w, z0 x)P (s, , x)P (sf , , ),
deci (s0 , w, x)P (sf , , ), ceea ce nseamna w L(P ).

57

b) Sa demonstram incluziunea inversa, L(P ) L(P ). Fie


w L(P ); atunci exista un ( {x}) astfel ncat

(s0 , w, x) (sf , , )

(3)

Din definitia lui rezulta ca primul pas al tranzitiilor din (3) se face
dupa punctul 1) si anume avem:
(3 )

(s0 , w, x) (s0 , w, z0 x) (sf , , )


P

Dar modul de definire al functiei ne arata ca automatul P poate


intra n starea sf numai conform punctului 3) din definitia lui , deci
ultimul pas al tranzitiilor din (3) trebuie sa fie dupa cum urmeaza:
(3 )

(s0 , w, x) (s0 , w, z0 x) (s, , x) (sf , , )


P

si n plus, pe portiunea (s0 , w, z0x)P (s, , x) se aplica numai punctul


2) din definitia lui , deci aceste tranzitii le avem si n automatul
pushdown P :

(s0 , w, z0) (s, , ),


(4)
P

ceea ce arata ca w L (P ).
Cu aceasta am aratat ca orice limbaj acceptat de un automat
pushdown cu memorie pushdown vida este acceptat de un automat
pushdown cu stari finale. Urmatoarea teorema stabileste incluziunea
inversa.
Acum sa demonstram incluziunea inversa si anume ca orice limbaj
acceptat de un APD cu stari finale poate fi acceptat de un APD cu
memoria vida.
Teorema 3.1.7. Un limbaj L acceptat de un automat pushdown
cu stari finale este acceptat si de un automat pushdown cu memorie
pushdown vida.
Demonstratie. Fie P = (S, , , , s0 , z0 , F ) cu L = l(P ). Fie
P
automatul pushdown cu memorie vida: P = (S {s0 , s }, , {x},
, s0 , x, ), unde s0 , s 6 S, x 6 si este definit prin:
P

58

1. (s0 , , x) = {(s0 , z0 x)};


2. (a) (s, a, z) = (s, a, z) pentru s S, a

si z ;

(b) (s, , z) = (s, , z) pentru s S \ F, z ;


(c) (s, , z) = (s, , z) {(s , ) pentru s F si z ;
3. (s, , x) = {(s , )} pentru s F ;
4. (s , , z) = {(s , )} pentru z {x};
5. (s, a, z) = n celelalte cazuri.
Se poate arata prin dubla incluziune ca L(P ) = L (P ).
Cele doua teoreme demonstreaza ca LfAP D = LAP D , adica familia
limbajelor acceptate de automatele pushdown ca stari finale este egala
cu familia limbajelor acceptate de automatele pushdown cu memorie
vida, de aceea vom nota aceasta familie cu LAP D , adica familia limbajelor acceptate de automatele pushdown. Vom arata mai departe
ca LAP D = L2 . Aceasta egalitate o demonstram n urmatoarele doua
teoreme.
Teorema 3.1.8. Fie L un limbaj independent de contact, adica
L L2 . Exista un automat pushdown P astfel ncat L = L (P ).
Teorema 3.1.9.Fie L un limbaj independent de context. Exista
un automat pushdown P astfel ncat L = L (P ).
Demonstratie. Din L L2 , rezulta ca exista o gramatica de tipul
doi G = (VN , VT , x0 , P ) astfel ncat L = L(G). Consideram urmatorul
automat pushdown P = ({s}, VT , VN VT , , s, x0 , ). Functia de
tranzitie este:
1. (s, , X) = {(s, ) | X P };
2. (s, a, a) = {(s, )}, a ;
3. (s, a, z) = n celelalte cazuri.

59

Pentru a demonstra ca L(G) = L (P ) vom demonstra n prealabil


urmatoarea proprietate:
m

(1)X w, w VT , X VN daca si numai daca (s, w, X)Pn (s, , )


G

pentru m 1 si n 1 convenabil ales; m si n reprezinta numarul de


pasi n derivare sau n tranzitie, respectiv.
Implicatia n sens direct o demonstram prin inductie dupa m.
Pentru m = 1, fie w = i1 . . . ik , k 0. Atunci avem X i1 . . . ik ,
G
deci exista regula X i1 . . . ik P si dupa 1) si 2) putem scrie
urmatorul sir de tranzitii:

(s, i1 . . . ik , X) (s, i1 . . . ik , i1 . . . ik ) (s, , ).


P

Presupunem implicatia directa (1) adevarata pentru toate del


rivarile de lungime cel mult l 1 si fie X w, cu l > 1. Din aceasta
G
derivare vom pune n evidenta primul pas al derivarii:
A x1 . . . xt cu xi VN VT , 1 i t.
G

l1

Pentru derivarea x1 . . . xt = w se aplica teorema de localizare si


G
obtinem w = w1 . . . wt si exista derivarile
(2)

l1

xi wi , 1 i t.
G

Derivarile (2) au lungimea cel mult l 1. Daca xi VN , atunci,


conform pasului inductiv, avem:
(3)

ni

(s, wi , xi ) (s, , ).
P

Daca xi VT , atunci xi = wi si utilizand punctul 2) din definitia lui


, avem:
(3 )

(s, xi , xi ) (s, , )
P

Deci din (3) si (3) avem:


(3 )

(s, wi , xi ) (s, , ), 1 i t.
P

60

Din X x1 . . . xk P , avem, conform punctului 1) din definitia lui


, urmatoarea tranzitie:
(4)

(s, w, X) (s, w, x1 . . . xk )
P

Din (4) si (3) obtinem:

(s, w, X) (s, w1 . . . wk , x1 . . . xk ) (s, , ).


P

Cu aceasta, implicatia directa este demonstrata.


Sa demonstram implicatia inversa. Aceasta implicatie va fi demonstrata prin inductie dupa n.
Pentru n = 1, avem (s, w, X) (s, , ). Deoarece X VN si
w VT rezulta ca n aceasta tranzitie nu se poate aplica direct punctul
1) din definitia lui , deci exista X P si n plus, w = . Din
X P , rezulta ca avem X .
G
Presupunem implicatia adevarata pentru n l si sa o demonstram
pentru n = l + 1. Fie deci tranzitia
(5)

l+1

(s, w, X)

(s, , ), cu l 1.

Prima miscare a lui P trebuie sa fie de forma


(s, w, X) (s, w, x1 . . . xk ),
P

unde X x1 . . . xk P si xi VN VT , 1 i k.
Dar din configuratia (s, w, x1 . . . xk ) trebuie sa se ajunga n l pasi
n (s, , ) conform relatiei (5), deci avem:
(6)

(s, w, x1 . . . xk ) (s, , )
P

Din (6) rezulta ca w = 1 . . . k , unde 1 este format din simbolii lui


w care sunt parcursi pana ce x2 ajunge primul simbol din memoria
pushdown, 2 este format din simbolii lui w de la prima vizare a lui
x2 si pana ce x3 ajunge primul simbol din memoria pushdown, s.a.m.d.
Deci putem scrie:
(7)

li

(s, i, xi ) (s, , ), 1 i k
P

61

si numarul de pasi li ai acestor tranzitii este mai mic sau cel mult egal
cu l.
Daca xi VT , se poate aplica numai punctul 2) din definitia lui ,
ceea ce implica i = xi si tranzitia este de forma:
(7 )

(s, xi , xi ) (s, , )

ntr-un pas.

Daca xi VN , atunci, aplicand ipoteza inductiva, avem xi i . Deci


G
n total avem

x1 . . . xk 1 . . . k .
G

In plus, tinand cont ca n P exista regula X x1 . . . xk , avem

X x1 . . . xk 1 . . . k = w, deci X w.
G

Luand X = x0 , proprietatea (1) devine: x0 w daca si numai


G
daca (s, w, x0 )P (s, , ) ceea ce nseamna ca w L(G) daca si numai
daca w L (P ).
Sa demonstram acum ca limbajul acceptat de un automat pushdown este independent de context.
Teorema 3.1.10. Fie R = (S, , , , s0 , z0 , ) un automat pushdown. Limbajul L (R) este un limbaj independent de context.
Demonstratie. Vom construi o gramatica independenta de context care sa genereze limbajul L (R). Gramatica G o consideram de
forma G = (VN , , x0 , P ) unde:
VN = (S S) {x0 }, unde x0 6 S S;
regulile din P ale gramaticii G le definim n felul urmator:
1. Pentru a {} si (r, 1 . . . k ) (s, a, z), k 1 si i ,
1 i k. Vom considera n G toate regulile de forma:
[szk ] a[r1 1 ] . . . [k1 k k ]
pentru fiecare secventa de stari 1 . . . , k S.
62

2. Pentru a {} si (r, ) (s, a, z) consideram regula [szr]


a.
3. Pentru fiecare s S consideram regula x0 [s0 z0 s].
In definirea regulilor de mai sus, am notat un element (s, z, s )
S S cu [szs ]. Se observa ca gramatica G definita mai sus este
independenta de context. Se poate demonstra prin inductie ca:

(1)

[szr] w daca si numai daca (s, w, z)R (r, , )


G
pentru orice w .

Aceasta dubla implicatie ne permite sa demonstram ca L(G) =


L (R).

Propriet
ati de nchidere
pentru familia L2

In acest paragraf vom studia nchiderea familiei L2 la unele operatii


ca: produs, iteratie si substitutie. Reamintim ca am demonstrat ca
L2 este nchisa la reuniune.
Teorema 3.2.1. Familia L2 este nchisa la operatia de produs.
Demonstratie. Vom demonstra ca daca L1 , L2 L2 , atunci
L1 L2 L2 . Din L1 , L2 L2 rezulta ca exista gramaticile de tipul
doi G1 = (VN1 , VT1 , x01 , P1 ) si G2 = (VN2 , VT2 , x02 , P2 ) cu L1 = L(G1 )
si L2 = L(G2 ) si n plus VN1 VN2 = .
Consideram gramatica G = (VN1 VN2 {x0 }, VT1 VT2 , x0 , P1
P2 {x0 x01 x02 }), unde x0 6 VN1 VN2 . Gramatica G este de tipul
2 deoarece regulile din P1 si P2 sunt reguli ale gramaticilor de tip doi
si la fel, regula x0 x01 x02 .
Trebuie sa demonstram ca L(G) = L1 L2 . Aceasta egalitate o
vom demonstra prin dubla incluziune.
63

Incluziunea L(G) L1 L2 . Fie p L(G); rezulta ca exista

derivarea x0 p, dar primul pas al derivarii este x0 x01 x02 p.


G

Pentru derivarea x01 x02 p aplicam teorema de localizare si obtinem

p = p1 p2 si x01 p1 si x02 p2 . Din faptul ca VN1 VN2 = , rezulta


G
G
ca derivarile precedente din G sunt n G1 si G2 , respectiv. Deci avem

x01 p1 si x02 p2 , de unde p1 L1 si p2 L2 , ceea ce ne da ca


G2
G1
p = p1 p2 L1 L2 .
Incluziunea inversa L1 L2 L(G). Fie p L1 L2 = L(G1 )
L(G2 ); rezulta ca p = p1 p2 cu p1 L(G1 ) si p2 L(G2 ), de unde avem

x01 p1 si x02 p2 . Dar cum regulile din G1 si G2 sunt si n G,


G1
G2
iar n G avem n plus regula x0 x01 x02 , rezulta ca avem derivarea

x0 x01 x02 p1 p2 , deci p L(G).


G

Lema 3.2.2. Fie G o gramatica de tipul 2; atunci daca ntr-un


cuvant u se pot aplica doua sau mai multe reguli, nu are importanta
ordinea de aplicare a acestor reguli; aplicand regulile posibile n orice
ordine, se obtine acelasi cuvant.
Demonstratie. Vom considera cazul cand n u se pot aplica
doua reguli; cazul general rezulta imediat, din cel considerat. Fie
u = u1 xu2 yu3 cu x, y VN si n gramatica G exista regulile:
1. x r1 si
2. y r2 .
Atunci daca aplicam cele doua reguli n ordinea 1) si apoi 2), sau 2)
si apoi 1) obtinem:
a) u u1 r1 u2 yu3 u1 r1 u2 r2 u3 ;
G
G
b) u u1 xu2 r2 u3 u1 r1 u2 r2 u3 ;
G
G
de unde se vede ca n cele doua derivari, cuvantul obtinut din u este
acelasi, adica u1 r1 u2 r2 u3 .
Teorema 3.2.3. Familia limbajelor libere de context, L2 , este
nchisa la operatia de iteratie.

64

Demonstratie. Fie L un limbaj de tipul doi; trebuie sa demonstram ca L L2 . Din L L2 rezulta ca exista o gramatica G de
tipul doi, G = (VN , VT , x0 , P ) care sa genereze L, adica L = L(G).
Pentru a arata ca L este de tipul doi, vom construi o gramatica G
de tipul doi care sa genereze limbajul L . Sa consideram gramatica:
(1) G = (VN {y0 }, VT , y0, P {y0 , y0 y0 x0 }), unde y0 6 VN .
Se observa imediat, din forma regulilor de generare, ca G este o gramatica de tipul doi. Sa demonstram egalitatea L = L(G ).
a) Incluziunea L L(G). Fie p L =

Ln ; rezulta ca

n=0

exista k 0 astfel ncat p Lk .


Daca k = 0, rezulta p = si n gramatica G avem regula y0 ,
deci si derivarea y0 , de unde p = G .
G

Daca k 1, atunci din p Lk , rezulta ca p = p1 . . . pk si pj L(G),


1 j k. Din pj L(G), 1 j k, rezulta ca exista derivarile:

x0 pj , 1 j n.

(2)

Folosind derivarile (2) putem scrie n G :


y0 y0 x0 y0 x0 x0 . . . y0 x0 . . . x0 x0 . . . x0
G

(3)

{z

kori

{z

kori

p1 x0 . . . x0 p1 p2 x0 . . . x0 . . . p1 p2 . . . pk .
G

Deci avem y0 p, de unde p L(G ).


G
b) Incluziunea inversa, L(G) L. Fie p L(G ), deci exista

derivarea y0 p. Singurele reguli cu y0 sunt y0 si y0 y0 x0 ;


G

deci n derivarea y0 p la primul pas se aplica una din aceste reguli.


G

Daca se aplica prima regula, atunci derivarea devine y0 si avem


G
= p L . Daca la primul pas se aplica cea de a doua regula cu y0
n partea stanga, atunci derivarea devine y0 y0 x0 . Mai departe se
G
pot aplica reguli din P sau din nou o regula cu y0 n partea stanga.
Conform lemei precedente, putem considera ca toate regulile care se
65

aplica n derivarea y0 p si au y0 n partea stanga se aplica la


G
nceput, ultima regula cu y0 este y0 , deoarece y0 trebuie eliminat
si aceasta este singura regula care sterge y0 . Deci putem considera ca

n derivarea y0 p se aplica de m ori regula y0 y0 x0 , dupa care se


G
aplica y0 . Deci putem scrie:

y0 y0 x0 . . . x0 x0 . . . x0 p
G

{z

m ori

{z

m ori

Acum consideram derivarea x0 . . . x0 p si aplicam teorema de loG


calizare, rezulta p = p1 . . . pm si
(4)

x0 pj , 1 j m.
G

Dar n derivarile (4) se aplica numai reguli din P , celelalte le-am aplicat nainte. Deci avem:
(4 )

x0 pj , 1 j m,
G

de unde pj L, 1 j m, deci p Lm L .

Exemple rezolvate

I. Sa se arate ca automatul pushdown nedeterminist P = ({s0 , s1 , s2 , s3 },


{0, 1}, {z, 0}, , s0 , z, {s3 }) cu definit prin:
1) (s0 , 0, z) = {(s1 , 0z)}
2) (s1 , 0, 0) = {(s1 , 00)}
3) (s1 , 1, 0) = {(s2 , )}
4) (s2 , 1, 0) = {(s2 , )}
5) (s2 , , z) = {(s3 , )}
6) (s, 0, z) = n celelalte cazuri.
66

recunoaste limbajul {0n 1n |n 1}.


Rezolvare:
Consideram cateva cazuriparticulare. Sa aratam ca {0n 1n |n
1} L(P ).
Pentru n = 1 avem:
(s0 , 01, z) (s1 , 1, 0z) (s2 , , z) (s3 , , )
Pentru n = 2 avem:
(s0 , 0011, z) (s1 , 011, 0z) (s1 , 11, 00z) (s2 , 1, 0z) (s2 , , z)
(s3 , , )
Pentru n > 2 avem:
(s0 , 0n 1n , z) (s1 , 0n11n , 0z) (s1 , 1n , 0n z) (s2 , 1n1 , 0n1 z)
(s2 , , z) (s3 , x, ).
Invers, sa aratam acum ca L(P ) {0n 1n |n 1}.
Fie w L(P ). Sa aratam ca w = 0n 1n . Vom arata ca w nu
poate avea alta forma. Din w L(P ) avem conform definitiei ca
(s0 , w, z) (s3 , , ).
Consideram w = , avem (s0 , , z) se blocheaza, deci w = nu
apartine lui L(P ). Deci w L(P ) trebuie sa fie diferit de .
2) w = 1w , adica w ncepe cu 1, avem: (s0 , 1w , z) se blocheaza,
deci w 6 L(P ). De aici rezulta ca w nu ncepe cu 1, deci ncepe cu 0.
3) w = 0n , n 1, avem (s0 , 0n , z) (s1 , , 0n z) si se blocheaza. Nu
putem ajunge n s3 deci 0n 6 L(P ).
4) w = 0n 1k w cu w = sau w ncepe cu 0.
Vom arata mai ntai ca nu putem avea n < k si nici n > k, deci n
trebuie sa fie egal cu k. Apoi aratam ca w trebuie sa fie egal cu .
a) Cazul n < k. Atunci avem:
(s0 , 0n 1k w , z) (s1 , 0n1 1k , 0z) (s1 , 1k , 0n z) (s2 , 1k1 , 0n1z)
(s2 , 1kn , z) (s3 , 1kn , ). Am ajuns n starea finala s3 dar
k n > 0, cuvantul 0n 1k w nu este acceptat.
b) Cazul n > k.

67

(s0 , 0n 1k w , z) (s1 , 0n1 1k , 0z) (s1 , 1k , 0n z) (s2 , 1k1 , 0n1z)


(s2 , x, 0nk z) si se blocheaza deoarece n k > 0. Deci trebuie sa avem n = k.
Sa aratam ca w = . Avem (s0 , 0n 1n w , z) (s1 , 0n1 1n , w , 0z)
(s1 , 1n w , 0n , z) (s2 , 1n1w , 0n1z) (s2 , w , z) (s3 , w , )
si ca sa fie acceptat trebuie sa ajungem la (s3 , , ), deci
w = . Prin urmare w = 0n 1n cu n 1.
II. Fie automatul pushdown nedeterminist P = ({s0 , s1 , s2 }, {a, b}, {z, a, b},
s0 , z, {s2 }) cu definit prin:
1) (s0 , a, z) = {(s0 , az)};
2) (s0 , b, z) = {(s0 , bz)};
3) (s0 , a, a) = {(s0 , aa), (s1 , )};
4) (s0 , a, b) = {(s0 , ab)};
5) (s0 , b, a) = {(s0 , ba)};
6) (s0 , b, b) = {(s0 , bb), (s1 , )};
7) (s1 , a, a) = {(s1 , )};
8) (s1 , b, b) = {(s1 , )};
9) (s1 , , z) = {(s2 , )};
10) = n alte cazuri.
Sa se arate ca limbajul L(P ){w w|w

{a, b}+ }, unde w w


este
inversatul lui w.
Rezolvare. Sa aratam ntai ca {w w|w
{a, b}+ } L(P ).
Cateva ocazii particulare:
1) w = ab, w w = ba.
68

s0 , abba, z) (s0 , bba, az) (s0 , ba, baz) (s1 , a, az)


(s1 , , z) (s2 , , )
2) w = abb si w w
= bba.
(s0 , abbbba, z) (s0 , bbbba, az) (s0 , bbba, baz) (s0 , bba, bbaz)
(s1 , ba, baz) (s1 , a, az) (s1 , , z) (s2 , , )
Cazul general. Fie w = i1 . . . in , n 1 si ij {a, b} pentru 1 j
n. Atunci w = in . . . i1 . Avem
(s0 , i1 . . . in in . . . i1 , z) (s0 , i2 . . . in in . . . i1 , i1 , z) (s0 , in . . . i1 , in . . . i1 z)
(s1 , in1 . . . i1 , in1 . . . i1 z) (s1 , i1 , i1 z) (s1 , i1 , iz ) (s1 , , z)
(s2 , , ).
Deci w w L(P ).
Sa demonstram incluziunea inversa L(P ) {w w|w

{0, b}+ }.
Fie p L(P ). Din definitia limbajului avem ca (s0 , p, z) (s2 , , ).
Vom demonstra ca p = w w.
Vom considera mai multe cazuri:
1) p = . Avem (s0 , , z) se blocheaza de ci 6 L(P ).
2) p 6= . Fie p = i1 . . . ik , k 1, ij {a, b}, 1 j k. Din definitie
avem ca (s0 , i1 . . . ik , z) (s2 , , ). Sa vedem cum poate evolua
aceasta tranzitie.

(s0 , i1 . . . ik , z) (s0 , i2 . . . ik , i1 , z) (s0 , il+1 . . . ik , il . . . i1 z).


Ca sa nu se blocheze si sa poata evolua pentru a ajunge n starea s2 ,
trebuie ca, l = k l deci k = 2l si n plus il+1 = il , il+2 = il1 , . . . , i2l =
i1 . In aceste conditii avem:
(s0 , il+1 . . . i2l , il . . . i, z) (s1 , il+2 . . . I2l , il1 . . . i1 z) (s1 , , z) (s2 , , ).
Dar atunci p = i1 . . . il il . . . i1 = w w.

69

Tem
a de control (3).
1. Fie automatul pushdown nedetrminist P = ({s0 , s1 , s2 , s3 }, {a, b, c},
{z, a}, , s0 , z, {s3 }) cu definit prin:
1) (s0 , a, z) = {(s1 , aaz)};
2) (s1 , a, a) = {(s1 , aaa)};
3) (s1 , b, a) = {(s2 , )};
4) (s1 , c, a) = {(s2 , )};
5) (s2 , b, a) = {(s2 , )};
6) (s2 , c, a) = {(s2 , )};
7) (s2 , , z) = {(s3 , )};
8) = n celelalte cazuri.
Sa se arate ca L(P ) = {an w|w {b, c}+ , |w| = 2n, n 1}.
2. Fie automatul pushdown nedeterminist P = ({s0 , s1 , s2 , s2 }, {a, b, c},
{a, z}, , s0 , z, {s3 }) cu definit prin:
1) (s0 , a, z0 ) = {(s1 az0 )};
2) (s1 , a, a) = {(s1 , aa};
3) (s2 , b, a) = {(s1 )};
4) (s2 , b, a) = {(s2 , )};
5) (s2 , c, z) = {(s3 , z)};
6) (s3 , c, z) = {(s3 , z)};
7) = n celelalte cazuri.

70

Sa se arate ca L(P ) = {an bn cm |n, m 1}.


3. Fie automatul pushdown nedeterminist P = ({s0 , s1 , s2 , s3 , s4 },
{a, b, c}, {b, z}, , s0 , z, {s4 }) cu definit prin:
1) (s0 , a, z) = {(s1 , z)};
2) (s1 , a, z) = {(s1 , z)};
3) (s1 , b, z) = {(s2 , bz)};
4) (s2 , b, z) = {(s2 , bz)};
5) (s2 , c, b) = {(s3 , )};
6) (s3 , c, b) = {(s3 , )};
7) (s3 , , z) = {(s4 , )};
8) = n celelalte cazuri.
Sa se arate ca L(P ) = {an bm cm |n, m 1}.

71

Tema 4
Forme normale. Arbori de
derivare. Teorema lui Ogden
si aplicatii. Automate
pushdown deterministe
1

Forme normale

In unele demonstratii cat si n unele aplicatii este util sa consideram


gramatici de tipul doi de anumite forme particulare dar care sa nu
micsoreze puterea de generare, adica aceste gramatici de forme particulare sa genereze tot L2 .
Vom considera trei clase de gramatici, numite forme normale si
anume: forma normala Chomsky, forma normala Greibach si forma
normala operator.
Definitia 4.1.1. O gramatica independenta de context este sub
forma normala Chomsky daca regulile sale sunt de forma x yz sau
x a unde x, y, z VN si a VT .
Teorema 4.1.2. Orice limbaj independent de context, L, care nu
contine cuvantul vid , poate fi generat de o gramatica independenta
de context sub forma normala Chomsky.

73

Demonstratie. Deoarece L este un limbaj independent de context si nu contine , rezulta ca L poate fi generat de o gramatica
G = (VN , VT , x0 , P ), care nu contine reguli de forma x y sau x ,
cu x, y VN . Deci regulile n G sunt de forma:
(1)

x y1 . . . yn , cu n 1 si x VN .

In (1) pentru n = 1, obtinem : x y1 si din faptul ca gramatica


G nu contine redenumiri, rezulta ca y1 VT , deci regula x y1
este de forma ceruta pentru gramatici sub forma normala Chomsky.
Fiecarui i VT i punem n corespondenta un nou simbol neterminal
xi . Pentru fiecare regula de forma (1) cu n 2 procedam n felul
urmator: fiecare simbol terminal yi cu 1 i n, l nlocuim n
regula x y1 . . . yn cu un simbol nou xyi si adaugam regula xyi
yi , astfel ca regula care s-a obtinut din x y1 . . . yn prin nlocuirea
lui yi cu xyi si regula xyi yi mpreuna au acelasi efect ca regula
x y1 . . . yn . Multimea regulilor obtinute din regulile de forma x
y1 . . . yn n care am nlocuit simbolurile terminale yi cu simbolurile noi
xyi si mpreuna cu noile reguli de forma xyi yi o vom nota cu P1 . De
asemenea notam cu Z = {xi | i VT } multimea tuturor simbolurilor
xyi adaugati. Consideram gramatica G1 = (VN Z, VT , x0 , P1 ) care
este o gramatica de tip doi si este echivalenta cu G.
Vom construi o gramatica G2 independenta de context sub forma
normala Chomsky si care sa fie echivalenta cu G1 deci si cu G. Regulile
n G1 sunt de forma x a sau de forma x A1 . . . An , n 2, unde
x, Ai VN Z, 1 i n si a VT . Regulile de forma x a si
x A1 A2 le lasam neschimbate, adica le punem si n G2 , pentru ca
ele sunt corespunzatoare gramaticilor sub forma normala Chomsky.
Unei reguli din G1 de forma:
(2)

x A1 . . . An , n > 2, x, ai VN Z, 1 i n,

74

i punem n corespondenta n G2 , urmatoarele reguli:

(3)

x A1 B1
B1 A2 B2
..................
..................
..................
Bn3 An2 Bn2
Bn2 An1 An

unde B1 , B2 , . . . Bn2 sunt simboluri noi. Aplicarea regulilor de forma


(2) sau a sirului (3) au acelasi efect, adica generarea din x a sirului
A1 . . . An . Deoarece B1 , . . . , Bn2 sunt simboluri noi, rezulta ca fiecare
din ei nu sunt afectati de alte reguli. Fie B multimea tuturor simbolurilor Bi adaugati n regulile de forma (3). Consideram gramatica independenta de context: G2 = (VN Z P, VT , x0 , P2 ) unde
P2 este formata din regulile de forma x a sau x A1 A2 , cu
x, A1 , A2 VN Z si a VT din G1 - si multimea tuturor regulilor
de forma (3), corespunzatoare regulilor de forma (2) din G1 . Din
observatiile facute mai sus, asupra legaturii dintre regulile de forma
(2) si cele de forma (3), rezulta ca G2 este echivalenta cu G1 .
Observatia 4.1.3. Faptul ca 6 L nu este esential. Deoarece
daca L, atunci consideram L = L {}, care este tot un limbaj
de tip doi si el poate fi generat de o gramatica sub forma normala
Chomsky G , deci L = L(G ). Atunci daca G = (VN , VT , x0 , P ),
consideram gramatica G = (VN {x0 }, VT , x0 , P {x0 , x0 x0 })
care genereaza L.
Definitia 4.1.4. O gramatica G = (VN , VT , x0 , P ) de tipul doi
este sub forma normala Greibach daca regulile sale sunt de forma:
X a, unde x VN , a VT si V .
Gramatica G este sub forma normala m-standard daca este sub
forma normala Greibach si || m.
Definitia 4.1.5. Fie G = (VN , VT , x0 , P ) o gramatica independenta de context. Un neterminal x VN se numeste stang-recursiv
75

(drept-recursiv) daca n gramatica G exista derivarea x x, V


+
(respectiv x x). O gramatica G se numeste stang-recursiva (dreptrecursiva) daca ea are cel putin un simbol neterminal stang-recursiv
(drept-recursiv).
Se poate demonstra urmatoarea teorema:
Teorema Orice limbaj L L cu X 6 L poate fi generat de o
gramatica sub forma normala Greibach.
A treia forma normala pentru gramaticile de tip doi este forma
normala operator.
Definitia 4.1.6. O gramatica de tip doi G = (VN , VT , x0 , P ) este
sub forma normala operator, daca oricare ar fi o regula x P ,
n nu apar doi simboli din VN consecutivi.
Se poate demonstra ca oricare ar fi un limbaj L L2 cu 6 L
exista o gramatica G sub forma normala operator cu L = L(G).

Arbori de derivare

Reprezentarea derivarilor n gramatici independente de context


prin arbori de derivare, este o modalitate utila pentru simplificarea
anumitor demonstratii.
Fie G = (X, E) un graf orientat. Daca (x, y) E, vom spune ca x
este precedent direct al lui y si y este succesor direct al lui x.
Definitia 4.2.1. Un graf orientat G este un arbore orientat si
ordonat daca sunt ndeplinite urmatoarele proprietati:
1. exista n G un nod, numit radacina, care nu are precedenti directi
si de la care exista un drum la fiecare nod al grafului;
2. orice nod diferit de radacina are exact un precedent;
3. multimea succesorilor directi ai unui nod este ordonata.

76

Vom reprezenta arborii pe nivele, radacina va fi reprezentata pe


primul nivel, iar succesorii directi ai unui nod vor fi reprezentati
pe nivelul urmator nivelului nodului, ordinea succesorilor fiind data
de reprezentarea lor de la stanga spre dreapta. Nodurile care au
descendenti directi se numesc noduri interioare si cele care nu au
descendenti n G se numesc noduri frunze sau noduri terminale.
Definitia 4.2.2. Un nod x este precedent al lui y daca drumul
de la radacina la y trece prin x (y este succesor al lui x sau y este
descendent al lui x).
Conventia de reprezentare pe nivele permite renuntarea la sageti,
orientarea fiind de sus n jos ca n figura ce urmeaza.


Fig. 4.2.1.

Definitia 4.2.3. Fie G = (VN , VT , x0 , P ) o gramatica independenta


de context. Un arbore de derivare pentru gramatica G este un
arbore A = (X, E) mpreuna cu functia de etichetare a nodurilor
f : X VN VT {} cu proprietatile:
1. f (r) = x0 , daca r este radacina arborelui;
2. daca x X are descendenti, atunci f (x) VN ;
3. daca x are descendenti directi x1 , x2 , . . . , xn n aceasta ordine,
atunci n G avem f (x) f (x1 )f (x2 ) . . . f (xn );
4. daca f (x) = , atunci x este singurul descendent al precedentului sau.

77

Exemplul 4.2.4. Fie G = (VN , VT , x0 , P ) cu VN = {x0 , x1 , x2 }, VT =


{a, b}, P = {x0 ax1 x2 |bx2 a, x1 x0 x1 , x2 }. Un exemplu de
arbore de derivare este:
h x0

x1
x1

x0

x2


x2 a
Fig. 4.2.2.

Definitia 4.2.5. Un subarbore al unui arbore de derivare este un nod


din arbore care devine radacina pentru subarbore mpreuna cu toti
descendentii sai. Daca radacina subarborelui are eticheta x, l vom
numi x-arbore. Astfel un arbore de derivare este un x0 -arbore.
In figura de mai jos avem un x1 -arbore
x1
x0

x0

x2
a
Fig. 4.2.3.

Ordinea de la stanga la dreapta a descendentilor directi ai unui nod


induce o ordine de la stanga la dreapta n multimea frunzelor unui
arbore de derivare.
Definitia 4.2.6. Fie x, y descendentii directi ai aceluiasi nod si x
la stanga lui y; atunci
i) x este la stanga oricarui descendent al lui y;
ii) orice descendent al lui x este la stanga lui y;
78

ii) orice descendent al lui x este la stanga oricarui descendent al lui


y.
Consideram atunci cuvantul obtinut din etichetele frunzelor unui arbore de derivare, n ordinea n care apar ele n arbore. Numim acest
cuvant frontiera arborelui de derivare.
Teorema 4.2.7. Fie G = (VN , VT , x0 , P ) o gramatica indepen
denta de context. Oricare ar fi x VN si (VN VT ) , avem x
daca si numai daca exista un x-arbore de derivare cu frontiera .
Fie w L(G). Consideram ca anumite pozitii din w le marcam.
Teorema 4.2.8. (Teorema iteratiei. Teorema lui Ogden)
Pentru orice limbaj L independent de context, exista o constanta
n N (care depinde numai de limbajul L) astfel ca orice w L
cu m pozitii marcate, m n, admite o factorizare w = xyzuv cu
proprietatile:
1. yu are cel putin o pozitie marcata;
2. yzu are cel mult n pozitii marcate;
3. i 0, xy i zui v L.
Demonstratie. Fie L L2 si fie G = (VN , VT , x0 , P ) sub forma
normala Chomsky, astfel ca L(G) = L {}. Daca |VN | = k atunci
consideram n = 2k + 1. Fie w L(G) cu |w| n si n w avem m n

pozitii marcate. In arborele de derivare corespunzator derivarii x0 w


G
construim inductiv un drum D astfel:
i) D = {r}, r este radacina arborelui.
ii) Fie t ultimul nod plasat n D. Daca t este un nod final
(frunza), drumul este construit. Daca t nu este nod terminal, el are doi
descendenti (pentru ca gramatica G este sub forma normala Chomsky). Avem 2 cazuri:
a) numai unul din descendentii lui t are descendenti finali marcati.
atunci l adaugam pe acesta la D si repetam ii).
79

b) ambii descendenti ai lui t au descendenti finali marcati. Atunci


t se numeste punct de ramificare. Se adauga la D nodul cu cel mai
mare numar de descendenti marcati si apoi se repeta ii).
Din constructia drumului D se constata ca fiecare punct de ramificare are cel putin jumatate din descendentii finali marcati ai precedentului punct de ramificare din D. Cum n arborele de derivare avem
cel putin n = 2k +1 pozitii marcate n w si toate aceste pozitii marcate
sunt descendenti ai radacinii, nseamna ca avem cel putin k + 1 puncte
de ramificare n drumul D.
Cum |VN | = k, exista cel putin 2 puncte de ramificare n D, n1 , n2
etichetate la fel, cu un neterminal x. Alegem aceste puncte asa fel ca
n1 este mai aproape de radacina decat n2 si pe portiunea de drum
D de la n1 la frontiera arborelui nu mai avem alt
a pereche de
puncte etichetate cu aceeasi etichet
a. Deci portiunea de drum
D de la n1 la frontier
a contine cel mult k + 1 puncte de ramificare. Descompunem w = xyzuv ca n figura 3.4.7. Consideram
subarborele cu radacina n n1 ; frontiera sa yzu contine cel mult n
pozitii marcate (altfel ar exista de la el la frontiera, pe drumul D,
mai mult de k + 1 puncte de ramificare). Deci am demonstrat 2).
Fie z frontiera subarborelui cu radacina n n2 . cum n1 si n2 sunt
pe drumul D, z este subcuvant din w1 , unde w1 = yzu si yu are cel
putin o pozitie marcata, deoarece n1 si n2 sunt puncte de ramificare.
Deci am demonstrat 1).

80

x0
X
n1

X
n2

X
n2

x y

Fig. 4.2.7

Fig. 4.2.8

Consideram subarborele cu radacina n n2 ca n Figura 3.4.8. Daca


X este eticheta celor doua noduri, avem:

X z

(1)

deoarece z este frontiera subarborelui cu radacina n2 care are eticheta


X.
Consideram subarborele cu radacina n n1 din care scoatem subarborele cu radacina n n2 , dar lasam pe n2 .
X
X

u
Fig. 4.2.9.

atunci avem
(2)

X yXu
G

81

Consideram arborele de derivare din care am scos subarborele cu


radacina n n1 dar lasam n1 . Avem

x0 xXv.

(3)

x0
X

x
Fig. 4.2.10.

Sa demonstram acum proprietatea 3) din teorema utilizand (1), (2),


(3). Pentru i = 0 avem:

x0 xXv xzv.
G
G
Pentru i = k > 0 avem:

x0 xXv xy k Xuk v xy k zuk v.


G

Corolar 4.2.9.(Lema Bar-Hillel pentru limbaje de tip 2).


Pentru orice limbaj de tip 2 exista o constanta n astfel ca daca w
L, |w| n, atunci exista o descompunere w = xyzuv cu proprietatile:
1. |yu| 1;
2. |yzu| n;
3. i 0, xy izui v L.
Demonstratie. Daca n lema lui Ogden consideram toate pozitiile
cuvantului w marcate, se obtine lema Bar-Hillel.
Folosind lema lui Bar-Hillel, putem demonstra ca familia L2 nu
este nchisa la intersectie si nici la complementara. Acest rezultat este
dat de urmatoarea teorema:
82

Teorema 4.2.10. Familia L2 nu este nchisa la intersectie si nici


la complementara.
Demonstratie. Limbajele L1 = {ai bi cj |i, j 1} si L2 =
{ai bj cj |i, j 1} sunt limbaje independente de context; ele sunt generate de gramaticile G1 = ({S, A, B}, {a, b, c}, S, {S AB, A aAb,
A ab, B Bc, B c}) si G2 = ({S, A, B}, {a, b, c}, S, {S AB,
A aA, A a, B bBc, B bc}), respectiv.
Se poate verifica, aplicand lema Bar-Hillel, ca limbajul L1 L2 =
{ai bi ci |i 1} nu este limbaj independent de context, deci L2 nu este
nchisa la intersectie. Cum L2 este nchisa la reuniune si nu este nchisa
la intersectie, rezulta ca L2 nu este nchisa la complementara.
Interesant este ca daca intersectam un limbaj independent de context cu un limbaj regulat, se obtine tot un limbaj independent de
context. Acest rezultat este dat n teorema ce urmeaza.
Teorema 4.2.11. Daca L L2 si R L3 atunci L R L2 .
Demonstratie. Din L L2 rezulta ca exista un automat
pushdown P = (S1 , , , 1 , s10 , z0 , F1 ) cu L = L(P ). Din R L3
rezulta ca exista un automat finit determinist A = (S2 , , 2 , s20 , F2 )
cu R = L(A). Vom construi un automat pushdown P care sa
recunoasca limbajul L R. Automatul pushdown P este: P =
(S1 S2 , , , , (s10 , s20 ), z0 , F1 F2 ) unde este definit prin: ((s1 ,
s2 ), ) ((s1 , s2 ), a, z) daca si numai daca (s1 , ) 1 (s1 , a, z) si
s2 = 2 (s2 , a).
Se poate arata ca L(P ) = L R. Constructia lui P este ilustrata
n figura de mai jos.

83

...
6

P
A

..
.

Fig. 4.2.11.

Automate pushdown deterministe

Pentru automate finite am vazut ca puterea de recunoastere este


aceeasi pentru automate finite deterministe sau automate finite nedeterministe. In cazul automatelor pushdown acest lucru nu mai este
adevarat.
Definitia 4.3.1. Un automat pushdown M = (S, , , , s0 , F )
este determinist daca sunt ndeplinite conditiile:
1. |(s, a, z)| 1, a {}, s S, z ;
2. daca (s, , z) 6= , atunci (s, a, z) = , a .
Vom nota cu L2DET clasa limbajelor acceptate de automate pushdown
deterministe prin stari finale, adica L2DET = {L | M automat pushdown determinist astfel ca L = L(M)}.
O subclasa de automate pushdown deterministe sunt cele sub
forma normala.

84

Definitia 4.3.2. Un automat pushdown determinist M =


(S, , , , s0 , z0 , F ) este sub forma normala daca s S, a
{}, z si (s , ) = (s, a, z) are loc una din situatiile:
1. = (automatul sterge un simbol din memoria pushdown);
2. = z (nu modifica memoria pushdown);
3. = yz (se adauga simbolul y la memoria pushdown).

Se poate demonstra ca pentru orice limbaj L L2DET exista un automat pushdown determinist sub forma normala care sa accepte L.
Deoarece automatele pushdown deterministe sunt o subclasa a automatelor pushdown nedeterministe rezulta ca L2DET L2 . De fapt
aceasta incluziune este stricta deoarece L2DET este nchisa la complementariere si L2 nu este nchisa la complementariere, deci cele doua
familii de limbaje nu pot fi egale.

Exercitii rezolvate
I) Sa se arate ca limbajul L = {an bn cn | n 1} nu este limbaj independent de context.
Rezolvare: Vom aplica teorema lui Ogden. Presupunem ca limbajul L este independent de context. Alegem un cuvant w = an bn cn ,
marcam an si alegem n mai mare decat numarul k din teorema lui
Ogden. Conform teoremei lui Ogden w = xyzuv cu proprietatile din
teorema.
Vom arata ntai ca y nu poate contine decat o litera. Sa presupunem ca y = al bn cj , n, l, j 1. Atunci u = cm , m 0 si luand
xy 2 zu2 v avem anl al bn cj al bn cj cnj+m care ar trebui sa apartina limbajului L conform teoremei lui Ogden, dar acest cuvant nu apartine
lui L deoarece are b-uri si c-uri nainte de simbolul a. Analog se arata
85

ca y nu poate contine doi simboli diferiti (adica a si b, sau b si c). In


aceeasi maniera se arata ca nici u nu poate contine trei sau doi simboli
diferiti.
Prin urmare atat y cat si u trebuie sa contina un singur simbol.
Cuvantul y trebuie sa contina numai simboluri a, deoarece yu trebuie
sa aiba cel putin un simbol marcat si numai simbolurile a sunt marcate. Deci descompunerea lui w = xyzuv se poate face ntr-unul din
urmatoarele moduri: 1) y si u contin a-uri; 2) y contine a-uri si u
contine b-uri; 3) y contine a-uri si u contine c-uri. Sa consideram cele
trei cazuri posibile:
1) x = al , y = at , z = as , u = ar , v = an(l+t+s+r) bn cn cu t + r 1.
Conform teoremei lui Ogden trebuie ca xy izui v L, i 0.
Luam i = 0 si atunci xy 0 zu0 v = al as an(l+t+s+r) bn cn = an(t+r) bn cn 6
L deoarece n (t + r) < n. Contradictie.
2) x = al , y = at , z = an(l+t) br , u = bs , v = bn(r+s) cn cu t 1.
Consideram din nou i = 0 si avem xy 0 zu0 v = al an(l+t) br bn(r+s) cn =
ant bns cn 6 L deoarece n t < n. Deci din nou contradictie.
3) x = al , y = at , z = an(l+t) bn cs , u = cr , v = cn(r+s) cu t
1. Consideram i = 0 si avem xy 0 zu0 v = al an(l+t) bn cs cn(r+s) =
ant bn cnr 6 L deoarece n t < n. Contradictie.
Deoarece n toate cele trei cazuri posibile am obtinut contradictie,
rezulta ca limbajul L = {an bn cn | n 1} nu este limbaj independent
de context.
II) Sa se arate ca limbajul L = {ai bj ck | i, j, k 1, i 6= j, i 6= k} nu
este limbaj independent de context.
Rezolvare: Consideram cuvantul de forma w = an bn+n! cn+2n! cu
pozitiile lui a marcate si n k, k fiind cel din teorema lui Ogden. Conform teoremei lui Ogden w se descompune n xyzuv cu proprietatile
din teorema. Analog ca la exercitiul precedent se arata ca y si u nu
pot contine mai mult de un simbol. Deci cazurile de descompunere
posibile sunt: 1) y si u contin simboluri a; 2) y contine simboluri
a si u contine simboluri b; 3) y contine a-uri si u contine c-uri. Sa
consideram cele trei cazuri posibile:
1) x = al , y = at , z = as , u = ar , v = an(l+t+s+r) bn+n! cn+2n! cu
86

t + r 1. Notez cu q = t + r. Conform teoremei lui Ogden avem:


1 q n. Deci q divide n!. Avem n! = q j si atunci xy i zui v =
al ati as ari an(l+t+s+r) bn+n! cn+2n! = an+(i1)(t+r) bn+n! cn+2n! . Alegem i
astfel ncat (i 1)q = n!, deci i = n!q + 1 = j + 1. In acest caz xy i zui v
apartine lui L, dar pe de alta parte xy i zui v = an+n! bn+n! cn+2n! 6 L
deoarece exponentul lui a este egal cu exponentul lui b. Contradictie.
2) x = al , y = at , z = an(l+t) bs , u = br , v = bn+n!(r+s) cn+2n! cu
1 t n. Calculam
xy i zui v = al ati an(l+t) bs bri bn+n!(r+s) cn+2n! = an+t(i1) bn+n!+r(i1) cn+2n! .
Deoarece 1 t n, avem ca t divide n!. Alegem i astfel ncat
t(i 1) = 2n!, deci i = 2n!
+ 1.
t
i
i
Pe de o parte xy zu v L pentru orice i 0, iar pe de alta parte
r
pentru i = 2n!
+1 avem xy i zui v = an+2n! bn+n!+ t 2n! cn+2n! 6 L, deoarece
t
are acelasi exponent pentru a si c. Deci din nou contradictie.
3) x = al , y = at , z = an(l+t) bn+n! cs , u = cr , v = cn+2n!(r+s) cu
1 t n. Calculam
xy i zui v = al ati an(l+t) bn+n! cs cri cn+2n!(r+s) = an+t(i1) bn+n! cn+2n!+r(i1) .
Deoarece 1 t n, avem ca t divide n!. Alegem i astfel ncat
t(i 1) = n!, deci i = n!t + 1.
Din teorema lui Ogden xy i zui v L pentru orice i 0. Pe de
r
alta parte pentru i = n!t + 1 avem xy i zui v = an+n! bn+n! cn+2n!+ t n! 6 L,
deoarece are acelasi exponent pentru a si b. Contradictie.
Deoarece n toate cele trei cazuri posibile am obtinut contradictie,
rezulta ca limbajul L = {ai bj ck | i, j, k 1, i 6= j, i 6= k} nu este de tip
2.

Tema de control (4)


1) Sa se arate ca limbajul L = {an bn+2 cn+3 | n 1} nu este limbaj de
tip 2.
2) Sa se arate ca limbajul L = {ai bj ck | i, j, k 1, i 6= j, i 6= k, j 6= k}
nu este de tip 2.

87

Tema 5
Familiile de limbaje L 0 s
i L1
Dup ce am studiat familiile de limbaje L3 si L 2 , acum ne vom
preocupa de propriettw
ile familiilor L 0 si L 1 .

1. Proprietti de nchidere pentru familiile L 0 si


L1
nainte de a prezenta propriett
ile de nchidere vom da un rezultat
care ne arat c o subclas de gramatici de tip 0 sau de tip 1 au aceeas
i
putere de generare ca si ntreaga clas de gramatici de tip 0 sau 1.
Teorema 5.1.1. Pentru orice gramatic G = (
VN ,VT , x0 , P )de tip

0 sau 1, exist o gramatic G = VN ,VT , x0 , P

'

) de acelasi tip cu G si

echivalent cu G astfel nct dac o regul din P, u v , cont>


ine un
'
simbol terminal ea are forma x i , cu x VN si i VT .

Observat5
ie 5.1.2. O gramatic de tip 0 sau 1 este sub form
*
standard dac regulile sale sunt de forma
cu , VN sau de
forma x i cu x VN si i VT .
Observat
ie 5.1.3. Conform teoremei 5.1 pentru orice gramatic G
de tip 0 sau 1, exist o gramatic G sub form standard echivalent cu G.
Observatd
ie 5.1.4. Orice limbaj L L 0 (L L 1 ) poate fi generat de
o gramatic sub form standard de tip 0 (sau 1).
Teorema 5.1.5. Familiile limbajelor L 0 si L 1 sunt nchise la produs.
Demonstrat*
ie. Vom face demonstrat*ia pentru L 1 ; analog se face s*i
89

pentru L 0 . Fie L 1 ,L 2 L 1 . Exist gramaticile G1 = (


VN1 , VT1 , x10 , P1 ) si
iile din teorema
G2 = (
VN2 , VT2 , x02 , P2 )de tip 1 care satisfac condit

precedent s$i n plus L1 = L (G1 ) s$i L2 = L(G2 ) . Putem considera


VN1 I VN2 = .

Considerm

gramatica

G = (V U V U {x0 }, V U V , x0 , P1 U P2 U {x0 x x }) , cu x0 VN1 U VN2 .


1
N

2
N

1
T

2
T

1 2
0 0

Aceast gramatic este de acelasQ


i tip cu G1 sQ
i G2 . Vom demonstra c

L (G )= L1 gL2 .

S demonstrm incluziunea L (G ) L1 gL2 . Fie p L (G ); exist


*

x0 x10 x02 p . Deoarece VN1 I VN2 = , avem c lui x10 si

derivarea

simbolilor care se obtin din el se aplic numai reguli din P1 si analog


pentru x02 . Deci cuvntul p = p1 p2 cu

G1

G2

x10 p1 s`i x02 p2 , prin urmare

p1 L1 , p2 L2 s
i p L1 L2 .

Incluziunea invers L1 gL2 L (


G ). Din

p = p1 gp2 si

p L1 L2 avem
*

G1

G2

p1 L1 , p2 L2 . Deci avem x10 p1 , x02 p2 si

x0 x01 x02 p1 p2 , p L (G ).
G

Dm fr demonstratie urmtoarea teorem.


Teorema 5.1.6. Pentru orice gramatic de tip 1 sau 0 exist o

()

gramatic G` de acelasi tip cu G, astfel nct L G = L (G ) {}


'

Teorema 5.1.7. Familiile de limbaje L 0 si L 1 sunt nchise la


iteratU
ie.

( L {})* = L* , rezult c nu
restrngem generalitatea dac presupunem c L . Conform Teoremei
5.1., putem presupune c L = L (G ), unde G = (
VN ,VT , x0 , P ) si
regulile care contbin terminali sunt de forma x i, x VN si i VT .
Demonstratie.

Deoarece

90

Considerm

gramatica

G* = (VN U {y0 , y1 },VT , y0 , P U {y0 x0 , y0 y1 x0 }U

{y1i

y1 x0 i, y1i x0 i | i VT })
Gramatica G* este de acelasi tip cu G, pentru c regulile adaugate nu
*
schimb tipul (0 sau 1) gramaticii G* . S demonstrm c L = L (G* ).
S demonstrm nti incluziunea L L (
G* ). Fie p L* ; atunci
*

p Lk , k 0 .
1) k = 0 , atunci p = si avem y0 .
G*

2) k 1 , atunci p = p1... pk shi p j L, p j ,1 j k . Din p j L


*

rezultax0 p j ,1 j k .n acest
G
*

caz

considera
m

derivarea

y0 * y1 x0 * y1 pk * y1 x0 pk * ... * y1 p2 ... pk * x0 p2 ... pk * p1... pk .


G

Deci

avem y0 p, p L (G* )si L* L (G* ).


G*

Incluziunea

L (G* ) L* . Fie

p L (G* ); reazulta ca avem

derivarea y0 q ... p .
G*

G*

G*

Dacaq = , avem y0 , deci p = .


*

Dacacq = x0 , atunci avem x0 p , deci p L .


G

Daca q = y1 x0 , atunci avem derivarea


*

y0 y1 x0 y1 pk y1 x0 pk y1 pk 1 pk ... p1... pk
G*

G*

G*

G*

G*

G*

sui

plus

x0 p j ,1 j k , deci
G*

p j L . Din p j L,1 j k , rezulta p Lk L* , deci L (G* ) L* .


Din cele douaincluziuni, rezulta egalitatea dorita
.

Dasm n continuare o teoremas de nchidere pentru toate familiile de


limbaje Lj, 0 j 3 .
91

Teorema 5.1.8. Familiile Lj, 1 j 1 j 3 , sunt nchise la


operatia de oglindire.
j , 0 j 3 . Exista o

Demonstrat
ie. Fie L un limbaj de tip

gramatica( G = (VN ,VT , x0 , P ) de tip


Considera
m

cu

G' = (
VN , VT , x0 , P ' ),

gramatica

j, 0 j 3 ,

L (G )= L .
unde

P ' = u% v% | u v P . Gramatica G ' este de acelas


i tip cu G . Sa

= L(
= p | p L . Deci trebuie sa aratam ca
aratam ca L
G' )
, unde L

()

i numai daca0 p L G ' , adica0x0 P daca0s0i numai daca0


p L dac s0
*

x0 = p .
G

Pentru aceasta este suficient saLaraL


taL
m caLw1 w2 dacaLsL
i numai
G

dacaxw1 ' w2 .
G

Daca w1 w2 , atunci w1 = w1' uw1'' , w2 = w1' vw1'' si u v P .


G

'' uw
=w
% ' si
Dar atunci avem u% v% P ' , w
1
1
1

w1 w2 .
G'

'' vw
=w
% ' , deci
w
1
1
1

'' uw
'' vw
w
, atunci avem w
=w
% ' , w
=w
% ' si
Invers, daca w
1
2
1
1
1
2
1
1
G'

u% v% P ' . Dar atunci avem w1 = w1' uw1'' , w2 = w1' vw1'' si u v P , deci


w1 w2 .
G

2. Gramatici monotone s9
i limbaje independente
de context
Definit
ie 5.2.1. O gramtica G = (
VN ,VT , x0 , P ) se numeste
monotonaTdacaTpentru orice regulaTu v P , avem | u || v | .

92

Observat
ie 5.2.2. O gramaticade tip 1 care nu cont
ine regula
x0 este o gramatica monoton.
Definitie 5.2.3. Se numeste ponderea gramaticii G,
pond (G )= max {| v | / u v P}.
Teorema

5.2.4.
Pentru
orice
gramatica monotona
G = (VN ,VT , x0 , P ), exista o gramatica monotona G ' = (
VN' , VT' , x0 , P ' ),
de pondere cel mult doi, echivalentazcu G.
Teorema5.2.5. Orice limbaj L generat de o gramaticamonotona
poate fi generat de o gramatica)senzitiva)de context.
Demonstrat
ie. Fa
raa restrnge generalitatea putem considera,
conform
teoremei
precedente,
ca gramatica
monotona
G = (VN ,VT , x0 , P )care genereaza limbajul L are ponderea cel mult
doi. Deci regulile gramaticii G sunt de forma:
1) A a , A VN si a VT , contextul (, );
2) A B , A, B VN contextul (, );

3) A BC , A, B, C VN contextul (, );

4) AB AD , A, B, D VN contextul (A, );

5) AB CB , A, B, C VN contextul (, B );
6) AB CD , A C si B D , nu mai este senzitiva`de context.
O regulade forma 6) o vom nlocui cu reguli de forma 4) si 5), si
anume:
6.1) AB EB , contextul (, B )
6.2) EB EF , contextul (E , )

6.3) EF CF , contextul (, F )

6.4) CF CD , contextul (C , )

Consideram G ' = (
VN' , VT , x0 , P ' )unde

VN' = VN U {E , F | AB CD P, A C , B D}
93

P ' = P {AB CD P}U { AB EB, EB EF , EF CF , CF


CD | AB CD P}
Se poate araita caicele douaigramatici sunt echivalente.
Teorema5.2.6. Orice limbaj L L 1 care nu contine poate fi
generat de o gramaticamonotona
.
Demonstratie. Din L L 1 si L rezulta ca exista o gramatica

G = (VN ,VT , x0 , P )senzitivaode context care nu contoine x0 soi care

genereazaL. Dar regulile gramaticii G sunt de forma uxv urv cu


x VN sX
i r V + , deci avem | uxv || urv | si prin urmare gramatica G este
monotona
.

3. Mas
ini Turing s
i limbaje de tip 0
Vom prezenta masinile Turing ca acceptori de limbaje.

3.1. Mas]ini Turing cu o banda]de intrare cu o cale infinita]


Un model pentru o masinaTuring cu o bandade intrare cu o cale infinita
este format dintr-o banda marginita la stnga, mpartita n locatii n
fiecare locatB
ie se plaseazaBcte un simbol dintr-un alfabet sB
i o unitate de
control prevaezutae cu un cap de citire/scriere. n urma operateiei de
citire/scriere capul se poate deplasa la stnga sau dreapta cu o locat
ie.
Prezenta
m mai jos n Figura 5.1 modelul considerat.
a1 a2

an B B B

UC

Figura 5.1. Model mas


inaTuring
94

O mas
inaTuring face urma
toarele operat
ii:
cerceteaza o locatie pe banda de intrare si nlocuieste simbolul
scris n ea;
schimba1starea;
miscacapul de citire la dreapta sau la stnga cu o locatie;
Formal, o masM
inaM
Turing (TM) o definim prin:
M = ( S ,,, ,s0 ,B,F )
unde:
S este o mult
ime finitade sta
ri;
este alfabetul de intrare, si B / ;
este o multime finitade simboli, alfabetul de lucru al masinii
Turing;
B un simbol din , numit blanc;
s0 S este starea initiala;

F S este multimea starilor finale;


:S S {L,R} este functia de tranzitie si este o functie
partiala, deci pot exista perechi ( s,z ) S pentru care nu
este definita.
Vom numi configuratie (descriere instantanee) a lui M , o tripleta 1s 2
cu 1 , 2 si s S . Fie C mult
imea configurat
iilor mas
inii M .
Pe modelul considerat mai sus, o configurat
ie 1s 2 are urma
toarea
semnificat
ie: s semnifica
starea curenta
a unita
t
ii centrale; 1 reprezinta
cuvntul format din simbolii cuprins|i ntre marginea din stnga a benzii
s
i capul de citire iar 2 este cuvntul format din simbolii cuprins
i ntre
capul de citire (inclusiv simbolul vizat) si ultimul simbol neblank de pe
banda
.
Pe multimea configuratiilor C definim o relatie binara M C C ,
numitarelat
ie de tranzit
ie

1) Configurat*ia 12xxx
daca* i > 1 si
i 1 sxx
i
n M x1 x12 s xi 1 yxi +1 xn
( s,xi ) = ( s,y,L)
n cazul i = 1 , pentru canu existapozit
ia i 1 , ceea ce nseamna- pe
model - capul de citire/scriere nu se poate misca la stnga marginii din
stnga.
Dacarexistarsufix n xi 1 yxi +1 xn format din blanc, acest sufix se srterge
95

din acest cuvnt.


2)
Configuratia
( s,xi ) = ( s,y,R ) .

x1 x2 xi 1sxi xn

x1 xi 1 ysxi +1 xn

daca

Vom nota cu M* nchiderea tranzitivasi reflexivaa relatiei M . Putem


renuntca la indicele M atunci cnd nu este posibilitatea de confuzie sci
*
scriem
n loc de M* .
Definim limbajul acceptat de o masM
inaM Turing M
prin

L( M ) = {w |w ,0sw M 1s 2 ,s F si 1 , 2 } .
Limbajul acceptat de mas6ina Turing M este mult6imea cuvintelor w ,
care, plasate pe banda de intrare n partea stngaa benzii, unitatea
centralaOfiind n starea s0 sO
i capul de citire/scriere pozitO
ionat pe prima
locatie, n urma tranzitiilor definite ca mai nainte, se ajunge ntr-o stare
finala
.
Vom presupune cao mas
inaTuring se opres
te ori de cte ori intrarea este
acceptata
, iar pentru cuvintele neacceptate este posibil sanu se opreasca.
Definitia 5.3.1.1. Un limbaj acceptat de o masina Turing se numeste
limbaj recursiv-enumerabil.
Enumerabilitatea derivaedin faptul caeaceste limbaje sunt formate din
cuvinte care pot fi listate.

3.2. Masini Turing cu bandade intrare cu douacai infinite


O masina Turing cu banda de intrare infinita n ambele directii, este
definita prin M = ( S ,,, ,s0 ,B,F ) , unde cele sapte elemente
S ,,,, ,s0 ,B s}i F au aceleas}i semnificat}ii ca n modelul precedent.
FunctN
ia de tranzitN
ie M este definitaNca n modelul original cu, exceptN
ia
cazului cnd sx M sBy , daca. ( s,x) = ( s,y,L) .
Pentru mas!ini Turing cu banda de intrare cu o cale nu se fa!cea tranzit!ia.
n plus, sx M s dacaD ( s,x) = ( s,B,R ) (n cazul precedent B apare
n stnga lui s).
Limbajul acceptat de o masainaaTuring cu banda de intrare cu douaacaai
este:

*
L( M ) = {w |w ,
1 , 2 }.
0sw M 1 s 2 ,s F ,

96

Teorema 5.3.2.1. Un limbaj L este acceptat de o masin Turing cu


band de intrare cu dou ci infinite dac si numai dac el este acceptat
de o masin Turing cu o cale infinit.
Demonstrat
ie. Demonstrat
ia cao mas
inaTuring cu banda de intrare cu
doua]ca]i infinite poate simula o mas]ina]Turing cu o banda]de intrare cu o
cale infinita, este usoara. n primul rnd marcam locatia din stnga
pozitiei initiale cu un simbol special " " si apoi simula
m masina Turing
cu o cale infinita. Daca n timpul simularii se atinge locatia marcata cu
" ", se trece ntr-o stare nouacare nu o mai pa
ra
seste si care nu este
1
starea finala#
. Fie M 1 = ( S1 ,1 ,1 ,1 ,s0 ,B,F1 ) o mas#ina#Turing cu banda
de
intrare
cu
o
cale
infinita
s
i
fie
2
2
M 2 = ( S1 {s,s0 ,s},1 ,1 {},2 ,s0 ,B,F1 ) cu 2 definita prin:
1.

2 ( s02 ,a) = ( s,a,L) ;

2.
2 ( s,B) = ( s0 ,,R) ;
3.
2 ( s,a) = 1 ( s,a ), s S1 , a 1 , ( s,a ) dom(1 ) ;
4.
2 ( s,) = ( s,,L) .
Este evident caI L( M 1 ) = L( M 2 ) .
Invers, sa)ara)ta)m ca)o mas)ina)Turing M 2 cu o banda)de intrare cu doua)
cai infinite poate fi simulata de o masina Turing M 1 cu o banda de
intrare cu o cale infinita. Vom construi M 1 cu banda de intrare cu doua
piste - o pistareprezintalocat
iile din dreapta pozit
iei init
iale (inclusiv
pozitia initiala
), cealaltapistareprezintalocatiile din stnga locatiei
init"iale ca n Figura 5.2.
-3 -2 -1 0 1 2 3

-1

-2

-3

Figura 5.2. Construct%


ia benzii lui M 1 din cea a lui M 2
97

Prima locatie a lui M 1 contine pe pista de jos, un simbol special " "
care semnificacaeste cea mai din stnga celulasi M 1 nu se poate misca
la stnga acestei locataii. Masaina Turing M 1 va fi construitaasaasimuleze
mas
ina Turing M 2 n modul urma
tor:
cnd M 2 lucreazaAla dreapta pozitA
iei initA
iale, masA
ina M 1 lucreazaApe
pista de sus, fa
cnd aceleas
i operat
ii ca s
i M 2 ; cnd M 2 lucreazala
stnga pozit!iei init!iale, M 1 lucreaza! pe pista de jos, fa!cnd aceleas!i
nlocuiri ca si M 2 si miscndu-se n directia opusalui M 2 .
Fie
masina
Turing
M 2 = ( S 2 , 2 , 2 ,2 ,s2 ,B,F2 ) ;
atunci
M 1 = ( S1 ,1 ,1 ,s1 ,B,F1 ) unde:
S1 = {s1} {[ s,U ],[ s,D] |s S2 } , U semnificacaM 1 lucreazape

pista de sus si D semnifica faptul ca M 1 lucreaza pe pista de jos.


1 = {[a,B ],a } ;
1 = {[ x,y ] |x,y 2 ,y poate fi s`i }

Blancul n M 1 este identificat cu [ B,B ] ;


F1 = {[ s,U ],[ s,D] |s F2 } .

Functia 1 o definim dupacum urmeaza


:
1. 1 ( s1 ,[a,B]) = ([ s,U ],[ x, ],R ) daca 2 ( s2 ,a ) = ( s,x,R ) pentru
a 2 {B} ;
2. 1 ( s1 ,[a,B]) = ([ s,D],[ x, ],R ) daca 2 ( s2 ,a ) = ( s,x,L) pentru
a 2 {B} ;
3. 1 ([ s,U ],[ x,y ]) = ([ s,U ],[ z,y ],A) daca\ 2 ( s,x) = ( s,z,A) pentru
[ x,y ] 1 , y si A = L sau A = R ;
4.

1 ([ s,D],[ x,y ]) = ([ s,D],[ x,z ],A) daca2 ( s,y ) = ( s,z,A) pentru

[ x,y ] 1 , y , A = L daca{A = R si invers;


5. 1 ([ s,U ],[ x, ]) = 1 ([ s,D],[ x, ]) = ([ s,C ],[ y, ],R )
daca;
2 ( s,x) = ( s,y,A) , unde C = U , daca A = R si C = D , daca
A=L.
Din definirea lui 1 , se vede ca M 1 simuleaza M 2 , pastrnd starea lui
M 2 n prima componentaa sta
rii, fa
cnd aceleas
i nlocuiri ca s
i pe pista
98

de sus - daca M 2 lucreazala dreapta pozitiei initiale - si pe pista de jos dacaM 2 lucreazala stnga pozitiei initiale. Cnd M 2 trece prin pozitia
initaialaa, de la dreapta la stnga, sau invers, masaina M 1 trece de pe pista
de sus pe pista de jos, sau invers.
Este evident cabL( M 1 ) = L( M 2 ) .

3.3. Maslini Turing cu mai multe benzi


Un model pentru masini Turing, este cel din Figura 5.3.

-1 0 1

banda 1

banda n

-1 0 1

Unitate de
control

Figura 5.3. MasL


inaLTuring cu mai multe benzi
Modelul pentru massina Turing cu mai multe benzi constasdin:

n benzi infinite n ambele directii;

o unitate de control preva'zuta'cu n capete de citire/scriere


care vizeazaj cte o locatjie de pe fiecare bandaj sji care se misjcaj
independent. Miscarea depinde de starea unitatii de control si de
simbolul cercetat pe fiecare banda
, de capul de citire/scriere.

99

n urma cercetarii simbolurilor de pe cele n benzi si de starea n care se


afla unitatea de control, masina Turing face urmatoarele operatii:

schimbastarea unita
tii de control;

scrie un nou simbol n fiecare locat-ie cercetata-de capetele


de citire/scriere;

misIcaIcapetele sale de citire/scriere, independent unul de


altul, cu o locat
ie la stnga sau la dreapta.
Formal, o maskinakTuring cu n benzi se poate defini n felul urmak
tor:
M = ( S ,,, ,s0 ,B,F ) , unde

S ,,,s0 ,B sci F sunt ca la mascina Turing cu o bandac;

:S n S n {L,R}n .
O configuratB
ie este ( 1s 1 , 2 s 2 ,ak s k ) . O tranzitB
ie de la o
configuratw
ie la alta, se face ca la masw
inile Turing cu o bandaw
, lucrnd pe
fiecare componenta, tinnd cont de modificarea si de miscarea definitade
functia de tranzitie pentru componenta respectiva.
L( M ) = {w | w ,( s0 w,s0 ,,s0 )

*
M

( 1s 1 ,, k s

),s F }

Pentru a vedea dac un cuvnt w este acceptat, se pune cuvntul pe


banda 1, pe celelalte benzi se pune blanc, se pozit7ioneaz capetele de
citire/scriere pe pozit[iile originale, unitatea de control se pune n starea
s0 si se d drumul mas[inii s funct[ioneze, dupa[funct[ia . Daca[mas[ina
intraIntr-o stare finalaI, se acceptaI w ; n caz contrar, cuvntul w nu se
acceptaj.
Dam, farademonstratie, urmatoarea teorema.
Teorema 5.3.3.1. Un limbaj, acceptat de o mas
inaTuring cu mai multe
benzi, este acceptat de o mas
inaTuring cu o banda
.

3.4. Mas\ini Turing nedeterministe


Un model pentru o masinaTuring nedeterministaconstadintr-o unitate
de control sA
i o bandaAde intrare cu o cale infinitaA
. Pentru fiecare stare sA
i
simbol cercetat pe banda de intrare, masina are un numa
r finit de
posibilitati de alegere, fiecare alegere constnd din o nouastare a unitatii
de control, un simbol scris pe banda si o deplasare stnga sau dreapta a
capului de citire/scriere.
100

Formal, o mas
inaTuring nedeterministaeste:
M = ( S ,,, ,s0 ,B,F ) , unde
:S Pf ( S {L,R}) .
Celelalte elemente ale masinii Turing M sunt definite ca la masina
Turing determinista{,iar Pf nseamna{mult{imea pa{rt{ilor finite.
Configurat
iile, tranzit
iile M si M* se definesc n mod analog ca la mas
ini
Turing deterministe. Limbajul acceptat de o masV
inaV Turing

*
nedeterministaeste L( M ) = {w | w ,s0 w M 1 s 2 , s F } .
Ca sO
i la automate finite, nedeterminismul nu maO
resO
te puterea de generare
a masinilor Turing. De fapt, combinarea nedeterminismului cu orice
extensie privind benzile de intrare (benzi de intrare cu douarcari infinite,
benzi de intrare multiple) nu mareste puterea de generare.
Teorema 5.3.4.1. Daca+L este un limbaj acceptat de o mas+
ina+
Turing nedeterminista; M 1 , atunci L este acceptat de o mas;ina;Turing
determinista M 2 .
Se poate arta c familia limbajelor recursiv enumerabile (familia
limbajelor acceptate de masV
ini Turing) este egal cu familia limbajelor de
tio 0. Au loc urmtoarele teoreme:
Teorema 5.3.4.2. Dac L L 0 atunci el este un limbaj acceptat de
o masin Turing.
Are loc s
i teorema reciproc.
Teorema 5.3.4.3. Dac L este un limbaj recursiv enumerabil (adic
acceptat de o mas,in Turing) atunci el este un limbaj de tip 0.

4. Automate liniar mrginite s


i limbaje de tip 1
Vom introduce un nou dispozitiv de acceptare de limbaje sG
i vom araG
ta caG
acest dispozitiv va accepta tocmai clasa limbajelor senzitive de context
L1.
Definit
ia 5.4.1. Un automat liniar ma
rginit ( LBA ) este o masinaTuring
101

nedeterministacare satisface urma


toarele douacondit
ii:
1) Alfabetul de intrare include doi simboli speciali si , care se
numesc marcatori la stnga si la dreapta, respectiv;
2) ( s, ) = ( s, ,R) si ( s, ) = ( s, ,L) .
Un automat liniar ma
rginit este de forma M = ( S ,,,,s0 , , ,F ) ,
unde S ,,, ,s0 si F sunt, ca la masina Turing, nedeterministe; si
sunt doi simboli speciali din si blancul nu face parte din .
Limbajul acceptat de un automat liniar marginit, M , este
L( M ) = {w | w ( { , }) , 0sw M* s , s F } .
Din definitia lui L( M ) , se vede ca marcatorii si nu fac parte din
cuvntul acceptat de automatul liniar ma
rginit; aces
ti simboli sunt pus
i pe
banda numai pentru a delimita cuvntul de intrare.
Se poate araY
ta caYfamilia limbajelor acceptate de automatele liniar
mairginite este familia L 1 .
Teorema 5.4.2. DacaIun limbaj L L 1 si / L , atunci existaIun automat
liniar ma:rginit care sa:accepte L .
Demonstrat]ie. Demonstrat]ia este similara] cu cea a teoremei 4.2.5.1.
DacamL L 1 , existamo gramaticamG = (VN ,VT ,x0 ,P ) cu L = L(G ) . Un
*

cuvnt w L dacas
i numai dacax0 w .
G

Noi vom considera un automat liniar marginit, cu banda de intrare cu


doua-piste, pe prima pista-vom plasa cuvntul w si pe a doua pista-vom
simula deriva
rile din G , pornind cu x0 .
Automatul liniar ma
rginit face urma
toarele operat
ii:
1. Dacacontinutul pistei a doua este , alege nedeterminist
o pozitie i n , 1 i | |.
2. Se selecteaza o regula u v P .
3. Daca' u apare n ncepnd cu pozit'ia i , nlocuim u
prin v , eventual deplasnd simboli la dreapta daca
|u |<|v |. Dacarezultatul nlocuirii lui u cu v este mai
lung dect w , se respinge acest cuvnt s
i se ncepe cu x0
pe pista a doua s
i se trece la pas 1.
4. Compara
m cuvntul rezultat pe pista a doua, cu cuvntul
w de pe pista unu. Daca continutul celor doua piste este
102

identic, se accepta w , dacanu, se trece la pasul 1.


Dacanu se mai poate aplica nici o regulasi continutul celor douapiste
difera9
, cuvntul w se respinge.
Din algoritmul de mai sus, se vede caw L( M ) dacas
i numai daca
*

exista o derivare x0 w , deci


G

w L(G ) , ceea ce ne arata ca

L(G ) = L( M ) .
Sademonstram acum caorice limbaj din LLBA este un limbaj din L 1 .
Teorema 5.4.3. Fie L = L( M ) cu M un automat liniar maF
rginit,
M = ( S ,,, ,s0 , , ,F ) , atunci L {} este un limbaj din L 1 .

Exercitii rezolvate:
1)Fie mas
ina Turing

M =(
, 0,1}{
, 0,1, x, yB}, , s0 , B,{s4 })cu
{s0 , s1 , s2 , s3 , s4}{
definit pentru:

s0
s1
s2
s3
s4

(s3 , y, R )

(s1 , y, R )
(s1, 0, R ) (s2 , y, L )
(s2 ,0, L )
(s0 , x, R ) (s2 , y, L )

(s3 , y, R ) (s4 , B, R )
(s1, x, R )

S se arate c L (M )= 0 1 | n 1 .
Rezolvare:

n n

| w {0,1}* L (M ). Sa considera
Sa demonstra
m ca ww
m
cteva cazuri particulare:

103

1) w = , atunci w = . Deci avem s0 Bs7 . Starea s7 este starea


finala, rezultaca este acceptat.
2) w = 01 , atunci w = 10 si
avem:
*
*
s0 0110 s1110 110s1 11s3 0 1s51 s5 B11 s011 s21 1s2 s41 s6 s0

s7

3) Sa consideram acum cazul general w = i1...ik , k 1 . Atunci


~

w = ik ik 1...i1 . Avem urma


toarele succesiuni de tranzitii.

i) Cazul i1 = 0
s0 0i2 ik ik ...i2 0

s1i2 ...ik ik ...i2 0

i2 ...ik ik ...i2 0 s1

i2 ...ik ik ...i2 s3 0 i2 ...ik ik ...i3 s5i2

s5 Bi2 ...ik ik ...i2 s0i2 ...ik ik ...i2 .


ii) Cazuk i1 = 1 se trateazacanalog.
s01i2 ik ik ...i21 s1i2 ...ik ik ...i21 i2 ...ik ik ...i21s1
*

i2 ...ik ik ...i3 s5i2

s5 Bi2 ...ik ik ...i2

i2 ...ik ik ...i2 s31

s0i2 ...ik ik ...i2 .

DacaRavem: s0i1...ik ik ...i1 s0i2 ...ik ik ...i2 ....... s0ik ik ss0 s7 . Deci orice
cuvnt de forma i1...ik ik ...i1 este acceptat de mas2ina Turing M.

Sademonstram acum ca L (M ) w w | w {0,1} . Fie un cuvnt

p L (M ). Fie p = i1...in , n 0 si i j {0,1}. Din p L (M ) avem


s0 p

1s7 2 . Sa vedem cum poate evolua masina M din s0 n s7 .

ConsideraS
m s0i1...in . Avem douaScazuri: i1 = 0 sau i1 = 1 . Ambele cazuri
se trateaza3analog as3a ca3vom considera numai cazul i1 = 0 :
s0 0i2 ...in

s1i2 ...in

i2 ...in s1

i2 ...in 1s3in .

Daca in = 1 atunci (s3 ,1)= , deci se blocheaza. Trebuie ca in = 0 . n


acest caz avem: i2 ...in 1s3 0 i2 ...in 2 s5in 1
Procednd n acels
i fel avem:
i1 = in
i2 = in 1
104

s5 Bi2 ...in 1

s0i2 ...in 1 .

.
.
.
i j = in j +1
Daca n ar fi impar, n = 2k +1 atunci am obtine: s0ik +1 . Avem iar doua
cazuri ik +1 = 0 si ik +1 = 1 .
s0 0 s1 s2 s}i ne-am blocat.
Analog cazul ik +1 = 1 . s01 s2 s4 si se blocheaza.
Deci n trebuie sa]fie par, n = 2k si avem i1 = 2k , i2 = 2k 1,..., ik = ik +1 .
~

Deci p = i1...ik ik ...i1 = w w .

TemaDde control:
Fie mascina Turing

M =(
, a, b, c, x, y, B}, , s0 , B,{s8 })
{s0 , s1 , s2 , s3 , s4 , s5 s6 , s7 , s8},{a, b, c}{
cu definit prin:

s0
s1
s2
s3
s4
s5
s6

(s1, x, R ) (s4 , x, R )
(s1, a, R ) (s1, b, R )
(s2 , a, R ) (s2 , b, R )

(s5 y, L )

(s6 y, L )
(s5a, L ) (s5 , b, L )
(s6a, L ) (s6 , b, L )

s7

s8

(s7 , L, R )
(s3 , c, R )
(s4 , c, R )

(s3 , y, R )

(s4 , y, R )

(s5 , c, L ) (s0 , x, R ) (s5 y, L )

(s6 , c, L ) (s0 , x, R ) (s6 y, L )

(s7 , y, R ) (s8 , B, R )

S se arate c L (M )= wcw | w {a, b} .


*

105

Bibliografie

1. Toader Jucan - Limbaje formale si automate, Editura Matrix Rom, Bucuresti,


1999, 162 p.
2. Toader Jucan, S
tefan Andrei Limbaje formale si teoria automatelor.Teorie si
practic, Editura Universittyii Al. I. Cuza, Iasyi, 2002, 327p.
3. Gheorghe Grigoras - Limbaje formale si tehnici de compilare, Editura
Universittii Al. I. Cuza, Iasi, 1985, 256p.
4. Virgil Cznescu Introducere n teoria limbajelor formale, Editura Academiei,
Bucures
ti, 1983.

107

Manualul de Limbaje formale si automate pentru sectia ID


Erata

1. Lista corectiilor de la Tema 1:


pag. 7, randul 3 de sus, se va citi: . . . neterminalii
pag. 17, randul 1 de jos, se va citi: G = ({x0 , x1 , x2 }, . . .)
pag. 18, randul 3 de sus, se va citi: 3) x1 x2 x2 x1
pag. 18, randul 9 de sus, se va citi: G = (. . . , {a, b, c}, A, P )
pag. 19, randul 4 de sus, se va citi: 6) B

2. La pag. 59, randurile 16 si 17 dispar (de la Teorema 3.18)


3. Lista corectiilor de la Tema 3:
pag. 70, randul 13 de sus, se va citi: (. . . , {a, z0 }, , s0 , z0 , {s3 }) cu . . .
pag. 70, randul 16 de sus, se va citi: 3) (s1 , b, a) = {(s2 , )}
pag. 71, randul 7 de sus, se va citi: 4) (s2 , b, b) = {(s2 , bb)}
pag. 95, randul 6 de jos, se va citi: x1 . . . xi1 sxi xi+1 . . . xn x1 . . . xi2 s xi1 yxi+1 . . . xn
pag. 96, randul 1 de jos, se va citi: L(M) = {w | w , s0 w M 1 s 2 , s F, 1 , 2 }

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