Sunteți pe pagina 1din 41

LFA: C2 IERARHIA CHOMSKY

1. Alfabet, cuvant, operatii cu cuvinte


2. Limbaj, operatii cu limbaje
3. Gramatica; exemple
4. Clasificarea gramaticilor generative;
ierarhia lui Chomsky

1
LFA: C2 Ierarhia Chomsky

Definitie 1
Alfabet = = orice multime finita, nevida
Elementele = simboluri
Exemple 2
bool = {0, 1},
latin = {a,b,c,,z},
logic = { 0,1,(,), ,,,x }.

2
LFA: C2 Ierarhia Chomsky

Definitie 3
Cuvant peste un alfabet = orice secventa finita de
simboluri din
Cuvantul vid = = singurul cuvant care consta din 0 simboluri
* = multimea tuturor cuvintelor peste alfabetul
+ = * - {}
Observatie 4
Nu orice cuvant peste un alfabet reprezinta o notiune:
latin*={,a,,aa,ab,ac,,aaa,aab,,caa,cab,cal,..,cla,,
lac,,lca,,cheval,horse, }.

3
LFA: C2 Ierarhia Chomsky

Definitie 5
Lungimea unui cuvant w peste un alfabet = |w| =
= numarul de simboluri din w
|| = 0
Notatie 6
#a(w) = numarul de aparitii ale simb. a in cuvantul w*
Exemplu 7
#t(complexitate)= 2

Observatie 8
, w*:
| w | #a ( w).
a
4
LFA: C2 Ierarhia Chomsky

Definitie 5
Fie un alfabet = {a1, a2, ,ak}; functia
: *N K, () = (||a1, ||a2, , ||ak)
se numeste functia lui Parikh
Definitie 9
Fie un alfabet ; atunci, pentru orice nN:
n={ * | ||=n }
Exemplu 10
{0,1}3 = {000, 001, 010, 011,100,101,110,111}
{0,1}5 = {00000, 00001, 00010, 00011,00100,00101,00110,,11111}.
5
LFA: C2 Ierarhia Chomsky

Definitii 11: Operatii cu cuvinte


(i) Fie un cuvint w peste un alfabet ; notam prin mi(w) sau wR reversul
cuvantului w, adica un cuvant din * obtinut din w prin scrierea simbolurilor
acestuia in ordine inversa,
(ii) Fie doua cuvinte v si w peste un alfabet ; notam prin vw sau v. . w cuvantul
din * obtinut prin concatenarea lui v cu w;
Exemple 12
w = 856 => wR = 658; w = capac => wR = capac,
v = ori, w = cand => vw = oricand, wv = candori;
Observatie 13
1. In general, v.w wv. dar intotdeauna: |v.w | = |wv.| = |v.|+|w|
2. : (*,. ) este un monoid (=elementul neutru).

3. w*, definim:

w0 , si
n1 w wn wwn , n N .
6
w
LFA: C2 Ierarhia Chomsky

Definitie 14
Prefix al unui cuvant w* = v*: x* a.i. w=vx .
Sufix al unui cuvant w* = v*: y* a.i. w=yv .
Subcuvant al unui cuvant w*= v*: x,y* a.i. w=xvy .

Observatie 15
x si/sau y pot fi si .

7
LFA: C2 Ierarhia Chomsky

similara ordinii cuvintelor in dictionar;


exceptie: cuvintele scurte preced
cuvintele lungi
Definitia 16
Fie un alfabet={s1,s2,,sm}, m1 si Lungimea lui v, w nu conteaza;
Simbolul cu care incep v,
fie s1<s2<<sm o ordine pe ; respectiv w nu conteaza.

ordinea canonica (lexicografica) pe * se defineste astfel:


v,w *: v<w daca |v|<|w| sau
|v|=|w| si i,jN,1i<jm si x,v,w*
astfel incat v=xsiv si w =xsjw
Observatie 17
Ordinea canonica permite enumerarea tuturor cuvintelor peste orice
alfabet: fie ={a,b}
* ={,a,b,aa,ab,ba,bb,aaa,aab,aba,abb,..., abbaababbabb, ....}
8
LFA: C2 IERARHIA CHOMSKY

1. Alfabet, cuvant, operatii cu cuvinte


2. Limbaj, operatii cu limbaje
3. Gramatica; exemple
4. Clasificarea gramaticilor generative;
ierarhia lui Chomsky

9
LFA: C2 Ierarhia Chomsky

Definitie 19
Fie un alfabet ;
se numeste limbaj peste , orice submultime L*
se numeste limbaj -liber peste , orice submultime L+

Exemple 20
1. Fie V = {a,b} =>
, {}, {a,b}, {a,b}*, {ab,bba,b10a20,abbaba}, {anb2n|nN},
{aw|w{a,b}*}, {aw|w{b}*}

Notatie 21
Multimea tuturor limbajelor peste alfabetul :
L = { L* | L =limbaj }.
. 10
LFA: C2 Ierarhia Chomsky

Definitie 22
Fie un alfabet ={s1,s2,,sm}, m1 si
*={x1,x2,,xn,} enumerarea cuvintelor peste , indusa de ordinea
canonica;
atunci, L* ! o secventa binara infinita, notata L, definita astfel:
cel de-al i-lea bit din L este: 1, daca xiL,
0, daca xiL.
L se numeste secventa caracteristica a limbajului L peste
={s1,s2,,sm}.

11
LFA: C2 Ierarhia Chomsky

Exemple 23
1. Fie = {a,b} i L = {w *| y*: w=aay}
=> *= {,a,b,aa,ab,ba,bb,aaa,aab,aba,abb,baa,..., aaaa, aaab, aaba,...}
L = { , , , aa, , , ,aaa,aab, , , ,..., aaaa, aaab, aaba,.. }
=> L= 0 0 0 1 0 0 0 1 1 0 0 0 ,..., 1 1 1..=
= 000100011000.111....
2. Fie L = {w *| x*:w=bx}
L = { , ,b, , ,ba,bb, , , , ,baa,bab,bba,bbb,...}
=> L= 0 010 0 1 1 0000 1 1 1 1 ..
= 001001100001111....
3. Fie L = {w *| w= palindrom} =
= {,a,b,aa,bb,aaa,aba,bab,bbb,aaaa,.}
=> L= 111100110100 12
LFA: C2 Ierarhia Chomsky
Teorema 24
Multimea L = { L* | L =limbaj } este nenumarabila
Demonstratie
(i) multimea B a secventelor binare infinite este nenumarabila
Folosim metoda diagonalizarii n f(n)=bn

ppa f:N B, bijectiva a.i. f(n)=bnB 1 100


2 010
3 110
4 001
n f(n)=bn
b=00111.
bf(n), nN :
1 10000

2 01000
a na cifra binara din b este:
0, daca a n-a cifra binara din f(n) este 1, 3 11000

1, daca a n-a cifra binara din f(n) este 0 4 00100

5 10100


=> B este nenumarabila. 13
LFA: C2 Ierarhia Chomsky

(ii) multimea L = {L* | L = limbaj} este nenumarabila


E suficient sa gasim f: L B, bijectiva
ori, f: L B: f(L)= L
i, evident, f = bijectiva;
cf. (ii) B =nenumarabila => L nenumarabila.

14
LFA: C2 Ierarhia Chomsky
Definitii 25: Operatii cu limbaje
Fie limbajul L ; definim i notam prin:
mi(L)=LR= {mi(v)|v L}
reversul limbajului L in raport cu ;
LC= {v *|v L}
complementul limbajului L in raport cu ;
Fie limbajele L1 1* i L2 2* (1 i 2 oarecare); definim i notam prin:
L1L2= {v (1 2)*|v L1 sau v L2}
reuniunea limbajelor L1 i L2;
L1L2= {v (1 2)*| v L1 i v L2}
intersectia limbajelor L1 i L2;
L1 - L2= {v 1*|v L1 i v L2}
diferenta limbajelor L1 i L2.
15
LFA: C2 Ierarhia Chomsky
Definitii 25: Operatii cu limbaje (cont.)
Fie doua alfabete 1 si 2 si doua limbaje L11* si L22* ; definim si notam :
L1L2=L1 . L2={vw(12 )*|vL1 si wL2}
limbajul obtinut prin concatenarea (produsul) acestora ;
L* U Ln , unde L0 si Ln1 L Ln , n N
n0
inchiderea reflexiva i tranzitiva (Kleene) a limbajului L;
L U Ln , obs. : L* L
U
n 1
inchiderea tranzitiva a limbajului L
Fie alfabetul si doua limbaje L1, L2 *; definim si notam :
L1 / L2 = {w *| v L2: wv L1}
ctul la dreapta al limbajului L1 prin limbajul L2 ,
L1 \ L2 = {w *| v L2: vw L1}
16
ctul la stanga al limbajului L1 prin limbajul L2 .
LFA: C2 Ierarhia Chomsky

Definitii 25: Operatii cu limbaje (cont.)


(i) Fie doua alfabete si ; se numeste substitutie o functie
s : P (*)
Extindem aceasta aplicatie la * prin
s() = {},
s(a) = s(a)s(), a, *
Obs. aceasta extensie este canonica :
daca w = *, atunci s(w) = s()s(), s(), s() *
(ii) Fie un limbaj L * ; atunci definim prin:
s( L) U s( )
L
limbajul obtinut din L prin substitutie canonica
Ex.: L={a,b, aa, ab, ba, bb} s:{a,b}{0,1,x}* s(a)= 0x, s(b)=x11 =>
s(L)= {0x, x1, 0x0x, 0xx11, x110x, x11x11}. 17
LFA: C2 Ierarhia Chomsky

Definitii 25: Operatii cu limbaje (cont.)


O substitutie s : * P (*) se numeste
finita:
card (s(a)) <, a
(orice simbol din este substituit de un limbaj peste , finit )
morfism:
card (s(a)) = 1, a
(multimea s(a) este singleton)
substitutie / morfism -free:
s(a) , a
morfism invers:
o functie h-1 : * P (*) definita prin
h-1( ) = { * | h() = }, *, unde h: * * .
18
LFA: C2 Ierarhia Chomsky

Observatie 26
1. L . = . L= L, L
2. L . {} = {} . L= L, L
3. L = {} L= L, L
4. L = , L
5. L { } = { } , L.

19
LFA: C2 Ierarhia Chomsky

Cum caracterizam formal un limbaj L?


o reprezentare finita a tuturor secventelor din L
Mai multe metode:
enumerarea tuturor elementelor limbajului
enuntarea proprietatilor distinctive ale elementelor sale
definirea unei gramatici generative G
G=({S}, {a,b}, {S aSb | SS | }, S)
0 1
L = {, ab, anbn, anbabn, an(ba)kbn, }
q1 0
definirea unui automat A q2 q3
1
L(A) = {w{0,1}* | w=1 sau w=00, {0,1}*} 0,1
etc.
(A)
20
LFA: C2 IERARHIA CHOMSKY

1. Alfabet, cuvant, operatii cu cuvinte


2. Limbaj, operatii cu limbaje
3. Gramatica; exemple
4. Clasificarea gramaticilor generative;
ierarhia lui Chomsky

21
LFA: C2 Ierarhia Chomsky

Gramaticile
initial: notiune introdusa de lingvisti pentru studierea limbajelor
naturale (Noam CHOMSKY, 1950):
caracterizarea frazelor corecte dintr-un limbaj,
o definitie structurala a frazelor corecte dintr-un limbaj;
ulterior: un instrument de reprezentare finita, generativa a oricarui
limbaj constand din:
o multime finita de elemente de baza,
un set de reguli de producere a frazelor corecte din limbaj.

22
LFA: C2 Ierarhia Chomsky
Definitie 27
Se numeste gramatica un sistem G= (VT,VN,S,P) unde:
VT = multime finita, nevida (simboluri terminale),
VN = multime finita, nevida (simboluri neterminale=variabile):
VT VN = ; VT VN = V;
S VN;= simbolul de start (axioma gramaticii),
P = multime finita nevida (productii):
P (VN VT )* VN (VN VT )* x (VN VT )*
OBS. : ( (,)P : se inlocuieste cu )
P = { | V*.VN.V*; V*};
Exemple 28
1. G1=({0,1,2,,9}, {S,C}, S, {SCC, C0|1|...|9} } =>
L1={nN| n<100};
2. G2=({0,1,2,,9}, {S,C,B}, S, {SCB, BCB, BC, C0|1|...|9|}} =>
L2=N. 23
LFA: C2 Ierarhia Chomsky
G2=({0,1,2,,9}, {S,C,B}, S, {SCB, BCB,
BC, C0|1|...|9|}}

=> Cum procedam pentru a descrie un limbaj cu ajutorul


unei gramatici generative?
Generam fiecare cuvant din limbaj dupa urmatorul algoritm:
1. Scriem simbolul de start (apare in m. stg. al primei productii din P i este
notat cu S (de obicei),
2. Alegem una dintre productiile care au acest simbol in m. stg. i inlocuim
simbolul ales cu m. dr. al respectivei productii,
S1CB2 CCB sau S1CB4 7B sau S1CB3 CC
3. Repetam Pasul 2 pana cand in m.dr. nu mai exista neterminale care pot
fi inlocuite
S1CB2CCB2CCCB3CCCC4CCC94CC0940C0940509;
Observatie 29
La fiecare pas de calcul, se aplica o singura productie, unui singur
neterminal.
24
LFA: C2 Ierarhia Chomsky
Notatie: Substitutie = Derivare directa

Observatie 30
SCBCCBCCCBCCCCCCC9CC090C090509

Inchiderea tranzitiva a
Notatie: * derivarii directe = Derivare

Definitii 31
Se numeste substitutie = derivare directa = aplicarea unei productii =
daca P i , V*, atunci
Se numeste derivare = aplicarea consecutiva a mai multor productii =
daca 1 2, 23, , n-1n atunci 1*n .
25
LFA: C2 Ierarhia Chomsky

Definitie 32
Se numeste limbaj generat de o gramatica G=(VT,VN,S,P) multimea
L(G) = {VT* | S * };
Observatie 33
Pentru ca o secventa de simboluri sa faca parte limbajul L generat de
gramatica G, ea trebuie sa indeplineasca 2 conditii:
1. sa fie formata numai din simboluri terminale i care sa provina din
vocabularul de terminale VT al gramaticii G,
2. sa se obtina printr-o derivare care pleacadin simbolul de start S al G;
Definitie 34
Fie G1=(VT,V1N,S,P1) , G2=(VT,V2N,S,P2) si L1=L(G1), L2=L(G2),
Limbajele L1 i L2 se numesc echivalente ddaca
L(G1) L(G2). 26
LFA: C2 Ierarhia Chomsky
Exemple 35
1. G3= (VT,VN,S,P) , unde: 2. G4= (VT,VN,S,P) , unde:
VT = {a,b} VT = {0,1}
VN = {S,C} VN = {S,A,B}
S p1: SAB
p1: SaSb p2: A 0A
p2: S p3: A
p4: B 1B
S 1 aSb 1 aaSbb 1
p5: B
aaaSbbb 2 aaabbb
S 1 AB 2 0AB 4
L3 = { anbn| nN } ; 0A1B 2 00A1B 2
000A1B 3 0001B 4
00011B 5 00011
L4 = { 0j1k| j,kN } . 27
LFA: C2 Ierarhia Chomsky
3. G5= (VT,VN,S,P) , unde: 4. G6= (VT,VN,S,P) , unde:
VT = {0} VT = {0,1}
VN = {S,L,Z,R} VN = {S,A}
p1: SLZL p1: S1A
p2: LZ LR p2: A 0A
p3: RZ ZZR p3: A 1A
p4: RL ZZL p4: A
p5: Z 0 S 1 1A 2 10A 2
p6: L 100A 3 1001A 2
S 1 LZL 2 LRL 4 10010A 3 100101A 3
LZZL 2 LRZL 3 1001011A 4 1001011
LZZRL 4 LZZZZL 6 L6 = {1} . {0,1}*
0000L 6 0000 este limbajul reprezentarilor
L5 = { 0(2^n)| nN }; binare ale numerelor naturale.
28
LFA: C2 Ierarhia Chomsky
5. G7= (VT,VN,S,P) , unde:
VT consta din cuvintele limbii romne
VN = {<propozitie>, <subiect>, <predicat>, <substantiv>,
<prenume>, <verb>}
S = <propozitie>
p1: <propozitie> <subiect> <predicat>
p2: <subiect> <substantiv>
p3: <subiect> <pronume>
p4: <predicat> <verb>
p5: <substantiv> piersic | vapor | functie| .
p6: <pronume> eu | tu | el
p7: <verb> scrie | pluteste| creste
<propozitie> <subiect> <predicat> <pronume> <predicat>
<pronume> <verb> el<verb> el pluteste
<propozitie> <subiect> <predicat> <substantiv> <predicat>
<substantiv> <verb> functie <verb> functie pluteste
L consta din propozitii fromate din substantivele, pronumele
(personale) i verbele limbii romane, corecte gramatical (semantic?).
29
LFA: C2 IERARHIA CHOMSKY

1. Alfabet, cuvant, operatii cu cuvinte


2. Limbaj, operatii cu limbaje
3. Gramatica; exemple
4. Clasificarea gramaticilor generative;
ierarhia lui Chomsky

30
LFA: C2 Ierarhia Chomsky

Clasificare a gramaticilor generative


determinata de restrictiile impuse productiilor:

Gramatici de tip 0 (fara restrictii) Gramatici fara restrictii


Gramatici monotone
Gramatici de tip 1 (dependente de context)
Gramatici dependente de context
Gramatici de tip 2 (independente de context) Gramatici independente de context
Gramatici lineare
Gramatici de tip 3 (regulate) Gramatici lineare la dreapta/stanga
Gramatici regulate

Definitie 36
Doua gramatici G1 i G2 se numesc echivalente daca genereaza
acelasi limbaj:
G1 G2 L(G1) = L(G2) 31
LFA: C2 Ierarhia Chomsky

Definitie 37
Gramatica de tip 0: productiile nu suporta nicio restrictie
Tipul 0:
unde: (VNVT )*V N(VNVT )* , (VNVT )*
Ex. ant.: G5= ({0}, {S,L,Z,R},S,P), unde:
P={SLZL , LZ LR, RZ ZZR, RL ZZL, Z 0 L }
S 1 LZL 2 LRL 4 LZZL 2 LRZL 3 LZZRL 4 LZZZZL
6 0000L6 0000

L5 = { 0(2^n)| nN }.
32
LFA: C2 Ierarhia Chomsky
Definitie 38
Gramatica de tip 1 (dependente de context):
Tipul 1: A
unde: ,, (VN VT )*, AVN ,
obs.: daca S P atunci S nu poate aparea n m. dr. al nici unei
productii din P,
, formeaza contextul in care A poate fi inlocuit cu ;
Ex. : G8= ({0}, {S,B},S,P), unde:
P={SaSBc, Sabc, cBBc, bBbb}
S 1 aSBc 1 aaSBcBc 1 a3SBcBcBc 2 a4bcBcBcBc 3
a4bBccBcBc3 a4bBcBccBc 3 a4bBcBcBcc 3 a4bBBccBcc 3
a4bBBcBccc 3 a4bBBBcccc 4 a4bbBBc4 4 a4bbbBc44
a4bbbbc4
S 1. anS(Bc)n 2 an+1bc(Bc)n 3. an+1bBncn+1 4. an+1bn+1cn+1
L5 = { anbncn| n0 }. 33
LFA: C2 Ierarhia Chomsky

Teorema 39

Fie G = gramatica dependenta de context


=> G este recursiva (i.e. exista un algoritm care decide, pentru orice
secventa w, daca w L (G) sau w L (G) .

34
LFA: C2 Ierarhia Chomsky
Definitie 40
Gramatica de tip 2 (independente de context):
Tipul 2: A
unde: AVN , (VN VT )*
obs. neterminalul A poate fi inlocuit cu secventa in orice context ar
aparea;
f importante:
putere generativa suficienta: pot descrie sintaxa oricarui
limbaj de programare,
destul de simple: permit proiectarea unor algoritmi de
parsare eficienti care pentru orice secvbenta data - sa
determine daca i cum poate fi generata de gramatica
respectiva;
Ex. ant.: G3= ({a,b}, {S,C},S,{SaSb , S } ):
S 1 aSb 1 aaSbb 1 aaaSbbb 2 aaabbb
L3 = { anbn| nN } . 35
LFA: C2 Ierarhia Chomsky

Ex.: G8= (VT,VN,S,P) descrie instructiunea de atribuire intr-un limbaj de


programare oarecare
VN = {<atribuire>, <expr>, <op> },
VT = {nume_ct , nume_var, + , - , * , / }
P = { <atribuire> := nume_var = <expr>
<expr> := nume_ct| nume_var | <expr> <op> <expr> | (<expr>)
<op> := + | - | * | / }
Ex.:
Sintaxa unui limbaj de programare simplu: doar trei tipuri de
instructiuni: atribuiri, if-then, stop
Pentru constante i identificatori: un singur element, notat i
Variabilele: simple sau indexate
Operatorii aritmetici: + si *
Notatia folosita: notatia Backus Naur (a se vedea definirea sintaxei
limbajului ALGOL60).
36
LFA: C2 Ierarhia Chomsky

Ex.: G9 = (VN , VT , <program>, P ), unde


VN = {<program>, <instructiune>, <atribuire>, <if>, <expresie>, <termen>,
<factor>, <variabila>, <index>},
VT = { begin, end, if, then, stop, t, i, +, *, (, ), =, ,, ; },
P = {<program>begin <linie> end
<linie><linie>;<instructie> | <instructiune>
<instructiune><atribuire> | <if> | stop
<atribuire><variabila>=<expresie>
<if>if( <expresie>) then <atribuire>
<expresie><expresie> + <termen> | <termen>
<termen><termen> <factor> | <factor>
<factor>(<expresie>)| <variabila>
<variabila>t(<index>)|i
<index><index>, <expresie> | <expresie> } .

37
LFA: C2 Ierarhia Chomsky

Definitie 41
Gramatica de tip 3 (regulata):
Tipul 2: AaB sau ABa
Aa
unde: A,BVN , aVT
obs.: daca S P atunci S nu poate aparea n m. dr. al nici unei
productii din P,
productiile de tipul AaB ( ABa ) definesc o gramatica
regulata la dreapta (stanga); ele sunt echivalente,
f importante: descriu structura lexicala a limbajelor de
programare
Ex. ant.: G6= ({0,1}, {S,A} ,S,{S1A, A0A, A1A, A } ) , unde:
S 1 1A 2 10A 2 100A 3 1001A 2 10010A 3 100101A
3 1001011A 4 1001011
L6 = {1} . {0,1}* este limbajul reprezentarilor binare ale nr naturale
38
LFA: C2 Ierarhia Chomsky
Ierarhia lui Chomsky

Teorema 42
Notam cu:
L0 - multimea limbajelor generate de gramatici de tip 0
L1 - multimea limbajelor generate de gramatici de tip 1
L2 - multimea limbajelor generate de gramatici de tip 2
L3 - multimea limbajalor generate de gramatici de tip 3
Atunci:
L0 L1 L2 L3
Incluziunile nestricte: forma productiilor;
Incluziunile stricte: contraexemple.

39
LFA: C2 Ierarhia Chomsky

Definitii 43
Gramatica monotona: , || ||,
unde: , (VN VT )*
Gramatica lineara: AwBv,
unde: AVN,BVN {}, w,vVT
Gramatica -libera: o gramatica in care nu exista reguli de stergere
(productii de forma A )

Observatii 44
In gramaticile de tip 0 i 1 se admit productii de forma A cu
conditia ca A sa nu apara in m.dr. al niciunei productii;
Existenta/inexistenta regulilor de stergere poate modifica in mod
semnificativ puterea generativa a gramaticii.
40
LFA: C2 Ierarhia Chomsky

1. Alfabet, cuvant, operatii cu cuvinte


2. Limbaj, operatii cu limbaje
3. Gramatica; exemple
4. Clasificarea gramaticilor generative;
ierarhia lui Chomsky

41

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