Sunteți pe pagina 1din 110

Limbaje formale

Mircea Dragan
May 25, 2010
Cuprins
1 Limbaje formale 3
1.1 Limbaje, gramatici, propriet at i generale . . . . . . . . . . . . . . . 3
1.2 Ierarhia Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 Propriet at i de nchidere a familiilor Chomsky . . . . . . . . . . . 14
1.4 Problema compil arii . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.5 Probleme propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2 Limbaje regulate 25
2.1 Automate nite si limbaje regulate . . . . . . . . . . . . . . . . . 25
2.2 Propriet at i speciale ale limbajelor regulate . . . . . . . . . . . . . 31
2.3 Lema de pompare pentru limbaje regulate . . . . . . . . . . . . . 34
2.4 Expresii regulate . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Sisteme tranzit ionale . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.6 Analiza lexical a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.7 Probleme propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3 Limbaje independente de context 53
3.1 Arbori de derivare . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 Decidabilitate si ambiguitate n familia /
2
. . . . . . . . . . . . . . 56
3.3 Forme normale pentru gramatici de tipul 2 . . . . . . . . . . . . . 59
3.4 Automate push-down (APD) . . . . . . . . . . . . . . . . . . . . . 65
3.5 Automate pushdown deterministe . . . . . . . . . . . . . . . . . 73
3.6 Lema BarHillel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.7

Inchiderea familiei /
2
la substitut ii . . . . . . . . . . . . . . . . . 80
3.8 Caracterizarea limbajelor independente de context . . . . . . . . . 84
4 Limbaje dependente de context 91
4.1 Gramatici monotone . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.2 Automate liniar m arginite . . . . . . . . . . . . . . . . . . . . . . 95
5 Limbaje de tipul zero 101
5.1 Forma normal a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.2 Masina Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
1
2 CUPRINS
Capitolul 1
Limbaje formale
1.1 Limbaje, gramatici, propriet at i generale
Not iunea generala de limbaj. Vom considera o mult ime nit a si nevida V ,
numit a alfabet sau vocabular. Elementele mult imii le vom numi simboluri (sau
litere, caractere, variabile).
Denit ie 1.1 Un cuv ant peste un alfabet V este un sir p = a
1
a
2
. . . a
n
, a
i

V, i = 1, n.
Numarul n, deci numarul simbolurilor cuv antului p, se numeste lungimea
cuv antului si va notat cu [p[ sau l(p). Vom considera si cuv antul vid sau e,
care nu cont ine nici un simbol; evident [[ = 0. Un rol deosebit l are simbolul
blanc notat cu (nu coincide cu ) precum si simbolul marcaj notat # pentru
delimitarea cuvintelor. Not iunea de cuvant este fundamental a n teoria lim-
bajelor formale sau n alte domenii ale informaticii; termeni sinonimi utilizat i n
literatur a sunt propozit ie, fraza sau sir. S a observ am c a nu exist a o similitu-
dine foarte buna ntre not iunile de alfabet, cuvant, etc. din teoria limbajelor
formale si not iunile corespunz atoare din lingvistic a.
Mult imea tuturor cuvintelor peste un alfabet V o not am cu V
+
. Aceasta
mult ime mpreuna cu cuv antul vid va notat a cu V

.

In general, vom utiliza litere mari de la sf arsitul alfabetului pentru notarea


diverselor alfabete, U, V, W, etc.; litere de la nceputul alfabetului (mari sau mici)
pentru notarea simbolurilor, A, B, C, . . . , a, b, c, . . . , i, j, . . . (uneori cifre 0,1,2,...);
pentru notarea cuvintelor vom utiliza litere mici de la sf arsitul alfabetului, p, q, r, s, t, u, v, w, x, y, z,
(aceast a convent ie de notare nu va absolut a).
Fie p = a
1
. . . a
n
, q = b
1
. . . b
m
. Denim pe mult imea V

operat ia de con-
catenare sau juxtapunere prin pq = a
1
. . . a
n
b
1
. . . b
m
.
Se poate verica usor c a aceast a operat ie este asociativa. Prin urmare,
mult imea V
+
nzestrata cu aceast a operat ie este un semigrup (semigrupul liber
peste V ). Mult imea V

cu aceiasi operat ie este un semigrup cu unitate, deci un
monoid, unitatea ind cuv antul vid (monoidul liber peste V ).
3
4 CAPITOLUL 1. LIMBAJE FORMALE
Fie din nou p, q V

. Vom spune c a q este un subcuv at sau un inx (eventual
propriu) al lui p daca p = uqv, u, v V

(eventual u, v V
+
); q este prex
(propriu) al lui p daca p = qv, v V

(v V
+
); q este sux (propriu) al lui p
daca p = uq, u V

(u V
+
).
Denit ie 1.2 Un limbaj L peste un alfabet V este o parte a monoidului liber
V

, deci L V

.
Sa observ am c a V

(sau V
+
) estentotdeauna o mult ime innit a (evident numarabila);
n aceast a accept iune generala, un limbaj poate sa e o mult ime nit a sau innit a,
uneori chiar vid a.
Exemplu. Fie V = 0, 1. Avem
V
+
= 0, 1, 00, 01, 10, 000, . . .,
V

= , 0, 1, 00, 01, 10, 000, . . ..
Limbaje peste alfabetul V sunt de exemplu mult imile
L
1
= , 00, 11,
L
2
= 1, 11, 111, . . . = 1
n
[n 1.
Observat ie. Notat ia a
n
, unde a este un simbol al unui alfabet, nseamn a
cuvantul constituit din n simboluri a, adic a aa . . . a
. .
.

In particular a
0
= .
Operat ii cu limbaje. Limbajele ind mult imi se pot efectua cu limbaje
operat iile obisnuite cu mult imi: reuniune, intersect ie, diferent a, complemen-
tariere (fat a de V

). Exist a si operat ii specice limbajelor:


Produsul (concatenarea) a dou a limbaje denit prin
L
1
L
2
= pq[p L
1
, q L
2
.
Dac a L
1
= L
2
= L vom nota LL = L
2
. Prin recurent a, se deneste L
n
astfel
L
0
= , L
k
= L
k1
L, k 1.


Inchiderea (Kleene) a unui limbaj L este
L

_
k=0
L
k
.

In general, o operat ie de n-aritate oarecare (cel mai adesea binar a sau


unar a) pe mult imea V

deneste o operat ie corespunzatoare pe mult imea


limbajelor. Astfel, dac a
: V

T(V

) si : V

V

T(V

)
1.1. LIMBAJE, GRAMATICI, PROPRIET

AT I GENERALE 5
sunt doua operat ii pe V

(unar a si respectiv binara) si L


1
, L
2
sunt doua
limbaje peste V , putem deni limbajele (L
1
) respectiv (L
1
, L
2
) prin
(L
1
) =
_
xL
1
(x), (L
1
, L
2
) =
_
xL
1
,yL
2
(x, y).
Exemple:
1. Limbajul Sub(L). Fie V

si Sub(x) mult imea tuturor subcuvintelor


lui x (evident Sub este o operat ie unar a pe V

). Daca L este un limbaj
peste V , putem deni limbajul
Sub(L) =
_
xL
Sub(x).
adica limbajul constituit din toate subcuvintele tututor cuvintelor lui
L. Semnicat ii analoage vor avea si limbajele Pref(L) si Suf(L).
2. Limbajul Mi(L). Fie x = a
1
. . . a
n
un cuvant peste alfabetul V .
Cuvantul Mi(x) = a
n
. . . a
1
se numeste r asturnatul lui x (Mi este
prescurtarea cuvantului englez mirror). Se mai noteaz a Mi(x) = x.
Avem atunci si rasturnatul unui limbaj
Mi(L) =
_
xL
Mi(x).
3. Operat ia de substitut ie. Fie U si V doua alfabete si e aplicat ia s :
V T(U

). Extindem (prelungim) aceast a aplicat ie la V



prin
s() = , s(xy) = s(x)s(y), x, y V

.
O astfel de prelungire se numeste canonic a; ea p astreaz a operat ia de
concatenare, n sensul c a dac a p = xy, atunci s(p) = s(x)s(y) este con-
catenarea limbajelor s(x), s(y). Operat ia de substitut ie a limbajelor
este data de
s(L) =
_
xL
s(x).
Sa observ am c a aceast a operat ie transforma un limbaj peste un alfa-
bet V ntr-un limbaj peste un alfabet U si ca p astreaz a operat ia de
concatenare. Dac a card s(a) < , a V , vom spune c a substitut ia
este nit a, iar dac a card s(a) = 1, a V vom spune ca s este un
homomorsm.
Gramatici generative de tip Chomsky. Un limbaj peste un alfabet poate
sa e o mult ime nit a sau innit a. Dac a este o mult ime nit a, el poate denit
6 CAPITOLUL 1. LIMBAJE FORMALE
prin scrierea efectiva a cuvintelor limbajului.

In cazul n care este o mult ime in-
nit a, el poate denit n anumite cazuri pun andn evident a structura cuvintelor
lui. De exemplu
L
2
= 01, 0011, 000111, . . . = 0
n
1
n
[n 1.
Exist a dou a procedee mai generale pentru denirea limbajelor:
1. Procedee generative, care permit generarea tuturor cuvintelor limbajului.
Exist a mai multe tipuri de mecanisme de generare a limbajelor, ntre care
gramaticile Chomsky, sisteme Lindenmayer,etc.
2. Procedee analitice, care determina daca un cuv ant dat apart ine sau nu
limbajului. Sunt asa-numitele automate, automate nite, automate push-
down, etc.
Un rol deosebit n teoria limbajelor formale l au gramaticile Chomsky. Fie V
N
si V
T
doua alfabete disjuncte, numite respectiv alfabetul simbolurilor neterminale
(V
N
) si alfabetul simbolurilor terminale (V
T
). Not am V
G
= V
N
V
T
(alfabetul
general) si e P V

G
V
N
V

G
V

G
. Mult imea P va deci format a din perechi
de forma (u, v), unde u = u

Au

, u

, u

V

G
, A V
N
iar v V

G
, deci u si v
sunt cuvinte peste V
G
, cu observat ia c a u trebuie sa cont ina cel put in un simbol
neterminal. Vom spune c a o astfel de pereche este o regula (product ie, regul a de
generare, regul a de rescriere) si o vom nota u v (vom spune: u se transforma
n v). Apartenent a unei reguli la P o vom nota n mod obisnuit (u v) P,
sau mai simplu, u v P (nu va exista confuzia cu faptul c a v este un element
al lui P).
Denit ie 1.3 O gramatic a (Chomsky) G este un sistem G = (V
N
, V
T
, S, P),
unde V
N
este alfabetul simbolurilor neterminale, V
T
este alfabetul simbolurilor
terminale, S V
N
si se numeste simbolul de start al gramaticii, iar P este
mult imea de reguli.
Observat ie. Simbolurile alfabetului V
N
le vom nota n general cu litere mari
A, B, C, . . . , X, Y, Z (mai put in U, V, W) iar cele ale alfabetului V
T
cu litere mici
de la nceput a, b, c, . . . sau cu cifre 0, 1, 2, . . ..
Fie Go gramatica si p, q V

G
. Vom spune c a p se transform a direct n q si vom
scrie p
G
q (sau pq daca nu exist a nici o confuzie) dac a exist a r, s, u, v V

G
astfel nct p = rus, q = rvs iar u v P. Vom spune ca p

se transform a n p

(f ar a specicat ia direct) dac a exist a p


1
, p
2
, . . . , p
n
, n 1 astfel nct
p

= p
1

G
p
2

G
. . .
G
p
n
= p

.
1.1. LIMBAJE, GRAMATICI, PROPRIET

AT I GENERALE 7
Vom scrie p

G
p

(sau p

+
p

cand nu exist a nici o confuzie) dac a n > 1 si


p

G
p

(sau p

G
p

) dac a n 1. Sirul de mai sus va numit derivare iar


num arul de derivari directe din sir l vom numi lungimea derivarii; se mai spune
ca p

deriva n p

.
Sa observ am c a transformarile astfel denite ,
+
,

sunt relat ii pe V

G
.
Este clar c a relat ia
+
este nchiderea tranzitiva a relat iei , iar relat ia

este
nchiderea tranzitiva si reexiva a relat iei de transformare directa .
Denit ie 1.4 . Limbajul generat de gramatica G este prin denit ie limbajul
L(G) = p[ p V

T
, S

G
p.
Observat ie. Dac a p V

G
si S

G
p se spune ca p este o form a propozit ional a n
gramatica G.
Exemple:
1. Fie G = (V
N
, V
T
, S, P), unde V
N
= A, V
T
= 0, 1, S = A (evident)
si P = A 0A1, A 01. O derivare n aceast a gramatica este, de
exemplu
A0A100A11000111 = 0
3
1
3
.
Este evident c a L(G) = 0
n
1
n
[n 1.
Observat ie.

In cazul n care mai multe reguli au aceeasi parte st ang a, le
vom scrie compact astfel u v
1
[v
2
[ . . . [v
n
, simbolul [ av and sensul de sau;
n cazul nostru, A 0A1[01.
2. G = (V
N
, V
T
, S, P), unde
V
N
= <propozit ie>, <subiect>, <atribut>, <predicat>, <complement>,
<substantiv>, <adjectiv>, <verb>, <articol>,
V
T
= o, orice, matrice, funct ie, derivabila, continu a, este ,
S =<propozit ie>,
P = <propozit ie><subiect><atribut><predicat><complement>,
<subiect><articol><substantiv>,
<atribut><adjectiv>,
<predicat><verb>,
<complement><adjectiv>,
<articol>o[orice,
<substantiv>matrice[funct ie,
<adjectiv>derivabil a[continu a,
<verb>este.
Observat ie.

In acest exemplu, <propozit ie>, <subiect>, etc., reprezint a
ecare c ate un simbol neterminal; de asemenea, o, orice, matrice,
8 CAPITOLUL 1. LIMBAJE FORMALE
etc., reprezinta simboluri terminale.
Se poate usor observa ca aceast a gramatica genereaza propozit ii simple de
forma subiect-atribut-predicat-complement care exprim a judecat i asupra
conceptelor de matrice si funct ie. De exemplu, se poate forma propozit ia:
orice funct ie derivabila este continu a, care este din punct de vedere se-
mantic corecta, precum si propozit ia orice funct ie continua este deriv-
abil a, care, dup a cum se stie, este falsa. Evident, se pot genera si nu-
meroase propozit ii care nu au sens. Ceea ce ne intereseaza n acest mo-
ment este aspectul formal, deci din punct de vedere sintactic toate aceste
propozit ii sunt corecte; semantic, unele propozit ii pot s a e incorecte sau
chiar s a nu aibe sens.
Sa mai observ am c a o gramatic a Chomsky este n m asur a s a constituie
un model matematic pentu sintaxa unei limbi, far a s a intereseze aspectele
semantice. Este ceea ce a ncercat sa nteprind a Naom Chomsky pentru
limba englez a n lucr arile sale din anii 1957.
3. G = (V
N
, V
T
, A
0
, P), unde
V
N
= <program>, <instruct ie>, <atribuire>, <if>, <expresie>, <termen>,
<factor>, <variabil a>, <index>,
V
T
= begin, end, if, then, stop, t, i, +, *, (, ), =, ,, ; ,
A0 =<program>
P = <program>begin <linie> end
<linie><linie>;<instruct ie> [ <instruct ie>
<instruct ie><atribuire> [ <if> [ stop
<atribuire><variabil a>=<expresie>
<if>if( <expresie>) then <atribuire>
<expresie><expresie> + <termen> [ <termen>
<termen><termen>*<factor> [ <factor>
<factor>(<expresie>)[ <variabil a>
<variabil a>t(<index>)[i
<index><index>, <expresie> [ <expresie>
Gramatica din acest exemplu deneste un limbaj de programare simplu
cu trei tipuri de instruct ii: atribuiri, if-then, stop. Expresiile aritmet-
ice au numai operatorii + si * iar variabilele pot simple sau indexate
(tablouri). Ment ion am c a denirea n acest mod a unui limbaj, inclusiv
utilizarea crosetelor pentru desemnarea simbolurilor neterminale, poart a
adesea denumirea de notat ie Backus Naur; n acest mod s-a denit limba-
jul ALGOL.
Tipuri de gramatici. Dup a forma regulilor de generare, gramaticile Chomsky
se mpart n mai multe tipuri; clasicarea obisnuita este urm atoarea:
Gramatici de tipul 0; sunt gramatici far a restrict ii asupra regulilor;
1.1. LIMBAJE, GRAMATICI, PROPRIET

AT I GENERALE 9
Gramatici de tipul 1 (dependente de context); sunt gramatici care au reguli
de forma
uAv upv, u, p, v V

G
, p ,= , A V
N
sau A si n acest caz A V
N
nu apare n dreapta vreunei reguli.
Observat ie. Evident, regulile de forma a doua au sens numai dac a A este
simbolul de start.
Gramaticile de tipul 2 (independente de context); sunt gramatici care au
reguli de forma
A p, A V
N
, p V

G
.
Gramaticile de tipul 3 (regulate); sunt gramatici care au reguli de forma
_
A Bp
C q
sau
_
A pB
C q
cu A, B, C V
N
si p, q V

T
.
Vom nota cu L
j
, j = 0, 1, 2, 3 familiile de limbaje generate de gramaticile
de tipurile j = 0, 1, 2, 3; vom avea astfel limbaje de tipul 0, limbaje de tipul 1
(sau dependente de context) , limbaje de tipul 2 (sau independente de context)
si limbaje de tipul 3 (sau regulate). S a observ am c a este importanta structura
cuvintelor unui limbaj si nu modul n care sunt notate simbolurile terminale. De
exemplu , limbajele
L

2
= 0
n
1
n
[n 1, L

2
= a
n
b
n
[n 1
sunt n mod practic identice. Putem utiliza o unica notat ie pentru alfabetul
simbolurilor terminale , de exemplu , V
T
= i
1
, . . . , i
n
. Clasicarea de mai
sus este fundamentala n teoria limbajelor formale, ea a fost introdusa de Naom
Chomsky n 1958 si prin tradit ie noile clase de limbaje sunt raportate la aceast a
clasicare. O alt a clasicare este urm atoarea
Gramatici de tipul 0; far a restrict ii;
Gramatici monotone:
u v, [u[ [v[, u, v V

G
;
Gramatici dependente de context (de tipul 1):
uAv upv, u, p, v V

G
, p ,= , A V
N
;
10 CAPITOLUL 1. LIMBAJE FORMALE
Gramatici independente de context (de tipul 2):
A p, A V
N
, p V

G
;
Gramatici liniare:
_
A uBv
C p
A, B, C V
N
, u, v, p V

T
;
Gramatici st ang (drept) liniare:
_
A uB (A Bv)
C p
A, B, C V
N
, u, v, p V

T
;
Gramatici regulate (de tipul 3); gramatici stang liniare sau gramatici drept
liniare.
Gramaticile monotone ca si cele dependente de context nu pot avea reguli cu
partea dreapt a vid a. Se introduce urm atoarea convent ie de completare: ntr-
o gramatic a monoton a sau dependent a de context se admite o regula de forma
A cu condit ia ca A sa nu apar a n partea dreapt a a vreunei reguli. Dup a
cum vom vedea , existent a sau inexistent a regulilor de forma A , reguli
numite de stergere, poate modica esent ial puterea generativa a unei gramatici.
O gramatica n care nu avem astfel de reguli o vom numi uneori -libera; de
asemenea, un limbaj care nu cont ine cuvantul vid, l vom numi -liber. Sa mai
observ am c a existent a regulilor de stergere ntr-o gramatica nu implic a n mod
necesar existent a cuvantului vid n limbajul generat.
Dou a gramatici care genereaz a acelasi limbaj se numesc echivalente.
Gramaticile monotone si gramaticile dependente de context sunt echivalente;
de asemenea, gramaticile drept si stang liniare sunt echivalente, justicandu-se
astfel clasa gramaticilor regulate.
1.2 Ierarhia Chomsky
Lemele care urmeaz a vor avea o utilizare frecvent an cele ce urmeaza. Lema de localizare a grama
Lema 1.1 Fie G o gramatica independent a de context si e derivarea
X
1
. . . X
m

p, X
j
V
G
, j = 1, m, p V

G
.
Atunci exist a p
1
, p
2
, . . . , p
m
V

G
astfel nc at p = p
1
. . . p
m
si X
j

p
j
, j = 1, m.
1.2. IERARHIA CHOMSKY 11
Demonstrat ie. Proced am prin induct ie asupra lungimii derivarii l.
Dac a l = 0 atunci p = X
1
. . . X
m
si luam p
j
= X
j
.
Presupunem ca proprietatea este adev arat a pentru deriv ari de lungime l si e o
derivare de lungime l + 1, X
1
. . . X
m

p. Punem n evident a ultima derivare di-


rect a X
1
. . . X
m

qp. Conform ipotezei inductive, q = q


1
. . . q
m
si X
j

q
j
, j =
1, m.
Fie apoi A u regula care se aplican derivarea direct a qp si sa presupunem
ca A intr a n subcuv antul q
k
, deci q
k
= q

k
Aq

k
. Vom lua
p
j
=
_
q
j
, j ,= k
q

k
uq

k
, j = k
Este evident c a X
j

p
j
, j ,= k, iar pentru j = k avem
X
k

q
k
= q

k
Aq

k
q

k
uq

k
= p
k
.2
Vom pune n evident a n continuare o proprietate asupra structurii regulilor
gramaticilor Chomsky. Partea dreapt a a unei reguli, pentru toate tipurile de
gramatici, este un cuvant format din terminale sau neterminale. Este convenabil
de multe ori ca partea dreapt a a regulilor s a cont ina un singur tip de simboluri,
terminale sau neterminale. Acest lucru este posibil f ar a modicarea tipului gra-
maticii.
Lema 1.2 Fie G = (V
N
, V
T
, S, P) o gramatic a de tipul 2. Exista o gramatic a G

echivalent a, de acelasi tip, cu proprietatea c a daca o regul a are n partea dreapt a


un terminal, atunci ea este de forma A i, A V
N
, i V
T
.
Demonstrat ie. Lu am gramatica G

de forma G

= (V
N

, V
T

, S, P

) unde V
N

si P

se construiesc astfel: V
N
V
N

si includemn P

toate regulile din P care convin.


Fie acum o regul a din P care nu convine
u v
1
i
1
v
2
i
2
. . . i
n
v
n+1
, i
k
V
T
, v
k
V

N
.
Vom introduce n P

urmatoarele reguli:
u v
1
X
i
1
v
2
X
i
2
. . . X
in
v
n+1
, X
i
k
i
k
, k = 1, n,
unde X
i
k
sunt neterminale noi pe care le ad aug am la V
N

. Este evident ca G

pastreaz a tipul lui G si ca L(G

) = L(G).2
Ierarhia Chomsky. Este evident ca /
3
/
2
si ca /
1
/
0
, deoarece orice
regul a a unei gramatici de tipul 3 respecta prescript iile unei gramatici de tipul
2; analog pentru familiile /
1
si /
2
. Aparent, o regul a de forma A p (de tipul
2) este un caz particular a unei reguli de forma uAv upv (de tipul 1), pentru
u = v = ; totusi, realitatea nu este aceasta, deoarece la tipul 2 de gramatici
12 CAPITOLUL 1. LIMBAJE FORMALE
sunt permise reguli de stergere, pe cand la tipul 1 se impune condit ia p ,= . Vom
ar ata c a avem /
2
/
1
.
Sirul de incluziuni
/
3
/
2
/
1
/
0
poart a denumirea de ierarhia Chomsky (vom ar ata pe parcursul acestui curs ca
incluziunile sunt stricte). Aceasta ierarhie caracterizeaz a puterea generativa a
celor patru tipuri de gramatici, aceast a putere ind crescatoare de la 3 la 0.
Orice alte mecanisme generative se raporteaz a la aceast a ierarhie fundamental a.
Vom demonstra mai nt ai urm atoarea lem a.
Lema 1.3 (Lema eliminarii regulilor de stergere). Orice limbaj independent de
context -liber poate generat de o gramatic a de tipul 2 f ar a reguli de stergere.
Demonstrat ie. Fie G = (V
N
, V
T
, S, P) o gramatic a independent a de context si
L(G) limbajul generat. Prin ipotez a , L(G). Denim prin recurent a sirul de
mult imi U
k

kN
astfel:
U
1
= X[X V
N
, X P
U
k+1
= X[X V
N
, X p P, p U

k
.
Sa observ am c a U
1
U
2
. . . U
k
. . ..

Intr-adevar, U
1
U
2
deoarece dac a
X U
1
rezulta c a X P si cum U

1
rezulta c a X U
2
. Dac a
acum U
k1
U
k
, atunci evident U

k1
U

k
si daca X U
k
, deci X p,
p U

k1
U

k
, ceea ce nseamn a c a X U
k+1
, adic a U
k
U
k+1
.
Cum toate aceste mult imi sunt incluse n V
N
si V
N
este nit a, rezult a c a exist a
o mult ime nala U
f
astfel astfel ncat
U
1
U
2
U
f
= U
f+1
= .
Are loc de asemenea si implicat ia X U
f
X

.
Vom ilusta aceasta implicat ie cu un exemplu. Sa presupunem ca U
f
= U
3
si
e X U
3
. Atunci n mod necesar trebuie s a avem X p P, p U

2
; de
exemplu p = X
1
X
2
si X
1
, X
2
U
2
.

In mod analog
_
X
1
Y
1
Y
2
Y
3
X
2
Z
1
Z
2
, Y
1
, Y
2
, Y
3
, Z
1
, Z
2
U
1
,
prin urmare Y
1
, Y
2
, Y
3
, Z
1
, Z
2
. Putem scrie derivarea
XX
1
X
2

Y
1
Y
2
Y
3
Z
1
Z
2

.
Denim acum urm atoarea gramatic a independent a de context f ar a reguli de
stergere G

= (V
N
, V
T
, S, P

) unde V
N
, V
T
, S sunt ca n gramatica dat a, iar P

se
construieste pornind de la P astfel. Fie X p P, p ,= . Includem atunci n
1.2. IERARHIA CHOMSKY 13
P

aceasta regul a precum si toate regulile de forma X p


j
, unde p
j
se obt ine din
p las and la o parte, n toate modurile posibile, simbolurile din U
f
. De exemplu
daca X ABC P si A, B U
f
, vom induce n P

regulile
X ABC, X BC, X AC, X C.
Sa observ am c a n acest fel mult imea P a fost pe de o parte micsorat a (au fost
excluse regulile de stergere), iar pe de alt a parte mbog at ita cu eventualele noi
reguli. Sa mai obsev am c a G

este independent a de context si ca nu cont ine reguli


de stergere.
Vom ar ata c a L(G) = L(G

).
Mai nt ai, s a ar at am c a L(G) L(G

).
Fie p L(G), deci S

G
p; vom ar ata c a S

p.
Vom ar ata o implicat ie ceva mai general a, X

G
p implica X

p, pentru
orice X V
N
(relat ia cerut a se obt ine pentru X = S). Proced am prin induct ie
asupra lungimii derivarii l. Dac a l = 1 avem
X
G
p, X p P, p ,= X p P

si deci X

p.
Presupunem ca armat ia este adev arat a pentru l = n si luam o derivare cu
lungimea l = n + 1. Punem n evident a prima derivare direct a
X
G
X
1
. . . X
m

G
p
Conform lemei de localizare avem p = p
1
. . . p
m
si X
j

G
p
j
, j = 1, m. Un-
ele din cuvintele p
j
pot s a e vide; pentru precizarea ideilor sa presupunem ca
p
2
, p
3
, p
5
= . Atunci pentru deriv arile X
j

G
p
j
, j ,= 2, 3, 5, care au lungimea
de cel mult n, conform ipotezei inductive avem X
j

p
j
, j = 2, 3, 5.
Pe de alt a parte , pentru j = 2, 3, 5 avem X
2

G
, X
3

G
, X
5

G
,
deci X
2
, X
3
, X
5
U
f
. Rezult a c a
X X
1
X
4
X
6
. . . X
m
P

asa ncat putem scrie


X
G

X
1
X
4
X
6
. . . X
m

p
1
p
4
p
6
. . . p
m
= p.
14 CAPITOLUL 1. LIMBAJE FORMALE
Deci X

p si luand X = S obt inem p L(G

). Prin urmare L(G) L(G

).
Sa ar at am acum incluziunea invers a , L(G

) L(G).
Fie p L(G

), S

p. Punem n evident a o derivare direct a oarecare


S

u
G

p.
Dac a n derivarea direct a u
G

v se aplica o regul a care exist a si n G, atunci


evident pasul respectiv poate facut si n G. S a presupunem ca se aplic a o regul a
nou introdus a de exemplu X BC, deci pasul respectiv va avea forma
u = u

Xu

BCu

= v
dar regula X BC din P

a provenit dintr-o regul a din P, l as and la o parte


simboluri din U
f
, n cazul nostru din X ABC, las andu-l la o parte pe A U
f
.
Deoarece A

G
, avem
u = u

Xu


G
u

ABCu

G
u

ABCu

= v.
Prin urmare orice pas al deriv arii considerate se poate obt ine si n gramatica G,
deci A
0

G
p si p L(G), adic a L(G

) L(G).
Sa consider am acum o gramatica G de tipul 2 si sa presupunem ca L(G).
Construim gramatica G

ca si mai sus; orice cuvant p ,= din L(G) se poate


obt ine n G

si invers , deci L(G

) = L(G) . Consider am atunci o gramatic a


G

= (V
N
S

, V
T
, S

, P

, S

S). Evident L(G

) = L(G).
Toate regulile lui G

respecta tipul 1 (cu u = v = ) si cont ine o singur a regul a


de stergere S

iar S

nu apare n partea dreapt a a vreunei reguli. Deci


G

este de tipul 1 si orice limbaj independent de context este inclus n /


1
, adic a
/
2
/
1
.2
1.3 Proprietat i de nchidere a familiilor Chom-
sky
Fiind dat a o operat ie binar a notat a cu pe o familie de limbaje L, vom spuna
ca familia L este nchisa la operat ia dac a L
1
, L
2
L implica L
1
L
2
L.
Denit ia not iunii de nchidere pentru operat ii unare sau cu aritate oarecare este
analoag a.
Vom numi familiile din clasicarea Chomsky, mai scurt, familiile Chomsky.
Se poate demonstra ca familiile de limbaje din ierarhia Chomsky sunt nchise la
1.3. PROPRIET

AT I DE

INCHIDERE A FAMILIILOR CHOMSKY 15
operat iile regulate, adica reuniune, produs si nchidere Kleene. O demonstrat ie
detaliat a poate g asit a n Dragan[1998] sau Jucan[1999]. In cele ce urmeaz a vom
prezenta doar demonstrat iile pentru cazul familiilor /
j
, j = 2, 3.

Inchiderea familiilor Chomsky la reuniune.


Teorema 1.1 Familiile de limbaje L
j
, j = 2, 3 sunt nchise fat a de reuniune.
Demonstrat ie. Fie G
k
= (V
N
k
, V
T
k
, S
k
, P
k
), k = 1, 2 dou a gramatici de acelasi
tip j, j = 0, 1, 2, 3. Putem presupune c a V
N
1
V
N
2
= . Trebuie sa ar at am
ca limbajul L(G
1
) L(G
2
) este de acelasi tip j.

In acest scop vom construi
o gramatica de tipul j care sa genereze limbajul L(G
1
) L(G
2
). Consider am
urmatoarea gramatic a:
G = (V
N
1
V
N
2
S, V
T
1
V
T
2
, P
1
P
2
S S
1
[S
2
).
Este evident c a G are acelas tip j ca si cele doua gramatici date.
Vom ar ata c a L(G) = L(G
1
) L(G
2
).
Fie p L(G), adic a S

G
p.

In prima derivare directa trebuie cu necesitate
sa se utilizeze una din regulile S S
1
sau S S
2
. Prin urmare avem una din
urmatoarele dou a variante:
S
G
S
1

G
p, deci S
1

G
1
p, p L(G
1
) L(G
1
) L(G
2
)
S
G
S
2

G
p, deci S
2

G
2
p, p L(G
2
) L(G
1
) L(G
2
).
Deci p L(G
1
) L(G
2
), adic a L(G) L(G
1
) L(G
2
).
Observat ie.

In implicat ia S
1

p n gramatica G
1
rezulta S
1

G
p se uti-
lizeaza faptul c a neterminalele celor dou a gramatici sunt disjuncte. Astfel, derivarea
S
1
p se va scrie detaliat astfel
G : S
1
u
1
u
2
. . . u
n
= p.

Intrucat S
1
V
N
1
si S
1
, V
N
2
n derivarea direct a S
1
u
1
se utilizeaza cu necesi-
tate o regul a din P
1
; prin urmare u
1
V

G
1
, deci toate neterminalele din u
1
sunt
din V
N
1
. Mai departe, n derivarea direct a u
1
u
2
se utilizeaza cu necesitate o
regul a din P
1
, etc.

In consecint a, n derivarea S
1

G
p toate simbolurile sunt din
V
G
1
si se utilizeaza numai reguli din P
1
, de unde rezulta implicat ia.
Invers, e p L(G
1
) L(G
2
). Daca, de exemplu, p L(G
1
), avem S
1

G
1
p,
rezulta S
1

G
p, deci putem construi derivarea S
G
S
1

G
p.
Prin urmare, p L(G) si L(G
1
) L(G
2
) L(G).2
Exemplu. Fie limbajele
16 CAPITOLUL 1. LIMBAJE FORMALE
L
1
= 1, 11, 111, . . ., L
2
= 01, 0011, 000111, . . ..
Se poate verica ca aceste limbaje sunt generate de gramaticile
G
1
: A 1A[1,
G
2
: B 0B1[01.
Se vede ca L
1
/
3
/
2
, L
2
/
2
deci ambele limbaje sunt de tipul 2. Problema
nchiderii familiei /
2
la reuniune const a n: este limbajul
L
1
L
2
= 1, 11, . . . , 01, 0011, . . .
de asemenea de tipul 2 (adic a exist a o gramatic a de tipul 2 care s a l genereze) ?
R aspunsul este armativ; gramatica de tipul 2 care genereaz a limbajul L
1
L
2
are regulile
S A[B, A 1A[1, B 0B1[01.

Inchiderea familiilor Chomsky la produs.


Teorema 1.2 Familiile de limbaje /
j
, j = 2, 3 sunt nchise fat a de produs.
Demonstrat ie. Fie G
k
= (V
N
k
, V
T
k
, S
k
, P
k
), k = 1, 2 dou a gramatici de acelasi tip
j, j = 2, 3. Putem presupune c a V
N
1
V
N
2
= . Vom construi o gramatic a de
tipul j care sa genereze limbajul L(G
1
)L(G
2
).
Familia /
2
. Lu am gramatica G astfel
G = (V
N
1
V
N
2
S, V
T
1
V
T
2
, P
1
P
2
S S
1
S
2
).
Fie p L(G), S

G
p. Aceasta derivare va avea forma
S
G
S
1
S
2

G
p.
Vom aplica lema de localizare de la limbajele independente de context: dac a
S
1
S
2

p atunci p = p
1
p
2
si S
1

p
1
, S
2

p
2
.
Mai departe, avem c a p
1
L(G
1
), p
2
L(G
2
) si deci p L(G
1
)L(G
2
).
Invers, e p L(G
1
)L(G
2
). Atunci p = p
1
p
2
si S
1

G
1
p
1
, S
2

G
2
p
2
. Aceste
derivari sunt valabile si n gramatica G. Prin urmare putem scrie:
G : S
G
S
1
S
2

G
p
1
p
2
= p,
1.3. PROPRIET

AT I DE

INCHIDERE A FAMILIILOR CHOMSKY 17
adica p L(G) si L(G
1
)L(G
2
) L(G).2
S a mai observ am c a construct ia de mai sus nu se poate aplica la familia /
3
,
deoarece regula nou introdus a S S
1
S
2
nu este de tipul 3.
Familia /
3
. Lu am gramatica G de forma
G = (V
N
1
V
N
2
, V
T
1
V
T
2
, S
1
, P

1
P
2
),
unde P

1
se obt ine din P
1
prin nlocuirea regulilor de forma A p cu A pS
2
.
Evident, G astfel construita este de tipul 3.
Vom numi regulile de forma A pB de categoria I iar cele de forma C q
de categoria a II-a. Evident ca ntr-o derivare care transforma simbolul de start
ntr-un cuvant al limbajului generat de gramatic a, n toate deriv arile directe se
aplica reguli de categoria I iar n ultima o regul a de categoria II. Sa mai observ am
ca P

1
are reguli numai de categoria I.
Fie p L(G), deci S
1

G
p.

In aceast a derivare, primele reguli care se aplica
sunt din P
1
, apoi o regul a nou introdus a (cu necesitate, caci altfel nu putem
elimina neterminalele) iar ultimele reguli sunt din P
2
. Prin urmare, derivarea va
avea forma
S
1

G
qA
G
qrS
2
= p
1
S
2

G
p
1
p
2
= p.
Este clar c a S
1

G
1
qr = p
1
(la ultima derivare s-a reutilizat regula de categoria II
din P
1
din care a provenit regula nou a) si S
2

G
2
p
2
, adic a p
1
L(G
1
), p
2
L(G
2
).
Prin urmare p = p
1
p
2
L(G
1
)L(G
2
) si deci L(G) L(G
1
)L(G
2
).
Fie acum p L(G
1
)L(G
2
). Rezult a c a p = p
1
p
2
, p
1
L(G
1
), p
2
L(G
2
) si
deci S
1

G
1
p
1
, S
2

G
2
p
2
.

In derivarea S
1

G
1
p
1
ultima regula utilizat a este de
categoria a II-a, s a presupunem A r, deci aceasta derivare va avea forma
S
1

G
1
qAqr = p
1
.
Tinand cont c a n G avem regula A rS
2
, putem scrie n G derivarea
S
1

G
qA
G
qrS
2
= p
1
S
2

G
p
1
p
2
= p,
adica p L(G) si L(G
1
)L(G
2
) L(G).2

Inchiderea familiilor Chomsky la operat ia nchidere Kleene.


Teorema 1.3 Familiile /
j
, j = 2, 3 sunt nchise fat a de operat ia de nchidere
Kleene.
18 CAPITOLUL 1. LIMBAJE FORMALE
Demonstrat ie.
Familia /
2
. Construim gramatica G

astfel
G

= (V
N
S

, V
T
, S

, P P

S[)
Fie p L(G

), deci S

p. Aceasta derivare va avea forma (n G

)
(B) S

S . . . S

p.
Conform lemei de localizare, p = p
1
. . . p
n
, S

p
j
, j = 1, n si deci S

p
j
, ceea
ce nseamn a c a p L(G)
n
L(G)

, adic a L(G)

L(G

).
Invers, e p L(G)

; atunci p = p
1
. . . p
n
, S

p
j
, j = 1, n. Putem scrie atunci
derivarea (B) si p L(G

), adic a L(G)

L(G

).2
Familia /
3
. Construim gramatica G

astfel
G

= (V
N
S

, V
T
, S

, P P

S[),
unde P

se obt ine din regulile de categoria II din P si anume, daca A p P


atunci A pS P

.
Fie p L(G

), adic a S


p. Punandn evident a prima derivare direct a, avem
G

: S

S

p.
Dac a n derivarea S

p se aplica numai reguli din P, atunci S

G
p, p L(G)
L(G

).
Sa presupunem c a se aplic a si reguli din P

; derivarea va avea forma


(C) S

S

p
1
S

p
1
p
2
S

. . .

p
1
. . . p
n
.
Evident, S

p
j
, deci p
j
L(G), adic a p L(G)

, ceea ce nseamn a c a L(G

)
L(G)

.
Invers, e p L(G)

; atunci p = p
1
. . . p
n
, S

p
j
, j = 1, n, sau S

p
j
si putem
scrie derivarea (C). Aceasta nseamn a c a p L(G

) sau L(G)

L(G

).2
Recapitulare asupra construct iilor gramaticilor:
Reuniune
j = 2, 3 :
G = (V
N
1
V
N
2
S, V
T
1
V
T
2
, P
1
P
2
S S
1
[S
2
).
Produs
j = 2 :
G = (V
N
1
V
N
2
S, V
T
1
V
T
2
, P
1
P
2
S S
1
S
2
).
j = 3 :
G = (V
N
1
V
N
2
, V
T
1
V
T
2
, S
1
, P

1
P
2
),
1.4. PROBLEMA COMPIL

ARII 19
unde P

1
se obt ine din P
1
prin nlocuirea regulilor de forma A p cu A pS
2
.

Inchidere Kleene
j = 2 :
G

= (V
N
S

, V
T
, S

, P S

S[)
j = 3 :
G

= (V
N
S

, V
T
, S

, P P

S[).
1.4 Problema compilarii
Un limbaj de programare este un limbaj care are drept scop descrierea unor
procese de prelucrare a anumitor date si a structurii acestora (n unele cazuri
descrierea structurii datelor este preponderenta), prelucrare care se realizeaza n
general cu ajutorul unui sistem de calcul.
Exist a n prezent un numar mare de limbaje de programare de nivel nalt sau
evoluate care se caracterizeaza printr-o anumit a naturalet e, n sensul c a descrierea
procesului de prelucrare cu ajutorul limbajului este apropiat a de descrierea nat-
ural a a procesului respectiv precum si prin independent a unor astfel de limbaje
fat a de sistemul de calcul. Dintre limbajele de acest tip cu o anumit a r asp andire
n momentul de fat a ment ion am limbajele PASCAL, FORTRAN, C, JAVA, etc.
O alt a clas a importanta de limbaje, sunt limbajele de asamblare, sau de nivel
inferior, ale caror caracteristici depind de sistemul de calcul considerat. In gen-
eral, ecare sistem de calcul (sau tip de sistem de calcul), are propriul s au lim-
baj de asamblare; de exemplu, limbajul de asamblare ale sistemelor de calcul
echipate cu procesoare de tip Intel Z-80 este denumit n mod curent ASSEM-
BLER. Instruct iile unui limbaj de asamblare corespund cu operat iile simple ale
sistemului de calcul iar stocarea datelor n memorie este realizat a direct de uti-
lizator la nivelul locat iilor elementare ale memoriei. Exist a de asemenea anumite
pseudo-instruct ii sau directive referitoare la alocarea memoriei, generarea datelor,
segmentarea programelor, etc., precum si macroinstruct ii care permit generarea
unor secvent e tipice de program sau accesul la bibliotecile de subprograme.
In afara de limbajele evoluate si de limbajele de asamblare, exist a numeroase
limbaje specializate, numite uneori si de comand a, care se refera la o anumit a clas a
de aplicat ii. Ment ion am de exemplu limbajul pentru prelucrarea listelor LISP,
limbajele utilizate n cadrul softwarelui matematic (Mathematica, Maple, MAT-
CAD, etc.) si multe altele.

In general nsa astfel de limbaje nu sunt considerate
limbaje de programare propriuzise.
Un program redactat ntr-un limbaj de programare poarta denumirea de pro-
gram sursa. Fiecare sistem de calcul, n funct ie de particularit at ile sale, posed a
un anumit limbaj propriu, numit cod masin a, acesta ind singurul limbaj nt eles
de procesorul sistemului. Un astfel de limbaj depinde de structura instruct iilor
procesorului, de setul de instruct ii, de posibilit at ile de adresare, etc. Un pro-
gram redactat n limbajul cod masin a al sistemului de calcul l numim program
20 CAPITOLUL 1. LIMBAJE FORMALE
obiect.
Procesul de transformare al unui program sursa n program obiect se numeste
compilare sau translatare, uneori chiar traducere. De obicei termenul de com-
pilare este utilizat numai n cazul limbajelor evoluate, n cazul limbajelor de
asamblare ind utilizat termenul de asamblare.
Compilarea (asamblarea) este efectuat a de un program al sistemului numit
compilator (asamblor). De multe ori compilatoarele nu produc direct program
obiect, ci un text intermediar apropiat de programul obiect, care n urma unor
prelucr ari ulterioare devine program obiect. De exemplu, compilatoarele sis-
temelor de operare DOS produc un text numit obiect (siere cu extensia obj)
care n urma unui proces numit editare de leg aturi si a ncarc arii n memorie
devine program obiect propriuzis, numit program executabil (siere cu extensia
exe). Exist a mai multe rat iuni pentru o astfel de tratare, ntre care posibilitatea
cuplarii mai multor module de program realizate separat sau provenite din lim-
baje surs a diferite, posibilitatea crearii unor biblioteci de programe n formatul
intermediar si utilizarea lor n alte programe, etc.
Un program surs a poate de asemenea s a e executat de c atre sistemul de
calcul direct, far a transformarea lui prealabila n program obiect.

In acest caz,
programul surs a este prelucrat de un program al sistemului numit interpretor;
acesta ncarc a succesiv instruct iile programului surs a, le analizeaz a din punct
de vedere sintactic si semantic si dupa caz, le execut a sau efectueaza anumite
operat ii auxiliare.
Procesul de compilare este un proces relativ complex si comporta operat ii care
au un anumit caracter de autonomie. Din aceste motive procesul de compilare
este de obicei descompus n mai multe subprocese sau faze, ecare faz a ind o
operat ie coerenta, cu caracteristici bine denite.

In principiu aceste faze sunt
parcurse secvent ial (pot s a existe si anumite reveniri) iar programul surs a este
transformat succesiv n formate intermediare. Se poate considera ca ecare faz a
primeste de la faza precedent a un sier cu programul prelucrat ntr-un mod core-
spunzator fazei respective, l prelucreaz a si furnizeaza un sier de iesire, iar asi
ntr-un format bine precizat, sier utilizat n faza urmatoare. Exista cinci faze de
compilare principale: analiza lexical a, analiza sintactic a, generarea formatului in-
termediar, generarea codului, optimizarea codului si doua faze auxiliare, tratarea
erorilor si tratarea tabelelor (vezi gura 1.1).
Analiza lexicala are ca obiectiv principal determinarea unit at ilor lexicale ale
unui program, furnizarea codurilor acestora si detectarea eventualelor erori lex-
icale. Pe lang a aceste operat ii de baza, la analiza lexical a se mai pot efectua
anumite operat ii auxiliare precum: eliminarea blank-urilor (daca limbajul per-
mite utilizarea f ar a restrict ii a acestora), ignorarea comentariilor, diferite conver-
siuni ale unor date (care se pot efectua la aceast a faz a), completarea tabelelor
compilatorului.
Analiza sintactic a determin a unit at ile sintactice ale programului (secvent e
de text pentru care se poate genera format intermediar) si verica programul
1.4. PROBLEMA COMPIL

ARII 21
Analiza Lexicala
Analiza sintactica
Generarea formatului
intermediar
Generarea codului
Optimizarea codului
Tratarea
erorilor
Prelucrarea
tabelelor
Program Obiect
Program Sursa
Figura 1.1: Fazele compil arii
22 CAPITOLUL 1. LIMBAJE FORMALE
din punct de vedere sintactic. Este faza centrala a unui compilator, deseori toate
celelalte faze sunt rutine apelate de analizorul sintactic pe m asur a ce este posibil a
efectuara unei p art i din faza respectiva. Tot la analiza sintactic a se denitiveaz a
tabelele de informat ii si se realizeaza prelucrarea erorilor sintactice.
Faza de generare a formatului intermediar se refer a la transformarea progra-
mului ntr-o forma numit a intermediar a pornind de la care se poate, printr-o
procedur a relativ simpl a, s a se obt ina programul obiect. Structura acestei faze
depinde de formatul intermediar ales de catre proiectant si de modalitatea de
implementare; uzual se folosesc cvadruple, triplete sau sirurile poloneze.
Generarea codului este o faz a in care se realizeaza codul obiect corespunzator
programului. Practic n aceast a faz a se obt ine programul n limbaj de asamblare
corespunzator programului surs a redactat ntr-un limbaj evoluat.

In mod obisnuit
generatorul de cod este constituit din rutinele generatoare de cod corespunz atoare
diverselor unit at i ale formatului intermediar.

In faza de optimizare a codului se realizeaza o anumit a mbun at at ire a codului


obiect astfel ncat programul rezultat s a e c at mai performant (n privint a con-
sumului de timp si memorie). Cele mai tipice exemple sunt eliminareancarc arilor
si a memor arilor redundante sau optimizarea ciclurilor.
Fazele de Prelucrare a tabelelor si de Tratare a erorilor vor atinse numai
part ial n aceast curs. Facem nsa ment iunea ca prelucrarea tabelelor poate s a
aiba o inuent a importanta asupra performant elor unui compilator, n mod spe-
cial din punctul de vedere al timpului de execut ie (compilare) si ca tratarea
erorilor are o anumit a implicat ie n eliminarea erorilor sintactice.
1.5 Probleme propuse
1. G asit i limbajul generat de gramatica G = (V
N
, V
T
, S, P), preciz and tipul
gramaticii (cf. clasic arii Chomsky):
(a) V
N
= S; V
T
= 0, 1, 2;
P = S 0S0[1S1[2S2[0.
(b) V
N
= S; V
T
= a, b;
P = S aSb[ab.
(c) V
N
= S, A, B; V
T
= a, b, c;
P = S abc[aAbc, Ab bA, Ac Bbcc, bB Bb, aB
aaA[aa.
(d) V
N
= S, A, C; V
T
= +, , 0, 1, . . . , 9;
P = S A[ + A[ A, A AC[C, C 0[1[ . . . [9.
(e) V
N
= S, A, B; V
T
= 0, 1;
P = S 0S[1A, A 0B[1S[0, B 0A[1B[1.
(f) V
N
= A, V
T
= a, b, S = A, P = A aA[b;
1.5. PROBLEME PROPUSE 23
(g) V
N
= x
0
, V
T
= A, B, . . . , Z, S = x
0
, P = x
0
x
1
D,
x
1
x
2
N, x
2
E;
(h) V
N
= A, V
T
= 0, 1, 2, S = A, P = A 0A0[1A1[2A2[;
(i) V
N
= S, A, V
T
= 0, 1, . . . , 9, .,
P = S A.A, A 0A[1A[ . . . [9A[0[1[ . . . [9;
(j) V
N
= S, V
T
= PCR, PDAR, UDMR,
P = S PCR[PDAR[UDMR;
(k) V
N
= A, B, C, V
T
= 0, 1, S = A, P = A 0A[1B[1,
B 0C[1A, C 0B[1C[0;
(l) V
N
= S, A, B, C, V
T
= 0, 1, . . . , 9, +, ,
P = S +A[ A[A, A 0A[1A[ . . . [9A[0[1[ . . . [9;
(m) V
N
= S, V
T
= (, ), P = S S(S)S[;
(n) V
N
= E, T, F, V
T
= (, ), i, +, , S = E,
P = E E + T[T, T T F[F, F (E)[i;
(o) V
N
= S, A, B, V
T
= a, b, c, P = S abc[aAbc,
Ab bA, Ac Bbcc, bB Bb, aB aaA[aa;
(p) V
N
= S, A, B, C, D, E, V
T
= a, P = S ACaB, Ca aaC, CB
DB[E, aD Da, AD AC, aE Ea, AE ;
(q) V
N
= S, A, B, C, D, E, V
T
= a, b, P = S ABC,
AB aAD[bAE, DC BaC, EC BbC, Da aD, Db bD, Ea
aE, Eb bE, AB , C , aB Ba, bB Bb;
2. Precizat i care dintre gramaticile precedente sunt echivalente.
3. G asit i gramatici pentru generarea urm atoarelor limbaje:
(a) L = ;
(b) L = ;
(c) L = 0
n
[n N;
(d) L = a, ab, aab, ba, baa.
(e) L = a
n
cb
n
[n 1.
(f) L = w a, b, c

[w cont ine cc si se termina cu a.


(g) L = BEGIN[END[IF[WHILE[UNTIL.
(h) L = w 0, 1

[ reprezentarea binar a pe 8 bit i a unui ntreg .


(i) L = a
n
b
n+3
a
n+1
[n 0.
(j) L = w a, b, c

[w ncepe cu a si are maxim 4 litere .


(k) L = a
i
b
j
c
k
[i, j, k > 0.
24 CAPITOLUL 1. LIMBAJE FORMALE
(l) L = w 0, 1

[w multiplu de 8 .
(m) L = constante reale n scrierea obisnuita cu punct zecimal p
i
.p
z
.
(n) L = a
i
b
j
a
i
b
j
;
(o) L = awbbw

[w, w

0, 1

;
(p) L = w 0, 1

[w cont ine maxim 2 de 0 ;


(q) L = wa w[w 0, 1

;
(r) L = w[w octet ce reprezint a un num ar par ;
(s) L = A, B, C, . . . , Z;
4. Construit i o gramatica ce cont ine reguli de stergere, dar genereaz a un limbaj
-liber.
5. Folosind teorema s a se construiasc a o gramatica independent a de context,
far a reguli de stergere care genereaz a limbajul de la punctul precedent.
Capitolul 2
Limbaje regulate
2.1 Automate nite si limbaje regulate
Automate nite. Automatele nite sunt mecanisme pentru recunoasterea lim-
bajelor de tipul 3 (regulate). Un automat nit (AF) se compune dintr-o band a
de intrare si un dispozitiv de comanda.
Pe banda de intrare sunt nregistrate simboluri ale unui alfabet de intrare,
constituind pe banda un cuv ant p. La ecare pas de funct ionare banda se de-
plaseaza cu o pozit ie spre stanga.
Dispozitivul de comanda posed a un dispozitiv de citire de pe banda; dispoz-
itivul se aa permanent ntr-o anumit a stare intern a, element al unei mult imi
nite de st ari. Schema unui automat nit este redata n gura 2.1.
Automatul nit funct ioneaz a n pasi discret i. Un pas de funct ionare const a
din: dispozitivul de comanda citeste de pe banda de intrare simbolul aat n
dreptul dispozitivului de citire; n funct ie de starea interna si de simbolul citit,
automatul trece ntr-o noua stare si mut a banda cu o pozit ie spre stanga. Au-
tomatul si nceteaza funct ionarea dupa ce s-a citit ultimul simbol nregistrat pe
s S
i
1
i
2
i
3
. . .
i
k
. . .
i
n1
i
n Banda de intrare
Dispozitiv de citire
Dispozitiv de comanda

Figura 2.1: Reprezentarea schematic a a unui automat nit


25
26 CAPITOLUL 2. LIMBAJE REGULATE
banda; n acest moment el se va aa ntr-o anumit a stare, care, dupa cum vom
vedea, va juca un rol important n recunoasterea cuvintelor.
Din punct de vedere matematic, un automat nit este un sistem
AF = (, I, f, s
0
,
f
),
unde
este mult imea de stari;
I este alfabetul de intrare;
f : I T() este funct ia de evolut ie;
s
0
este starea init ial a;

f
este mult imea de stari nale.
Dac a pentru orice (s, i) I, avem [f(s, i)[ 1 automatul se numeste
determinist; n caz contrar se numeste nedeterminist.
Observat ii:
(1) T() este mult imea p art ilor lui ; deoarece T() este posibil ca
pentru un anumit s S si i I sa avem f(s, i) = .
(2)

In cazul unui automat determinist vom scrie f(s, i) = s

(n loc de f(s, i)
s

.
(3) Denit ia dat a este specica teoriei limbajelor formale. O alt a denit ie
(mai general a) , nt alnit a n teoria automatelor este urm atoarea: un automat
nit este un sistem AF = (, I, O, f, g, s
0
, F) unde, , I, f, s
0
, F au semnicat ia
de mai sus, O este alfabetul de iesire iar g : I T(O) este funct ie de iesire.
Funct ionalitatea unui astfel de automat nit este analoag a cu cea descrisa mai
sus, cu deosebirea ca la ecare pas automatul furnizeaz a o iesire o g(s, i).
Funct ionarea unui automat nit se poate bloca n situat ia n care el se a a
n starea s, citeste de pe banda simbolul i si f(s, i) = ; evident ca n acest caz
funct ionarea n continuare nu mai este posibil a.
Prin diagrama de st ari a unui automat nit nt elegem un graf orientat care are
nodurile etichetate cu starile s iar arcele se construiesc astfel: nodurile s, s

se unesc cu un arc orientat de la s la s

daca exist a i I astfel ncat s

f(s, i);
arcul respectiv va notat cu i.
Exemplu AF = (, I, f, s
0
,
f
) unde = s
0
, s
1
, s
2
, I = i
1
, i
2
,
f
= s
2
,
iar f este data de tabelul
s
0
s
1
s
2
i
1
s
1
s
2
s
0

i
2
s
0
, s
1
s
0
, s
1

Diagrama de st ari corespunz atoare este prezentat a n gura 2.2.


Funct ia de evolut ie Funct ia f se prelungeste de la I la T() I

deci
f : T() I

T(), astfel:
(a) f(s, ) = s, s ,
(b) f(, i) = , i I,
2.1. AUTOMATE FINITE SI LIMBAJE REGULATE 27

_
`
_
`
_
'

`
-
i
1
i
1
i
2
s
1
s
0
s
2
i
1
, i2
i
1
i
2
`

Figura 2.2: Diagrama de st ari


(c) f(Z, i) =

sZ
f(s, i), Z T(), Z ,= ,
(d) f(Z, pi) = f(f(Z, p), i).
Sa observ am c a relat iile de mai sus constituie o denit ie prin recurent a,
corecta; ind dat f, putem deni mai nt ai toate valorile f(Z, i) (un num ar
nit, deoarece I este o mult ime nit a), apoi f(Z, p) pentru [p[ = 2, n continuare
f(Z, p) pentru [p[ = 3, etc.
Propriet at ile funct iei f:
1. Dac a Z
k
este o familie de p art i a lui , avem
f(
_
k
Z
k
, i) =
_
k
f(Z
k
, i)
Demonstrat ie. Utilizand (c) putem scrie
_
k
f(Z
k
, i) =
_
k
(
_
sZ
k
f(s, i)) =
_
sZ
k
f(s, i) = f(
_
k
Z
k
, i).2
2. f(Z, p) =

sZ
(f(s, p)), p I

.
Demonstrat ie. Prin induct ie asupra lungimii lui p.
Pentru [p[ = 1 avem f(Z, i) =

sZ
f(s, i), adic a (c).
Presupunem ca relat ia este adev arat a pentru [p[ = m si consideram un p astfel
ncat [p[ = m + 1, deci p = p

i, [p

[ = m. Putem scrie
f(Z, p) = f(Z, p

i) = f(f(Z, p

), i) = f(

sZ
f(s, p

), i) =
=

sZ
f(f(s, p

), i) =

sZ
f(s, p

i) =

sZ
f(s, p).
2
3. f(s, pq) = f(f(s, p), q), p, q I

.
Demonstrat ie. Induct ie asupra lungimii lui q.
Dac a [q[ = 1, atunci q = i si relat ia se reduce la (d).
Presupunem ca proprietatea este adev arat a pentru r si consideram [q[ = r+1.
Deci q = q

i. Avem
28 CAPITOLUL 2. LIMBAJE REGULATE
f(s, pq) = f(s, pq

i) = f(f(s, pq

), i) = f(f(f(s, p), q

), i) =
= f(f(s, p), q

i) = f(f(s, p), q).


2
Limbaje regulate.
Denit ie 2.1 Limbajul recunoscut de automatul nit AF = (, I, f, s
0
,
f
) este
L(AF) = p[p I

, f(s
0
, p)
f
,=
Deci p L(AF) dac a automatul a andu-se n starea init ial a s
0
, dupa [p[ pasi
de funct ionare poate s a ajung a ntr-o stare nala.

In cazul unui automat nit determinat limbajul recunoscut poate denit


n modul urmator. Pentru ecare s denim funct ia f
s
: I

T() prin
f
s
(p) = f(s, p).
Atunci
f(s
0
, p)
f
,= f(s
0
, p) = f
s
0
(p)
f
,
deci
L(AF) = p[f(s
0
, p)
f
,= = f
1
s
0
(
f
)
Limbajele recunoscute de automate nite le vom numi limbaje regulate; familia
acestor limbaje o vom nota cu 1. Evident, familia limbajelor recunoscute de
automate nite deterministe, 1
d
, este o parte a lui 1, 1
d
1. Vom ar ata c a
cele doua familii coincid.
Teorema 2.1 1
d
= 1.
Demonstrat ie. Fie AF = (, I, f, s
0
,
f
) un automat nit (n general nedeter-
minist). Construim urmatorul automat nit determinist AF

= (

, I, f

, s
0
,

f
)
unde

= T(), f

= f (prelungirea la T()I

),

f
= Z[ Z T(), Z
f
,=
.
Evident, automatul AF

este determinist.
Fie p L(AF). Atunci f(s
0
, p)
f
,= si f(s
0
, p)

f
. Pe de alt a parte,
conform cu proprietatea 2 a funct iei de evolut ie, avem
f

(s
0
, p) = f(s
0
, p)
si deci f(s
0
, p)

f
, adic a p L(AF

) si L(AF) L(AF

).
Pe o cale analoag a se arat a c a L(AF

) L(AF).2
Observat ie. Faptul c a un cuv ant este recunoscut de un automat nit se poate
verica prin calcul direct sau pe diagrama de st ari.
Exemplu. Consider am automatul din exemplul anterior si e p = i
1
i
2
i
1
. Prin
calcul direct:
f(s
0
, i
1
i
2
i
1
) = f(f(f(s
0
, i
1
), i
2
), i
1
) = f(f(s
1
, i
2
), i
1
) =
= f(s
0
, s
1
, i
1
) = f(s
0
, i
1
) f(s
1
, i
1
) = s
1
s
2
.
2.1. AUTOMATE FINITE SI LIMBAJE REGULATE 29
Astfel c a f(s
0
, i
1
i
2
i
1
)
f
= s
2
,= si p L(AF).
Pe diagrama de st ari exist a traiectoriile:
s
0
i
1
s
1
i
2
s
0
i
1
s
1
;
s
0
i
1
s
1
i
2
s
1
i
1
s
2
;
A doua traiectorie ne duce ntr-o stare nala, deci p L(AF).
Limbaje de tipul trei si limbaje regulate. Vom ar ata n cele ce urmeaza
ca familia limbajelor de tipul 3 coincide cu familia limbajelor regulate.

In prealabil
vom pune n evident a o form a special a a limbajelor de tipul 3, pe care convenim
sa o numim form a normal a.
Denit ie 2.2 Vom spune c a o gramatic a de tipul 3 este n forma normal a daca
are reguli de generare de forma
_
A iB,
C j,
unde A, B, C V
N
, i, j V
T
sau regula de completare S si n acest caz S nu apare n dreapta vreunei
reguli.
Lema 2.1 Orice gramatic a de tipul 3 admite o forma normal a.
Demonstrat ie. Dac a G = (V
N
, V
T
, S, P) este gramatica dat a, elimin am n
primul r and regulile de stergere (teorema de la ierarhia Chomsky) apoi construim
gramatica G

= (V

N
, V
T
, S, P

), unde V

N
si P

se denesc astfel: introducem n


V

N
toate simbolurile din V
N
iar n P

toate regulile din P care convin; e acum


n P o regul a de forma
A pB, p = i
1
. . . i
n
Vom introduce n P

regulile:
A i
1
Z
1
,
Z
1
i
2
Z
2
,
. . . ,
Z
n1
i
n
B,
iar simbolurile Z
1
, . . . Z
n1
le includem in V

N
.

In cazul unei reguli de forma A p cu [p[ > 1 proced am analog, except and ul-
tima regula nou introdus a care va avea forma Z
n1
i
n
. Sa mai facem observat ia
ca simbolurile Z
1
, . . . , Z
n1
le luam distincte pentru ecare caz.
Se poate arata usor c a L(G) = L(G

).2
Teorema 2.2 Familia limbajelor de tipul 3 coincide cu familia limbajelor regu-
late.
30 CAPITOLUL 2. LIMBAJE REGULATE
Demonstrat ie. Partea I: E /
3
E 1.
Fie E un limbaj de tipul 3 si G = (V
N
, V
T
, S, P) gramatica care l genereaz a;
putem presupune ca G este n forma normal a. Construim automatul nit AF =
(, I, f, s
0
,
f
) unde = V
N
X ( X simbol nou), I = V
T
, s
0
= S si

f
=
_
X, S , pentru P
X , pentru , P
Funct ia de evolut ie este denit a de:
daca A iB P luam B f(A, i),
daca C j P luam X f(C, j),
n rest
Observat ie. Automatul astfel denit este n general nedeterminist. De exemplu,
daca A 0B[0 atunci f(A, 0) = B, X.
Fie p L(G), p = i
1
. . . i
n
, deci S

p. Detaliat, aceast a derivare va avea
forma
(1) Si
1
A
1
i
1
i
2
A
2
i
1
i
2
. . . i
n1
A
n1
i
1
i
2
. . . i
n
.
S-au aplicat regulile:
(2)
S i
1
A
1
,
A
1
i
2
A
2
,
. . .
A
n1
i
n
.

In automat avem corespunz ator:


(3) :
A
1
f(S, i
1
),
A
2
f(A
1
, i
2
),
. . .
X f(A
n1
, i
n
)
Putem scrie traiectoria
(4) S
i
1
A
1
i
2
A
2
i
3
. . .
in
X
f
Deci p L(AF).
Dac a p = , atunci S si S P. Dar atunci L(AF), caci
automatul este n starea S si ramne n aceast a stare dup a citirea lui ; cum
nsa n acest caz S
f
rezulta c a si n acest caz p L(AF).

In consecint a
L(G) L(AF).
Fie acum p = i
1
. . . i
n
L(AF); atunci avem traiectoria (4), relat iile (3),
regulile de generare (2) si putem scrie derivarea (1), adic a p L(G) si L(AF)
2.2. PROPRIET

AT I SPECIALE ALE LIMBAJELOR REGULATE 31


L(G).2
Partea II E 1 E /
3
.
Vom indica numai modul de construct ie a gramaticii. Fie AF = (, I, f, s
0
,
f
)
automatul nit care recunoaste limbajul E, pe care l presupunem determinist.
Construim gramatica G = (, I, s
0
, P) unde mult imea P este denit a astfel
f(A, i) = B genereaz a regula A iB P,
n plus daca B
f
se genereaza si regula A i P.
Putem ar ata c a L(G) = L(AF).2
2.2 Proprietat i speciale ale limbajelor regulate
Caracterizarea limbajelor regulate. Limbajele regulate, ind part i din I

,
se pot caracteriza algebric, independent de mecanismele de generare (gramaticile
de tipul 3) sau de cele de recunoastere (automatele nite).
Teorema 2.3 Fie E I

un limbaj. Urmatoarele armat ii sunt echivalente.


(a) E 1;
(b) E este o reuniune de clase de echivalent e a unei congruent e de rang nit;
(c) Urm atoarea congruent a
= (p, q)[
E
(r
1
pr
2
) =
E
(r
1
qr
2
), r
1
, r
2
I

,
unde
E
este funct ia caracteristic a a lui E, este de rang nit.
Demonstrat ie: Vom ar ata urm atoarele implicat ii: (a) (b), (b) (c), (c) (a).
(a) (b).
Fie AF = (, I, f, s
0
,
f
) automatul nit care recunoaste limbajul E. Denim
pe I

relat ia
= (p, q)[f(s, p) = f(s, q), s .
Se poate vedea cu usurint a c a este o relat ie de echivalent a (reexiva , simetrica
, tranzitiv a).

In plus , daca r I

si (p, q) , atunci (pr, qr) si (rp, rq) .


De exemplu, prima apartenent a se deduce astfel
f(s, pr) = f(f(s, p), r) = f(f(s, q), r) = f(s, qr), etc.
Prin urmare este o relat ie de congruent a.
Sa ar at am c a aceast a congruent a este de rang nit, adic a mult imea cat I

/
este nit a.
Fie : o aplicat ie oarecare si e mult imea
I

() = p[p I

, f(s, p) = (s), s .
32 CAPITOLUL 2. LIMBAJE REGULATE
Sa observ am c a dac a este funct ia identica atunci I

(). Deci nu toate


I

() sunt vide; n acest caz I

() este o clas a de echivalent a.



Intr-adevar, e
p I

() I

xat si e C
p
clasa de echivalent a a lui p. Ar at am c a C
p
= I

().
Dac a q I

(), atunci f(s, q) = (s), s , ceea ce nseamn a c a f(s, q) =


f(s, p), s , si deci (p, q) adica q C
p
si I

() C
p
. Invers dac a q C
p
atunci f(s, q) = f(s, p) = (s), s si q I

(), adic a C
p
I

(). Aceasta
nseamn a c a I

() = C
p
, adic a I

() este o clas a de echivalent a .

Intre mult imea cat I

/ si mult imea funct iilor denite pe cu valori n


putem stabili urmatoarea corespondent a biunivoca: unei funct ii : i
corespunde clasa de echivalent a I

(). Invers, ind data o clas a de echivalent a C,


luam p C (oarecare) si atasam lui C funct ia (s) = f(s, p)s . T inand cont
ca dac a q C atunci f(s, p) = f(s, q), s , rezulta c a funct ia nu depinde
de elementul p ales.
Dar mult imea funct iilor denite pe cu valori n este nit a, deci I

/ este
nit a, adic a congruent a este de rang nit.
Fie acum p L(AF) si q astfel ca (p, q) . Avem
f(s
0
, q) = f(s
0
, p)
f
;
adica q L(AF). Aceasta nseamn a c a odat a cu elementul p, L(AF) cont ine
clasa de echivalent a a lui p. De aici rezult a c a L(AF) este constituit dintr-un
anumit num ar de clase de echivalent a a lui .2
(b)(c)
Fie o congruent a de rang nit si E o reuniune de clase de echivalent a. Fie
apoi (p, q) ; aceasta nseamn a c a r
1
pr
2
E r
1
qr
2
E, deci

E
(r
1
pr
2
) =
E
(r
1
qr
2
), r
1
, r
2
I

.
Prin urmare, (p, q) . Orice clasa de echivalent a din I

/ este inclus a
ntr-o clasa de echivalent a din I

/, asa ncat card(I

/) < card(I

/), adic a
congruent a este de rang nit.2
(c) (a)
Presupunem ca este o congruent a de rang nit; consider am automatul nit
AF = (I

/, I, f, C

,
f
), unde funct ia de evolut ie f si mult imea de stari nale
sunt
f(C
p
, i) = C
pi
,
f
= C
p
[p E.
Vom ar ata c a E = L(AF).

In primul rand s a observ am c a f(C
p
, q) = C
pq
(se
poate ar ata prin induct ie asupra lui [q[). Avem
p E C
p

f
f(C

, p) = C
p
= C
p

f
p L(AF)
adica E = L(AF) si E este un limbaj regulat.2
2.2. PROPRIET

AT I SPECIALE ALE LIMBAJELOR REGULATE 33


Corolar 2.4 Familia R este nchis a la operat ia de r asturnare.
Demonstrat ie. Fie E 1 si

E r asturnatul lui E. Conform teoremei de carac-
terizare, card(I

/
E
) < . Avem
(p, q)
E

E
(r
1
pr
2
) =
E
(r
1
qr
2
)
si

E
(r
1
pr
2
) =

E
(r
1
q r
2
) ( p, q)

E
Cu alte cuvinte dac a C este o clas a de echivalent a a lui
E
atunci

C (r asturnatul
lui C) este o clas a de echivalent a a lui

E
. Aceasta nseamn a c a card(I

E
) =
card(I

/
E
) < si conform aceleiasi teoreme de caracterizare

E 1.2
Observat ie. Am v azut c a limbajele de tipul 3 pot denite de gramatici cu
reguli de doua categorii: drept liniare sau st ang liniare. Este evident ca limbajele
stang liniare sunt r asturnatele limbajelor drept liniare. Cum familia limbajelor
regulate (drept liniare) este nchisa la operat ia de r asturnare, rezult a c a cele dou a
familii de limbaje coincid.

Inchiderea familiei /
3
la operat iile Pref si complementariere.
Operat iile Pref si complementariere se denesc n modul urmator
Pref(E) = p[r I

, pr E, C(E) = I

E.
Teorema 2.5 Familia /
3
este nchis a la operat iile Pref si complementariere.
Demonstrat ie. Fie AF = (, I, f, s
0
,
f
) automatul nit care recunoaste limbajul
E. Putem presupune ca AF este determinist.
Limbajul Pref(E). Construim automatul nit AF

= (, I, f, s
0
,

f
) unde

f
= s [s = f(s
0
, q), q Pref(E).
Este evident c a Pref(E) L(AF

), c aci dac a q Pref(E) atunci s = f(s


0
, q)

f
conform denit iei lui

f
.
Sa ar at am acum c a L(AF

) Pref(E). Fie r L(AF

), atunci f(s
0
, q)

f
,
deci exist a q Pref(E) astfel ncat f(s
0
, r) = f(s
0
, q). Cum q este prexul unui
cuvant din E, exist a w I

astfel ncat qw E, adic a f(s


0
, q)
f
. Dar
f(s
0
, rw) = f(f(s
0
, r), w) = f(f(s
0
, q), w) = f(s
0
, qw)
f
,
deci rw E si r Pref(E). Aceasta nseamn a c a L(AF

) Pref(E) si prin
urmare Pref(E) = L(AF

), adic a Pref(E) este limbaj regulat.2


Limbajul C(E). Avem
C(E) = p I

[p , E = p I

[f(s
0
, p) ,
f
= p I

, f(s
0
, p) C(
f
).
Prin urmare C(E) = L(AF
c
) unde AF
c
= (, I, f, s
0
, C(
f
), adic a C(E) este
un limbaj regulat.2
34 CAPITOLUL 2. LIMBAJE REGULATE
,

,
,
,
,

,
,

s
0
s
1
s
j1
s
j
s
k
s
k1
s
j+1
s
k+1
s
n1
s
n
i
n
i
k+1 i
j
i
1
i
k
i
j+1
Figura 2.3: Traiectoria automatului nit
2.3 Lema de pompare pentru limbaje regulate
Sub aceast a denumire (sau lema uvw) este cunoscut a o proprietate a limbajelor
regulate (ca si a altor familii de limbaje) care ne premit sa descompunem cuvintele
sucient de lungi ale limbajului n forma uvw si sa multiplic am subcuv antul v de
un numar arbitrar de ori, obt inand cuvinte care apart in de asemenea limbajului.
Cu alte cuvinte, putem sa pomp amn cuvantul dat o anumit a parte a sa. Astfel
de leme se utilizeaza deseori pentru a rezolva probleme de neapartenent a, adic a
pentru a ar ata c a un anumit limbaj nu apart ine unei familii date de limbaje.
Lema 2.2 Fie E un limbaj regulat si AF = (, I, f, s
0
,
f
) automatul nit care
l recunoaste. Daca p E si [p[ card() atunci p se descompune n forma
p = uvw, v ,= si uv
m
w E, m N.
Demonstrat ie. Fie p = i
1
. . . i
n
, n card(); e s
0
, s
1
, . . . , s
n
starile parcurse
de automat la citirea cuvantului p. Atunci, s
j
= f(s
j1
, i
j
), j = 1, n, s
n

f
.
Exist a n mod necesar dou a st ari egale, s
j
= s
k
, j < k. Traiectoria va avea o
bucl a (vezi gura 2.3).
Descompunem cuvantul pn forma p = uvw unde u = i
1
. . . i
j
, v = i
j+1
. . . i
k
, w =
i
k+1
. . . i
n
. Este clar c a v ,= , caci j < k. Pe de alt a parte, putem parcurge traiec-
toria f ac and de mai multe ori bucla, adic a
f(s
0
, uv
m
w) = s
n

f
.
Prin urmare uv
m
w E.2
Consecint a 2.3 Incluziunea /
3
/
2
este strict a.

In adev ar, e limbajul L


2
= 0
n
1
n
[n 1. Stim ca acest limbaj este de tipul 2 si
ca poate generat de gramatica G = (A, 0, 1, A, A 0A1[01). S a ar at am
ca L
2
nu este de tipul 3.
Sa presupunem c a L
2
este de tipul 3 si e AF = (, I, f, s
0
,
f
) automatul
nit care l recunoaste. Cum L
2
cont ine cuvinte oricat de lungi, e p L
2
2.4. EXPRESII REGULATE 35
astfel ncat p card(). Conform lemei de pompare, p se descompune n forma
p = uvw, v ,= si uv
m
w E. Putem avea una din situat iile:
(1) p = 0 . . . 0
. .
u
0 . . . 0
. .
v
0 . . . 01 . . . 1
. .
w
,
(2) p = 0 . . . 01 . . . 1
. .
u
1 . . . 1
. .
v
1 . . . 1
. .
w
,
(3) p = 0 . . . 0
. .
u
0 . . . 1
. .
v
1 . . . 1
. .
w
.
Primele dou a cazuri nu pot avea loc deoarece multiplic andu-l pe v, num arul de
simboluri 0 si 1 nu s-ar p astra egal.

In al treilea caz, lu and de exemplu, m = 2
obt inem
p
2
= 0 . . . 00 . . . 10 . . . 11 . . . 1 L
2
ceea ce din nou nu este posibil, ntrucat se contrazice structura cuvintelor lui L
2
.
Prin urmare L
2
nu este de tipul 3.2
Observat ie. Este interesant de observat c a limbajele simple de forma lui L
2
sunt semnicative pentru clasele din clasicarea Chomsky. Astfel
L
1
= a
n
[n 1, L
1
/
3
;
L
2
= a
n
b
n
[n 1, L
2
/
2
, L
2
, /
3
;
L
3
= a
n
b
n
c
n
[n 1, L
3
/
1
(?), L
3
, /
2
;
Ne-am putea astepta ca limbajul L
3
, un exemplu analog lui L
2
, sa e de tip
1, adic a L
3
/
1
, L
3
, /
2
.

In adev ar, se poate ar ata c a L
3
, /
2
, dar dup a
cunostint a autorului, aparent a L
3
/
1
este o problema deschisa.
Consecint a 2.4 Fie E un limbaj regulat si AF = (, I, f, s
0
,
f
) automatul nit
care l recunoaste. Atunci E este innit dac a si numai dac a exist a p E astfel
nc at [p[ card().
Dac a limbajul este innit, este clar c a exist a p E cu [p[ card(). Invers, dac a
exist a p E cu [p[ card() atunci p = uvw, v ,= si uv
m
w E, m N,
deci limbajul este innit.2
2.4 Expresii regulate
Expresii regulate si limbaje reprezentate Fie V un alfabet. Expresiile reg-
ulate sunt cuvinte peste alfabetul V , , [, unde simbolurile suplimentare
introduse le vom considera operatori:[-sau, -produs, -nchidere. Expre-
siile regulate se denesc astfel:
(1) este o expresie regulata;
(2) pentru orice a V , cuv antul a este o expresie regulata;
36 CAPITOLUL 2. LIMBAJE REGULATE
(3) dac a R si S sunt expresii regulate, atunci R[S R S si R

sunt expresii
regulate.
Pentru a punen evident a ordinea de aplicare a operatorilor vom utiliza paran-
teze; de exemplu (R[S) P. Vom considera ca operatorul are ponderea cea mai
mare, apoi operatorul si [ ponderea cea mai mica. Deci prin R[S

vom nt elege
R[(S

).
Observat ie. Expresiile regulate se pot deni cu ajutorul gramaticii G =
(E, T, F, V [, , , (, ), E, P) unde
P =

E E[T | E T | T,
T T

| F
F (E) | a | .
Unei expresii regulate i putem asocia un anumit limbaj peste V ; vom spune c a
expresia regulat a reprezint a (desemneaza, noteaz a) acel limbaj. Modul n care
asociem un limbaj unei expresii regulate este
(1) reprezinta limbajul ,
(2) a reprezinta limbajul a,
(3) dac a R si S sunt expresii regulate si reprezinta respectiv limbajele L
R
si
L
S
atunci
(i) R[S reprezinta limbajul L
R
L
S
;
(ii) R S reprezinta limbajul L
R
L
S
;
(iii) R

reprezinta limbajul (L
R
)

.
Fie R, S, P trei expresii regulate si L
R
, L
S
, L
P
limbajele reprezentate. Avem :
L
(R|S)|P
= (L
R
L
S
) L
P
= L
R
(L
S
L
P
) = L
R|(S|P)
,
ntrucat operat ia de reuniune este asociativ a. Vom scrie (R[S)[P = R[(S[P).

In
mod analog se pot obt ine si alte propriet at i. De exemplu:
S[R = S[R,
R[R = R,
(R S) P = R (S P),
R (S[P) = (R S)[(R P), etc.

In cazul n care nu exist a pericol de confuzie, vom nota cu L (f ar a indice) limbajul


reprezentat de o anumit a expresie regulat a.
Exemple.
1. R = a

; L =

j=0
a
j
= , a, a
2
, . . ..
2. R = aa

; L = a , a, a
2
, . . . = a, a
2
, a
3
. . ..
3. R = (a[b)

; L = (L
a
L
b
)

= (a b)

= a, b

;
2.5. SISTEME TRANZIT IONALE 37
a, b

= a, b
1
a, b
2
. . . = , a, b, aa, ab, ba, bb, . . ., adic a
(a[b)

reprezinta mult imea tuturor cuvintelor peste alfabetul a, b.


4. R = a[ba

; L = a b , a, a
2
, . . . = a, b, ba, ba
2
, . . ..
Limbajele reprezentate de expresii regulate constituie o anumit a familie de lim-
baje; o vom nota cu /
lr
. Apare urmatoarea problem a: care este pozit ia acestei
familii n ierarhia Chomsky? Vom ar ata c a /
lr
coincide cu familia limbajelor
regulate.
2.5 Sisteme tranzit ionale
Denit ie 2.3 Un sistem tranzit ional este un sistem de forma
ST = (, I, f,
0
,
f
, )
unde:
este o mult ime (nit a) de st ari;
I este alfabetul de intrare;
f : I T() este funct ia de tranzit ie;

0
este mult imea de st ari init iale;

f
este mult imea de st ari nale;
este relat ia de tranzit ie .
Exemplu. = s
0
, s
1
, s
2
, I = 0, 1,
0
= s
0
, s
1
,
f
= s
2
iar funct ia si
relat ia de tranzit ie sunt date de:
f s
0
s
1
s
2
0 s
1
s
2
s
0

1 s
0
, s
1
s
0
, s
2

= (s
0
, s
1
), (s
2
, s
1
).
Ca si n cazul unui automat nit putem construi diagrama de st ari completat a
cu relat ia (arcele punctate).

In cazul exemplului nostru diagrama de st ari este
prezenta n gura 2.4
Observat ie: ind o relat ie, are sens

(nchiderea tranzitiva si reexiva).


Fie i I ; vom spune c a sistemul tranzit ional evolueaz a direct din starea
s

n starea s

daca:
(1) i = si (s

, s

. Pe diagrama de st ari vom avea o traiectorie punctat a


de la starea s

la starea s

;
s

O O . . . O s

.
(2) i ,= si exista s
1
, s
2
astfel ncat (s

, s
1
) , s
2
f(s
1
, i) si (s
2
, s

. Pe diagrama de st ari, putem ajunge din s

n s

pe o traiectorie punctat a,
apoi un pas pe un arc plin si din nou pe o traiectorie punctat a.
s

O . . . s
1
i
s
2
O . . . s

.
38 CAPITOLUL 2. LIMBAJE REGULATE
s
0
s
2
s
1
0
0
1
1
0,1
1
Figura 2.4: Diagrama de st ari a sistemului tranzit ional
Vom scrie s

i
s

.
Fie acum p = i
1
. . . i
n
. Vom spune c a sistemul evolueaza din starea s

n starea
s

daca exist a s
0
, s
1
, . . . , s
n
astfel ncat
s

= s
0
i
1
s
1
i
2
. . .
in
s
n
= s

.
Vom scrie s

p
s

.
Denit ie 2.4 Limbajul recunoscut de un sistem tranzit ional ST este
L(ST) = p[p I

, s
0

0
, s
0
p
s, s
f
.
Vom nota cu /
ST
familia limbajelor recunoscute de sisteme tranzit ionale. Este ev-
ident ca orice automat nit este un sistem tranzit ional particularn care card(
0
) =
1 iar = (nu exist a arce punctate). Prin urmare 1 /
ST
.
Teorema 2.6 1 = /
ST
.
Demonstrat ie. Evident, trebuie sa ar at am incluziunea /
ST
1. Fie ST =
(, I, f,
0
,
f
, ) un sistem tranzit ional. Construim automatul nit AF = (T(), I, f

,
0
,

f
)
unde
f

(Z, i) = s[s

Z, s

i
s,

f
= Z[Z
f
,= .
Fie p = i
1
. . . i
n
L(ST) si e urmatoarea evolut ie a sistemului tranzit ional
s
0
i
1
s
1
i
2
. . .
in
s
n

f
.
2.6. ANALIZA LEXICAL

A 39
s
0
s
1
a
s
0
s
0
s
1 s
1
Figura 2.5: Sistemele tranzit ionale ce recunosc limbajele , a,.
Putem construi o traiectorie a lui AF de forma

0
i
1
Z
1
i
2
. . .
in
Z
n
,
unde Z
1
= f

(
0
, i
1
), Z
k
= f

(Z
k1
, i
k
), k = 2, . . . , n. S a observ am c a s
0

0
si ca dac a s
k1
Z
k1
, atunci conform denit iei funct iei f

, avem s
k

f

(Z
k1
, i
k
) = Z
k
. Asftel, s
k
Z
k
, k = 1, . . . , n; pentru k = n avem s
n
Z
n
si
cum s
n

f
rezulta c a Z
n

f
,= , adic a Z
n

f
. Deci automatul ajunge
ntr-o stare nala, p L(AF) si L(ST) L(AF).
Incluziunea inversa se arat a n mod analog.2
Construct ia sistemelor tranzit ionale pentru expresii regulate. Fiind dat a
o expresie regulat a putem ntotdeauna construi un sistem tranzit ional care re-
cunoaste limbajul reprezentat de expresia respectiv a.
Construct ia se face cu ajutorul diagramelor de st ari.
Sistemele tranzit ionale (diagramele de st ari) corespunz atoare expresiilor reg-
ulate , a si sunt prezentate n gura 2.5.
Dac a Rsi S sunt expresii regulate si not am cu ST
R
si ST
S
sistemele tranzit ionale
corespunzatoare, atunci sistemele tranzit ionale pentru R[S, R S si R

sunt re-
date n gura 2.6.

In acest mod putem construi succesiv (recurent) un sistem tranzit ional core-
spunzator unei expresii regulate.
Exemplu. Sistemul tranzit ional corespunz ator expresiei R = a[ba

este redat
n gura 2.7.
Consecint a D andu-se o expresie regulata, putem construi sistemul tranzit i-
onal care recunoaste limbajul reprezentat de expresia respectiv a. Cum orice
limbaj recunoscut de un sistem tranzit ional este regulat, rezult a c a limbajele
reprezentate de expresii regulate sunt limbaje regulate.
2.6 Analiza lexicala
Procesul de analiz a lexical a este o faz a a procesului de compilare n care se deter-
mina unit at ile lexicale (cuvintele, atomii) ale unui program surs a, se furnizeaza
codurile interne ale acestora si se detecteaza eventualele erori lexicale. Analizorul
lexical mai poate efectua o serie de operat ii auxiliare precum: eliminarea blank-
urilor, ignorarea comentariilor, diferite conversiuni ale unor date, completarea
40 CAPITOLUL 2. LIMBAJE REGULATE
ST
S
ST
R
ST
R
ST
L
ST
R
Figura 2.6: Sistemele tranzit ionale ce recunosc limbajele R[S, R S si R

.
a
a
b
Figura 2.7: Sistemul tranzit ional corespunz ator expresiei regulate R = a[b a

.
2.6. ANALIZA LEXICAL

A 41
tabelelor compilatorului, gestiunea liniilor textului sursa.
Unitat i lexicale O unitate lexical a (Lexic = vocabular; totalitatea cuvintelor
unei limbi) este o secvent a din textul surs a care are o anumit a unitate logica.
Denit ia riguroas a a unit at ilor lexicale ale unui limbaj particular se da la denirea
limbajului de programare respectiv. De obicei, n majoritatea limbajelor de pro-
gramare, unit at ile lexicale sunt: cuvinte cheie, identicatori, constante, operatori,
delimitatori. Din punctul de vedere al analizei lexicale si al modului de prelucrare,
unit at ile lexicale pot de dou a categorii:
Unit at i lexicale simple, sunt unit at i lexicale care nu comport a atribute su-
plimentare, de exemplu, cuvintele cheie, operatorii;
Unit at i lexicale compuse (atributive), sunt unit at i lexicale care comport a
anumite atribute suplimentare, de exemplu, identicatorii si constantele.
Atributele sunt informat ii specice, de exemplu, tipul identicatorului sau
al constantei (ntreg, real, etc.). Este necesar a specicarea tipului unui
identicator sau al unei constante din startul programului deoarece struc-
tura programului obiect sau reprezentarea intern a a constantelor depinde
de acest tip.
Reprezentarea intern a a unit at ilor lexicale se face n funct ie de categoria lor.
Cele simple se reprezinta printr-un cod specic(numar ntreg). Unit at ile lexicale
compuse se reprezinta prin cod si informat ii (de natur a semantica) asupra sa.
De obicei compilatoarele utilizeaza tabele pentru stocarea atributelor (tabel de
constante, tabel de variabile, tabel de etichete, etc.). In acest caz unitatea lexical a
se reprezinta intern printr-un cod urmat de o referint a ntr-un tabel. Informat ia
cont inuta de tabel ar putea pentru constante: cod, tip, valoare, iar pentru
identicatori: cod, tip, indicator de init ializare.
Este posibil ca o clas a de unit at i lexicale simple sa se reprezinte printr-un
cod unic si un atribut pentru distingerea n cadrul clasei. De exemplu, operatorii
aritmetici cu aceiasi prioritate au o tratare similar a din punct de vedere al anal-
izei sintactice. Lista unitat ilor lexicale si denit ia riguroas a a acestora se da la
proiectarea compilatorului.
Un exemplu de unit at i lexicale si coduri asociate ar putea cele din gura
2.8.
Analizorul primeste textul sursa si produce sirul de unit at i lexicale n codi-
carea interna. De exemplu secvent a de text surs a urm atoare:
{if (unu < 2) return 0;
a=33;
}
va produce sirul de unit at i lexicale
LBRACE If LPAR [ID,22] [opr,1] [NUM, 40], RPAR RETURN [NUM, 42] SEMI
[ID,24] opAssign [NUM,44] SEMI RBRACE.
42 CAPITOLUL 2. LIMBAJE REGULATE
Unitate lexical a COD ATRIBUT Exemplu
if if = 1 - if, If, IF
else else = 2 - else ElSe
identicator ID = 3 referint a Nelu v tabel
constant a ntreag a NUM = 4 referint a 4 -3 233
constant a real a FLOAT = 5 referint a 4.32 -3.233
+ op = 6 1
- op = 6 2
op = 6 3
/ op = 6 4
< opr = 7 1
> opr = 7 2
<= opr = 7 3
>= opr = 7 4
( LPAR = 8 -
) RPAR = 9 -
LBRACE = 10 -
RBRACE = 11 -
Figura 2.8: Coduri asociate unit atilor lexicale
2.6. ANALIZA LEXICAL

A 43
In lista codurilor interne g asite atributul identicatorului este adresa relativa
din tabela de identicatori, analog atributele constantelor numerice sunt adrese
relative n tabelele de constante.
Majoritatea limbajelor evoluate cont in si secvent e de text care nu sunt unit at i
lexicale, dar au act iuni specice asociate . De exemplu:
comentarii /* text */
directive de preprocesare #include<stdio.h>
#define MAX 5.6

Inaintea analizei lexicale (sau ca subrutina) se preproceseaza textul si abia


apoi se introduce rezultatul n analizorul lexical.
Specicarea unitat ilor lexicale Denirea riguroas a a unit at ilor lexicale se face
de catre proiectantul limbajului. O posibilitate de descriere este limbajul natural.
De exemplu, pentru C si JAVA:
Un identicator este o secvent a de litere si cifre: primul caracter trebuie s a
e liter a. Liniut a de subliniere conteaz a ca liter a. Literele mari si mici sunt
diferite. Daca sirul de intrare a fost mpart it n unit at i lexicale p an a la un carac-
ter dat, noua unitate lexicala se considera astfel nc at s a includ a cel mai lung sir
de caractere ce poate constitui o unitate lexical a. Spat iile, taburile, newline si co-
mentariile sunt ignorate cu except ia cazului cand servesc la separarea unit at ilor
lexicale. Sunt necesare spat ii albe pentru separarea identicatorilor, cuvintelor
cheie si a constantelor.
Orice limbaj rezonabil poate folosit pentru implementarea unui analizor
lexical.
Unit at ile lexicale se pot specica cu ajutorul limbajelor regulate, deci folosind
gramatici de tipul 3 sau expresii regulate ce noteaz a limbajele. Ambele specicat ii
conduc la construirea de automate nite echivalente, care se pot usor programa.

In cele ce urmeaza, vom folosi ambele variante de specicare pentru un set uzual
de unit at i lexicale nt alnit la majoritatea limbajelor evoluate.
Consideram gramatica regulat a ce genereaza identicatori, constante ntregi,
cuvinte cheie, operatori relat ionali si aritmetici.
G :

< ul >< id > [ < num > [ < cc > [ < op > [ < opr >
< id >l < id1 > [l, < id1 >l < id1 > [c < id1 > [l[c
< num >c < num > [c
< cc >if[do[else[for
< op >+[ [ [/
< opr >< [ <= [ > [ >=
,
unde l-litera, c-cifra.
44 CAPITOLUL 2. LIMBAJE REGULATE
Pornind de la aceasta gramatica se poate construi una echivalent a n forma
normal a, apoi se extrage funct ia de evolut ie a automatului nit determinist
echivalent ce recunoaste unit at ile lexicale.
Descrieri echivalente ale unitat ilor lexicale cu ajutorul expresiilor regulate sunt
cuvinte cheie = if | do | else | for
identificatori = ( a|b|c|...z )( a|b|c|...z|0|1|...|9 )*
Numar = ( 0|1|...|9 )( 0|1|...|9 )*
Operatori aritmetici = + | - | * | /
Operatori relationali = < | <= | > | >=
Limbajul generat de gramatica precedent a se obt ine prin suma expresiilor
regulate. Ment ion am c a exist a programe specializate (Lex, Flex, JavaCC) ce
genereaz a un analizor lexical (n C sau Java) pornind de la expresiile regulate.
Sintaxa folosit a n scrierea expresiilor regulate este dependenta de programul
folosit.
Programarea unui analizor lexical Realizarea efectiva a unui analizor revine
la simularea funct ion arii unui automat nit. O variant a de programare este
atasarea unei secvent e de program la ecare stare a automatului. Dac a starea
nu este stare nal a atunci secvent a citeste urm atorul caracter din textul sursa si
g aseste urm atorul arc din diagrama de st ari. Depinz and de rezultatul caut arii
se transfera controlul altei st ari sau se returneaz a esec (posibil a eroare lexicala).
Dac a starea este nal a atunci se apeleaz a secvent a de returnare a codului unitat ii
lexicale si eventuala instalare a unitat ii lexicale n tabelele compilatorului.
Pentru simplicarea implement arii se cauta urm atoarea unitate lexical a prin
ncercarea succesiva a diagramelor corespunz atoare ec arei unitat i lexicale (ntr-
o ordine prestabilit a). Eroarea lexicala se semnaleaz a doar atunci c and toate
ncercarile se ncheie cu esec.
De obicei textul surs a cont ine si secvent e ce se pot descrie cu ajutorul expresi-
ilor regulate, dar care nu sunt unitat i lexicale (de exemplu comentariile). Aceste
secvent e nu vor genera cod lexical, dar au asociate diverse act iuni specice. Pen-
tru a evita aparit ia unor caractere necunoscute in textul surs a se consider a si
limbajul ce consta din toate simbolurile ASCII. Astfel, indiferent de unde ncepe
analiza textului, programul de analiz a lexical a g aseste o potrivire cu o descriere.
Spunem ca specicat ia este completa.
Exist a posibilitatea ca mai multe secvent e cu aceeasi origine sa corespund a la
diferite descrieri ale unit at ilor lexicale. Se considera unitate lexical a cel mai lung
sir ce se potriveste unei descrieri (longest match rule). Daca sunt dou a reguli
care se potrivesc la acelasi sir de lungime maxim a atunci se consider a o prioritate
asupra descrierilor (rule priority).
2.6. ANALIZA LEXICAL

A 45
De exemplu, in textul urm ator,
i if if8
unit at ile lexicale delimitate vor iidenticator, ifcuv ant cheie, if8identicator.
Regula de prioritate se aplica pentru potrivirea lui if cu identicator si cuvant
cheie, iar criteriul de lungime maxima pentru if8.
Pentru depistarea celei mai lungi potriviri, din punt de vedere al program arii
analizorului, este sucient sa prevedem un pointer suplimentar pe caracterul ce
corespunde ultimei st ari nale atinse pe parcursul citirii.
Studiu de caz. Se considera problema realiz arii unui analizor lexical ce delim-
iteaza ntr-un text sursa cuvinte din limbajul ce cont ine identicatori, cuvinte
cheie (pentru simplicare folosim doar cuv antul cheie if), constante numerice
(ntregi f ar a semn). De asemenea se face salt peste spat iile albe si se ignor a co-
mentariile. Presupunem ca un comentariu ncepe cu doua caractere slash si se
termin a cu newline. Orice caracter ce nu se potriveste descrierii este semnalat ca
si caracter ilegal in text.
Etapa I. Descriem secvent ele cu ajutorul expresiilor regulate
IF = "if"
ID = (a|b|c|...|z)(a|b|c|...|z|0|1|...|9)*
NUM = (0|1|...|9)(0|1|...|9)* = (0|1|...|9)+
WS = (\n|\t|" ")+
COMMENT = "//"(a|b|c|...|z|0|1|...|9|" ")*\n
ALL = a|b|...|z|0|...|9|\t| ... toate caracterele ASCII
Etapa II. Corespunzator expresiilor avem urm atoarele automate nite deter-
ministe echivalente, prezentate n gura 2.9 (st arile au fost notate prin numere
ntregi):
Etapa III. Se construieste sistemul tranzit ional (vezi gura 2.10) ce re-
cunoaste limbajul reuniune, adaug and o noua stare init ial a (notat a cu 1), pe
care o conect am prin arce punctate (ce corespund -tranzit iilor). Construct ia
provine din legarea sistemelor tranzit ionale n paralel. S-au renumerotat st arile
sistemului tranzit ional, asign and nume simbolice st arilor nale.
Etapa III. Construct ia automatului nit determinist general ce recunoaste
reuniunea limbajelor. Pentru aceasta sistemul tranzit ional se transform a cu teo-
rema de echivalent a n automat nit determinist (practic se trece de la stari ale
sistemului tranzit ional la submult imi de stari, ce devin starile automatului nit).
46 CAPITOLUL 2. LIMBAJE REGULATE
4
2 1
2 1
2 1
3 2 1
a- z
0- 9
/
/
\ n
0- 9
0- 9
a - z
\ n\ t \ b
\ n\ t \ b
2 1
ID
NUM
WS
COM
ERR
orice
a- z ,\b
Figura 2.9: Automatele nite corespunz atoare expresiilor regulate

In cazul particular al automatului nostru, diagrama de st ari este dat an gura


2.11.
Etapa IV. Programarea analizorului lexical.
Automatul nit obt inut are st arile nale asociate cu clasele de cuvinte recunos-
cute. Se asociaza act iuni st arilor nale, corespunz ator denit iilor unit at ilor lexi-
cale (de exemplu pentru constante numerice se genereaz a reprezentarea interna, se
memoreaz a n tabelul de constante si se returneaza codul unit at ii lexicale NUM).
Pentru programarea analizorului se folosesc trei variabile de tip pointer in textul
sursa: FirstSymbol, CurrentSymbol, LastFinalSymbol, ce ret in indicele carac-
terului de nceput al secvent ei, indicele caracterului ce urmeaza la citire, indicele
ultimului caracter ce corespunde atingerii unei st ari nale. Cei trei pointeri au
fost reprezentat i prin semnele grace [, respectiv . De asemenea consider am
o variabil a State, ce ret ine starea curenta a automatului.
In tabelul 2.12 este indicat a evolut ia analizorului lexical (inclusiv act iunile
asociate) pentru cazul analizei urmatorului text surs a.
if if8%// ha\n
Pentru simplicarea codicarii, st arile automatului nit determinist au fost
redenumite prin numerentregi ncepand cu starea init ial a 1, starea 3, 6, 16 = 2,
4, 6 = 3, 6, 16 = 4, s.a.m.d. de la st anga la dreapta si de sus n jos. De obicei
2.6. ANALIZA LEXICAL

A 47
14
3 2
10 9
8 7
6 5
13 12 11
4
i f
a - z
0- 9
/
/
\ n
0- 9
0- 9
a - z
a - z
\ n\ t \b
\ n\ t \ b
,\b
16 15
IF
ID
NUM
WS
COM
ERR
orice
1
Figura 2.10: Sistemul tranzit ional ce recunoaste reuniunea limbajelor
48 CAPITOLUL 2. LIMBAJE REGULATE
3,6,16 4,6
12,16
6,16
10,16
8,16
13
1
6
14
16
ID IF
f
i
ID
ID
NUM
WS
ERR
/ \ n
COM
ERR
a- e
g - z
0-9
a- z
0-9 a- z
0-9 a- z
0-9
a-h
j - z
0-9
/
a- z , \b
\ n\ t \b
orice
altceva
0-9
\ n\ t \b
Figura 2.11: Automatul nit determinist ce recunoaste reuniunea limbajelor
2.6. ANALIZA LEXICAL

A 49
Last Current Current Input Accept Action
Final State
0 1 [

i f i f 8 % / / h a n
2 2 [ i

f i f 8 % / / h a n
3 3 [ i f

i f 8 % / / h a n return cc =< if >


0 [ i f


i f 8 % / / h a n resume
0 1 i f[

i f 8 % / / h a n
7 7 i f[

i f 8 % / / h a n
0 i f[

i

f 8 % / / h a n resume
0 1 i f [

i f 8 % / / h a n
2 2 i f [ i

f 8 % / / h a n
3 3 i f [ i f

8 % / / h a n
5 5 i f [ i f 8

% / / h a n return id =< if8 >


0 i f [ i f 8

/ / h a n resume
0 1 i f i f 8[

% / / h a n
11 11 i f i f 8[ %

/ / h a n print (illegal character: %);


0 i f i f 8[ %

/ h a n resume
0 1 i f i f 8 %[

/ / h a n
0 8 i f i f 8 %[

/ h a n
0 9 i f i f 8 %[

/ /

h a n
. . . . . . . . .
Figura 2.12: Evolut ia analizorului lexical pentru textul if if8%// han
50 CAPITOLUL 2. LIMBAJE REGULATE
int edges[][] = { /* ... 0 1 2 ... e f g h i j ... */
/* state 0 */ {0,0, ...,0,0,0, ...,0,0,0,0,0,0, ... },
/* state 1 */ {0,0, ...,6,6,6, ...,4,4,4,4,2,4, ... },
/* state 2 */ {0,0, ...,5,5,5, ...,5,3,5,5,5,5, ... },
etc
}
Figura 2.13: Reprezentarea funct iei de evolut ie a automatului nit
funct ia de evolut ie asociat a automatului nit determinist se memoreaza sub forma
unui tablou bidimensional de ntregi, ca n gura 2.13. Starea 0 este asociat a cu
blocarea automatului. Ajungerea n aceast a stare echivaleaz a cu g asirea ultimei
unit at i lexicale, ntre pointerii [ si . Se execut a act iunea asociata st arii nale
si se reia cautarea (resume) urm atoarei unit at i lexicale ncepand cu caracterul
imediat urm ator pointerului .
Observat ie: Cele mai costisitoare operat iuni (ca timp) din analiza lexical a
sunt ignorarea comentariilor si tratarea erorilor lexicale. Primele generatoare
automate de analizoare lexicale si sintactice au ap arut n anii

70 si au fost incluse
n sistemul de operare Unix.
2.7 Probleme propuse
1. Construit i automate nite pentru recunoasterea limbajelor:
(a) L = PSDR, PNL, PUNR;
(b) L = w[ siruri de 0 si 1 terminate cu 1 ;
(c) L = w[w identicator PASCAL ;
(d) L = w[w constant a ntreag a cu semn n PASCAL ;
(e) L = w 0, 1

[w multiplu de 3 ;
(f) L = a
i
b
j
[i, j > 0;
(g) L = .
2. Construit i automate nite echivalente cu gramaticile de tipul trei de la
problema 1 capitolul 1.
2.7. PROBLEME PROPUSE 51
3. Construit i automate nite deterministe echivalente cu cele nedeterministe
obt inute la problema precedent a.
4. G asit i gramatici regulate echivalente cu automatele de la problema 1.
5. Folosind lema de pompare pentru limbaje regulate dovedit i ca urm atoarele
limbaje nu sunt regulate:
(a) L = 0
i
2
[i 1;
(b) L = 0
2
n
[n 1;
(c) L = 0
n
[n este num ar prim ;
(d) L = 0
m
1
n
0
m+n
[m 1, n 1;
6. Specicat i limbajele denotate de urmatoarele expresii regulate:
(a) (11[0)

(00[1)

;
(b) (1[01[001)

([0[00);
(c) 10[(0[11)0

1;
(d) ((0[1)(0[1))

;
(e) 01

[1;
(f) ((11)

[101)

.
7. Construit i sisteme tranzit ionale ce recunosc limbajele specicate la prob-
lema precedent a. Pentru ecare sistem tranzit ional construit i un automat
nit determinist echivalent.
52 CAPITOLUL 2. LIMBAJE REGULATE
Capitolul 3
Limbaje independente de context
3.1 Arbori de derivare
Caracterizarea limbajelor independente de context cu ajutorul arborilor de derivare.
Una din caracteristicile de baz a ale limbajelor independente de context este
aceea c a o derivare ntr-un astfel de limbaj poate reprezentat a de un arbore,
numit in acest context arbore de derivare. Aceasta reprezentare este important a
n mod special pentru faptul c a permite o imagine intuitiv a simpl a a unei deriv ari
si deci posibilitatea de a lucra usor cu limbaje de tipul 2.
Vom prezenta n primul r and c ateva not iuni elementare de teoria grafurilor,
cu scopul de a preciza notat iile si terminologia.
Un graf orientat ( este o pereche ( = (V, ) unde V este o mult ime nit a
iar o aplicat ie : V T(V ). Mult imea V se numeste mult imea v arfurilor
(nodurilor) grafului iar dac a v
2
(v
1
), perechea (v
1
, v
2
) este un arc n graf; v
1
este originea iar v
2
este extremitatea arcului. Spunem c a v
2
este succesor direct
al nodului v
1
, iar v
1
este predecesor direct al nodului v
2
. Un drum de la vrful
v

la v arful v

n graful ( este o mult ime de arce (v


1
, v
2
)(v
2
, v
3
) . . . (v
n1
, v
n
) cu
v

= v
1
si v

= v
n
. Num arul n 1 este lungimea drumului. Un drum pentru care
v
1
= v
n
se numeste circuit. Un circuit de lungime 1 poart a numele de bucla.
Denit ie 3.1 Un arbore orientat si ordonat este un graf orientat (, care satis-
face urm atoarele condit ii :
1. v
0
V numit radacina arborelui astfel nc at v
0
, (v), v V si de
la care exist a un drum la ecare alt v arf al grafului;
2. v V v
0
, !w cu v (w); altfel spus orice v arf diferit de v
0
este
extremitatea unui singur arc;
3. Mult imea succesorilor directi ai oric arui varf v V este ordonat a.
Exemplu. V = v
0
, v
1
, v
2
, v
3
, v
4
iar funct ia este data de:
x v
0
v
1
v
2
v
3
v
4
(x) v
1
, v
2
v
3
, v
2

53
54 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT

_
v
1
v
3
v
4
v
0
v
2
Nivel 0
Nivel 1
Nivel 2
Figura 3.1: Reprezentarea grac a a arborelui ( = (V, )
Considerand mult imile ordonate de succesori direct i (grac ordinea succeso-
rilor este de la st anga spre dreapta) si sensul arcelor grafului de sus n jos, obt inem
reprezentarea n plan a acestui arbore ca n gura 3.1
Nodurile v pentru care (v) = se numesc noduri terminale (nale); celelalte
se numesc interne. Mult imea nodurilor terminale constituie frontiera arborelui.
Spunem ca un nod x precede pe y daca drumul de la r ad acin a la y trece prin x (y
este succesor al lui x, sau y este descendent al lui x). Ordinea succesorilor direct i
ai unui nod induce n mod natural o ordine pe frontiera arborelui (daca v
1
este
predecesor direct pentru v
2
atunci orice succesor al lui v
1
precede orice succesor al
lui v
2
, samd).

In general vom nota un arbore cu litere mari, specicand ca indici
r ad acina si frontiera; n gur a /
v
0
, v
1
v
3
v
4
. Un arbore comport a mai multe ramuri;
n exemplu avem urm atoarele ramuri : v
0
v
1
, v
0
v
2
v
3
, v
0
v
2
v
4
. Un subarbore cu
r ad acina x al unui arbore /
r,w
se obt ine prin extragerea nodului x mpreuna cu
tot i succesorii s ai (de exemplu /
v
2
, v
3
v
4
este subarbore pentru /
v
0
, v
1
v
3
v
4
).
Fie G = (V
N
, V
T
, S, P) o gramatic a de tipul 2.
Denit ie 3.2 Un arbore de derivare n gramatica G este un arbore orientat si
ordonat cu urm atoarele trei propriet at i .
(1) Nodurile sunt etichetate cu elementele din V
G
;
(2) Daca un nod v are descendent i direct i v
1
, . . . , v
n
(n aceast a ordine) atunci
v v
1
v
2
. . . v
n
P.
(3) Daca un nod are eticheta atunci el este singurul descendent al preceden-
tului sau direct.
Exemplu. G = (A, B, a, b, A, P) unde
P = A aBA[Aa[a[, B AbB[ba[abb.
3.1. ARBORI DE DERIVARE 55
A
A
B
a l
B
b
b
a a
Varianta 2
A
A
A
B
a
l
B b
b
a a
A
Varianta 1
Figura 3.2: Variante de reprezentare a arborelui /
A, aabba
`
_
`
_
`
_
`
_
. . .
X
i
1
i
2 i
n
(A)
Figura 3.3: Arbore corespunz ator unei deriv ari directe
Arborele /
A, aabba
reprezentat n gura 3.2 (Varianta 1) este un arbore de
derivare (poate desenat cobor and frontiera pe nivelul ultim , Varianta 2):
Teorema 3.1 Fie G o gramatic a de tipul 2, X V
N
si p V
G

. Atunci X

p
daca si numai dac a exist a un arbore /
X, p
.
Demonstrat ie. X

p implica /
X, p
.
Procedam prin induct ie asupra lungimii derivarii l.
Dac a l = 1, X p = i
1
. . . i
n
si X i
1
. . . i
n
P. Arborele din gura 3.3
corespunde cerint elor teoremei.
Presupunem ca proprietatea este adev arat a pentru deriv ari de lungime l si
consideram o derivare de lungime l +1, X

p. Punemn evident a prima derivare
directa
XX
1
. . . X
n

p
56 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
`
_
`
_
`
_
`
_
. . .
X
X
1
X
2 X
m
. . .
p
1
p
2
. . .
p
m
Figura 3.4: Construct ia arborelui /
X,p
1
...pm
.
Conform lemei de localizare, p = p
1
. . . p
n
si X
j

p
j
, j = 1, n. Putem face
urmatoarea construct ie: conform ipotezei inductive, ecarei derivari X
j

p
j
i
corespunde cate un arbore /
X
j
,p
j
; dac a a = X
j
V
T
atunci p
j
= a; unim apoi
toate nodurile X
j
n nodul X plasat la nivelul zero. Obt inem astfel un arbore
/
X,p
1
...pm
= /
X,p
(vezi gura 3.4) care corespunde cerint elor teoremei.
Pentru implicat ia , /
X,p
X

p, se parcurge o cale invers a, f ac and
o induct ie asupra num arului de nivele. De exemplu, daca acest num ar este 2,
arborele de derivare trebuie s a arate can 3.3 si deci avem X i
1
i
2
. . . i
n
= p P
si X

p, etc. 2
3.2 Decidabilitate si ambiguitate n familia /
2
.
Decidabilitate. Problemele de decidabilitate sunt acele probleme n care se cere
sa decidem daca un anumit fapt are sau nu loc. De obicei aceste probleme se
rezolva prin construirea unui algoritm de decizie.
Exemplu Fie gramatica
G = (A, B, C, a, b, A, A aA[bB[C, B abA[aC, C aabA).
Se poate usor vedea ca L(G) = (nu putem elimina neterminalele).
Problema: Putem decide n general dac a limbajul generat de o gramatic a de
tipul 2 este vid sau nu?
Teorema 3.2 Faptul ca limbajul generat de o gramatic a de tipul 2 este nevid
este decidabil.
Demonstrat ie. Vom construi un algoritm cu ajutorul c aruia se poate decide daca
limbajul generat de o gramatic a de tipul 2 este vid sau nu.
3.2. DECIDABILITATE SI AMBIGUITATE

IN FAMILIA /
2
. 57


S
v
1
= x
v
2
= x
r
1
p
2
r
2
p
1
Figura 3.5:
Presupunem ca limbajul nu este vid, L(G) ,= si e p L(G). Exist a arborele
/
S,p
. Sa presupunem c a n acest arbore exist a un drum cu dou a noduri interne
etichetate cu acelasi simbol, v
1
= v
2
= X. Descompunem arborele ca n gur a
3.5
Avem p = r
1
p
1
r
2
; evident p
2
Sub(p
1
). Efectuam urm atoarea modica-
re: scoatem subarborele /
v
1
,p
1
= /
X,p
1
sil nlocuim cu subarborele /
v
2
,p
2
=
/
X,p
2
; obt inem n acest fel un arbore /
S, r
1
p
2
r
2
(care este ntradev ar un arbore
de derivare). Conform cu teorema de caracterizare a limbajelor de tipul 2, avem
S

r
1
p
2
r
2
L(G). Dar arborele corespunz ator nu mai cont ine perechea v
1
, v
2
de
noduri etichetate cu acelasi simbol X.
Repet and procedeul, elimin am pe r and nodurile de pe aceleasi ramuri etichetate
identic.

In nal vom obt ine un arbore /
S, q
, q L(G) care are proprietatea c a
pe orice ramur a nodurile sunt etichetate cu simboluri distincte. T inand cont c a
orice ramur a are toate nodurile etichetate cu simboluri neterminale cu except ia
ultimului (de pe frontier a) care este etichetat cu un simbol terminal, rezult a c a
n /
S, q
orice ramur a cont ine cel mult card(V
N
) + 1 noduri. Dar mult imea unor
astfel de arbori este nita; obt inem urmatorul algoritm de decizie:
Construim tot i arborii cu r ad acina S si care au proprietatea de mai sus; dac a
printre acestia se g aseste un arbore cu frontiera constituit a numai din terminale,
atunci L(G) ,= (evident) iar dac a nici unul din acesti arbori nu au frontiera
constituita numai din terminale, atunci L(G) = . 2
Ambiguitate. Fie G o gramatica de tipul 2. O derivare S = u
0
u
1

. . . u
n
n care la ecare derivare direct a se nlocuieste simbolul neterminal
cel mai din st anga (dreapta) se numeste derivare extrem st ang a (dreapt a). S a
observ am c a n particular ntr-o gramatica de tipul 3 orice derivare este extrem
58 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
dreapt a (scrierea drept liniar a).
Denit ie 3.3 O gramatic a G de tipul 2 n care exist a un cuv ant p L(G) care
se poate obt ine cu dou a deriv ari extrem st angi (drepte) distincte, se numeste
gramatica ambigua. In caz contrar este neambigua.
Exemplu. Gramatica A aBA[Aa[a, B AbB[ba[abb este ambigu a.

Intr-
adev ar, avem
AaBAaBaaAbBaaAbbaaaabbaa;
AAaaBAaaBaaaabbaa.
Denit ie 3.4 Un limbaj este ambigu dac a toate gramaticile care l genereaz a
sunt ambigue.

In caz contrar (adic a dac a exist a o gramatic a neambigu a care s a
l genereze) limbajul este neambigu.
Dac a G este ambigu a si p L(G) este un cuvant care se poate obt ine cu doua
derivari extrem st angi distincte, atunci exist a arborii /
S, p
si /

S, p
, diferit i, dar
care au aceiasi rad acin a si frontier a.
Teorema 3.3 Daca L
1
si L
2
sunt limbaje disjuncte neambigue, atunci L
1
L
2
este neambigu.
Demonstrat ie. Fie G
k
= (V
N
k
, V
T
k
, S
k
, P
k
), k = 1, 2 dou a gramatici de tipul 2
neambigue cu L(G
k
) = L
k
si e G = (V
N
1
V
N
2
S, V
T
1
V
T
2
, S, P
1
P
2
S
S
1
[S
2
) gramatica ce genereaza limbajul reuniune L(G
1
) L(G
2
).
Sa presupunem prin reducere la absurd c a L(G) este ambigu. Atunci exist a
p L(G) care se poate obt ine cu doua deriv ari extreme stangi diferite. S a
presupunem ca p L(G
1
), p , L(G
2
). Atunci obt inem dou a deriv ari distincte
n gramatica G (n care detalierem prima derivare direct a)
(1) S
G
S
1

G
p, deci S
1

G
p;
(2) S
G
S
1

G
p, deci S
1

G
p,
deci si doua deriv ari extrem st angi distincte n gramatica G
1
. Aceasta ar nsemna
ca G
1
este ambigu a. Contradict ie cu ipoteza!2
Teorema 3.4 Limbajele de tipul 3 sunt neambigue .
Demonstrat ie. Fie L un limbaj de tipul 3 si G gramatica care l genereaz a; e apoi
AF automatul nit care recunoaste limbajul L si AFD automatul nit echivalent
determinist. Construim gramatica G

astfel ncat L(G

) = L(AFD). Reamintim
ca regulile lui G

se construiesc astfel f(A, a) = B A aB, f(A, a)


f

A a.
3.3. FORME NORMALE PENTRU GRAMATICI DE TIPUL 2 59
Sa presupunem acum c a L este ambigu; atunci orice gramatic a carel genereaz a,
inclusiv G

, este ambigu a. Aceasta nseamn a c a exist a un p L(G

) astfel ncat
Si
1
A
1
i
1
i
2
A
2
. . . i
1
. . . i
n1
A
n1
_
i
1
. . . i
n
A

n

i
1
. . . i
n
A

n

_

p.
Deci exist a regulile A
n1
i
n
A

n
si A
n1
i
n
A

n
, adic a n automatul AFD
avem
f(A
n1
, i
n
) = A

n
, f(A
n1
, i
n
) = A

n
,
ceea ce contrazice faptul ca AFd este determinist.2
3.3 Forme normale pentru gramatici de tipul 2
Forma normala Chomsky.
Denit ie 3.5 O gramatic a n forma normal a Chomsky este o gramatic a cu reguli
de forma
A BC,
D i,
unde A, B, C, D V
N
si i V
T
. Se accept a si regula de completare S cu
condit ia ca S sa nu apar a n dreapta vreunei reguli.
Lema 3.1 (lema substitut iei). Fie G o gramatic a de tipul 2 si X uY v precum
si Y p
1
. . . p
n
toate regulile din G care au Y n st anga . Atunci G este echiva-
lenta cu o gramatic a G

n care am f acut substitut iile; adic a facem urm atoarea


nlocuire
X uY v se nlocuieste cu X up
1
v[ . . . [up
n
v
(Regulile Y p
1
[ . . . [p
n
le vom pastra neschimbate).
Demonstrat ie. Fie p L(G) si S

p. Punem n evident a doi pasi consecutivi
oarecare:
G : S

rst

p.
Dac a n rs se utilizeaza regula X uY v atunci n mod necesar n pasul
urmator se utilizeaza una din regulile Y p
1
[ . . . [p
n
, sa presupunem Y p
j
(evident, este posibil ca aceast a regul a s a nu se aplice n pasul imediat urm ator,
dar ea poate adus a n aceast a pozit ie). Prin urmare
(A) G : r = r

Xr

uY vr

up
j
vr

= t.
Acesti doi pasi se pot obt ine si n G

(ntr-un singur pas):


(B) G

: r = r

Xr

up
j
r

= t.
60 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
Deci S

p, p L(G

) si L(G) L(G

).
Invers, daca p L(G

) si S

p, atunci dac a la un pas se utilizeaza o regul a


nou introdus a (pasul (B)), transformarea respectiva se poate obt ine si n G cu
doi pasi (pasii (A)); deci p L(G) si L(G

) L(G).2
Corolar 3.5 Orice gramatic a de tipul 2 este echivalent a cu o gramatic a de acelasi
tip n care mult imea de reguli nu cont ine redenumiri. (O redenumire este o regul a
de forma A B, A, B V
N
).
Intr-adevar, dac a A B P este o redenumire si B p
1
[ . . . [p
n
sunt toate
regulile care au B n st anga, efectu am substitut iile, deci nlocuim regula A B
cu A p
1
[ . . . [p
n
.

In cazul n care printre acestea apare o nou a redenumire,
repet am procedeul.2
Exemplu. Gramatica G
E
care genereaz a expresii aritmetice E E+T[T, T
T F[F, F (E)[i se poate pune sub urmatoarea form a (f ar a redenumiri) :
E E + T[T F[(E)[i
T T F[(E)[i
F (E)[i
Teorema 3.6 (teorema lui Chomsky de existent a a formei normale). Orice gra-
matica independent a de context este echivalent a cu o gramatic a n forma normal a
Chomsky. ema2
Demonstrat ie. Putem porni de la o gramatic a Gcare nu are redenumire si ale c arei
reguli cu terminale au forma A i, A V
N
, i V
T
. De asemenea presupunem
ca G nu are reguli de stergere.
Rezult a c a regulile lui G au una din formele:
(1) A BC,
(2) D i,
(3) X X
1
. . . X
n
, n > 2.
Construim o gramatica G

= (V

N
, V
T
, S, P

) unde V
N
V

N
si P

cont ine toate


regulile din P de forma (1) si (2). Fiecare regul a de forma (3) o nlocuim cu:
X X
1
Z
1
,
Z
1
X
2
Z
2
,
. . .
Z
n2
X
n1
X
n
si includem neterminalele Z
1
, . . . , Z
n2
(altele pentru ecare regul a de forma (3)
n V

N
.
Se poate relativ usor ar ata c a L(G) = L(G

). De exemplu, dac a uv (direct)


n G si de aplica o regul a de forma (1) sau (2), atunci evident derivarea respectiv a
se poate obt ine si n G

; n cazul n care se aplica o regul a de forma (3), avem


3.3. FORME NORMALE PENTRU GRAMATICI DE TIPUL 2 61
G : u = u

Xu

X
1
. . . X
n
u

= v.
Aceasta derivare se poate obt ine si n G

n mai mult i pasi si anume


G

: u = u

Xu

X
1
Z
1
u

X
1
X
2
Z
2
u

. . . u

X
1
. . . X
n
u

= v.2
Observat ie. O gramatic a ce are reguli de forma A BC, A B, A a
unde A, B, C V
N
si a V
T
spunem ca este n forma 2canonic a. Este evident
ca orice gramatic a de tip 2 este echivalenta cu o gramatic a n forma 2canonic a.
Gramatici recursive
Denit ie 3.6 Un simbol neterminal X al unei gramatici de tipul 2 este recursiv
daca exista o regul a de forma X uXv, u, v V

G
.
Dac a u = (v = ) simbolul X este st ang (drept) recursiv. O gramatic a ce are
cel put in un simbol recursiv se numeste recursiva. De exemplu, gramatica G
E
care genereaz a expresiile aritmetice are doua simboluri st ang recursive, E si T.
Existent a simbolurilor stang recursive poate provoca dicult at i n aplicarea al-
goritmilor de analiz a top-down.

Intr-adevar, ntr-o astfel de gramatica, ncercarea
de a construi arborele de derivare corespunz ator unui cuvant p prin aplicarea
ntotdeauna a primei reguli pentru simbolul cel mai din stanga, poate s a conduc a
la un ciclu innit (de exemplu n G
E
s-ar obt ine EE + TE + T + T. . .).
Teorema 3.7 Orice limbaj de tipul 2 poate sa e generat de o gramatic a far a
recursie st ang a.
Demonstrat ie. Fie G = (V
N
, V
T
, S, P) o gramatic a de tipul 2; presupunem c a G
are un singur simbol recursiv X si e
(A) X u
1
[u
2
[ . . . [u
n
[Xv
1
[ . . . [Xv
m
toate regulile care au X n st anga. Construim gramatica G

= (V

N
, V
T
, S, P

),
unde V
N
V

N
, P P

cu except ia regulilor (A); acestea se nlocuiesc cu


X u
1
[u
2
[ . . . [u
n
[u
1
Y [u
2
Y [ . . . [u
n
Y,
Y v
1
[ . . . [v
m
[v
1
Y [ . . . [v
m
Y
G

este de tipul 2 si nu are simboluri stang recursive; se vede nsa c a Y este un


simbol drept recursiv.
Fie p L(G), S

G
p. Dac a n aceast a derivare nu intervine simbolul re-
cursiv, atunci evident ca S

p. Sa presupunem ca X intervine la un anumit


pas: Sup, unde u = u

Xu

. Putem aplica, ncepand de la u spre dreapta, n


primul r and regulile pentru X si sa urm arim numai subarborele respectiv, deci
62 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
G : X
G
Xv
j
1

G
Xv
j
2
v
j
1

G
. . .
G
Xv
js
. . . v
j
1

G
u
j
v
js
. . . v
j
1
.
Aceeasi form a propozit ional a o putem obt ine si n gramatica G

astfel
G

: X
G

u
j
Y
G

u
j
v
js
Y
G

. . .
G

u
j
v
js
. . . v
j
1
.
Prin urmare avem S
G

u
G

p, adic a p L(G

) si L(G) L(G

). Analog,
L(G

) L(G).2
Forma normala Greibach.
Denit ie 3.7 O gramatic a n forma normal a Greibach este o gramatic a cu reguli
de forma
A ip, unde A V
N
, i V
T
p V

N
.
Se accept a si regula de completare S cu condit ia ca S sa nu apar a n dreapta
vreunei reguli.
Teorema 3.8 (Teorema de existent a a formei normale Greibach). Orice gra-
matica de tipul 2 este echivalenta cu o gramatic a n forma normal a Greibach.
Demonstrat ie. Fie G o gramatica de tipul 2 n forma normala Chomsky si e
V
N
= S = X
1
, X
2
, . . . , X
n
. Vom construi o gramatic a echivalent a care s a
satisfac a cerint ele din forma normala Greibach n mai multe etape.
Etapa I. Vom modica regulile de generare astfel ncat toate regulile care nu sunt
de forma X i sa satisfac a condit ia X
j
X
k
p, j < k, p V

N
. Acest lucru l
facem cu un algoritm pe care l prezent amntr-un limbaj nestandard de publicare
(tip PASCAL):
j := 1;
e1: begin
Se elimina recursiile st angi; neterminalele
noi le not am cu Y
1
, Y
2
, . . .
end
if j = n then STOP;
j := j + 1;
l := 1;
e2: begin
Fie X
j
X
l
p, p V

N
si X
l
p
1
. . . p
m
toate regulile care au X
l
n st anga; se efectueaz a toate substitut iile.
end
l := l + 1;
if l < j 1 then goto e2
goto e1
3.3. FORME NORMALE PENTRU GRAMATICI DE TIPUL 2 63
Sa observ am c a pentru j = 1 si dupa eliminarea recursiilor st angi condit ia
ceruta este evident ndeplinita; n plus, dac a au fost recursii, vom avea reguli cu
partea st ang a neterminale noi Y
1
, Y
2
, . . .. Mai departe, lu am toate regulile care au
n st anga X
2
(j := j +1 = 2) si efectuam substitut iile; acestea se vor transforma
n X
2
X
k
p cu k 2 si dupa o nou a eliminare a recursiilor st angi vom avea
k > 2 plus reguli cu partea st ang a neterminale noi.

In felul acesta toate regulile
care au n st anga X
1
si X
2
satisfac condit ia cerut a; n continuare j := j + 1 = 3,
etc.
Etapa II. Avem acum trei categorii de reguli:
(1) X
j
i;
(2) X
j
X
k
p, j < k, p V

N
;
(3) Y iq, q V

N
, i = 1, . . . , m.
Aranj am toate neterminalelentr-un sir unic, lanceput Y
1
, . . . , Y
m
apoi X
1
, . . . , X
n
si le redenumim, de exemplu cu X
1
, . . . , X
m+n
:
Y
1
, Y
2
, . . ., Y
m
, X
1
, X
2
, . . ., X
n
X
1
, X
2
, . . ., X
m
, X
m+1
, X
m+2
, . . ., X
m+n
Vom nota n + m = N.

In felul acesta regulile gramaticii vor avea numai
formele (1) si (2).
Etapa III. Toate regulile care au X
N
n st anga vor avea forma (1). Fie
X
n1
X
N
p
1
[ . . . [X
N
p
n
toate regulile care au X
N1
n st anga si care nu sunt
de forma (1). Efecuam substitut iile lui X
N
; n acest fel regulile care au X
N
si
X
N1
n st anga satisfac cerint ele din forma normala Greibach.

In continuare,
consideram toate regulile care au X
N2
n st anga si efectuam substitut iile, etc.2
Forma normala operator.
Forma normala operator
Una din formele importante pentru gramatici independente de context, uti-
lizat a n analiza sintactic a prin metoda precedent ei, este forma operator a acestor
gramatici.
Denit ie 3.8 O gramatic a independent a de context G = (V
N
, V
T
, S, P) se spune
c a este n forma normal a operator dac a oricare ar product ia A P, n
nu apar dou a neterminale (variabile) consecutive, adic a
P V
N
[(V
N
V
T
)

(V
N
V
T
)

V
2
(V
N
V
T
)

].
Teorema 3.9 Orice gramatic a independent a de context este echivalent a cu o gra-
matica n forma normal a operator.
Demonstrat ie. Fie G = (V
N
, V
T
, S, P) o gramatic a de tipul 2 si L(G) limbajul
generat. F ar a a restr ange generalitatea presupunem c a , L(G) si G este
n forma 2canonic a (regulile sunt de forma A BC, A B, A a vezi
teorema ??). Denim o gramatic a echivalent a G

= (V

N
, V
T
, S, P

) astfel: V

N
=
64 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
S (V
N
V
T
), iar P

= P
1
P
2
P
3
P
4
unde
i) P
1
= S (S, a)a[ a V
T
;
ii) P
2
= (A, a) [ A V
N
, a V
T
, A a P;
iii) P
3
= (A, a) (B, a)[ A, B V
N
, a V
T
, A B P;
iv) P
4
= (A, a) (B, b)b(C, a)[ A, B, C V
N
, a, b V
T
, A BC P.
Sa observ am c a G

este n forma normala operator. Pentru a demonstra c a


L(G) = L(G

) vom deni mai nt ai o funct ie : P


2
P
3
P
4
P astfel:
((A, a) ) = A a pentru (A, a) P
2
;
((A, a) (B, a)) = A B pentru (A, a) (B, a) P
3
;
((A, a) (B, b)b(C, a)) = A BC pentru (A, a) (B, b)b(C, a) P
4
.
Funct ia se extinde n mod natural la

: (P
2
P
3
P
4
)

. Vom ar ata c a
n gramatica G, w V

T
, a V
T
are loc derivarea extrem dreapt a A

G
wa
folosind product iile
1
,
2
, . . . ,
n
daca si numai dac a exist a n P

product iile

1
,

2
, . . . ,

n
astfel ca (

i
) =
i
, 1 i n si n G

are loc derivarea extrem


dreapt a (A, a)

w folosind product iile

1
,

2
, . . . ,

n
.
Sa demonstr am armat ia prin induct ie dupa n, lungimea derivarii.
Dac a n = 1 atunci w = , A a P si n P

exist a product ia (A, a) ,


deci (A, a) si ((A, a) ) = A a.
Invers, daca (A, a)w n G

atunci w = (dupa forma product iilor din G

)
si are loc proprietatea enunt at a.
Sa presupunem armat ia adev arat a pentru deriv ari de lungime cel mult n1
si sa o demonstr am pentru deriv ari de lungime n > 1. Fie asadar A

G
wa
o derivare de lungime n n gramatica G si punem n evident a prima derivare
directa. Distingem dou a cazuri:
I. Prima product ie utilizat a n derivare este A B. Atunci,
A
G
B

G
wa
si conform ipotezei inductive avemn G

o derivare (B, a)

w (de lungine n1)


cu product ii satisfac and condit iile aratate. Dar cum A B P, n P

avem
product ia (A, a) (B, a) deci (A, a)

w n gramatica G

.
II. Prima product ie este de forma A BC. Atunci
A
G
BC

G
wa.
3.4. AUTOMATE PUSH-DOWN (APD) 65

In acest caz wa = ubva (conform lemei de localizare), astfel c a B


G
ub si
C

G
va. Dup a ipoteza inductiva, vom avea n G

derivarile:
(B, b)

u, (C, a)

v.
Cum A BC P vom avea n P

product ia (A, a) (B, b)b(C, a) si n G

putem scrie derivarea extrem dreapta


(A, a)(B, b)b(C, a)

(B, b)bv

ubv = w
si product iile care s-au aplicat ndeplinesc condit iile din enunt .

In mod analog se demonstreaz a reciproca.


Din aceast a armat ie, luand n particular A = S, obt inem:
S

G
wa (S, a)

w, w V

T
, a V
T
.
Cum n G

exist a si product ia S (S, a)a, am g asit: wa L(G) dac a si numai


wa L(G

), deci cele dou a gramatici sunt echivalente.


Pentru a ncheia demonstrat ia trebuie s a consider am si cazul L(G).
Aplicam construct ia de mai sus unei gramatici ce genereaza L(G) si obt inem
G

= (V

N
, V
T
, S, P

) gramatica operator corespunz atoare. Consideram acum gra-


matica G
1
= (V
N
1
, V
T
, S
1
, P
1
) unde V
1
= V

S
1
, P
1
= P

S
1
, S
1
S
care este n forma normala operator si L(G
1
) = L(G).2
3.4 Automate push-down (APD)
Automatele push-down sunt mecanisme pentru recunoasterea limbajelor indepen-
dente de context.
Un APD se compune din (vezi gura 3.6):
1. O band a de intrare care cont ine simboluri ale unui alfabet de intrare; aceste
simboluri constituie pe o band a un anumit cuv ant peste alfabetul de intrare.
Banda se misca numai spre stanga;
2. O memorie push-down (memorie invers a, stiv a, pil a, etc) care cont ine sim-
boluri ale unui alfabet propriu, numit alfabetul memoriei push-down. Aceasta
memorie funct ioneaz a ca o stiv a - ultimul introdus, primul extras (Last In,
First Out);
3. Un dispozitiv de comanda care se a a permanent ntr-o anumit a stare in-
tern a apart inand unei mult imi nite de st ari. Dispozitivul de comanda
posed a un dispozitiv de citire de pe banda de intrare si un dispozitiv de
scriere-citire n memoria push-down.
66 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
s
i
1
i
2
i
3
. . .
i
k
. . .
i
n1
i
n
z
0
z
1
.
.
.
z
m
q
p
Figura 3.6: Reprezentare schematic a a unui automat push-down
Ca si un automat nit, un automat push-down funct ioneaz a n pasi discret i;
un pas de funct ionare comport a:
1. Dispozitivul de comad a citeste simbolul de pe banda de intrare din dreptul
dispozitivului de citire si mut a banda cu o pozit ie spre stanga.
2.

In funct ie de starea interna, de simbolul citit si de simbolul din varful
memoriei push-down dispozitivul de comanda efectueaza operat iile:
(a) Trece ntr-o noua stare;
(b) Scrie n memoria push-down un anumit cuv ant peste alfabetul memoriei
push-down; n particular, acesta poate s a e cuv antul vid, ceea ce are ca
efect stergerea simbolului din varful memoriei push-down.
Funct ionarea unui APD se termina n general dupa ce s-a citit ultimul simbol al
cuvantului scris pe banda de intrare dar este posibil ca el sa efectueze un anumit
num ar de pasi, citind de ecare dat a de pe banda cuv antul vid . De asemenea,
este posibil ca n timpul funct ion arii, deci nainte de a ajunge la ultimul simbol,
automatul s a se blocheze. De exemplu, automatul ajunge ntr-o congurat ie
(stare, simbol pe banda, simbol n v arful memoriei push-down) inadmisibil a sau
se goleste memoria push-down dar nu s-a epuizat cuvantul de pe band a, etc.
Matematic, un APD se deneste astfel:
Denit ie 3.9 Un automat push-down este un sistem
APD = (, I, Z, f, s
0
, z
0
)
unde:
este mult imea de st ari (nit a si nevid a);
I este alfabetul de intare;
Z este alfabetul memoriei push-down;
3.4. AUTOMATE PUSH-DOWN (APD) 67
f : (I ) Z T( Z

) este funct ia de evolut ie;


s
0
este starea init ial a;
z
0
Z este simbolul init ial al memoriei push-down.
Un APD aren general o funct ioanre nedeterminist a, card f(s, i, z) 1; mult imea
automatelor push-down deterministe formeaza o clas a special a.

In termenii funct iei de evolut ie, un pas de evolut ie comport a citirea simbolului
i de pe banda, citirea simbolului z din v arful memoriei push-down, apoi, n funct ie
de starea interna s si de aceste doua simboluri, automatul trece ntr-o noua stare
s

si scrie n memoria push-down un cuvant q Z

astfel ncat (s

, q) f(s, i, z).

In cazul n care f(s, i, z) = evolut ia este oprit a; este situat ia n care automatul
se blocheza.
O stare a automatului (sau congurat ie) este un sistem = (s, p, q) unde
s S este starea interna, p I

este subcuv antul de pe banda de intrare r amas


de citit (inclusiv simbolul din dreptul dispozitivului de citire), iar q Z

este
subcuvantul din memoria push-down.
Vom spune ca un APD trece direct din starea
1
= (s
1
, p
1
, q
1
) n starea
2
=
(s
2
, p
2
, q
2
) si vom scrie
1

2
daca se execut a un pas de evolut ie; daca p
1
=
ip

1
, q
1
= zq

1
putem avea (s
2
, q) f(s
1
, i, z) si atunci p
2
= p

1
, q
2
= qq

1
sau
(s
2
, q) f(s
1
, , z) si atunci p
2
= p
1
, q
2
= qq

1
.
Vom spune ca automatul evolueaz a (f ar a specicat ia direct) din starea

n
stare

si vom scrie

daca:
(1)

;
(2)
1
, . . . ,
n
astfel ncat

=
1

2
. . .
n1

n
=

.
Limbajul recunoscut de un APD se poate deni n doua moduri:
(1) Limbajul recunoscut de un APD cu golirea memoriei push-down, este,
prin denit ie
L(APD) = p[p I

(s
0
, p, z
0
)

(s, , ).
Aceata nseamn a c a, pornind din starea intern a s
0
si av and n v arful memo-
riei push-down simbolul z
0
, cu ajutorul cuvantului p de pe banda de intrare,
automatul poate s a evolueze astfel ncat s a goleasc a memoria push-down dupa
citirea cuvantului. Ment ion am c a golirea memoriei push-down nu trebuie nea-
parat s a coincid a cu citirea ultimului simbol al lui p; este posibil ca automatul
sa mai efectueze cat iva pasi citind de pe banda simbolul .
(2) Limbajul recunoscut de un APD cu st ari nale; n denit ia automatului se
adaug a o submult ime
f
a lui numita mult imea de stari nale. Prin denit ie,
limbajul recunoscut de un APD cu st ari nale este:
L(APD) = p[p I

(s
0
, p, z
0
)

(s, , q), s
f
, q Z

.
Prin urmare, este necesar ca dupa citirea lui p, eventual dupa nca c at iva pasi,
APD sa ajung a ntr-o stare nala. Vom vedea c a cele dou a denit ii sunt echiva-
lente.
68 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
Limbaje recunoscute de automate push-down cu golirea memoriei. Vom
ar ata c a familia limbajelor recunoscute de APD cu stari nale coincide cu familia
limbajelor independente de context.

In felul acesta, APD constituie mecanisme
analitice de denire a limbajelor de tipul 2.
Teorema 3.10 Un limbaj este independent de context dac a si numai dac a este
recunoscut de un automat pushdown cu golirea memoriei pushdown.
Demonstrat ie. Partea I E /
2
E = L(APD).
Fie G = (V
N
, V
T
, S, P) o gramatic a de tipul 2 n forma normala Greibach care
genereaz a limbajul E. Construim un automat pushdown astfel:
APD = (s, V
T
, V
N
, f, s, S), funct ia de evolut ie ind denit a de:
A ip P (s, p) f(s, i, A),
altfel .
Fie p L(G), p = i
1
. . . i
n
, S

G
p. Aceasta derivare trebuie s a aib a forma
(extrem st ang a):
(A) Si
1
X
1
u
1
i
1
i
2
X
2
u
2
u
1
i
1
i
2
i
3
X
3
u
3
u
2
u
1
. . . i
1
. . . i
n
,
unde u
1
, u
2
, u
3
, . . . V

N
= Z

.
Observat ie. Aparent, partea u
s
u
s1
. . . u
1
se mareste cu ecare derivare di-
recta.

In realitate, unele din cuvintele u
j
sunt vide, si anume atunci c and se
aplica o regul a de forma X i; n particular, n ultimele derivari directe se
aplica numai reguli de aceast a form a.
Avem
S i
1
X
1
u
1
(s, X
1
u
1
) f(s, i
1
, S),
X
1
i
2
X
2
u
2
(s, X
2
u
2
) f(s, i
2
, X
1
),
X
2
i
3
X
3
u
3
(s, X
3
u
3
) f(s, i
3
, X
2
),
. . . .
Prin urmare automatul poate s a aib a urm atoarea evolut ie:
(s, i
1
i
2
i
3
i
4
. . . i
n
, S)(s, i
2
i
3
i
4
. . . i
n
, X
1
u
1
)
(s, i
3
i
4
. . . i
n
, X
2
u
2
u
1
)(s, i
4
. . . i
n
, X
3
u
3
u
2
u
1
). . . .
Dac a compar am aceast a evolut ie cu derivarea (A) putem observa c a pe banda
de intrare avem la ecare pas partea complementar a a cuv antului (fat a de derivare)
iarn memoria push-down se reproduce partea de neterminale din formele propozit ionale
ale derivarii. Cum n derivare se ajunge la i
1
. . . i
n
, n evolut ie se va ajunge la
(s, , ).
Deci p L(APD) si L(G) L(APD).
3.4. AUTOMATE PUSH-DOWN (APD) 69
Fie acum p L(APD); va trebui s a ar at am c a p L(G), deci ca S

G
p.
Vom ar ata o implicat ie ceva mai general a, si anume, pentru orice u V

N
, avem
(s, p, u)

(s, , ) u

G
p.

In particular, daca u = S obt inem implicat ia dorit a.


Procedam prin induct ie asupra lungimii lui p.
Dac a [p[ = 1, atunci p = i, u = X iar evolut ia va avea un singur pas
(s, i, X)(s, , ), deci (s, ) f(s, i, X) si X i P. Putem scrie u =
X
G
i = p.
Presupunem ca implicat ia este adev arat a pentru un cuvant [p[ = l si con-
sideram un p astfel ncat [p[ = l + 1. Fie i si X primele simboluri din p si u,
deci p = ip

si u = Xu

.

In evolut ia (s, p, u)

(s, , ) punem n evident a prima
evolut ie directa
(s, p, u) = (s, ip

, Xu

)(s, p

, vu

)

(s, , ).
Din denit ia evolut iei directe rezulta c a (s, v) f(s, i, X) deci X iv P. Pe
de alta parte din ipoteza inductiva rezult a c a vu

G
p

. Avem
u = Xu


G
ivu

G
ip

= p,
ceea ce demonstreaza implicat ia.
Prin urmare p L(G) si L(APD) L(G), de unde L(G) = L(APD).2
Partea II. E = L(APD) E /
2
Fie APD = (, I, Z, f, s
0
, z
0
). Construim G de forma G = (V
N
, V
T
, S, P)
unde V
N
= s
0
(s, z, s

)[s, s

, z Z, V
T
= I, S = s
0
, iar regulile de
generare le denim astfel:
(1) s
0
(s
0
, z
0
, s), s ;
(2) Dac a (s
1
, z
1
. . . z
m
) f(s, i, z) vom introduce n P reguli de forma
(s, z, s

) i(s
1
, z
1
, s
2
)(s
2
, z
2
, s
3
) . . . (s
m
, z
m
, s

),
unde s

, s
2
, . . . , s
m
;
(3) Dac a (s

, ) f(s, i, z) vom introduce n P reguli de forma


(s, z, s

) i,
unde s

.
Sa observ am c a gramatica astfel construita este independenta de context, si
anume n forma normala Greibach.
70 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
Fie p L(APD), deci (s
0
, p, z
0
)

(s

, , ); trebuie s a ar at am c a s
0

G
p.
Vom ar ata implicat ia ceva mai general a
(s, p, z)

(s

, , ) (s, z, s

G
p.

In particular pentru s = s
0
, z = z
0
rezulta (s
0
, z
0
, s

G
p si putem scrie s
0
(s
0
, z
0
, s

G
p,
adica p L(G).
Procedam prin induct ie asupra lungimii evolut iei l.
Dac a l = 1 atunci (s, p, z)(s

, , ), deci p = i si (s

, ) f(s, i, z) si
(s, z, s

) i este o regul a, adic a putem scrie (s, z, s

)i = p.
Presupunem ca implicat ia este adev arat a pentru evolut ii de lungime oarecare
l si consideram o evolut ie de lungime l + 1; punem n evident a prima evolut ie
directa
(s, p, z) = (s, i
1
p

, z)(s
1
, p

, z
1
. . . z
m
)

(s

, , ).
Descompunem cuvantul p

n forma p

= p
1
. . . p
m
astfel ncat
(s
1
, p
1
, z
1
)

(s
2
, , ),
(s
2
, p
2
, z
2
)

(s
3
, , ),
. . .
(s
m
, p
m
, z
m
)

(s

, , ).
Observat ie. Putem punen evident a felul n care se deneste cuvantul p
1
urmarind
evolut ia lui APD;
(s
1
, i
1
i
2
. . . i
n
, z
1
z
2
. . . z
m
) (s

1
, i
2
i
3
. . . i
n
, qz
2
. . . z
m
)
(a) (b)
. . . (s
2
, i
j
1
. . . i
n
, z
2
. . . z
m
)
(c)
La primul pas (situat ia a) automatul este n starea s
1
, pe banda este i
1
iar n
memoria push-down este z
1
. Dup a efectuarea unui pas, automatul trece n starea
s

1
, mut a banda cu o pozit ie spre stanga, extrage pe z
1
si scrie n memoria push-
down un cuvant q (situat ia b). Se poate observa c a z
2
a cobor at; cum stim ca
memoria push-down se goleste (p L(APD)), trebuie ca la un moment dat z
2
sa
ajung a n v arful stivei (situat ia c).

In acest moment partea din p citit a va p
1
iar starea n care a ajuns automatul o not am cu s
2
. Este clar ca dac a pe banda
am avea scris numai p
1
am avea evolut ia (s
1
, p
1
, z
1
)(s
2
, , ).
Analog p
2
, . . . , p
m
.
Din denit ia deriv arii directe (s, i
1
p

, z)(s
1
, p

, z
1
. . . z
m
) avem
(s
1
, z
1
. . . z
m
) f(s, i
1
, z) iar n P va exista regula
3.4. AUTOMATE PUSH-DOWN (APD) 71
(s, z, s

) i
1
(s
1
, z
1
, s
2
)(s
2
, z
2
, s
3
) . . . (s
m
, z
m
, s

)
unde luam st arile s
2
, . . . , s
m
cele rezultate la descompunerea lui p

. Pe de alt a
parte, din ipoteza inductiva, avem
(s
1
, z
1
, s
2
)

p
1
,
(s
2
, z
2
, s
3
)

p
2
,
. . .
(s
m
, z
m
, s

)

p
m
.
Putem scrie derivarea
(s, z, s

)i
1
(s
1
, z
1
, s
2
)(s
2
, z
2
, s
3
) . . . (s
m
, z
m
, s

)

i
1
p
1
. . . p
m
= i
1
p

= p.
Dup a cum am v azut, rezult a mai departe p L(G) si L(APD) L(G).
Pentru a demonstra incluziunea invers a, vom ar ata mai nt ai implicat ia
(s, z, s

)

p(s
1
, z
1
s
2
) . . . (s
m
, z
m
, s

) implic a (s, p, z)

(s
1
, , z
1
. . . z
m
).
Procedam prin induct ie asupra lungimii derivarii l.
Dac a l = 1 atunci p = i si se aplica regula
(s, z, s

) i(s
1
, z
1
, s
2
) . . . (s
m
, z
m
, s

)
deci (s
1
, z
1
. . . z
m
) f(s, i, z) si (s, i, z)(s
1
, , z
1
. . . z
m
).
Presupunem ca implicat ia este adev arat a pentru l oarecare si consideram o
derivare de lungime l + 1. Fie p = p

i si punem n evident a ultimul pas.


(s, z, s

)

p

(s

j1
, z

j1
, s

j
)(s
j
, z
j
, s
j+1
) . . . (s
m
, z
m
, s

)
p

i(s
1
, z
1
, s
2
) . . . (s
j1
, z
j1
, s
j
)(s
j
, z
j
, s
j+1
) . . . (s
m
, z
m
, s

),
unde s

j
= s
j
; la ultimul pas s-a aplicat regula
(s

j1
, z

j1
, s
j
) i(s
1
, z
1
, s
2
) . . . (s
j1
, z
j1
, s
j
).
Rezult a (s
1
, z
1
. . . z
j1
) f(s

j1
, i, z

j1
) si putem scrie evolut ia
(s

j1
, i, z

j1
)(s
1
, , z
1
. . . z
j1
).
Pe de alt a parte, conform ipotezei inductive, avem
(s, p

, z)

(s

j1
, , z

j1
z
j
. . . z
m
)
Prin urmare
(s, p, z) = (s, p

i, z)

(s

j1
, i, z

j1
z
j
. . . z
m
)(s
1
, , z
1
. . . z
m
)
si implicat ia este demonstrat a.
72 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
Fie acum p L(G), deci s
0

G
p. T inand seama de forma regulilor din G,
n aceast a derivare se va aplica prima dat a o regul a de forma (1), apoi regula de
forma (2) iar la sfarsit reguli de forma (3). La aplicarea regulilor (2) putem rescrie
la ecare pas simbolul neterminal cel mai din st anga, deci s a obt inem o derivare
extrem stang a. S a observ am c a n acest caz structura formelor propozit ionale
intermediare este cea ment ionat a, p(s
1
, z
1
, s
2
)(s
2
, z
2
, s
3
) . . . (s
m
, z
m
, s

).
Prin urmare, derivarea va avea forma
s
0
(s
0
, z
0
, s

)

p(s
1
, z
1
, s
2
) . . . (s
m
, z
m
, s

)

p.
Trebuie sa avem regulile (s
j
, z
j
, s
j+1
) , j = 1, . . . , m, s
m+1
= s

si putem
scrie
(s
0
, p, z
0
)

(s
1
, , z
1
. . . z
m
)(s
2
, , z
2
. . . z
m
). . . (s

, , )
adica p L(APD) si L(G) L(APD).2
Automate pushdown cu stari nale. Vom nota un automat push-down
cu stari nale cu APD
f
.
Teorema 3.11 Un limbaj este recunoscut de un automat pushdown daca si nu-
mai dac a este recunoscut de un automat pushdown cu stari nale.
Demonstrat ie. Partea I E = l(APD) E L(APD
f
).
Dac a APD = (, I, Z, f, s
0
, z
0
) construim un automat pushdown cu stari
nale astfel
APD
f
= ( s

0
, s
f
, I, Z z

0
, f

, s

0
, z

0
)
unde mult imea de stari nale este s iar funct ia de evolut ie este denit a de:
f

(s, i, z) = f(s, i, z), s , i I , z Z;


f

(s

0
, , z

0
) = (s
0
, z
0
z

0
);
f(s, , z

0
) = (s
f
, ), s ;
n rest .
Fie p L(APD); atunci (s
0
, p, z
0
)

(s, , ). Evident ca aceiasi evolut ie o
poate avea si automatul pushdown cu stari nale. Putem scrie n APD
f
evolut ia
(APD
f
) : (s

0
, p, z

0
)

(s
0
, , z

0
)(s, , ),
deci p L(APD
f
) si L(APD) L(APD
f
).
Invers, e p L(APD
f
), atunci (n APD
f
)
(s

0
, p, z

0
)(s, p, z
0
z

0
)

(s
f
, , q).
Ultimul pas trebuie s a e de forma (s, , z

0
)(s
f
, , ) pentru ca nu exist a alt a
valoare a lui f care s a ne duc a ntr-o stare nala. Deci (n APD
f
)
(s

0
, p, z
0
z

0
)

(s, , z

0
)(s
f
, , )
3.5. AUTOMATE PUSHDOWN DETERMINISTE 73
si putem scrie n APD evolut ia (s
0
, p, z
0
)

(s, , ), adic a p L(APD) si
L(APD
f
) L(APD).2
Partea II E = L(APD
f
E L(APD).
Fie APD
f
= (, I, Z, f, s
0
, z
0
,
f
) un automat pushdown cu st ari nale
(mult imea st arilor nale este
f
) si construim un APD astfel
APD = ( s

0
, s

, I, Z z

0
, f

, s

0
, z

0
)
unde
f

(s, i, z) = f(s, i, z), s , i I , z Z;


f(s

0
, , z

0
) = (s, z
0
z

0
);
f(s, , z) = (s

, ), s
f
s

, z Z z

0
;
n rest .
Fie p L(APD
f
), atunci (s
0
, p, z
0
)

(s, , q), s
f
. Este evident ca n
APD avem evolut ia (s
0
, p, z
0
)

(s, , q). Putem scrie
APD : (s

0
, p, z

0
)(s
0
, p, z
0
z

0
)

(s, , qz

0
)

(s

, , ),
deci p L(APD) si L(APD
f
) L(APD).
Invers, e p L(APD). Avem
APD : (s

0
, p, z

0
)

(s
0
, p, z
0
z

0
)

(s, , ).
Simbolul z

0
nu poate sters decat cu o regul a de forma f(s, , z) = (s

, ),
s
f
s

, deci APD trebuie sa ajung a ntr-o stare s


f
, apoi s a r am an a n
s

.
APD : (s
0
, p, z
0
z

0
)

(s, , qz

0
), s
f
.
Putem scrie
APD
f
: (s
0
, p, z
0
)

(s, , q), s
f
si deci p L(APD
f
), adic a L(APD) L(APD
f
).2
3.5 Automate pushdown deterministe
Funct ionarea unui APD este n general nedeterminist a, card f(s, i, z) 1. Pen-
tru ca un APD s a aib a o funct ionare determinist a nu ete sucient s a impunem
condit ia card f(s, i, z) = 1, deoarece dac a pentru un anumit s si z Z avem
f(s, , z) ,= si f(s, i, z) ,= , putem face un pas citind sau citind i.
Denit ie 3.10 Un automat pushdown este determinist dac a
(1) card f(s, i, z) 1, s , i I , z Z;
(2) dac a f(s, , z) ,= , atunci f(s, i, z) = , i I.
74 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
Un limbaj recunoscut de un APD determinist l vom numi limbaj independent
de context (sau de tipul doi) determinist. Familia limbajelor independente de
context deterministe este inclusa (strict) n familia limbajelor de tipul 2 (dupa
cum vom vedea).
Un APD se poate bloca n urmatoarel doua situat ii
1. Automatul ajunge n starea s, n v arful memoriei pushdown se aa sim-
bolul z, pe banda de intrare urmeaz a i si f(s, i, z) = f(s, , z) = ;
2. Intr antr-un ciclu innit citind de pe banda ; de exemplu f(s, , z) = (s, z)
si f(s, i, z) = pentru o anumit a pereche (s, z).
Denit ie 3.11 Un APD determinist este neblocabil dac a pentru orice cuv ant
p I

exist a o evolut ie de forma (s


0
, p, z
0
)

(s, , q).

Intr-un APD determinist neblocabil orice cuvant peste I poate citit. Evi-
dent, de aici nu rezult a c a orice cuvant este recunoscut de APD.
Lema 3.2 Un APD determinist cu st ari nale este echivalent cu un APD deter-
minist cu st ari nale neblocabil (relativ la prima situat ie de blocare).
Demonstrat ie.Fie APD
f
= (, I, Z, f, s
0
, z
0
,
f
). Construim APD

f
= (
s

0
, s

, I, Z z

0
, f

, s

0
, z

0
,
f
) unde:
(1) f

(s, i, z) = f(s, i, z) dac a f(s, i, z) ,= , s , i I , z Z;


(2) f

(s, i, z) = (s

, z) dac a f(s, i, z) = f(s, , z) = , s , i I, z Z;


(3) f

(s

, i, z) = (s

, z), i I, z Z;
(4) f

(s

, , z

0
) = (s
0
, z
0
z

0
).
Avem
p L(APD
f
) (s
0
, p, z
0
)
APD
f
[= (s, , q), s
f

(s

0
, p, z

0
)
APD

f
[= (s
0
, p, z
0
z

0
)
APD

f
[= (s, , qz

0
), s
f
p L(APD

f
).
Deci L(APD
f
) = L(APD

f
.2
Observat ie.

Intr-o situat ie de blocare (s, ip, zq) si f(s, i, z) = f(s, , z) =
putem scrie
(s, ip, zq)
APD

f
[= (s

, p, zq)
APD

f
[= . . .
APD

f
[= (s

, , zq).
Teorema 3.12 Orice limbaj independent de context determinist este recunoscut
de un APD determinist neblocabil.
3.5. AUTOMATE PUSHDOWN DETERMINISTE 75
Demonstrat ie. Fiind dat un APD determinist vom construi un APD deter-
minist neblocabil echivalent. Conform lemei anterioare putem presupune ca nu
are loc prima situat ie de blocare.
Dac a are loc a doua situat ie de blocare, putem avea doua cazuri:
1. cont inutul memoriei pushdown se mareste nelimitat;
2. lungimea cuvintelor scrise n memoria pushdown nu dep aseste un anumit
num ar.
Fie card() = n, card(Z) = k, l = max[q[, q Z

[ (s

, q) f(s, i, z).
Cazul 1. Exista n total un num ar nk de perechi de forma (s, z). Daca n
evolut ia lui APD s-ar succede numai congurat ii cu perechi de forma (s, z) dis-
tincte atunci lungimea cuvantului din memoria pushdown ar creste la maximum
nkl simboluri. Prin urmare, dac a (s

, ,

)

(s

, ,

) si [

[ [

[ > nkl,
atunci n aceast a evolut ie trebuie sa existe dou a congurat ii cu aceiasi stare s si
cu acelasi simbol z n v arful memoriei pushdown. Deci
(s

, ,

)

(s, , zr)

(s, , zqr)

(s

, ,

),
de unde urmeaza c a
(s

, ,

)

(s, , zr)

(s, , q
m
r), m N.
Cazul II Lungimea cuvantului scris n memoria pushdown nu dep aseste nkl,
caci dac a [

[ [

[ > nkl, ar rezulta c a n memoria pushdown am avea


zq
m
, m N si lungimea cuvantului nu ar nit a.2
Teorema 3.13 Daca E este un limbaj independent de context determinist atunci
limbajul complementar I

E este de asemenea independent de context determin-


ist.
Demonstrat ie. Fie APD
f
= (, I, Z, f, s
0
, z
0
,
f
) automatul pushdown de-
terminist care recunoaste limbajul E. Construim un automat pushdown deter-
minist care va recunoaste limbajul I

E n modul urmator
APD

f
= (
1
,
2
,
3
, I, Z, f

, s

0
, z
0
,

f
)
unde
s

0
=
_
(s
0
,
1
) pentru s
0

f
,
(s
0
,
2
) pentru s
0
,
f
,
mult imea de stari nale este

f
= (s,
3
)[s iar funct ia de evolut ie este
denit a de
76 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
(1) dac a f(s, i, z) = (s

, q) atunci
f

((s,
1
), i, z) = ((s

, k

), q),
f

((s,
2
), i, z) = ((s,
3
), q),
f

((s,
3
), i, z) = ((s

, k

), q);
(2) dac a f(s, , z) = (s

, q) atunci
f

((s,
1
), , z) = ((s

, k

), q),
f

((s,
3
), , z) = ((s

, k

), q);
unde k

= 1 dac a s


f
si k

= 2 dac a s

,
f
.
Fie p L(APD

f
), atunci ((s
0
,
k
), p, z
0
)

((s,
3
), , q), k = 1, 2.

In mod
necesar, ultima congurat ie trebuie sa e precedat a de o congurat ie de forma
((s

,
2
), , q), deci
(A) ((s
0
,
k
), p, z
0
)

((s

,
2
), , q)((s,
3
), , q)
de unde rezulta c a (s
0
, p, z
0
)

(s

, , q) si s

,
f
. Deci p I

E si L(APD

f
)
I

E.
Invers, e p I

E, atunci n APD

f
avem evolut ia (s
0
, p, z
0
)

(s, , q), s ,

f
si putem scrie evolut ia (A). Prin urmare p L(APD

f
), adic a I

E
L(APD

f
).2
Consecint a. Putem enunt a proprietatea de mai sus astfel: Familia limbajelor
independente de context deterministe este nchisa la complementariere. Cum
familia limbajelor independente de context nu este nchisa la complementariere
si cum ea coincide cu familia limbajelor recunoscute de automatele pushdown
nedeterministe putem mai departe obt ine urmatorul rezultat:
APD nedeterministe nu sunt echivalente cu APD deterministe.
3.6 Lema BarHillel
Ca si n cazul limbajelor regulate, lema BarHillel pune n evident a urm atoarea
proprietate a unui limbaj independent de context: orice cuv ant al unui astfel de
limbaj, sucient de lung, cont ine un subcuv ant (nevid) pe care multiplic andu
l de un numar arbitrar de ori, obt inem noi cuvinte care apart in de asemenea
limbajului. Mai poart a denumirea de lema de pompare sau lema uvwxy.
Ne vom referi n cele ce urmeaza la gramatici de tipul 2 n forma normal a
Chomsky.

Intr-o gramatica de aceast a form a arborii de derivare sunt ntotdeauna
arbori binari.
Lema 3.3 Fie G o gramatic a n forma normal a Chomsky si X

p, p V

G
. Daca
cea mai lunga ramur a din arborele /
X,p
cont ine m noduri, atunci [p[ 2
m1
.
Demonstrat ie. Proced am prin induct ie asupra lui m.
Pentru m = 2 arborele are dou a nivele si n mod evident [p[ 2 = 2
m1
.
3.6. LEMA BARHILLEL 77
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_

_
`
_
`
_
`
_
`
_
Nivel
0
1
2
3
4
max[p[
2
0
2
1
2
2
2
3
2
4
Figura 3.7: Exemplu de arbore
Presupunem ca proprietatea este adev arat a pentru un m oarecare si con-
sideram un arbore care are pe cea mai lung a ramur a m + 1 noduri.

In derivarea
X

p punem n evident a prima derivare direct a
XY Z

p.
Conform lemei de localizare, p = p
1
p
2
si Y

p
1
, Z

p
2
. Arborii de derivare /
Y,p
1
si /
Z,p
2
cont in, ecare pe cea mai lung a ramur a cel mult m noduri; conform
ipotezei de induct ie, avem [p
1
[ 2
m1
, [p
2
[ 2
m1
. Prin urmare
[p[ = [p
1
p
2
[ = [p
1
[ +[p
2
[ 2
m1
+ 2
m1
= 2
m
.2
Exemplu. Consideram un arbore de forma dat a n gura 3.7. Cea mai lunga
ramur a are m = 5 noduri (nivelul ultim plus 1). Se poate usor vedea ca pe
ultimul nivel putem avea cel mult 2
m1
noduri (n acest caz toate nodurile sunt
neterminale).
Observat ie. Dac a X

p si [p[ > 2
m1
atunci exist a n arborele /
X,p
cel put in
o ramur a cu m + 1 noduri.
Lema 3.4 Fie G o gramatic a de tipul 2 si e XX
1
. . . X
m

p. Atunci, conform
lemei de localizare, p = p
1
. . . p
m
si X
j

p
j
, j = 1, . . . , m. Fie /
Y,q
/
X,p
.
atunci q este subcuvant ntrunul din cuvintele p
j
.
Demonstrat ie. Neterminalul Y apart ine unuia din subarborii /
X
j
,p
j
, e acesta
/
X
k
,p
k
; atunci /
Y,q
/
X
k
,p
k
si q Sub(p
k
). Imaginea grac a este dat a de gura
3.8.2
Lema 3.5 (Lema BarHillel) Fie E un limbaj independent de context. Atunci
exist a un numar natural k astfel nc at, dac a p E si [p[ > k atunci p se poate
descompune n forma p = uvwxy cu urm atoarele propriet at i:
78 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
`
_
`
_
`
_
`
_
. . .
X
X
1
X
2 X
m
. . .
p
1
p
2
. . .
p
m
q
Figura 3.8: Reprezentarea grac a a incluziunii q Sub(p
k
).

u v w x
y
v
1
= A
v
2
= A
Figura 3.9: Descompunerea cuvantului p.
1. vx ,= ;
2. [vwx[ k;
3. uv
j
wx
j
y E, j N,
Demonstrat ie. Fie n = card(V
N
). Lu am k = 2
n
. Cum [p[ > k = 2
n
, conform
observat iei de la prima lema, exist a n arborele /
S,p
cel put in o ramur a cu n + 2
noduri; pe aceast a ramur a ultimul nod este terminal, deci exist a n + 1 noduri
neterminale, din care minim doua sunt etichetate cu acelasi simbol. Parcurgem
ramura de lungime maxim a ncepand de la frunza si alegem primul simbol neter-
minal Acare se repet a pe aceasta ramur a. Fie v
1
si v
2
nodurile cu eticheta A g asite
prin aceast a procedur a. Descompunem cuv antul p ca n gura 3.9, p = uvwxy.
3.6. LEMA BARHILLEL 79
(1) Consider am subarborele /
A,vwx
caruia i corespunde derivarea A

vwx.
Punem n evident a primul pas
ABC

vwx,
si vwx se descompune n vwx = p
B
p
C
, B

p
B
, C

p
C
si p
B
, p
C
,= . Cum /
A,w

/
A,vwx
, rezult a c a w este subcuv ant n p
B
sau n p
C
. S a presupunem ca w
Sub(p
C
); atunci p
B
Sub(v) si cum p
B
,= rezulta v ,= .
(2)Din modul de alegere al nodurilor v
1
= A si v
2
= A rezulta c a pe ramura
punctat a ncepand de la v
1
n jos pan a la frontier a sunt cel mult n + 2 noduri,
ultimul ind terminalul. Deoarece arborele /
A,vwx
contine doar terminale pe
frontier a, iar acestea se obt in numai prin aplicarea de reguli de forma D i,
numarul frunzelor este egal cu numarul neterminalelor ce pot obtinute intr-un
arbore cu n + 1 noduri cea mai lunga ramura, deci conform lemei precedente,
[vwx[ 2
n
.
(3) putem scrie derivarile A

w, A

vAx. Deci
S

uAy

uvAxy

uv
2
Ax
2
y

. . .

uv
j
wx
j
y.2
Problema nchiderii familiei /
2
la intersect ie
Teorema 3.14 Familia /
2
nu este nchis a la intersect ie.
Demonstrat ie. Consider am limbajul L
3
= a
n
b
n
c
n
[n 1. S a r at am c a L
3
, /
2
.

Intradevar, s a presupunem ca L
3
/
2
si e k constanta din lema BarHillel.
Lu am n > k/3 si e p = a
n
b
n
c
n
; avem [p[ > k, deci conform acestei leme p se
descompune n forma p = uvwxy cu vx ,= si uv
j
wx
j
y L
3
, j N.
Vom analiza posibilit at ile de constituire a subcuvintelor v si x. S a presupunem
ca n v (sau x) intr a dou a din simbolurile a, b, c; de exemplu v = aabbb. atunci
consideram cuv antul p
2
= uv
2
wx
2
y = uaabbaabbwx
2
y care nu are structura cu-
vintelor lui L
3
(a nu poate s a urmeze dupa b) dar conform lemei Bar-Hillel
apart ine lui L
3
. Deci, n v (sau x) nu pot intra dou a (sau trei) din simbolurile
a, b, c. Sa presupunem c a intr a un singur simbol; de exemplu v a

si x b

.
Atunci multiplicand n p subcuvintele v si x, puterile simbolurilor a si b se
m aresc iar c r am ane pe loc, contrazic anduse din nou structura cuvintelor din
L
3
.

In concluzie L
3
nu este independent de context.
Fie acum limbajele
L

3
= a
m
b
n
c
n
[m, n 1
L

3
= a
n
b
n
c
m
[m, n 1.
Se poate vedea usor c a aceste limbaje sunt de tipul 2; gramaticile care le genereaz a
sunt S aS[aA, A bAc[bc si respectiv S Sc[Ac, A aAb[ab.
Avem L

3
L

3
= L
3
, deci intersect ia a dou a limbaje de tipul 2 este un limbaj
care nu apart ine lui /
2
.2
80 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
Corolar 3.15 Familia /
2
nu este nchis a la complementariere.

Intradevar, s a presupunem ca /
2
este nchisa la complementariere si e E
1
, E
2

/
2
. Cum familia /
2
este nchisa la reuniune, ar rezulta C(E
1
) C(E
2
) /
2
. Dar
(de Morgan) C(E
1
) C(E
2
) = C(E
1
C(E
2
) /
2
.
Complementul limbajului C(E
1
E
2
) este E
1
E
2
si conform presupunerii ar
trebui ca E
1
E
2
/
2
, oricare ar E
1
, E
2
, ceea ce nu este adev arat.2
Generalizari ale lemei BarHillel Lema lui BarHillel reprezinta o condit ie
necesara ca un limbaj s a e independent de context. Cu ajutorul ei se poate
demonstra relativ usor c a anumite limbaje nu sunt independente de context.
Ideea este aceea c a prin multiplicarea subcuvintelor v si x, de un numar sucient
de ori, se contrazice structura limbajului.
Totusi, nu orice limbaj care nu este de tipul 2 poate respins de lema Bar
Hillel. De exemplu, aceast a lem a nu poate respinge limbajul
L = a
n
b
2
m
[n, m 1 b

,
care nu este de tipul 2 (se demonstreaz a pe alt a cale).

Intradevar, pentru orice
p = a
n
b
2
m
luam
u = , v = a, w = , x = , y = a
n1
b
2
m
.
Putem itera subcuvintele v si x far a s a contrazicem structura cuvintelor limba-
jului.
O generalizare a lemei BarHillel este
Lema 3.6 (Lema lui Ogden) pentru orice limbaj independent de context L exista
o constanta k astfel nc at orice p L pentru care cel put in k simboluri sunt
marcate, se poate descompune n forma p = uvwxy astfel nc at
1. sau u, v, w sau w, x, y cont in ecare cate un simbol marcat;
2. vwx cont ine cel mult k simboluri marcate;
3. uv
j
wx
j
y L, j N
Cu ajutorul acestei leme se poate arata c a limbajul de mai sus nu este de tipul
2, considerand marcate simbolurile b.
3.7

Inchiderea familiei /
2
la substitut ii
Denit ie 3.12 Vom spune c a o familie de limbaje / este nchis a la substitut ii
daca oricare ar L / si oricare ar substitut ia s : V

T(U

) astfel nc at
s(i) /, i V , avem s(L) /.
3.7.

INCHIDEREA FAMILIEI /
2
LA SUBSTITUT II 81
_

a
1
a
2
a
3
V
s
V

a
1
s
a
1
s(a
2
)
V

a
2
V

a
3
s(a
3
)
Figura 3.10: Reprezentare grac a a substitut iei
Se cunosc o serie de proprietat i de nchidere a familiilor de limbaje din clasicarea
Chomsky fat a de substitut ii particulare; o parte din acestea sunt prezentate n
tabelul urm ator.
/
0
/
1
/
2
/
3
Substitut ie DA NU DA DA
Substitut ie liber a DA DA DA DA
Homomorsme DA NU DA DA
Homomorsme libere DA DA DA DA

In cele ce urmeaza vom considera not iunea de substitut ie ntro accept iune
ceva mai general a (fat a de cea din Capitolul I)
Denit ie 3.13 Fie V un alfabet; pentru orice a V consider am un alfabet
V
a
si not am V
g
=

aV
V
a
. Fie s : V T(V

g
) o aplicat ie cu proprietatea
s(a) V

a
, a V . Prelungirea canonica a lui s la V

o numim substitut ie.


Observat ie. Prelungirea canonica se deneste recursiv astfel:
s() = , s(a
1
. . . a
n
) = s(a
1
) . . . s(a
n
).
O reprezentare grac a este prezentat a n gura 3.10. Observ am c a
V

g
,=

aV
V

a
si V

a
V

g
.
Denit ia substitut iei se poate da si direct:
Denit ie 3.14 Vom spune c a s : V

T(V

g
) este o substitut ie dac a
1. s() = ;
2. s(a) V

a
, a V ;
3. s(a
1
. . . a
n
) = s(a
1
) . . . s(a
n
), a
1
, . . . , a
n
V .
82 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
Denit ie 3.15 Imaginea unui limbaj L V

prin substitut ia s este
s(L) =
_
aL
s(a).
Denit ie 3.16 Vom spune c a o familie de limbaje / este nchis a la substitut ii
daca oricare ar L / si oricare ar substitut ia s : V

T(V

g
astfel nc at
s(a) /, a V , avem s(L) /.
Observat ie.

In cazul particular n care V
a
= U, a V , avem V
g
= U si condit ia
s(a) V

a
este n mod evident satisfacut a.
Teorema 3.16 Familia limbajelor independente de context este nchis a la substitut ii.
Demonstrat ie. Fie L /
2
si s : V

T(V

g
) o substitut ie astfel ncat s(a)
/
2
, a V .
Fie
G = (V
N
, V, S, P) cu L(G) = L,
G
a
= (V
a
N
, V
a
, S
a
, P
a
) cu L(G
a
) = s(a),
G si G
a
ind gramatici de tipul 2. Vom presupune c a aceste gramatici nu cont in
reguli de stergere (cu except ia regulilor de completare) si ca alfabetele neterminale
sunt disjuncte.
Denim : V
N
V V
N
S
a
[a V prin
() = ,
(X) = X, X V
N
,
(a) = S
a
, a V
si prelungim canonic aplicat ia la (V
N
V )

.
Consideram acum gramatica G

= (V

N
, V

T
, S, P

) unde
V

N
= V
N
(

aV
V
a
N
),
V

T
=

aV
V
a
,
P

= (

aV
P
a
) X ()[X P.
Observat ie. P

cont ine toate regulile din toate gramaticile G


a
nemodicate; reg-
ulile din G le modic a, si anume terminalele din p art ile drepte le nlocuim cu
simbolurile de start din gramaticile G
a
.
Sa mai observ am c a G

este de tipul 2.
Fie u s(L). Deoarece s(L) =

vL
s(v) rezult a c a exist a v L astfel ncat
u s(v).
Dac a v = nseamn a c a s P si S () = P

. T inand cont c a
s() = rezulta u = si L(G

).
Sa presupunem ca v ,= si e v = v
1
. . . v
n
; avem s(v) = s(v
1
) . . . s(v
n
). Prin
urmare u = u
1
. . . u
n
si u
1
s(v
1
), . . . , u
n
s(v
n
).
3.7.

INCHIDEREA FAMILIEI /
2
LA SUBSTITUT II 83
Avem S

G
v si S
a
i

u
i
n G
a
i
, i = 1, . . . , n.
Atunci
G

: S(v
1
)(v
2
). . . (v
n
) = (v).
Cum v cont ine numai terminale, rezulta c a (v) = S
a
1
. . . S
an
. Deci
G

: S

X
a
1
. . . X
an

u
1
. . . u
n
= u,
si u L(G

), adic a s(L) L(G

).
Invers, e u L(G

). deoarece (V
a
N
) V
N
= , deriv arile din G

care uti-
lizeaza reguli din P
a
nu introduc simboluri din V
N
.

In derivarea S

u efectuam
mai nt ai deriv arile directe care utilizeaza reguli de forma X (). Vom avea
G

: S

S
a
1
. . . S
an

u.
Cuvantul u se descompune n u = v
1
. . . v
n
si S
a
j

v
j
. Deoarece alfabetele
gramaticilor G
a
sunt disjuncte, putem scrie S
a
j

v
j
(n gramatica G
a
j
) si deci
v
j
L(G
a
j
) = s(a
j
). Asadar
u = v
1
. . . v
n
s(a
1
. . . s(a
n
) = s(a
1
. . . a
n
) s(L).
Rezult a L(G

) s(L) si n nal s(L) = L(G

).2
Proprietatea de nchidere a familiei /
2
la substitut ii se poate utiliza pentru a
reobt ine proprietat i cunoscute. De exemplu:
Corolar 3.17 Familia /
2
este nchis a la operat iile regulate (reuniune, produs,
nchidere Kleene).
Demonstrat ie. Limbajele a, b, ab, a

sunt regulate, deci si independente


de context.
Denim o substitut ie s astfel: V = a, b, V
a
, V
b
oarecare si e L
1
V

a
, L
2

V

b
doua limbaje independente de context. Consider am s : a, b T( (V
a

V
b
)

) denit a de
s(a) = L
1
, s(b) = L
2
Conform teoremei anterioare rezulta c a limbajele s(a, b), s(ab), s(a

) sunt
independente de context; dar
s(a, b)L
1
L
2
, s(ab) = L
1
L
2
, s(a

) = L

1
.
De exemplu
s(a, b) = s(a) s(b) = L
1
L
2
, etc.
84 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
3.8 Caracterizarea limbajelor independente de
context
Limbajul lui Dyck Cuvintele limbajului Dyck, numit si limbaj parametric, con-
stituie siruri de paranteze corect scrise ntr-o expresie aritmetic a. De exemplu,
daca n expresia
(a + b) [(c + d) (e + f)]
se elimina tot i operanzii se obt ine sirul de paranteze ()[()()], care dupa cum se
poate observa sunt corect scrise. Denit ia general a a unui sir de paranteze corect
scrise nu este foarte simpla; de exemplu, nu este sucient s a spunem ca ecarei
paranteze deschise trebuie sai corespund a o parantez a nchisa.
Sirurile de paranteze corect scrise se pot deni elegant cu ajutorul gramaticilor
de tipul 2. Fie G
n
= (X, V
T
, X, P) o gramatic a de tipul 2, unde
V
T
= i
1
, . . . , i
n
, i

1
, . . . , i

n
,
P = X Xi
k
Xi

k
X, k = 1, . . . , n X .
Prin denit ie, limbajul lui Dyck de ordinul n este D
n
= L(G
n
).
Exemplu. Presupunem n = 3; putem scrie derivarea
XXi
3
Xi

3
XXi
3
Xi
1
Xi

1
Xi

3
XXi
3
Xi
1
Xi

1
Xi
2
Xi

2
Xi

3
X
Xi
3
Xi
1
Xi

1
Xi
2
Xi
1
Xi

1
Xi

2
Xi

3
XXi
3
Xi
1
Xi

1
Xi
2
Xi
1
Xi
1
Xi

1
Xi

1
Xi

2
Xi

3
X.

In nal, aplicand regula de stergere, obt inem


X

i
3
i
1
i

1
i
2
i
1
i
1
i

1
i

1
i

2
i

3
.
Dac a asociem simbolurilor i
k
, i

k
perechi de paranteze, de exemplu: i
1
, i

1

(, ); i
2
, i

2
[, ]; i
3
, i

3
, obt inem ()[()()].
Proprietat i ale limbajului lui Dyck
1. i
k
D
n
i

k
D
n
, k = 1, . . . , n;
2. D
n
D
n
D
n
;
3. D
n
(

n
k=1
i
k
D
n
i

k
D
n
) ;
4. dac a p, pq D
n
atunci q D
n
.
Demonstrat ie. (1) Un cuv ant din i
k
D
n
i

k
trebuie sa aib a forma i
k
pi

k
, p D
n
(deci X

p). Putem scrie
XXi
k
Xi

k
X

i
k
Xi

i
k
pi

k
D
n
.2
(2) Fie p D
n
D
n
, deci p = p
1
p
2
, p
1
D
n
, p
2
D
n
sau X

p
1
, X

p
2
; e
p = i
1
. . . i
n
. Derivarea X

p
1
o putem detalia las and la sf arsit stergerile:
X

Xi
1
X
2
X . . . Xi
n
X

i
1
. . . i
n
.
3.8. CARACTERIZAREA LIMBAJELOR INDEPENDENTE DE CONTEXT85
Putem scrie
X

Xi
1
X
2
X . . . Xi
n
X

i
1
. . . i
n
X = p
1
X

p
1
p
2
= p D
n
.2
(3) e p D
n
; trebuie sa ar at am c a p (

n
k=1
i
k
D
n
i

k
D
n
) . Proced am
prin induct ie asupra lungimii lui p. Dac a [p[ = 0, atunci p = si apartenent a
este evident a.
Observat ie. Putem lua [p[ = 2, deci p = i
k
i

k
; avem
i
k
D
n
i

k
D
n
= i
k
, . . .i

k
, . . . = i
k
i

k
, . . .
si deci i
k
i

k
i
k
D
n
i

k
D
n
.
Presupunem acum ca proprietatea este adev arat a pentru [p[ oarecare si con-
sideram cazul [p[+1. punemn evident a prima derivare direct a XXi
k
Xi

k
X

p.
Conform lemei de localizare, p = p
1
i
k
p
2
i

k
p
3
si X

p
j
, j = 1, 2, 3, adic a p
j
D
n
.
Dac a p
1
= proprietatea este demonstrata. Presupunem c a p
1
,= . Cum
p
1
D
n
, avem p
1
= i
j
p

1
i

j
p

1
, p

1
, p

1
D
n
, n conformitate cu ipoteza inductiva.
Prin urmare
p = i
j
p

1
i

j
p

1
i
k
p
2
i

k
. .
Dn
p
3
. .
=qDn
= i
j
p

1
i

j
q.2
(4) Fie p, pq D
n
. Proced am prin induct ie asupra lui [pq[.
Dac a [pq[ = 0, rezult a q = D
n
.
Presupunem ca proprietatea este adev arat a pentru [pq[ oarecare si consideram
cazul [pq[ + 1.
Din p, q D
n
rezulta
pq = i
k
si

k
t, s, t D
n
.
Avem doua cazuri
I. pq = i
k
s
1
s
2
. . . s

k
t

..
t
1
t
2
. .
p
. . . t
p
. .
q
Deci
p
..
Dn
= i
k
si

k
. .
Dn
(ip.ind.) t

D
n
,
t
..
Dn
= t

q
..
Dn
(ip.ind.) q D
n
.
II. pq = i
k
s
1
s
2
. .
p
. . . s

. .
s

k
t
1
t
2
. . . t
p
. .
q
.
Avem
i
k
si

k
= ps

k
= i
k
p

k
p

k
, p

, p

D
n
,
86 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
_

.
.
h
V

T
E
R
D
V

1
Figura 3.11: Imagine grac a a teoremei de caracterizare
s
..
Dn
= p

..
Dn
i

k
p

(ip.ind.) i

k
p

D
n
ceea ce nu este posibil.2
Teorema de caracterizare
Teorema 3.18 Un limbaj este independent de context dac a si numai dac a este
imaginea printr-un homomorsm a intersect iei dintre un limbaj regulat si un
limbaj Dyck.
Demonstrat ie. Vom ar ata numai implicat ia direct a, adic a dac a E este un
limbaj independent de context atunci exist a un limbaj regulat R, un limbaj Dyck
si un homomorsm h astfel ncat E = h(R D).
Imaginea geometrica este prezentat a n gura 3.11. Fie G = (V
N
, V
T
, S, P) n
forma normal a Chomsky astfel ncat E = L(G). Presupunem c a
V
T
= i
1
, . . . i
m
.
(a) Construct ia lui R.
Lu am gramatica G

= (V
N
, V
1
, S, P

) unde
V
1
= i
1
, i
2
, i
m
, i
m+1
, . . . , i
m+n
, i

1
, . . . , i

m+n
iar P

se construieste astfel:
X i
k
P
_
X i

k
i
k
P

,
X i
k
i

k
i
n+l
Z P

,
l = 1, n, Z V
N
;
X Y Z P atunci X i
m+l
Y P

, l = 1, n.
De ecare dat a alegem un i
m+l
diferit (de aici rezulta n).
(b) Construct ia lui D.
Lu am D = D
m+n
cu alfabetul terminal V
1
si cu regulile cunoscute.
(c) Denit ia lui h.
Lu am h : V
1
V
T
astfel:
h(i
k
) =
_
i
k
, k m
, k > m,
h(i

k
) = , k = 1, . . . , m+ n.
3.8. CARACTERIZAREA LIMBAJELOR INDEPENDENTE DE CONTEXT87
Prelungim hn mod canonic la V

1
. Se poate ar ata usor c a h este un homomorsm.
Sa ar at am c a E h(R D).
Fie p E = L(G); va trebui s a ar at am c a exist a q R, D astfel ncat
p h(q). Vom ar ata implicat ia ceva mai general a:
Dac a X

G
p atunci q, X

q, q D, p = h(q).
Procedam prin induct ie asupra lungimii l a deriv arii.
Dac a l = 1, atunci X
G
p = i
k
, X i
k
i

k
P

. Lu am q = i
k
i

k
si avem n
G

derivarea Xi
k
i

k
, iar h(q) = h(i
k
)h(i

k
) = i
k
= p.
Presupunem ca implicat ia este adev arat a pentru deriv ari de lungime oarecare
l si consideram cazul l + 1; punem n evident a prima derivare direct a
X
G
Y Z

G
p.
Conform lemei de localizare, p = p
1
p
2
, Y

G
p
1
, Z

G
p
2
. T inand cont de
ipoteza inductiva avem n gramatica G

:
q
1
, Y

q
1
, q
1
D, h(q
1
) = p
1
;
q
2
, Z

q
2
, q
2
D, h(q
2
) = p
2
.
Ne x am atent ia asupra deriv arii Y

q
1
; ind o derivare ntr-o gramatica
de tipul 3, n toate deriv arile directe se aplic a reguli de categoria I (A pB) cu
except ia ultimei unde se aplica o regul a de categoria II (c q).

In cazul nostru,
aceasta ultim a regul a trebuie s a e de forma X i
k
i

k
. Odat a cu aceast a regul a
avem si X i
k
i

k
ki

m+l
Z; aplic ando pe aceasta, avem
Y

q
1
i

m+l
Z

q
1
i

m+l
q
2
.
Pe de alt a parte, deoarec X Y Z P avem X i
m+l
Y P

, asa ncat
X

i
m+l
Y

i
m+l
q
1
i

m+l
q
2
def
= q.
Avem X

q, q D si h(q) = h(q
1
)h(q
2
) = p
1
p
2
= p.
Sa ar at am acum c a h(R D) E.
Fie q R, D si p h(q), atunci p L(G).
Mai general
X

q, q D atunci X

G
h(q).
Procedam prin induct ie asupra lungimii derivarii l.
88 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
Dac a l = 1 atunci Xq = i
k
i

k
; q D
n
, h(q) = i
k
. Sa aplicat regula
X i
k
i

k
P

; rezult a X i
k
P deci X
G
i
k
= h(q).
Presupunem ca implicat ia este adev arat a pentru un l oarecare si consideram
cazul l +1. Punem n evident a prima derivare direct a (evident, aceasta nu poate
sa e de forma X i
k
i

k
). Distingem dou a cazuri
I. Se aplica o regul a de forma X i
k
i

k
i

m+l
Z. Avem
Xi
k
i

k
i

m+l
Z

q,
q
..
D
= i
k
i

k
..
D
i

m+l
q
1
i

k
i

m+l
q
1
D, nu este posibil.
II. Se aplica o regul a de forma X i
m+l
Y . Avem
G

: Xi
m+l
Y

q, q = i
m+l
q

m+l
q

, q

, q

D.
Detaliat, derivarea de mai sus trebuie s a aib a forma
G

: Xi
m+l
Y

i
m+l
q

Z

i
m+l
q

m+l
q

.
De aici Y

, Z

si conform ipotezei inductive avem Y


G
h(q

), Z

G
h(q

).
Putem scrie
G : XY Z

h(q

)h(q

) = h(i
m+l
)h(q

)h(i
m+l
)h(q

) = h(i
m+l
q

m+l
q

) = h(q).2
1. S a se arate ca L(G) = (ab)
n
a[n 0 unde G are product iile S
SbS, S a. Sa se construiasc a o gramatic a echivalent a cu G care s a
e neambigu a.
2. Eliminat i redenumirile din gramatica G
E
ce genereaza expresiile aritmetice
simple.
3. Aducet i la forma normal a Chomsky gramaticile ce au regulile:
(a) S TbT, T TaT[ca;
(b) S aAC, A aB[bAB, B b, C c;
(c) S A.A, A 0A[1A[ . . . 9A[.
4. G asit i forma normal a Greibach pentru gramaticile:
(a) A
1
A
2
A
3
, A
2
A
1
A
2
[1, A
3
A
1
A
3
[0.
(b) G
E
care genereaz a expresiile aritmetice simple.
5. Construit i un automat pushdown pentru recunoasterea limbajului:
3.8. CARACTERIZAREA LIMBAJELOR INDEPENDENTE DE CONTEXT89
(a) L = w[w a, b

, num arul literelor a n w este egal cu num arul


literelor b n w ;
(b) L = w[w a, b

, w = w;
(c) L = w[w (, )

, w este un cuv ant n care ecare parantez a deschisa


are o pereche, parantez a nchisa .
6. Folosind lema de pompare s a se arate ca urm atoarele limbaje nu sunt inde-
pendente de context:
(a) L = a
i
b
j
c
k
[i < j < k;
(b) L = a
i
b
j
[j = i
2
;
(c) L = a
n
b
n
c
n
[n 1;
(d) L = a
i
[i prim ;
(e) L = a
i
b
i
c
j
[j i;
90 CAPITOLUL 3. LIMBAJE INDEPENDENTE DE CONTEXT
Capitolul 4
Limbaje dependente de context
4.1 Gramatici monotone
Reamintim c a o gramatic a este monoton a dac a orice regula u v satisface
condit ia [u[ [v[. Este permisa si regula, S (care evident nu satisface
condit ia de monotonie) cu condit ia ca S sa nu apar a n dreapta vreunei reguli.
Lema 4.1 Fie G
1
= (V
N
, V
T
, S, P u v) unde u v este o regul a care
satisface condit ia de monotonie iar P sunt reguli de tipul 1. Atunci G
1
este
echivalent a cu o gramatic a dependent a de context.
Demonstrat ie. Presupunem ca P satisface condit ia din lema 1.2, deci u =
X
1
. . . X
m
si v = Y
1
. . . Y
n
cu X
i
, Y
j
V
N
si m n. Putem presupune ca m 2.
Fie Z
1
, . . . , Z
m
neterminale noi si consideram regulile R:
X
1
X
2
. . . X
m
Z
1
X
2
. . . X
m
,
Z
1
X
2
. . . X
m
Z
1
Z
2
. . . X
m
,
. . .
Z
1
Z
2
. . . Z
m1
X
m
Z
1
Z
2
. . . Z
m
Y
m+1
. . . Y
n
,
Z
1
Z
2
. . . Z
m
Y
m+1
. . . Y
n
Y
1
Z
2
. . . Z
m
Y
m+1
. . . Y
n
,
. . .
Y
1
Y
2
. . . Y
m1
Z
m
Y
m+1
. . . Y
n
Y
1
Y
2
. . . Y
n
.
Lu am G

1
= (V
N
Z
1
, . . . , Z
m
, V
T
, S, P R). Evident G

1
este de tipul 1. S a
ar at am c a L(G

1
) = L(G).
Fie p L(G). Daca n derivarea S

G
1
p nu se utilizeaza regula u v, este
clar ca putem scrie n G

1
derivarea S

p si p L(G

1
). S a presupunem ca la un
anumit pas se utilizeaz a regula u v; detaliem
(G
1
) : S

=

=

p.
91
92 CAPITOLUL 4. LIMBAJE DEPENDENTE DE CONTEXT
Pasul se poate obt ine si n gramatica G

1
utiliz and regulile R:
(G

1
) : =

X
1
. . . X
m

. . .

=
Rezult a c a S

p si deci p L(G

1
), adic a L(G
1
) L(G

1
).
Invers, e p L(G

1
). Daca n derivarea S

p sau folosit numai reguli din P
atunci evident S

G
1
p. Sa presupunem ca la un anumit pas sa utilizat pentru
prima dat a o regul a din R; aceasta nu poate s a e decat prima deoarece p an a n
acest moment nu pot ap area simboluri Z.

In continuare trebuie aplicate succesiv
toate regulile din R, altfel nu putem elimina neterminalele Z. Pasii respectivi
(de la la ) vor avea forma (G

1
) de unde rezulta forma (G
1
). Prin urmare,
p L(G
1
), mai departe L(G

1
) L(G
1
) si L(G

1
) = L(G
1
). 2
Sa observ am c a orice gramatic a dependenta de context este n mod evident
monotona. Vom demonstra n cele ce urmeaza armat ia reciproc a.
Teorema 4.1 Orice gramatic a monoton a este echivalent a cu o gramatic a depen-
dent a de context.
Demonstrat ie. Orice gramatic a monoton a se poate pune sub forma G
n
=
(V
N
, V
T
, S, P u
i
v
i
, i = 1, . . . , n) unde regulile u
i
v
i
satisfac condit ia de
monotonie iar P sunt reguli de tipul 1 (P cont ine cel put in o regul a, anume cea
care are S n st anga). Este clar c a G
n
este o generalizare a lui G
1
; proced and ca
n lema, putem construi o gramatic a dependenta de context G

n
echivalenta cu
G
n
.2
Corolar 4.2 Familia limbajelor generate de gramatici monotone coincide cu fa-
milia /
2
.
Gramatici liniar marginite.
Denit ie 4.1 O gramatic a monoton a este de ordinul n dac a orice regul a u v
satisface condit ia [v[ n.
Lema 4.2 O gramatic a monoton a de ordinul n 3 este echivalent a cu o gra-
matica monoton a de ordinul n 1.
Demonstrat ie. Fie G = (V
N
, V
T
, S, P) o gramatic a monoton a de ordinul n
3. Putem presupune din nou c a G are forma din lema 1.2. Construim G

=
(V

N
, V

T
, S, P

) cu V
N
V

N
si n plus
1. Dac a u v P, [u[, [v[ 2 atunci u v P

;
2. Fie u v P, [v[ > 2; atunci v = Y
1
Y
2
Y
3
v

.
4.1. GRAMATICI MONOTONE 93
(a) dac a u = X
1
introducem n P

regulile
X
1
Z
1
Z
2
,
Z
1
Y
1
,
Z
2
Y
2
Y
3
v

.
(b) dac a u = X
1
X
2
u

introducem n P

regulile
X
1
X
2
Z
1
Z
2
,
Z
1
Y
1
,
Z
2
u

Y
2
Y
3
v

In ambele cazuri Z
1
, Z
2
V

N
.
Este clar c a G

este monotona, are ordinul n 1 si L(G

) = L(G).2
Observat ie. Proced and n mod analog putem reduce ordinul unei gramatici
monotone pan a la valoarea 2. Prin urmare, orice gramatic a monoton a este echiva-
lenta cu o gramatic a monoton a de ordinul 2.
Forma normala Kuroda.
Denit ie 4.2 O gramatic a se numeste liniar m arginit a (sau n forma normal a
Kuroda) dac a are reguli de generare de forma
1. S SA,
2. B C[i,
3. DE FH,
unde, ca de obicei, S este simbolul de start, A, B, C, D, E, F, H V
N
si i V
T
cu condit ia C, F, H ,= S.
Teorema 4.3 Orice gramatic a monoton a este echivalenta cu o gramatic a liniar
marginit a.
Demonstrat ie. Fie G o gramatica monoton a pe care o presupunem de ordinul 2.
Prin urmare regulile din G au formele:
1. B C[i,
2. DE FH,
3. X Y Z.
94 CAPITOLUL 4. LIMBAJE DEPENDENTE DE CONTEXT
Regulile (1) si (2) satisfac condit iile de la gramaticile liniar m arginite, iar cele de
forma (3) presupunem c a nu satisfac aceste condit ii, deci ca X ,= S sau Y ,= S.

In
general, putem avea mai multe astfel de reguli; pentru simplicare presupunem
ca exist a dou a reguli de forma (3):
(3

); X
1
Y
1
Z
1
, X
2
Y
2
Z
2
.
Construim o gramatica liniar m arginit a G

= (V
N
S

,

X
1
,

X
2
, V
T
, S

, P

), unde
P

cont ine toate regulile care convin (de formele (1) si (2)) precum si
S

S,
S


X
1
[S


X
2
,
X
1

X
1
Y
1
Z
1
, X
2

X
2
Y
2
Z
2
.
De asemenea vom include n P

urmatoarel reguli de comutare (relativ la sim-


bolurile nou introduse

X
1
,

X
2
):
A

X
1


X
1
A,
A

X
2


X
2
A,
, A V
N
.
Se vede ca G

este o gramatica liniar m arginit a. S a ar at am c a L(G) = L(G

).
Fie p L(G), deci S

G
p. Presupunem ca n aceast a derivare exist a o
singur a secvent a u

v n care se aplica reguli de forma (3

), adic a
G : S

u

v

p.
Presupunem ca secvent a u

v are forma
u = u
1
X
1
u
2
X
2
u
3
X
2
u
4

u
1
Y
1
Z
1
u
2
Y
2
Z
2
u
2
Y
2
Z
3
u
4
= v,
unde u
1
, u
2
, u
3
, u
4
V

N
.

In G

putem scrie
S


X
2
S


X
2

X
2
S


X
1

X
2

X
2
S

X
1

X
2

X
2

u

X
1

X
2

X
2
= u
1
X
1
u
2
X
2
u
3
X
2
u
4

X
1

X
2

X
2

u
1
X
1

X
1
u
2
X
2

X
2
u
3
X
2

X
2
u
4

u
1
Y
1
Z
1
u
2
Y
2
Z
2
u
3
Y
2
Z
2
u
4
= v

p
Prin urmare, S

p si p L(G

).
Invers, e p L(G

), deci S

p. Dac a n derivarea S

p apar sim-
bolurile

X
1
,

X
2
ele nu pot ap area dac at n urma aplicarii regulilor S


X
1
si S


X
2
, deci la nceputul derivarii, apoi singura posibilitate de continuare
este S

S; de asemenea, aceste simboluri nu pot eliminate dec at cu regulile


X
1

X
1
Y
1
Z
1
si X
2

X
2
Y
2
Z
2
, etc. Astfel derivarea noastr a trebuie s a aib a
forma descris a mai sus, de unde rezult a S

G
p, p L(G).2
4.2. AUTOMATE LINIAR M

ARGINITE 95
S
A
B
S
S
S
A
A B
0
1
1 0
B
Figura 4.1: Hiperarbori asociat i unei derivari
Observat ie. T inand cont c a gramaticile dependente de context sunt echiva-
lente cu gramaticile monotone, rezult a c a orice gramatic a dependenta de context
este echivalent a cu o gramatic a liniar m arginit a, cu alte cuvinte admite forma
normal a.
Structura derivarilor ntr-o gramatica liniar marginita. Deoarece
C, F, H ,= S rezulta c a n orice derivare dintr-o gramatica liniar m argint a se
aplica mai nt ai un num ar oarecare (s a zicem m) de reguli de forma 1),apoi reguli
de forma 2) si 3). Este clar c a lungimea cuvantului este m+ 1.
Exemplu. Consider am gramatica
S SA[SB,
A B, AB BA,
S 0, A 0, B 1.
Putem scrie derivarea
SSASBASABASBAASBBA

0110.
Corespunzator acestei deriv ari putem gura hiperarborele din gura 4.1. S a
observ am c a p an a la linia punctat a s-au aplicat trei reguli de forma S SA,
obt inanduse cuvantul SABA apoi dou a reguli de forma (2),(3) si apoi reguli de
forma X i.
4.2 Automate liniar marginite
Un automat liniar m arginit (ALM) se compune dintro banda de intrare si un
dispozitiv de comanda care posed a un dispozitiv de scrierecitire pe banda de
96 CAPITOLUL 4. LIMBAJE DEPENDENTE DE CONTEXT
s
p q
# i
1 i
2
i
3 i
4
#
Figura 4.2: Reprezentarea schematic a a unui automat liniar m arginit
intrare. Banda de intrare cont ine simboluri ale unui alfabet de intrare, consti-
tuind un cuv ant de intrare. Alfabetul de intrare cont ine un simbol special numit
marcaj si notat #(diez) utilizat pentru delimitarea cuvintelor. Banda se
poate misca n ambele sensuri, sau s a r am an a pe loc; prin convent ie vom nota,
deplasarea spre st anga cu +1, deplasarea spre dreapta cu 1 si ram anerea pe loc
cu 0. Dispozitivul de comanda se a a ntotdeauna ntr-o anumit a stare intern a,
element al unei mult imi nite de st ari.
Schematic un ALM are forma din gura 4.2. Un ALM funct ioneaz a n pasi
discret i. Un pas de funct ionare comport a:
(a) Dispozitivul de comand a citeste simbolul din dreptul dispozitivului de
scrierecitire;
(b)

In funct ie de starea intern a si de simbolul citit, automatul trecentr-o noua


stare, scrie pe band a un nou simbol (n locul simbolului citit) si muta banda cu
o pozit ie (stanga, dreapta) sau o las a pe loc.
Observat ie. Oricare ar starea intern a a dispozitivului de comanda, citirea
marcajului provoac a scrierea din nou a marcajului; de asemenea scrierea marca-
jului are loc numai n aceast a situat ie (adic a dac a s-a citit marcaj). Prin urmare,
cele doua marcaje care delimiteaza un cuv ant nu se modic an urma funct ion arii.
Funct ionarea unui ALM nceteaza n momentul n care s-au citit toate sim-
bolurile cuvantului scris pe banda de intrare, mai exact n momentul n care s-a
citit al doilea marcaj. Starea dispozitivului de comanda n acest moment este
starea nala a automatului.
Matematic, un ALM este un sistem de forma ALM = (, I, f, s
0
,
f
) unde:
este mult imea de stari (nit a si nevida);
I este alfabetul de intrare;
f : I T( I +1, 0, 1) este funct ia de evolut ie;
4.2. AUTOMATE LINIAR M

ARGINITE 97
s
0
si constituie starea init ial a;

f
este mult imea de stari nale.
Observat ie. Avem
f(s, i) = (s

, #, k) i = #.
O stare sau o congurat ie instantanee a unui ALM este un triplet de forma
(s, p, q) unde p este partea din cuv antul de pe banda de intrare din st anga
dispozitivului de scrierecitire, q este partea din dreapta a acestui cuv ant, in-
clusiv simbolul din dreptul dispozitivului de scrierecitire, iar s starea interna.
Zicem ca o stare
1
= (p
1
, s
1
, q
1
) se transform a (sau evolueaz a) direct n starea

2
= (p
2
, s
2
, q
2
) (not am
1

2
) dac a
(1) q
1
= i
1
q

1
, f(s
1
, i
1
) = (s
2
, i
2
, +1), p
2
= p
1
i
2
, q
2
= q

1
;
(2) q
1
= i
1
q

1
, f(s
1
, i
1
) = (s
2
, i
2
, 0), p
2
= p
1
, q
2
= i
2
q

1
;
(3) q
1
= i
1
q

1
, p
1
= p

1
j, f(s
1
, i
1
) = (s
2
, i
2
, 1), p
2
= p

1
, q
2
= ji
2
q

1
.
Vom spune ca starea

evolueaz a (f ar a specicat ia direct) n starea

si vom
scrie

daca

sau dac a
1
, . . . ,
n
astfel ncat

=
1

2
. . .
n
=

.
Denit ie 4.3 Limbajul recunoscut de un ALM este
L(ALM) = p[p I

, (, s
0
, p)

(q, s, ), s
f
.
Limbajele recunoscute de ALM. Automatele liniar m arginite sunt mecanis-
me care recunosc limbajele dependente de context, deci reprezinta o modalitate
analitic a de denire a acestor limbaje.
Teorema 4.4 Un limbaj este dependent de context dac a si numai dac a este re-
cunoscut de un automat liniar marginit.
Demonstrat ie. Partea I: E /
1
E = L(ALM).
Fie G = (V
N
, V
T
, S, P) o gramatic a de tipul 1 presupus an forma normala, ast-
fel ncat E = L(G). Construim automatul liniar m arginit ALM = (, I, f, s
0
,
f
)
unde
= s
0
, s
1
, s
2
, s
3
, s
4
s
D
[D V
N
, DE FH P,
I = V
N
V
T
#, ,

f
= s
3
,
iar funct ia de evolut ie o denim punand n evident a patru categorii de relat ii:
Cat.I;
(1)f(s
0
, #) = (s
0
, #, 1),
(2)f(s
3
, #) = (s
3
, #, 1),
98 CAPITOLUL 4. LIMBAJE DEPENDENTE DE CONTEXT
B
y
D E
F H
Figura 4.3:
Cat.II;
(3)f(s
0
, #) = (s
4
, #, 1),
(4)f(s
4
, #) = (s
3
, #, 1),
_
pentru E;
Cat.III;
(5)f(s
0
, x) = (s
0
, x, 1), (s
0
, x, 1), x V
N
V
T
;
(6)f(s
0
, y) = (s
0
, B, 0), B y P, y V
N
V
T
,
(7)f(s
0
, F) = (s
D
, D, 1), DE FH P
(8)f(s
D
, H) = (s
0
, E, 0), DE FH P
Cat.IV ;
(9)f(s
3
, A) = (s
0
, S, 0), S SA P
(10)f(s
0
, S) = (s
1
, S, 1),
(11)f(s
1
, #) = (s
2
, #, 1),
(12)f(s
2
, S) = (s
3
, , 1),
(13)f(s
1
, ) = (s
2
, , 1)
Relat iile din categoria I servesc la pornirea si respectiv oprirea automat-
ului. Categoria II apar numai dac a gramatica cont ine regula S si servesc
la recunoasterea cuvantului vid . Regulile din categoria III se utilizeaza pen-
tru reducerea succesiv a a hiperarborelui de derivare si anume partea construit a
cu reguli de forma 2)si 3) (partea situat a sub linia punctat a de la exemplul din
gura 4.1).

In adev ar, cu ajutorul relat iei (5) putem plasa dispozitivul de co-
manda sub oricare din simbolurile cuvantului curent. Apoi, cu ajutorul relat iilor
(6) si respectiv (7),(8) putem reduce subhiperarbori de forma prezentat a n gura
4.3. corespunz atori regulilor de forma B y si DE FH. De exemplu, avem
urmatoarea funct ionare (vezi gura 4.4).

In acest fel ajungem la partea triunghiulara a hiperarborelui (situat a n ex-


emplu deasupra liniei punctate) care va avea pe frontier a un cuv ant de forma
#SXY . . . Z# cu X, Y, . . . , Z V
N
. Aceasta parte va redus a cu relat iile din
categoria IV. Astfel, dupa plasarea dispozitivului de citirescriere pe S, cu aju-
torul relat iei (10), dispozitivul se plaseaz a pe marcajul de nceput si trece n
starea s
1
, dupa care revine pe S n starea s
2
(relat ia 11).

In continuare au loc
secvent e de forma din gura 4.5.

In urma acestor secvent e pe banda se va scrie cuv antul # . . . # iar dispozi-


tivul se va plasa pe marcajul de sfarsit n starea s
3
.

In sfarsit, cu ajutorul relat iei
(2) funct ionarea automatului este oprit a.
4.2. AUTOMATE LINIAR M

ARGINITE 99
. . .
F H
. . .
s
0
. . .
D H
. . .
s
D
. . .
D E
. . .
s
0
Figura 4.4: Reducerea regulii DE FH.
#S
#S
#S
#b
#b
s
0
s
1
s
2
s
3
s
0
A B
A B
S
B
A
B
A B
. . .
. . .
. . .
. . .
. . .
s
0
s
1
s
2
s
3
s
0
A B
A B
S
B
A
B
A B
. . .
. . .
. . .
. . .
. . .
b
b
b
b
b
b
...
...
...
...
...
b
S
S
S
Figura 4.5: Reducerea regulilor S SA.
100 CAPITOLUL 4. LIMBAJE DEPENDENTE DE CONTEXT
Este clar c a dac a p E atunci automatul denit mai sus va avea o evolut ie
de acest tip si reciproc, deci E = L(ALM).2
Exemplu: Evolut ia ALM corespunzator gramaticii de la exemplul din para-
graful precedent pentru cuvantul #0110# este:
(, s
0
, #0110#)(#, s
0
, 0110#)(#0, s
0
, 110#)(#01, s
0
, 10#)
(#01, s
0
, B0#). . . (#S, s
0
, BAA#)(#SA, s
D
, AA#)
(#SA, s
0
, BA#). . . (#, s
0
, SABA#)(, s
1
, #SBAA#)
(#, s
2
, SABA#)(#, s
3
, ABA#)(#, s
0
, SBA#)(#, s
1
, SBA#)
(#, s
2
, SBA#)(#, s
3
, BA#)(#, s
0
, SA#). . . (#, s
3
, #)
(##, s
3
, )
Capitolul 5
Limbaje de tipul zero
5.1 Forma normala
Limbajele de tipul 0 sunt generate de gramatici Chomsky f ar a restrict ii asupra
regulilor de derivare. Se poate arata c a orice gramatic a de tipul zero accept a
urmatoarea form a normal a
S SA,
B C[i[,
DE FH,
unde A, C, F, H ,= S. Se observ a c a singura deosebire fat a de gramaticile depen-
dente de context este aceea ca putem avea si reguli.
Demonstrat ia existent ei formei normale urmeaza n linii mari aceiasi cale cu
cea de la limbaje dependente de context.

In prealabil gramatica se completeaza
cu neterminale noi astfel ncat orice regul a care nu este de stergere s a respecte
condit ia de monotonie. Acest lucru se poate realiza dupa cum urmeaza. Fie
X
1
. . . X
n
Y
1
. . . Y
m
, n > m,
o regul a care nu respect a condit ia de monotonie. Vom pune
X
1
. . . X
n
Y
1
. . . Y
m
Z
m+1
. . . Z
n
, Z
m+1
, . . . , Z
n
.
Este clar c a orice derivare direct a uv n gramatica init ial a se poate obt ine
si n gramatica modicat a si reciproc (neterminalele Z nu pot ap area n st anga
altor relat ii).

In acest fel, gramatica se va transforma astfel ncat s a cont ina dou a
categorii de reguli: reguli care respect a condit ia de monotonie si reguli.

In continuare reducem ordinul regulilor monotone, urmand aceiasi procedura


ca la limbaje dependente de context, p an a la ordinul 2 inclusiv (regulile nu in-
tervin cu nimic n acest proces).

In nal obt inem reguli de urm atoarele categorii:
(1) B C[i[ ,
(2) DE FH,
101
102 CAPITOLUL 5. LIMBAJE DE TIPUL ZERO
(3) X Y Z.
Regulile de forma (3) cu X ,= S sau Y ,= S le elimin am cu procedura cunos-
cut a plus un simbol de start nou, cu reguli stang recursive cunoscute pentru
neterminalele nou introduse.
Relativ la puterea generativa a gramaticilor de tipul zero se poate ar ata c a
/
1
/
0
(strict). Demonstrat ia se face pe o cale indirecta (nu s-a g asit un exemplu
de limbaj de tipul zero care sa nu poat a generat de o gramatic a dependenta de
context).
Dup a cum am v azut n primul capitol limbajele de tipul zero sunt nchise fat a
de operat iile regulate. Se poate ar ata c a familia /
0
este nchisa la intersect ie.
Ment ion am si urm atoarea teorem a a spat iului de lucru. Fie G o gramatica
de tipul zero. Pentru o derivare
D : S = u
0
u
1
. . . u
n
= p V

T
denim
WS
D
(p) = max[u
i
[
i = 1, . . . , n
si
WS(p) = minWS
D
(p).
D
Observat ie. WS este prescurtare de la working space.
Spunem ca o gramatic a de tipul zero G are spat iul de lucru marginit dac a
exist a k N astfel ncat pentru p L(G) sa avem WS(p) k[p[. S a observ am
ca orice gramatic a care nu are reguli de stergere (except ie S si atunci S nu
apare n dreapta) satisface aceast a condit ie cu k = 1.
Teorema 5.1 (teorema spat iului de lucru) daca o gramatic a G are spat iul de
lucru m arginit, atunci L(G) /
1
.
5.2 Masina Turing
Conceptul de masina Turing. Masina Turing este un mecanism de recunoastere
a limbajelor de tipul zero.

In felul acesta, familiilor de limbaje din clasicarea
Chomsky le corespund automate specice de recunoastere.
Familia /
3
- automate nite,
Familia /
2
- automate pushdown,
Familia /
1
- automate liniar m arginite,
Familia /
0
- masina Turing.
O masin a Turing (prescurtat MT) se compune dintrun dispozitiv de comanda
care posed a un dispozitiv de scrierecitire si o banda de intrare. Banda de intrare
se considera m arginit a la st anga si nemarginit a la dreapta; ea cont ine simboluri
5.2. MASINA TURING 103
s
i
1
i
2
i
3 i
4
i
5
p = i
1
i
2
i
3
i
4
i
5
, n = 4
Figura 5.1: Reprezentarea schematic a a masinii Turing
ale unui alfabet de intrare, ncepand din prima pozit ie. Alfabetul are un sim-
bol special numit blanc si notat (sau spat iu), care se considera nregistrat n
toat a partea neocupat a a benzii. Indicele simbolului din dreptul dispozitivului de
scrierecitire l not am cu n si el va constitui un element al starii masinii Turing.
Dispozitivul de comanda se a a ntr-o anumit a stare intern a, element al unei
mult imi nite de st ari.
Schema unei masini Turing este dat an gura 5.1. O masin a Turing funct ioneaz a
n pasi discret i. Un pas de funct ionare const a din:
Dispozitivul de comanda citeste simbolul aat n dreptul dispozitivului de
scrierecitire; n funct ie de simbolul citit, masina Turing trece ntr-o noua stare
intern a, scrie pe band a un nou simbol (ntotdeauna diferit de blanc) n locul
simbolului citit si muta banda cu o pozit ie (spre stanga sau dreapta) sau o las a
pe loc. Convent ional, vom nota cu +1 o miscare spre st anga, cu 1 spre dreapta
si cu 0 pe loc.
Din punct de vedere matematic, o masin a Turing este un sistem
MT = (, I, f, s
0
,
f
)
unde:
este mult imea de stari;
I este alfabetul de intrare;
f : ( I)

(I ) 1, 0, 1, ( I)

I,
este funct ia de evolut ie;
s
0
este simbolul de start;

f
este mult imea de stari nale.
Observat ie. Funct ia f nu este denit a pe ntregul produs I; dac a masina
ajungentr-o stare s iar n dreptul dispozitivului de scrierecitire se a a simbolul i
si (s, i) , (I)

spunem ca masina se blocheaza. Exist a si alte cazuri de blocare,


de exemplu situat ian care dispozitivul de scrierecitire se aan dreptul primului
simbol, iar pasul de funct ionare prevede o miscare a benzii spre dreapta.
104 CAPITOLUL 5. LIMBAJE DE TIPUL ZERO
O stare (sau congurat ie) a unei masini Turing este un triplet de forma =
(s, p, n) unde s este starea interna, p este cuv antul scris pe band a iar n este
indicele simbolului din dreptul dispozitivului de scrierecitire.
Vom spune ca starea
1
= (s
1
, p
1
, n
1
) evolueaz a direct n starea
2
= (s
2
, p
1
, n
2
)
si vom scrie
1

2
daca se efectueaza un pas de evolut ie.

In termenii funct iei
de evolut ie, avem
(1)f(s
1
, i
n
1
) = (s
2
, i, +1), p
2
= i
1
. . . i
n
1
1
ii
n
1
+1
. . . i
m
, n
2
= n
1
+ 1;
(2)f(s
1
, i
n
1
) = (s
2
, i, 1), p
2
= i
1
. . . i
n
1
1
ii
n
1
+1
. . . i
m
, n
2
= n
1
1;
(3)f(s
1
, i
n
1
) = (s
2
, i, 0), p
2
= i
1
. . . i
n
1
1
ii
n
1
+1
. . . i
m
, n
2
= n
1
;
(4)f(s
1
, ) = (s
2
, i, +1), p
2
= p
1
i, n
2
= n
1
+ 1;
(5)f(s
1
, ) = (s
2
, i, 1), p
2
= p
1
i, n
2
= n
1
1;
(6)f(s
1
, ) = (s
2
, i, 0), p
2
= p
1
i, n
2
= n
1
;
Vom spune ca

evolueaz a (f ar a specicat ia direct) n

si vom nota

daca

sau dac a exist a


1
, . . . ,
n
astfel ncat

=
1

2
. . .
n
=

.
Limbajul recunoscut de o masin a Turing este prin denit ie
L(MT) = p[p I

, (s
0
, p, 1)

(s, q, ), s
f
.
Observat ie. Este posibil ca masina sa ajung a ntr-o stare nala nainte de
citirea integral a a lui p; analiza st arii nale trebuie f acut a numai dup a parcurgerea
cuvantului.
Exemplu. Consider am masina turing MT = (, I, f, s
0
,
f
) unde = s
0
, s
1
, s
2
,
I = 0, 1,
f
= s
1
iar funct ia de evolut ie este data de
f s
0
s
1
s
2
(s
2
, 1, 1) (s
0
, 0, 1)
0 (s
1
, 0, 1)
1 (s
0
, 1, 1) (s
0
, 0, 1)
Evolut ia masinii pentru p = 001 este
(s
0
, 011, 1)(s
1
, 011, 2)(s
0
, 001, 3)(s
0
, 001, 4)
(s
2
, 0011, 5)(s
0
, 0011, 4)(s
0
, 00110, 5)(s
1
, 00110, 6)
Se poate observa ca dup a citirea ntregului cuv ant masina poate sa efectueze
un num ar de pasi suplimentari pan a la ajungerea ntr-o stare nala, deci este
posibil ca [p[ < [q[.
Situat ii n care o masin a Turing se blocheaz a (n aceste situat ii cuvantul scris
pe banda nu este recunoscut):
1. MT ajunge ntr-o stare s, n dreptul dispozitivului de citirescriere se a a
simbolul i si (s, i) , ( I)

;
5.2. MASINA TURING 105
2. MT esten starea s, a citit simbolul din prima pozit ie i si f(s, i) = (s

, i

, 1);
3. MT efectueaza un ciclu innit n interiorul cuvantului.
Denit ie 5.1 Vom spune c a o masin a Turing este nestat ionar a daca
f : ( I)

(I ) 1, +1.
Prin urmare, o masin a Turing nestat ionar a nu las a n nici o situat ie banda pe
loc.
Lema 5.1 Orice masin a Turing este echivalenta cu o masin a Turing nestat io-
nara.
Demonstrat ie. Pornind de la o MT dat a construim o MT

nestat ionar a astfel:


Dac a f(s, i) = (s

, i

, 1) vom pune f

(s, i) = f(s, i);


Dac a f(s, i) = (s

, i

, 0) vom pune f

(s, i) = (s

, i

, 1) si f

(s

, j) = (s

, j, +1), j
I, unde s

este o stare nou introdusa.


Astfel, n cazul unei r am aneri pe loc a lui MT, noua masin a va face un pas
spre stanga si unul spre dreapta, f ar a s a modice nici starea si nici cont inutul
benzii. Evident, cele dou a masini sunt echivalente.
106 CAPITOLUL 5. LIMBAJE DE TIPUL ZERO
Limbajele recunoscute de masini Turing.
Teorema 5.2 Un limbaj este recunoscut de o masin a Turing dac a si numai dac a
este de tipul zero.
Demonstrat ie. Partea I. E = L(MT) E /
0
.
Fie MT = (, I, f, s
0
,
f
) o masin a Turing astfel ncat E = L(MT). Putem
presupune ca MT este nestat ionar a. Fie I

= (I ) .
Construim o gramatica de tipul zero astfel: G = (V
N
, V
T
, S, P) unde
V
N
= (i, j)[i I

, j I S, X
1
, X
2
; V
T
= I .
Denit ia lui P:
S s
0
X
1
, X
1
(i, i)X
1
, i I ,
X
1
X
2
, X
2
(, )X
2
, X
2
,
daca f(s, i) = (s

, i

, 1) atunci s(i
1
, i) (i
1
, i

)s

, i
1
I

,
daca f(s, i) = (s

, i

, 1) atunci (i
1
, i
2
)s(i
3
, i) s

(i
1
, i
2
)(i
3
, i

), i
1
, i
3
I

, i
2

I,
daca s
f
, atunci s(i
1
, i
2
) si
1
s si (i
1
, i
2
)s si
1
s.
Fie p L(MT), p = i
1
. . . i
n
. Presupunem ca MT utilizeaza n recunoastere
m pozit ii de pe banda situate la dreapta cuv antului p.

In G avem
Ss
0
X
1

s
0
(i
1
, i
1
) . . . (i
n
, i
n
)X
2

s
0
(i
1
, i
1
) . . . (i
n
, i
n
)(, )
m
.
Cuvantul p ind recunoscut de MT avem
(1) (s
0
, i
1
. . . i
n
, 1)

(s
f
, i

1
. . . i

h
, k), h n.
Vom ar ata c a (1) implic a existent a unei derivari de forma
2)s
0
(i
1
, i
1
) . . . (i
n
, i
n
)(, )
m

(i
1
, i

1
) . . . (i
k1
, i

k1
)s
f
(i
k
, i

k
) . . . (i
n+m
, i

n+m
),
unde
i
1
, . . . , i
n
I , i
n+1
, . . . , i
n+m
= ,
i

1
, . . . , i

h
I , i

h+1
, . . . , i

n+m
= .
Demonstrat ie prin induct ie asupra lungimii l a evolut iei.
Pentru l = 0 avem
(s
0
, i
1
. . . i
n
, 1)

(s
0
, i
1
. . . i
n
, 1), k = 1, h = n, i

j
= i
j
.
Partea dreapt a a lui 2) va avea forma s
0
(i
1
, i
1
) . . . (i
n
, i
n
)(, )
m
si deci 2) este
adev arat a.
Presupunem ca implicat ia este adev arat a pentru l oarecare si consideram o
evolut ie de lungime l + 1. Punem n evident a ultima evolut ie directa
(s
0
, i
1
. . . i
n
, 1)

(s, i

1
. . . i

g
, j)(s
f
, i

1
. . . i

h
, k).
5.2. MASINA TURING 107
i

1
i

2
i

3
. . . i

g
h = g
i

1
i

2
i

3
. . . i

g
h = g + 1
s s
Figura 5.2: Congurat ii posibile ale masinii Turing

In general h = g sau h = g + 1 n conformitate cu urmatoarele dou a cazuri


(gura 5.2).

Intotdeauna k = j 1. apoi i

t
= i

t
, t = 1, . . . , g, t ,= j, adic a
i

1
, i

2
, . . . , i

j1
, i

j
, i

j+1
, . . . , i

g
;
i

1
, i

2
, . . . , i

j1
, i

j
, i

j+1
, . . . , i

g
.

In urma ultimei evolut ii directe vor diferi numai simbolurile i

j
, i

j
.
Din ipoteza inductiva rezult a
s
0
(i
1
, i
1
) . . . (i
n
, i
n
)(, )
m

(i
1
, i

1
) . . . (i
j1
, i

j1
)s(i
j
, i

j
) . . . (i
n+m
, i

n+m
).

In conformitate cu denit ia evolut iei directe avem


f(s, i

j
) = (s
f
, i

j
, 1), k = j + 1, s(i
j
, i

j
) (i
j
, i

j
)s
f
;
f(s, i

j
) = (s
f
, i

j
, 1), k = j 1, (i
j1
, i

j1
)s(i
j
, i

j
) s
f
(i
j
, i

j1
)(i
j
, i

j
).

In ambele cazuri
s
0
(i
1
, i
1
) . . . (i
n
, i
n
)(, )
m

(i
1
, i

1
) . . . (i
k1
, i

k1
)s
f
(i
k
, i

k
) . . . (i
n+m
, i

n+m
).
Acum, deoarece s
f

f
, putem scrie
S

s
0
(i
1
, i
1
) . . . (i
n
, i
n
)(, )
m

(i
1
, i

1
) . . . (i
k1
, i

k1
)s
f
(i
k
, i

k
) . . . (i
m+n
, i

m+n
)
(i
1
, i

1
) . . . (i
k1
, i

k1
)s
f
i
k
s
f
(i
k+1
, i

k+1
) . . . (i
m+n
, i

m+n
)
(i
1
, i

1
) . . . (i
k2
, i

k2
)s
f
i
k1
s
f
i
k
s
f
i
k+1
s
f
(i
k+2
, i

k+2
) . . . (i
m+n
, i

m+n
)

s
f
i
1
s
f
i
2
s
f
. . . s
f
i
n
s
f

i
1
. . . i
n
= p.
Prin urmare p L(G) si L(MT) L(G). Analog se arat a si incluziunea inversa
si deci L(MT) = L(G).2
108 CAPITOLUL 5. LIMBAJE DE TIPUL ZERO
Cuprins
Bibliograe
1. Octavian C. Dogaru, Bazele informaticii. Limbaje formale, Tipograa Uni-
versit at ii din Timisoara, 1989.
2. Gheorghe Grigoras, Limbaje formale si tehnici de compilare, Tipograa
Universit at ii Alexandru Ioan Cuza, Iasi, 1984.
3. J. E. Hopcroft si J. D. Ullman, Introduction to Automata Theory, Languages
and Computation, Reading Mass., 1979.
4. Solomon Marcus, Gramatici si automate nite, Editura Academiei, Bu-
curesti, 1964.
5. Stefan Maruster, Curs de Limbaje formale si tehnici de compilare, Ti-
pograa Universit at ii din Timisoara, 1980.
6. Gheorghe Orman, Limbaje formale, Editura tehnic a, Bucuresti, 1982.
7. Gheorghe Paun, Probleme actuale n teoria Limbajelor formale, Editura
Stiint ica si Enciclopedica, Bucuresti, 1984.
8. Teodor Rus, Mecanisme formale pentru specicarea limbajelor, Editura Academiei,
Bucuresti, 1983.
9. Arto Salomma, Formal languages, Academic Press, New York, 1973.
10. Dan Simovici, Limbaje formale si tehnici de compilare, Editura didactic a si
pedagogic a, Bucuresti, 1978.
11. Luca Dan Serbanat i, Limbaje de programare si compilatoare, Editura Academiei,
Bucuresti, 1987.
109