Sunteți pe pagina 1din 55

LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

1. Definitii
gramatici i limbaje independente de context
arbori de derivare
proiectarea g.i.c.
2. Ambiguitate
3. Forme normale
definitii
exemple
aducerea la forma normala Chomsky
4. Lema de pompare
5. Operatii de inchidere
L2 este inchisa la reuniune, concatenare, operatia *,
omomorfism
L2 nu este inchisa la intersectie si complementara
6. Automatul pushdown;
echivalenta cu gramatica independenta de context. 1
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

limbaje suficient de simple pe care


un AFD / o expresie regulata / o gramatica regulata
nu le pot descrie (recunoaste):
ex.: limbajul {0n1n | n 0}
motivul: memoria finita a unui AFD nu poate memora
numere n foarte mari;
mecanisme mai puternice:
gramaticile independente de context (GIC)
automatele pushdown (APD).

2
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
Avantajul GIC: pot descrie structuri recursive =>
variate domenii de aplicabilitate a GIC:
1. studiul limbilor naturale:
relatiile dintre termeni precum: substantiv, verb, adjectiv, prepozitie,
relatiile dintre expresiile substantivale, verbale etc.
sunt in mod natural de tip recursiv: o expresie verbala poate contine o
expresie substantivala (de ex.) care, la randul ei, poate contine o expresie
verbala sau adjectivala etc.
2. specificarea si compilarea limbajelor de programare,
3. sintaxa unui limbaj de programare,
4. parsere:
sintaxa unui lb.de programare poate fi invatata si pornind de la gramatica sa,
proiectarea compilatoarelor si interpretoarelor de limbaje de programare
incepe deseori cu construirea unei GIC pt acel limbaj,
o posibila reprezentare a semnificatiei unui program extrasa de parser chiar
inainte de compilarea codului /executarea instructiunii interpretate,3
se poate realiza cu ajutorul arborelui de derivare al codului, obtinut cu
GIC a limbajului de programare respectiv,
exista numeroase metodologii care permit construirea uneori automat a
unui parser direct din GIC a limbajului de programare respectiv. 3
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
Reamintim:
Definitia 1
Gramatica = (V, , S, P) unde:
V = multime finita, nevida, ale carei elemente se numesc variabile sau
simboluri neterminale (alta notatie VN);
= multime finita, nevida, numita alfabet de intrare, ale carei elemente se
numesc [simboluri] terminale (alta notatie VT); V=;
SV se numeste simbolul de start (axioma) gramaticii;
P (V )* V (V )* x (V )* = multime finita, nevida (productii) =
{|(V )*V(V )*; (V )*}
OBS. : ( (,)P : se inlocuieste cu );
Definitii 2
Se numeste substitutie = derivare directa = aplicarea unei productii i.e.:
daca P i , (V)*, atunci
Se numeste derivare = aplicarea consecutiva a mai multor productii =
daca 1 2, 23, , n-1n atunci 1*n .
4
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Reamintim:
Definitia 3
Gramatica independenta de context = GIC = (V,, S, P) unde:
pP: p este de forma A unde: AV , (V)*
Definitia 4
Limbaj independent de context = LIC =
L(G)={ w * | S G* w si G=GIC.}
Notatii 5
Multimea gramaticilor independente de context: G2= { G | G = GIC}
Multimea limbajelor independente de context: L2= { L | L = LIC}
Exemplu 6
G=({S}, {a,b}, S, {SSS, SaSb, S})G2 =>
L={, ab, anbn, anbabn, an(ba)kbn, }L2 .
5
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
Definitie 7
Arbori de derivare = arbori de parsare =
= o metoda de reprezentare vizuala a derivarilor dintr-o gramatica
independenta de context G= (V,,S,P)
= un arbore in care
1. fiecare nod este etichetat cu un simbol din V;
2. radacina este etichetata cu S;
3. daca un nod n, etichetat cu A are cel putin un nod descendent, atunci
A trebuie sa fie in V;
4. daca nodul n i descendentii sai directi n1, n2, , nk sunt etichetati
respectiv cu A, A1, A2, , Ak V atunci P trebuie sa contina
productia
A A1A2Ak
Observatie 8
Etichetele nodurilor terminale formeaza un cuvant din L(G), numit i
6
rezultat al derivarii .
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Teorema 9

Fie G G2 i ; atunci:
S G* daca i numai daca exista o derivare / un arbore de derivare
in G care conduce la .

7
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Exemple 10
1. Fie G1 = ({S,C}, {0,1,#}, S,{S0S1, SC, C#})
Reprezentarea derivarilor: S

linear:
S
S0S100S11000S11103S1303C13=> 03#13
sintetic:
S
S G* 03#13
arbore de derivare: S

0 0 0 # 1 1 1
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

2. Fie G2 = ({<EXPR>,<TERM>, <FACT>} , {a, +, x, (,)}, <EXPR> ,


{<EXPR><EXPR>+<TERM>, <EXPR> <TERM>,
<TERM><TERM>x<FACT>, <TERM><FACT>,
< FACT>(< EXPR>), <FACT>a})
=> arbore de derivare pentru cuvintul a+axa .

<EXPR>

<EXPR> + <TERM>

<TERM> <TERM> X <FACT>

<FACT> <FACT> a

a a
9
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
=> arbore de derivare pentru cuvintul (a+a)xa: <EXPR>
Obs.:
G2 descrie acel fragment din limbajele de <TERM>
programare care trateaza expresiile aritmetice;
arborele de parsare grupeaza operatorii in X
<TERM> <FACT>
conformitate cu regulile de precedenta
(respectand inclusiv rolul parantezelor).
<FACT> a

( <EXPR> )

<EXPR> + <EXPR>

<TERM> <TERM>

<FACT> <FACT>

a a 10
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
0 1
q1 0
q2 q3
Observatie: Proiectarea G.I.C. pentru L, dat 1 0,1
Fie L = L(G); GG2; Distingem cel putin 4 situatii:
1. L L3; =>
(i) construim AFD A=(Q, , , s, F): L=L(A);
(ii) convertim A in G=(V, , S, P)G2 astfel:
V Q
S s
(qi,a)=qk BiaBk
qiF => se adauga Bi P 0 1
(iii) verificam direct ca L(A)=L(G) q1 q1 q2
ex.: L= {w{0,1}* | w=1(00)n, {0,1}*} q2 q3 q2
(i) A=({q1,q2,q3}, {0,1}, , q1, {q2})
(ii) G=({S,A,B}, {0,1}, S, q3 q2 q2
{S 0S, S 1A, A 0B, A 1A , B 0B, B 1B, A })
11
(iii) 1, 01, 11, 0101, 010100, 01001,
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Observatie: Proiectarea G.I.C. pentru L, dat (cont.)


2. descompunem L in limbaje mai simple: L1, L2, ;
construim gramaticile G1, G2, : Li=L(Gi);
le asamblam adaugam un nou simbol de start S i productiile SSi
ex.: L=L1L2 (ex.: L={anbn|nN} {bnan|nN})
=> L1={anbn|nN} i L2= {bnan|nN}
=> construim Gi=(Vi,,Si,Pi) i=1,2 unde
Vi={Si} , ={a,b} i P1={S1aS1b | }, P2={S2bS2a | }
adaugam S i productiile SS1 i SS2
=> G=({S,S1,S2}, {a,b}, S, {S S1 | S2, S1aS1b | , S2bS2a | }) .

12
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Observatie: Proiectarea G.I.C. pentru L, dat (cont.)


3. descoperim simetriile / dependentele dintre subcuvintele care formeaza
cuvintele din L =>
le transpunem in simetrii / dependente intre [ne]terminalele care apar in
m.dr. al productiilor din P
ex.: L={anb3n|nN}
=> construim G=(V,,S,P) unde
V={S, A} , ={a,b} i P={SaSbbb | }
Exercitiu
Fie L = limbajul parantezelor corect imbricate; sa se defineasca G a.i.
L=L(G), aplicand (2) i apoi (3).

13
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Observatie: Proiectarea G.I.C. pentru L, dat (cont.)


4. descoperim structurile recursive care apar in cuvintele din L =>
(i) fie rec acea structura recursiva i R variabila care o genereaza
prin productia Rrec ,
(ii) plasam variabila R in m.dr. al productiilor care genereaza rec in
pozitia in care apare repetitia ;
ex.: limbajul expresiilor aritmetice: intr-o expresie aritmetica, orice
aparitie a unei constante poate fi inlocuita cu o noua expresie
a se vedea ultimele 2 productii din
G2 = ({<EXPR>, <TERM>, <FACT>}, {a, +, x, (,)}, <EXPR>,
{<EXPR><EXPR>+<TERM>, <EXPR><TERM>,
<TERM><TERM>x<FACT>, <TERM><FACT>,
< FACT>(< EXPR>), <FACT>a}) .
14
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

1. Definitii
gramatici i limbaje independente de context
arbori de derivare
proiectarea g.i.c.
2. Ambiguitate
3. Forme normale
definitii
exemple
aducerea la forma normala Chomsky
4. Lema de pompare
5. Operatii de inchidere
L2 este inchisa la reuniune, concatenare, operatia *,
omomorfism
L2 nu este inchisa la intersectie si complementara
6. Automatul pushdown;
echivalenta cu gramatica independenta de context. 15
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
Observatie
G G2 i wL(G) pe care G le poate genera in mai multe moduri =>
cuvantul w va admite mai multi arbori de derivare (parsare) =>
cuvantul w va avea mai multe intelesuri:
=> in limbile naturale: avantaj,
in limbajele de programare: mare dezavantaj;
Exemplu
Fie G3 = ({<EXPR>}, {a, +, x, (,)}, <EXPR>, {<EXPR>(<EXPR>), <EXPR>a,
<EXPR><EXPR>+<EXPR>, <EXPR><EXPR>X<EXPR>})
G3 genereaza cuvintul a+axa in mod ambiguu:
<EXPR> <EXPR>

<EXPR> x <EXPR> <EXPR> + <EXPR>

<EXPR> + a a <EXPR> X <EXPR>


<EXPR>

a a a a
motivul: G2 modeleaza i regulile de precedenta a operatorilor, G3: NU!
=> in G2 orice cuvant are 1! arbore de parsare, in G3: NU! 16
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
Observatie
Notiunea de ambiguitate este legata de notiunea de arbore de derivare :
daca wL(G), GG2, admit mai multe derivari dar 1! arbore de parsare =>
G NU este ambigua
motivul: 2 derivari ale w in G pot diferi prin ordinea in care sunt alese
neterminalele care se substituie, ceea ce nu altereaza structura derivarii
=> s-a introdus notiunea de derivare extrem stanga pt a evidentia structura
derivarii (independenta de alegerea netereminalelor);
Definitie
Fie S G* w o derivare a cuvantului wL(G), GG2 ;
aceasta derivare se numeste derivare extrem stanga daca la fiecare pas
de derivare neterminalul substituit este cel mai din stanga neterminal
Ex.: G4 = ({S,A}, {a,b}, S, {SaAS, Sa, ASS, ASbA, Aba})
SaAS aSbAS aabAS aabbaS aabbaa
Cex.: . 17
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Definitie
Fie S G* w o derivare a cuvantului wL(G), GG2 ;
Spunem ca w este ambiguu derivat in G ddaca w admite cel putin
2 derivari extrem stangi diferite.
Gramatica G se numeste ambigua ddaca genereaza ambiguu cel
putin un cuvant din L(G)
Observatie
GG2 ambigua a.i. GG2 , neambigua, L(G) = L(G).
Definitie
LL2 se numeste inerent ambiguu ddaca
GG2 , L=L(G): G=ambigua.
Exemplu
L = {akbicn | i=k sau i=n} este inerent ambiguu.

18
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

1. Definitii
gramatici i limbaje independente de context
arbori de derivare
proiectarea g.i.c.
2. Ambiguitate
3. Forme normale
definitii
exemple
aducerea la forma normala Chomsky
4. Lema de pompare
5. Operatii de inchidere
L2 este inchisa la reuniune, concatenare, operatia *,
omomorfism
L2 nu este inchisa la intersectie si complementara
6. Automatul pushdown;
echivalenta cu gramatica independenta de context. 19
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Definitia 11
GG2 se afla in forma normala GREIBACH (FNG)
p P, p : A aB,
unde: A V,
a ,
B (V )*;
Teorema 12
L=L(G)L2., L => G in FNG a.i. L=L(G).

20
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Definitia 13
GG2 se afla in forma normala CHOMSKY (FNC)
p P, p : A BC sau A a,
unde: A,B,C V, B S C,
a ,
in plus, S P;
Lema 14 (demonstratia: EXERCITIU)
Fie G G2 aflata in FNC si L = L(G)
w L, |w|=n: S G*w : |S G*w| = 2n-1, n N.

21
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Teorema 2
Fie L L2 i G G2 a.i. L=L(G) => G in FNC a.i. L(G)=L
Ideea demonstratiei
Convertim pe rand pP (in ordinea crescatoare a nr de neterminale
din m.dr.) aplicand un fel de tranzitivitate a productiilor;
Demonstratie
Fie G = (V, , S, P)G2, L = L(G);
construim G= (V,, S, P) a.i. L(G) = L(G) i G in FNC;
Evident: =, dar V, S, P se vor modifica astfel:
(1) adaugam un nou simbol de start S si
o noua productie: S S
=> S nu va aparea in m.dr. vreunei p P .
22
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

(2) eliminam -productiile A , A S;


apoi, pt fiecare aparitie a simbolul A in m.dr. al unei productii
adaugam o productie similara, in care simbolul A respectiv a
disparut

exemplul 1:
pt. productia R uAvAw, u,v,w (V )*, adaugam:
R uvAw,
R uAvw,
R uvw,
exemplul 2:
pt. productia R uAv, u,v (V )*, adaugam R uv
exemplul 3:
pt productia R A adaugam
R (doar daca R NU a fost deja eliminata);
acest pas se repeta pana cand toate -productiile care nu il implica pe S
au fost eliminate. 23
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

(3) eliminam productiile unitare A B,


apoi, pt fiecare productie B u, u(V )*,
adaugam productia A u,
doar daca A u NU este o productie unitara care a fost deja eliminata;
acest pas se repeta pana cand toate productiile unitare au fost eliminate;
(4) pentru productiile duble de tipul:
A u1u2, unde fie u1 fie u2
se inlocuieste terminalul cu neterminalul U ,
se adauga neterminalul U la V i
se adauga productia U u1, u1 (respectiv U u2, u2) la P;
acest pas se repeta pana cand toate productiile duble au fost prelucrate;
exemplul 4:
productia R Ab este inlocuita cu R AU i se adauga U b .
24
.
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

(5) restul productiilor, adica cele de tipul:


A u1u2u3un, n 3 si 1in: ui V sau ui ,
se inlocuiesc, fiecare, cu setul de productii
A u1A1,
A1 u2A2,
A2 u3A3,
..
An-2 un-1un,
unde A1, A2, ,An-2 sunt noi variabile, adaugate lui V
q.e.d.

25
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Exemplu 1. V=V{S} si P =P{SS}


Fie G G2 cu productiile: SASA | aB, 2. eliminam -productiile A,
AS; apoi, pt aparitie a smb. A in
AB I S, Bb | =>? G G2, FNC m.dr. al unei productii adaugam o
echivalenta productie similara, in care simbolul
(1) V=V{S} si P =P{SS} => A respectiv a disparut;
P={SS, SASA|aB, ABIS,Bb|} 3. eliminam productiile unitare
AB; apoi, pt. productie Bu,
(2) eliminam B i apoi adaugam Sa, u(V)*, adaugam productia A u
A => 4. pentru productiile duble:
P={SS, SASA|aB|a, AB|S|, A u1u2, unde u1 sau u2:
se inlocuieste u cu UV i
Bb}
se adauga productia U u la P;
obs. ca a aparut o noua -productie: A , 5. restul productiilor, adica :
deci trebuie eliminata A u1u2u3un, n 3, 1in: ui
V sau ui , se inlocuiesc,
dupa care aduagam SAS|SA|S => fiecare, cu setul de productii
A u1A1, A1u2A2, A2u3A3, .
P={SS, SASA|AS|SA|S|aB|a, An-2 un-1un , unde A1, A2, ,An-2
AB|S, Bb}. sunt noi variabile, adaugate lui26 V.
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
Exemplu (cont.)
(3) tb. eliminate SS si SS cu
1. V=V{S} si P =P{SS}
adaugarile impuse de S =>
2. eliminam -productiile A,
P={SASA|AS|SA|aB|a,
AS; apoi, pt aparitie a smb. A in
SASA|AS|SA|aB|a, AB|S, Bb} m.dr. al unei productii adaugam o
(3) tb. eliminate AB i AS => productie similara, in care simbolul
P={SASA|AS|SA|aB|a, A respectiv a disparut;
SASA|AS|SA|aB|a, Bb} 3. eliminam productiile unitare
i apoi aduagarile impuse: AB; apoi, pt. productie Bu,
P={SASA|AS|SA|aB|a, u(V)*, adaugam productia A u
SASA|AS|SA|aB|a, 4. pentru productiile duble:
AS|b|ASA|AS|SA|aB|a, Bb} A u1u2, unde u1 sau u2:
se inlocuieste u cu UV i
obs. ca avem o noua productie unitara
se adauga productia U u la P;
AS care tb. eliminata (i care nu aduce 5. restul productiilor, adica :
noi productii): A u1u2u3un, n 3, 1in: ui
P={SASA|AS|SA|aB|a, V sau ui , se inlocuiesc,
fiecare, cu setul de productii
SASA|AS|SA|aB|a, A u1A1, A1u2A2, A2u3A3, .
Ab|ASA|AS|SA|aB|a, Bb} . An-2 un-1un , unde A1, A2, ,An-2
sunt noi variabile, adaugate lui27 V.
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
Exemplu (cont.)
(4) tratam productiile duble SaB, SaB
1. V=V{S} si P =P{SS}
i AaB =>
2. eliminam -productiile A,
V=V{U} i
AS; apoi, pt aparitie a smb. A in
P={SASA|AS|SA|UB|a, m.dr. al unei productii adaugam o
SASA|AS|SA|UB|a, productie similara, in care simbolul
Ab|ASA|AS|SA|UB|a, Bb, Ua} A respectiv a disparut;
(5) inlocuim productiile SASA, SASA, 3. eliminam productiile unitare
AASA respectiv cu AB; apoi, pt. productie Bu,
SASA: SAX, XSA u(V)*, adaugam productia A u
SASA: SAX, XSA 4. pentru productiile duble:
AASA: AAX, XSA i V=V{X} => A u1u2, unde u1 sau u2:
se inlocuieste u cu UV i
P={SAX|AS|SA|UB|a,
se adauga productia U u la P;
SAX|AS|SA|UB|a, 5. restul productiilor, adica :
AAX|AS|SA|UB|a|b, Bb, Ua, A u1u2u3un, n 3, 1in: ui
XSA} => V sau ui , se inlocuiesc,
fiecare, cu setul de productii
G=({S,S,A,B,U,X}, {a,b}, S, {Bb, Ua, A u1A1, A1u2A2, A2u3A3, .
XSA, SAX|AS|SA|UB|a, An-2 un-1un , unde A1, A2, ,An-2
SAX|AS|SA|UB|a, AAX|AS|SA|UB|a|b}) sunt noi variabile, adaugate lui28 V.
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

1. Definitii
gramatici i limbaje independente de context
arbori de derivare
proiectarea g.i.c.
2. Ambiguitate
3. Forme normale
definitii
exemple
aducerea la forma normala Chomsky
4. Lema de pompare
5. Operatii de inchidere
L2 este inchisa la reuniune, concatenare, operatia *,
omomorfism
L2 nu este inchisa la intersectie si complementara
6. Automatul pushdown;
echivalenta cu gramatica independenta de context. 29
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Lema de pompare pentru L.I.C.


Fie L *, LL2 =>
pN (constanta=lungimea de pompare) a.i. sL, |s| p
u,v,x,y,z* cu proprietatile:
S
(i) s = uvxyz, .
(ii) i o: uvixyiz L, .
.
(iii) |vy| > 0, .

(iv) |vxy| p X
Obs.: .
.
(iii) elimina cazurile in care fie v= fie y=, .
.
in care lema e trivial adevarata;
X
(iv) e utila in a demonstra ca L L2
Ideea demonstratiei
u v x y z

30
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Demonstratie
Fie GG2 i L=L(G);
fie b = max {|w| | Aw P}
(nr. max. de simboluri, terminale i neterminale, inclusiv repetitii, care pot
aparea in m.stg al p, pP);
=> wL(G): orice nod din arborele de parsare al w va avea max. b
descendenti directi;
=> max. b frunze se afla la distanta de 1 arc de radacina arborelui
(etichetata cu simbolul de start),
max. b2 frunze se afla la dist. de 2 arce de radacina,
max. bj frunze se afla la dist. de J arce de radacina,
=> daca H=inaltimea arborelui i H j, atunci |w| bj;
reciproc: daca |w| bj +1, atunci oricare dintre arborii sai de parsare va
avea o inaltime H j+1 ;
Fie n = |V| ( putem pp. n 2: n=2 daca G e in FNC, altfel n>2) =>
definim ct. de pompare: k = bcard(V)+1, unde b=max{|w| | AwP} =>
w L(G): daca |w| k atunci H |V|+1; . (1) 31
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
Demonstratie (cont.)
Cum putem pompa w?
fie arborele de parsare al w, care are cel mai mic nr. de noduri,
cf. (1). H |V|+1; atunci
=> un drum in H de la radacina la o frunza de lg. l|V|+1
=> acest drum are cel putin |V|+2 noduri, dintre care 1! nod e etichetat cu
un terminal
=> acest drum are cel putin |V|+1 noduri etichetate cu neterm.
=> cel putin un neterminal se repeta de-a lungul acestui drum
alegem neterm. care se repeta cel mai aproape de frunza;
S
Descompunem w=uvxyz : .
.
.
.

X
.
.
.
.

u v x 32
y
S.
LFA: C4 LIMBAJE INDEPENDENTE DE. CONTEXT
.
.
X
.
.
.
.
Demonstratie (cont.) X
verificam cond.(ii) :
u v x y z
fiecare aparitie a lui X anunta un subarbore care genereaza un subcuvant
al cuvantului w;
prima aparitie reprezinta radacina subarborelui celui mai mare, cel care
genereaza vxy;
ultima aparitie reprezinta radacina subarborelui celui mai mic, cel care
genereaza x;
intrucat cei 2 subarbori au aceeasi radacina (etichetata X), i.e. sunt generati
de acelasi neterminal putem substitui pe unul cu celalalt obtinand tot un
arbore de derivare corect
=> daca inlocuim, repetat, cel mai mic arbore cu cel mai mare, obtinem
arborii de parsare ai cuvintelor uvixyiz, i>1;
=> daca inlocuim cel mai mare arbore cu cel mai mic, obtinem arborele de
parsare al cuvantului uxz (=> cond. (ii) ); 33
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

i2
S S
. . i=0
. .
. .

X X
.
.
.

X
.
.
.
x
X
u v y z u z
v x y

34
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

S.
.
.
.
X
.
.
.
.
X

Demonstratie (cont.) u v x y z
verificam cond.(iii) :
ppa v==y
=> arborele de parsare obtinut prin inlocuirea celui mai mare subarbore de
radacina X cu cel mai mic ar avea mai putine noduri decat i totusi ar
genera cuvantul w
=> contradictie cu alegerea lui ca fiind arborele de parsare al lui w cu cel
mai mic nr. de noduri.
35
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
S.
.
.
.
X
.
.
.
.
X

Demonstratie (cont.) u v x y z
verificam cond.(iv) :
stim ca in , prima aparitie a lui X genereaza cel mai mare subarbore al lui
w, i anume subarborele asociat lui vxy;
dar X a fost ales a.i. ambele sale aparitii sa fie cat mai aproape de frunza
=> aceste aparitii se afla printre ultimele |V|+1 noduri de pe drum (2)
in plus, drumul a fost ales ca fiind cel m. lung de la radacina la frunza (3)
din (2) i (3) rezulta ca inaltimea H a subarborelui de radacina X care
genereaza vxy este H |V|+2 =>
acest arbore poate genera un cuvant c, |c| b|V|+2=k . q.e.d.
36
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

1. Definitii
gramatici i limbaje independente de context
arbori de derivare
proiectarea g.i.c.
2. Ambiguitate
3. Forme normale
definitii
exemple
aducerea la forma normala Chomsky
4. Lema de pompare
5. Operatii de inchidere
L2 este inchisa la reuniune, concatenare, operatia *,
omomorfism
L2 nu este inchisa la intersectie si complementara
6. Automatul pushdown;
echivalenta cu gramatica independenta de context. 37
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Definitii
L1,L2*: L {w * | w L} * \ L,
L0 si
L1L2={w*| wL1 sau wL2}, n
L :
Ln1 L Ln L Ln , n N ,
L1L2={w*| wL1 si wL2},
L L ,
L1 \ L2={w*| wL1 si wL2},
L {} {} L L,
L1 o L2={w1w2*| wL1 si wL2},
L* U Li , L U Li .
mi(L)={mi(w)| wL}. i0 i1

38
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Lema 3
L2 este inchisa la reuniune, concatenare si operatia *.
Demonstratie
Fie L1,L2L2, Li=L(Gi), unde Gi=(Vi, i, Si, Pi), i=1,2:
L1L2 este generat de G=(V, , S, P), unde:
V=V1 V2 {S0},
= 1 2,
S=S0,
P=P1 P2 {S0S1, S0S2}.

39
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

L1 L2 este generat de G=(V, , S, P), unde:


o

V=V1 V2 {S0},
= 1 2,
S=S0,
P=P1 P2 {S0S1S2};
L* este generat de G=(V, , S, P), unde:
V=V {S},
= ,
S=simbolul de start,
P=P {SSS};
Evident, toate cele 3 gramatici sunt independente de context.

40
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Lema
L2 este inchisa la operatia mirror
Demonstratie
(i) Fie L L2, L=L(G), unde G=(V, , S, P);
putem pp ca G este in FNC
=> construim G=(V, , S, P), unde
P= {ACB | ABC in G} {Aa | Aa in G}
L(G)=mi(L), i.e. : SG =>* w S G=>* mi(w), adica:
S=>x1=>x2=>=>xn este o derivare in G
S=>mi(x1)=>mi(x2)=>=>mi(xn) este o derivare in G
demonstratie prin inductie dupa n= nr pasi ai derivarii lui x in G: .
41
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

n=1
x= sau x => evident
(se aplica productia x sau xa dar a=mi(a) deci avem si productia
corespunzatoare in G.)
n1
Pp. afirmatia adevarata pt derivarea cuvantului x in n 1 pasi si
demonstram pt o derivare cu n+1 pasi:
Fie SG =>* x, respectiv S G=>* mi(x) in n+1 pasi =>
1) Prima productie este obligatoriu de forma SAB, respectiv SBA
2) y* a.i. x=yB => mi(x)=mi(yB)=Bmi(y)
=> lg derivarii lui y in G (i a lui mi(y) in G) este n
cf. ip.ind. pt y
o derivare pt y in G iff o derivare pt mi(y) in G.
compunere cu SAB (SBA)
SG =>* x S G=>* mi(x). 42
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Lema
L2 este inchisa la substituie i omomorfism
Demonstratie
(i) Fie ={a1,a2,,an} i 2 alfabete oarecare;
fie L*, L L2, L=L(G), unde G=(V, , S, P)G2 i
fie s : P (*) o substitutie a.i. s(ai) = L(Gi), unde Gi=(Vi, i, Si, Pi)G2,
trebuie sa construim GG2 a.i. L(G) = s(L) *
putem pp ca: VV1V2Vn=
G, G1, G2, , Gn sunt in FNC;
construim G = (V, , S, P) astfel:
V = VV1V2Vn
= 12n
S = S
P = P0P1P2Pn , unde productiile din P0 se obtin din productiile din P
inlocuind fiecare aparitie a unui terminal ai cu axioma Si, 1in. 43
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Lema
L2 NU este inchisa la intersectie si complementara
Demonstratie
(i) Ppa. ca L2 este inchisa la .
Fie G1=({S,T},{a,b,c},{SSc | Tc, TaTb | ab},S},
G2=({S,T},{a,b,c},{SaS | aT, TbTc | bc},S}.
=> L(G1)={anbncm | n,m1} L2
L(G2)={ambncn | n,m1} L2
Observam ca L(G1)L(G2)={anbncn | n1} L2 (cf. Lema pompare).

44
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT


-L

L (-L)-L

(ii) Ppa ca L2 este inchisa la complementara;


fie L={akbjcn | k,j,n1, kjn}; LL3L2: L=L(G), unde
G=({S,A,B,C}, {a,b,c}, S, {SaA, AaA|bB, BbB|cC, CcC|})
=>C(L) = {akbjcn | k,j,n1, k=j=n} = {anbncn | n1}L2
Alta dem: fie LL2 => L= L dar L= C(C(L)).
ppa ca L2 este inchisa la complementara => L2 este inchisa la intersectie
=> contradictie cu (i) q.e.d. 45
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

1. Definitii
gramatici i limbaje independente de context
arbori de derivare
proiectarea g.i.c.
2. Ambiguitate
3. Forme normale
definitii
exemple
aducerea la forma normala Chomsky
4. Lema de pompare
5. Operatii de inchidere
L2 este inchisa la reuniune, concatenare, operatia *,
omomorfism
L2 nu este inchisa la intersectie si complementara
6. Automatul pushdown;
echivalenta cu gramatica independenta de context. 46
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

APD reprezinta un nou model de calculabilitate


Stiva
APD
controlul
AF starilor
controlul 0 0 1 1
starilor
x
y
a c b a

{0n1n | nN} 47
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Observatii
APD are intrinsec o natura nedeterminista, dar:
AFD AFN
APDN APD
{0n1n | n 0}: APDN, APD;
{wwr | w{0,1}*}: APDN.

48
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
Deosebiri intre APD si AFD:
(i) La APD trebuie sa luam in considerare:
setul de stari,
banda de intrare,
stiva;
Simbolurile scrise in stiva pot fi preluate din acelasi alfabet / din alt alfabet
decat cel al benzii de intrare
=> in definitia APD vom avea 2 alfabete: si ,
urmatoarea actiune a APD este determinata de:
starea crt. a APD,
simbolul citit de pe banda de intrare
simbolul aflat in varful stivei,
(ii) APD poate intalni si pe banda de intrare si in stiva smb. vid, =>
dom() = Q x ({}) x ({})
(iii) Urmatoarea actiune a APD poate consta in trecerea intr-o noua stare
si EVENTUAL scrierea unui simbol in stiva;
In plus, modelul APD fiind intrinsec nedeterminist,
APD poate trece in diferite stari => codom() = P(Q x ({}). 49
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Definitie
Automat pushdown = APD=(Q, , , , q0, F), unde:
Q = multime finita, nevida, ale carei elemente se numesc stari;
= multime finita, nevida, numita alfabet de intrare, ale carei
elemente se numesc simboluri, ( = {});
= multime finita, nevida, numita alfabetul stivei, ( = {});
: Q x x P(Q x ), numita functia de tranzitie;
q0 Q, numita starea initiala;
FQ numita multimea starilor finale.

50
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
a,b c
qi qj

Notatie
APD, aflat in starea qi,
citeste smb. a de pe banda de intrare,
extrage smb. b din stiva,
depune smb. c in stiva;
Daca a = APD face tranzitia i fara sa citeasca
nimic de pe banda de intrare,
Daca b = APD face tranzitia i fara sa extraga
nimic din stiva,
Daca c = APD face tranzitia i fara sa depuna
nimic din stiva.
51
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT
a,b c
qi qj

Observatie
(i) Definitia formala a APD NU contine nici un mecanism explicit de
testare a vidarii stivei
METODA STANDARD:
se utilizeaza un smb. special din , $, care este depus in stiva
de la inceput,
cand acest smb. este intalnit (cand s-a ajuns in varful stivei)
inseamna ca stiva s-a golit;
(ii) Analog, definitia formala a APD NU contine nici un mecanism
explicit de testare a terminarii secventei de intrare
METODA STANDARD:
trecerea intr-o stare finala.

52
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

Teorema 3
Fie L * => ( G G2: L=L(G) A APD: L=L(A) )

Demonstratie
Fie L * i fie G=(V, , S, P)G2 ai. L(G)=L;
putem defini un APD R=(Q, ,, , q0, F) cu ajutorul lui G astfel:
Q = {qstart, qloop, qaccept} E:
E = multimea starilor auxiliare necesare implementarii depunerii
in stiva a secventelor intermediare din derivarea S * w, w L;
, depind de limbajul L considerat;
q0= qstart;
F = {qaccept};
53
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

, A w
a, a

, S$ ,$
qstart qloop qaccept

: Q x x P(Q x ) definita prin:


(qstart,,)={(qloop,S$)}
(qloop,,A)={(qloop,w) | A w P }
(qloop,a,a)={(qloop, )}
(qloop,,$)={(qaccept, )}
54
LFA: C4 LIMBAJE INDEPENDENTE DE CONTEXT

1. Definitii
gramatici i limbaje independente de context
arbori de derivare
proiectarea g.i.c.
2. Ambiguitate
3. Forme normale
definitii
exemple
aducerea la forma normala Chomsky
4. Lema de pompare
5. Operatii de inchidere
L2 este inchisa la reuniune, concatenare, operatia *,
omomorfism
L2 nu este inchisa la intersectie si complementara
6. Automatul pushdown;
echivalenta cu gramatica independenta de context. 55

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