Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din...

57
Limbaje Formale, Automate s ¸i Compilatoare Curs 6 2019-20 LFAC (2019-20) Curs 6 1 / 37

Transcript of Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din...

Page 1: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Limbaje Formale, Automate si Compilatoare

Curs 6

2019-20

LFAC (2019-20) Curs 6 1 / 37

Page 2: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Curs 6

1 Eliminarea redenumirilor din gramatici de tip 2

2 Forma normala Chomsky

3 Problema recunoasterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legatura dintre automatele pushdown si limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2019-20) Curs 6 2 / 37

Page 3: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Eliminarea redenumirilor din gramatici de tip 2

Curs 6

1 Eliminarea redenumirilor din gramatici de tip 2

2 Forma normala Chomsky

3 Problema recunoasterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legatura dintre automatele pushdown si limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2019-20) Curs 6 3 / 37

Page 4: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Eliminarea redenumirilor din gramatici de tip 2

Eliminarea redenumirilor (A → B, A,B ∈ N)

Intrare: G = (N,T ,S,P)

Iesire: G′ = (N,T ,S,P′), L(G′) = L(G), P′ nu contine redenumiri

for(A ∈ N){

N0 = {A}; i = 0;

do{

i = i + 1;

Ni = Ni−1 ∪ {C|C ∈ N, ∃B → C ∈ P,B ∈ Ni−1};

} while Ni 6= Ni−1;

NA = Ni ; //NA = {X ∈ N|A ⇒∗ X}

}

P′ = {X → α ∈ P|α 6∈ N}

for(X → α1|α2| . . . |αn ∈ P′)

for(A ∈ N && X ∈ NA,X 6= A)

P′ = P′ ∪ {A → α1|α2| . . . |αn}

LFAC (2019-20) Curs 6 4 / 37

Page 5: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Eliminarea redenumirilor din gramatici de tip 2

Exemplu

G = ({x , y , z}, {a, b, c}, x ,P), unde P:

x → y |ax |a

y → z|by |b

z → cz|c

Nx = {x , y , z}, Ny = {y , z}, Nz = {z}

Gramatica echivalenta fara redenumiri G′ = ({x , y , z}, {a, b, c}, x ,P ′)

unde P ′:

x → ax |a|by |b|cz|c

y → by |b|cz|c

z → cz|c

LFAC (2019-20) Curs 6 5 / 37

Page 6: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Forma normala Chomsky

Curs 6

1 Eliminarea redenumirilor din gramatici de tip 2

2 Forma normala Chomsky

3 Problema recunoasterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legatura dintre automatele pushdown si limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2019-20) Curs 6 6 / 37

Page 7: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Forma normala Chomsky

Forma normala Chomsky

Definitie 1

O gramatica este ın forma normala Chomsky daca regulile sale au

forma:

A → BC, A → a ( si eventual S → ǫ) (A,B,C ∈ N si a ∈ T).

Teorema 1

Orice limbaj independent de context poate fi generat de o gramatica ın

forma normala Chomsky.

LFAC (2019-20) Curs 6 7 / 37

Page 8: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Forma normala Chomsky

Demonstratie

Se elimina regulile de stergere si redenumirile

LFAC (2019-20) Curs 6 8 / 37

Page 9: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Forma normala Chomsky

Demonstratie

Se elimina regulile de stergere si redenumirile

Se elemina regulile care nu sunt ın forma normala Chomsky:Daca A → x1x2 . . . xn, n > 1 este o astfel de regula atunci oınlocuim cu A → Y1Y2 . . .Yn unde:

Yi = xi , daca xi ∈ N (neterminalii raman la fel)Yi = xa daca xi = a ∈ T (xa este neterminal nou) si se adaugaregula xa → a

LFAC (2019-20) Curs 6 8 / 37

Page 10: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Forma normala Chomsky

Demonstratie

Se elimina regulile de stergere si redenumirile

Se elemina regulile care nu sunt ın forma normala Chomsky:Daca A → x1x2 . . . xn, n > 1 este o astfel de regula atunci oınlocuim cu A → Y1Y2 . . .Yn unde:

Yi = xi , daca xi ∈ N (neterminalii raman la fel)Yi = xa daca xi = a ∈ T (xa este neterminal nou) si se adaugaregula xa → a

O regula de forma A → Y1Y2 . . .Yn , daca n > 2, o ınlocuim cu:A → Y1Z1

Z1 → Y2Z2

. . . . . .

Zn−3 → Yn−2Zn−2

Zn−2 → Yn−1Yn,unde Z1,Z2, . . . ,Zn−2 sunt neterminali noi.

LFAC (2019-20) Curs 6 8 / 37

Page 11: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Forma normala Chomsky

Exemplu

G = ({S,A}, {a, b, c},S,P), unde P:

S → aSb|cAc

A → cA|c

Gramatica echivalenta ın forma normala Chomsky

G = ({S,A, xa, xb,Z1,Z2}, {a, b, c},S,P ′), unde P ′:

S → xaZ1|xcZ2

Z1 → Sxb

Z2 → Axc

A → xcA|c

xa → a

xb → b

xc → cLFAC (2019-20) Curs 6 9 / 37

Page 12: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Problema recunoasterii: algoritmul Cocke Younger Kasami

Curs 6

1 Eliminarea redenumirilor din gramatici de tip 2

2 Forma normala Chomsky

3 Problema recunoasterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legatura dintre automatele pushdown si limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2019-20) Curs 6 10 / 37

Page 13: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Problema recunoasterii: algoritmul Cocke Younger Kasami

Algoritmul Cocke Younger Kasami (CYK)

Problema recunoasterii ın gramatici de tip 2: data o gramatica de

tip 2 si un cuvant w, sa se decida daca w ∈ L(G)

Problema recunoasterii ın gramatici ın forma normala Chomsky se

poate rezolva cu algoritmul CYK ın timp O(n3).

Daca w = a1a2 . . . an atunci se constuiesc multimile

Vij = {A|A ⇒+ aiai+1 . . . ai+j−1}

inductiv pentru j = 1, . . . , n

w ∈ L(G) ⇔ S ∈ V1n

LFAC (2019-20) Curs 6 11 / 37

Page 14: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Problema recunoasterii: algoritmul Cocke Younger Kasami

Algoritmul Cocke Younger Kasami

Pentru j = 1:

Vi1 = {A|A ⇒+ ai} = {A|∃A → ai ∈ P}

Pentru j > 1, Vij :

Daca A ⇒+ aiai+1 . . . ai+j−1:

A ⇒ BC ⇒+ aiai+1 . . . ai+j−1 si

B ⇒+ aiai+1 . . . ai+k−1 (B ∈ Vik )

C ⇒+ ai+k ai+k+1 . . . ai+j−1 (C ∈ Vi+k j−k )

unde 1 ≤ i ≤ n + 1 − j , 1 ≤ k ≤ j − 1

Vij =⋃j−1

k=1{A|A → BC ∈ P,B ∈ Vik ,C ∈ Vi+k j−k}

LFAC (2019-20) Curs 6 12 / 37

Page 15: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Problema recunoasterii: algoritmul Cocke Younger Kasami

Algoritmul Cocke Younger Kasami

Notatie:

{A|A → BC ∈ P,B ∈ Vik ,C ∈ Vi+k j−k} = Vik ◦ Vi+k j−k

Atunci:

pentru 2 ≤ j ≤ n, 1 ≤ i ≤ n + 1 − j :

Vij =

j−1⋃

k=1

(Vik ◦ Vi+k j−k )

LFAC (2019-20) Curs 6 13 / 37

Page 16: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Problema recunoasterii: algoritmul Cocke Younger Kasami

Algoritmul Cocke Younger Kasami

Intrare: G = (N,T ,S,P) ın forma normala Chomsky, w = a1a2 . . . an

Iesire: w ∈ L(G)?

for(i=1; i<=n; i++)

Vi1 = {A|∃A → ai ∈ P};

for(j=2; j<=n; j++)

for (i=1; i<=n+1-j; i++){

Vij = ∅;

for(k=1; k<=j-1; k++)

Vij = Vij ∪ (Vik ◦ Vi+k j−k );

}

if(S ∈ V1n) w ∈ L(G) else w 6∈ L(G)

LFAC (2019-20) Curs 6 14 / 37

Page 17: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Problema recunoasterii: algoritmul Cocke Younger Kasami

Exemplu

G = ({S,X ,Y ,Z}, {a, b, c},S,P), unde P:

S → XY

X → XY |a

Y → YZ |a|b

Z → c

w = abc

LFAC (2019-20) Curs 6 15 / 37

Page 18: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Problema recunoasterii: algoritmul Cocke Younger Kasami

Exemplu

G = ({S,X ,Y ,Z}, {a, b, c},S,P), unde P:

S → XY

X → XY |a

Y → YZ |a|b

Z → c

w = abc

V11 = {X ,Y} V12 = {S,X} V13 = {S,X}

V21 = {Y} V22 = {Y}

V31 = {Z}

S ∈ V13 ⇔ abc ∈ L(G)

LFAC (2019-20) Curs 6 15 / 37

Page 19: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Curs 6

1 Eliminarea redenumirilor din gramatici de tip 2

2 Forma normala Chomsky

3 Problema recunoasterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legatura dintre automatele pushdown si limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2019-20) Curs 6 16 / 37

Page 20: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Automate pushdown

Automat finit + memorie pushdown (stiva)

Model fizic:

LFAC (2019-20) Curs 6 17 / 37

Page 21: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Automate pushdown-definitie

Definitie 2

Un automat pushdown este un 7-uplu: M = (Q,Σ, Γ, δ, q0, z0,F ):

Q este multimea (finita) a starilor

Σ este alfabetul de intrare

Γ este alfabetul memoriei pushdown (stivei)

q0 ∈ Q este starea initiala

z0 ∈ Γ este simbolul initial din stiva

F ⊆ Q este multimea starilor finale

δ : Q × (Σ ∪ {ǫ})× Γ → 2Q×Γ∗

Modelul este nedeterminist

LFAC (2019-20) Curs 6 18 / 37

Page 22: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Configuratia unui automat pushdown

Configuratie: (q,w , γ) ∈ Q × Σ∗ × Γ∗

1 : γ (primul simbol din γ) reprezinta varful stivei

LFAC (2019-20) Curs 6 19 / 37

Page 23: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Automate pushdown

Configuratie initiala: (q0,w , z0) ∈ Q × Σ∗ × Γ∗

LFAC (2019-20) Curs 6 20 / 37

Page 24: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Relatia de tranzitie ıntre configuratii

Configuratia curenta (q, aw , zβ) si (q′, α) ∈ δ(q, a, z)

(q, q′ ∈ Q, a ∈ Σ ∪ {ǫ}, z ∈ Γ, α, β ∈ Γ∗)

LFAC (2019-20) Curs 6 21 / 37

Page 25: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Relatia de tranzitie ıntre configuratii

(q, aw , zβ) ⊢ (q′,w , αβ)

LFAC (2019-20) Curs 6 22 / 37

Page 26: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Relatia de tranzitie ıntre configuratii

Fie M = (Q,Σ, Γ, δ, q0, z0,F ) un automat pushdown.

Relatia de tranzitie ıntre configuratii:

(q, aw , zβ) ⊢ (q′,w , αβ) daca (q′, α) ∈ δ(q, a, z)

(q, q′ ∈ Q, a ∈ Σ ∪ {ǫ}, z ∈ Γ, α, β ∈ Γ∗)

Calcul: ınchiderea reflexiva si tranzitiva a relatiei de mai sus: daca

C1, . . . ,Cn configuratii astfel ıncat:

C1 ⊢ C2 ⊢ . . . ⊢ Cn

se scrie: C1 ⊢+ Cn daca n ≥ 2, C1 ⊢∗ Cn, daca n ≥ 1

LFAC (2019-20) Curs 6 23 / 37

Page 27: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Limbajul recunoscut

Prin stari finale (daca F 6= ∅)

L(M) = {w ∈ Σ∗|(q0,w , z0) ⊢∗ (q, ǫ, γ), q ∈ F , γ ∈ Γ∗}

Prin golirea stivei (daca F = ∅)

Lǫ(M) = {w ∈ Σ∗|(q0,w , z0) ⊢∗ (q, ǫ, ǫ), q ∈ Q}

LFAC (2019-20) Curs 6 24 / 37

Page 28: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Exemplu

Automat care recunoaste limbajul {anbn|n ≥ 1}:

M = ({q0, q1, q2}, {a, b}, {a, z}, δ, q0, z, {q2})

1 δ(q0, a, z) = {(q0, az)}

2 δ(q0, a, a) = {(q0, aa)}

3 δ(q0, b, a) = {(q1, ǫ)}

4 δ(q1, b, a) = {(q1, ǫ)}

5 δ(q1, ǫ, z) = {(q2, ǫ)}

LFAC (2019-20) Curs 6 25 / 37

Page 29: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Exemple

Un automat pushdown ce recunoaste limbajul {wawR |w ∈ {0, 1}∗}

LFAC (2019-20) Curs 6 26 / 37

Page 30: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Exemple

Un automat pushdown ce recunoaste limbajul {wawR |w ∈ {0, 1}∗}

Fiecare 0 sau 1 citit se introduce ın stiva

a la intrare produce pregatirea scoaterii a cate un simbol din stiva daca el

coincide cu cel din intrare

LFAC (2019-20) Curs 6 26 / 37

Page 31: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Exemple

Un automat pushdown ce recunoaste limbajul {wawR |w ∈ {0, 1}∗}

Fiecare 0 sau 1 citit se introduce ın stiva

a la intrare produce pregatirea scoaterii a cate un simbol din stiva daca el

coincide cu cel din intrare

M = ({q0, q1, q2}, {0, 1, a}, {0, 1, z}, δ, q0, z, {q2})

1 δ(q0, i , z) = {(q0, iz)}, (i ∈ {0,1})2 δ(q0, i , j) = {(q0, ij)}, (i , j ∈ {0,1})3 δ(q0,a, i) = {(q1, i)}4 δ(q1, i , i) = {(q1, ǫ)}5 δ(q1, ǫ, z) = {(q2, ǫ)}

LFAC (2019-20) Curs 6 26 / 37

Page 32: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Exemple

Un automat pushdown ce recunoaste limbajul {wawR |w ∈ {0, 1}∗}

Fiecare 0 sau 1 citit se introduce ın stiva

a la intrare produce pregatirea scoaterii a cate un simbol din stiva daca el

coincide cu cel din intrare

M = ({q0, q1, q2}, {0, 1, a}, {0, 1, z}, δ, q0, z, {q2})

1 δ(q0, i , z) = {(q0, iz)}, (i ∈ {0,1})2 δ(q0, i , j) = {(q0, ij)}, (i , j ∈ {0,1})3 δ(q0,a, i) = {(q1, i)}4 δ(q1, i , i) = {(q1, ǫ)}5 δ(q1, ǫ, z) = {(q2, ǫ)}

Un automat pushdown ce recunoaste limbajul {wwR |w ∈ {0, 1}∗} ?

LFAC (2019-20) Curs 6 26 / 37

Page 33: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Exemple

Un automat pushdown ce recunoaste limbajul {wawR |w ∈ {0, 1}∗}

Fiecare 0 sau 1 citit se introduce ın stiva

a la intrare produce pregatirea scoaterii a cate un simbol din stiva daca el

coincide cu cel din intrare

M = ({q0, q1, q2}, {0, 1, a}, {0, 1, z}, δ, q0, z, {q2})

1 δ(q0, i , z) = {(q0, iz)}, (i ∈ {0,1})2 δ(q0, i , j) = {(q0, ij)}, (i , j ∈ {0,1})3 δ(q0,a, i) = {(q1, i)}4 δ(q1, i , i) = {(q1, ǫ)}5 δ(q1, ǫ, z) = {(q2, ǫ)}

Un automat pushdown ce recunoaste limbajul {wwR |w ∈ {0, 1}∗} ?

Un automat pushdown ce recunoaste limbajul {ww |w ∈ {0, 1}∗} ?

LFAC (2019-20) Curs 6 26 / 37

Page 34: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Echivalenta definitiilor privind recunoasterea

Teorema 2

Pentru orice automat pushdown M cu F = ∅, exista un automat

pushdown M ′ cu stari finale astfel ca L(M ′) = Lǫ(M).

LFAC (2019-20) Curs 6 27 / 37

Page 35: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Echivalenta definitiilor privind recunoasterea

Teorema 2

Pentru orice automat pushdown M cu F = ∅, exista un automat

pushdown M ′ cu stari finale astfel ca L(M ′) = Lǫ(M).

Daca M = (Q,Σ, Γ, δ, q0, z0, ∅), consideram

M ′ = (Q ∪ {qf , q′0},Σ, Γ ∪ {z ′

0}, δ′, q′

0, z′0, {qf}) cu δ′:

LFAC (2019-20) Curs 6 27 / 37

Page 36: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Echivalenta definitiilor privind recunoasterea

Teorema 2

Pentru orice automat pushdown M cu F = ∅, exista un automat

pushdown M ′ cu stari finale astfel ca L(M ′) = Lǫ(M).

Daca M = (Q,Σ, Γ, δ, q0, z0, ∅), consideram

M ′ = (Q ∪ {qf , q′0},Σ, Γ ∪ {z ′

0}, δ′, q′

0, z′0, {qf}) cu δ′:

1 δ′(q′0, ǫ, z

′0) = {(q0, z0z ′

0)} (fara sa citeasca niciun simbol, M ′ trece

ın configuratia initiala a lui M)

LFAC (2019-20) Curs 6 27 / 37

Page 37: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Echivalenta definitiilor privind recunoasterea

Teorema 2

Pentru orice automat pushdown M cu F = ∅, exista un automat

pushdown M ′ cu stari finale astfel ca L(M ′) = Lǫ(M).

Daca M = (Q,Σ, Γ, δ, q0, z0, ∅), consideram

M ′ = (Q ∪ {qf , q′0},Σ, Γ ∪ {z ′

0}, δ′, q′

0, z′0, {qf}) cu δ′:

1 δ′(q′0, ǫ, z

′0) = {(q0, z0z ′

0)} (fara sa citeasca niciun simbol, M ′ trece

ın configuratia initiala a lui M)

2 δ′(q, a, z) = δ(q, a, z), ∀q ∈ Q, a ∈ Σ ∪ {ǫ}, z ∈ Γ (M ′ face

aceleasi tranzitii ca si M)

LFAC (2019-20) Curs 6 27 / 37

Page 38: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Echivalenta definitiilor privind recunoasterea

Teorema 2

Pentru orice automat pushdown M cu F = ∅, exista un automat

pushdown M ′ cu stari finale astfel ca L(M ′) = Lǫ(M).

Daca M = (Q,Σ, Γ, δ, q0, z0, ∅), consideram

M ′ = (Q ∪ {qf , q′0},Σ, Γ ∪ {z ′

0}, δ′, q′

0, z′0, {qf}) cu δ′:

1 δ′(q′0, ǫ, z

′0) = {(q0, z0z ′

0)} (fara sa citeasca niciun simbol, M ′ trece

ın configuratia initiala a lui M)

2 δ′(q, a, z) = δ(q, a, z), ∀q ∈ Q, a ∈ Σ ∪ {ǫ}, z ∈ Γ (M ′ face

aceleasi tranzitii ca si M)

3 δ′(q, ǫ, z ′0) = {(qf , ǫ)}, ∀q ∈ Q (M ′ va trece ın starea finala doar

daca stiva lui M este vida)

LFAC (2019-20) Curs 6 27 / 37

Page 39: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Echivalenta definitiilor privind recunoasterea

Teorema 3

Pentru orice automat pushdown M cu F 6= ∅, exista un automat

pushdown M ′ cu F = ∅ astfel ca Lǫ(M ′) = L(M).

LFAC (2019-20) Curs 6 28 / 37

Page 40: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Echivalenta definitiilor privind recunoasterea

Teorema 3

Pentru orice automat pushdown M cu F 6= ∅, exista un automat

pushdown M ′ cu F = ∅ astfel ca Lǫ(M ′) = L(M).

Daca M = (Q,Σ, Γ, δ, q0, z0,F ), consideram

M ′ = (Q ∪ {qǫ, q′0},Σ, Γ ∪ {z ′

0}, δ′, q′

0, z′0, ∅)

LFAC (2019-20) Curs 6 28 / 37

Page 41: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Demonstratie

M ′ = (Q ∪ {qǫ, q′0},Σ, Γ ∪ {z ′

0}, δ′, q′

0, z′0, ∅), cu δ′:

LFAC (2019-20) Curs 6 29 / 37

Page 42: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Demonstratie

M ′ = (Q ∪ {qǫ, q′0},Σ, Γ ∪ {z ′

0}, δ′, q′

0, z′0, ∅), cu δ′:

1 δ′(q′0, ǫ, z

′0) = {(q0, z0z ′

0)} (fara sa citeasca niciun simbol, M ′ trece

ın configuratia initiala a lui M)

LFAC (2019-20) Curs 6 29 / 37

Page 43: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Demonstratie

M ′ = (Q ∪ {qǫ, q′0},Σ, Γ ∪ {z ′

0}, δ′, q′

0, z′0, ∅), cu δ′:

1 δ′(q′0, ǫ, z

′0) = {(q0, z0z ′

0)} (fara sa citeasca niciun simbol, M ′ trece

ın configuratia initiala a lui M)2 a) δ′(q,a, z) = δ(q,a, z), ∀q ∈ Q, a ∈ Σ, z ∈ Γ (M ′ face aceleasi

tranzitii ca si M, pentru orice simbol ıntalnit)b) δ′(q, ǫ, z) = δ(q, ǫ, z), daca q ∈ Q \ F , z ∈ Γ (se fac aceleasi

ǫ-tranzitii ca ın M, daca starea nu este finala )c) δ′(q, ǫ, z) = δ(q, ǫ, z) ∪ {(qǫ, ǫ)}, q ∈ F , z ∈ Γ (daca M ajunge ıntr-o

stare finala, M ′ poate trece ıntr-o stare speciala )

LFAC (2019-20) Curs 6 29 / 37

Page 44: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Demonstratie

M ′ = (Q ∪ {qǫ, q′0},Σ, Γ ∪ {z ′

0}, δ′, q′

0, z′0, ∅), cu δ′:

1 δ′(q′0, ǫ, z

′0) = {(q0, z0z ′

0)} (fara sa citeasca niciun simbol, M ′ trece

ın configuratia initiala a lui M)2 a) δ′(q,a, z) = δ(q,a, z), ∀q ∈ Q, a ∈ Σ, z ∈ Γ (M ′ face aceleasi

tranzitii ca si M, pentru orice simbol ıntalnit)b) δ′(q, ǫ, z) = δ(q, ǫ, z), daca q ∈ Q \ F , z ∈ Γ (se fac aceleasi

ǫ-tranzitii ca ın M, daca starea nu este finala )c) δ′(q, ǫ, z) = δ(q, ǫ, z) ∪ {(qǫ, ǫ)}, q ∈ F , z ∈ Γ (daca M ajunge ıntr-o

stare finala, M ′ poate trece ıntr-o stare speciala )

3 δ′(q, ǫ, z ′0) = {(qǫ, ǫ)}, daca q ∈ F ( cazul 2(c), ın situatia ın care ın

stiva este z ′0)

LFAC (2019-20) Curs 6 29 / 37

Page 45: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown

Demonstratie

M ′ = (Q ∪ {qǫ, q′0},Σ, Γ ∪ {z ′

0}, δ′, q′

0, z′0, ∅), cu δ′:

1 δ′(q′0, ǫ, z

′0) = {(q0, z0z ′

0)} (fara sa citeasca niciun simbol, M ′ trece

ın configuratia initiala a lui M)2 a) δ′(q,a, z) = δ(q,a, z), ∀q ∈ Q, a ∈ Σ, z ∈ Γ (M ′ face aceleasi

tranzitii ca si M, pentru orice simbol ıntalnit)b) δ′(q, ǫ, z) = δ(q, ǫ, z), daca q ∈ Q \ F , z ∈ Γ (se fac aceleasi

ǫ-tranzitii ca ın M, daca starea nu este finala )c) δ′(q, ǫ, z) = δ(q, ǫ, z) ∪ {(qǫ, ǫ)}, q ∈ F , z ∈ Γ (daca M ajunge ıntr-o

stare finala, M ′ poate trece ıntr-o stare speciala )

3 δ′(q, ǫ, z ′0) = {(qǫ, ǫ)}, daca q ∈ F ( cazul 2(c), ın situatia ın care ın

stiva este z ′0)

4 δ′(qǫ, ǫ, z) = {(qǫ, ǫ)}, daca z ∈ Γ ∪ {z ′0} ( M ′ ramane ın starea qǫ

si se extrage varful stivei)LFAC (2019-20) Curs 6 29 / 37

Page 46: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Legatura dintre automatele pushdown si limbajele de tip 2

Curs 6

1 Eliminarea redenumirilor din gramatici de tip 2

2 Forma normala Chomsky

3 Problema recunoasterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legatura dintre automatele pushdown si limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2019-20) Curs 6 30 / 37

Page 47: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Legatura dintre automatele pushdown si limbajele de tip 2

Automatul pushdown echivalent cu o gramatica de tip

2

Teorema 4

Pentru orice gramatica G exista un automat pushdown M fara stari

finale astfel ıncat Lǫ(M) = L(G)

LFAC (2019-20) Curs 6 31 / 37

Page 48: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Legatura dintre automatele pushdown si limbajele de tip 2

Automatul pushdown echivalent cu o gramatica de tip

2

Teorema 4

Pentru orice gramatica G exista un automat pushdown M fara stari

finale astfel ıncat Lǫ(M) = L(G)

Fie G = (N,T ,S,P)

Construim M = ({q},T ,N ∪ T , δ, q,S, ∅) unde:1 δ(q, ǫ,A) = {(q, β)|A → β ∈ P}, ∀A ∈ N2 δ(q,a,a) = {(q, ǫ)}, ∀a ∈ T3 δ(q, x , y) = ∅, ın restul cazurilor

w ∈ L(G) ⇔ S ⇒+ w ⇔ (q,w ,S) ⊢+ (q, ǫ, ǫ) ⇔ w ∈ Lǫ(M)

M simuleaza derivarile extrem stangi din G

LFAC (2019-20) Curs 6 31 / 37

Page 49: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Legatura dintre automatele pushdown si limbajele de tip 2

Exemplu

G = ({x}, {a, b}, x , {x → axb, x → ab})

Automatul pushdown echivalent:

M = ({q}, {a, b}, {a, b, x}, δ, q, x , ∅)

1 δ(q, ǫ, x) = {(q,axb), (q,ab)}2 δ(q,a,a) = {(q, ǫ)}3 δ(q,b,b) = {(q, ǫ)}

LFAC (2019-20) Curs 6 32 / 37

Page 50: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Legatura dintre automatele pushdown si limbajele de tip 2

Gramatica echivalenta cu un automat pushdown

Teorema 5

Pentru orice automat pushdown M exista o gramatica G astfel ıncat

L(G) = Lǫ(M)

LFAC (2019-20) Curs 6 33 / 37

Page 51: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Legatura dintre automatele pushdown si limbajele de tip 2

Gramatica echivalenta cu un automat pushdown

Teorema 5

Pentru orice automat pushdown M exista o gramatica G astfel ıncat

L(G) = Lǫ(M)

Fie M = (Q,Σ, Γ, δ, q0, z0, ∅)

Construim G = (N,Σ,S,P) astfel:- N = {[qzp]|p,q ∈ Q, z ∈ Γ} ∪ {S}

- P contine toate regulile de forma:S → [q0z0q], ∀q ∈ Q

daca (p, ǫ) ∈ δ(q, a, z), atunci:

[qzp] → a

daca (p, z1z2 . . . zm) ∈ δ(q, a, z), atunci, pentru orice secventa de

stari q1, . . . , qm ∈ Q :

[qzqm] → a[pz1q1][q1z2q2] . . . [qm−1zmqm]

Are loc: [qzp] ⇒+ w ⇔ (q,w , z) ⊢+ (p, ǫ, ǫ)LFAC (2019-20) Curs 6 33 / 37

Page 52: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown deterministe

Curs 6

1 Eliminarea redenumirilor din gramatici de tip 2

2 Forma normala Chomsky

3 Problema recunoasterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legatura dintre automatele pushdown si limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2019-20) Curs 6 34 / 37

Page 53: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown deterministe

Automate pushdown deterministe

Definitie 3

Automatul pushdown M = (Q,Σ, Γ, δ, q0, z0,F ) este determinist daca

functia de tranzitie δ : Q × (Γ ∪ {ǫ})× Γ −→ 2Q×Γ∗ ındeplineste

conditiile:

1 |δ(q, a, z)| = 1, ∀a ∈ Σ ∪ {ǫ}, ∀q ∈ Q, ∀z ∈ Γ

2 Daca δ(q, ǫ, z) 6= ∅ atunci δ(q, a, z) = ∅, ∀a ∈ Σ

Un automat pushdown determinist poate avea ǫ-tranziii

LFAC (2019-20) Curs 6 35 / 37

Page 54: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown deterministe

Automate pushdown deterministe

Definitie 3

Automatul pushdown M = (Q,Σ, Γ, δ, q0, z0,F ) este determinist daca

functia de tranzitie δ : Q × (Γ ∪ {ǫ})× Γ −→ 2Q×Γ∗ ındeplineste

conditiile:

1 |δ(q, a, z)| = 1, ∀a ∈ Σ ∪ {ǫ}, ∀q ∈ Q, ∀z ∈ Γ

2 Daca δ(q, ǫ, z) 6= ∅ atunci δ(q, a, z) = ∅, ∀a ∈ Σ

Un automat pushdown determinist poate avea ǫ-tranziiiM = ({q0, q1, q2}, {0, 1, a}, {0, 1, z}, δ, q0, z, {q2})

1 δ(q0, i, z) = {(q0, iz)}, (i ∈ {0, 1})2 δ(q0, i, j) = {(q0, ij)}, (i, j ∈ {0, 1})3 δ(q0, a, i) = {(q1, i)}4 δ(q1, i, i) = {(q1, ǫ)}

5 δ(q1, ǫ, z) = {(q2, ǫ)}

L(M) = {wawR |w ∈ {0, 1}∗}LFAC (2019-20) Curs 6 35 / 37

Page 55: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown deterministe

L2DET - Limbaje de tip 2 deterministe

L2DET = {L|∃M automat pushdown determinist astfel ca L = L(M)}.

Clasa L2DET este o clasa proprie a clasei de limbaje L2

(L2DET ⊂ L2).

{wwR|w ∈ {0, 1}∗} ∈ L2 \ L2DET

LFAC (2019-20) Curs 6 36 / 37

Page 56: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown deterministe

L2DET - Limbaje de tip 2 deterministe

L2DET = {L|∃M automat pushdown determinist astfel ca L = L(M)}.

Clasa L2DET este o clasa proprie a clasei de limbaje L2

(L2DET ⊂ L2).

{wwR|w ∈ {0, 1}∗} ∈ L2 \ L2DETM = ({q0, q1, q2}, {0, 1}, {0, 1, z}, δ, q0, z, {q2})

1 δ(q0, i, z) = {(q0, iz)}, (i ∈ {0, 1})2 δ(q0, i, j) = {(q0, ij)}, (i, j ∈ {0, 1}, i 6= j)3 δ(q0, i, i) = {(q0, ii), (q1, ǫ)}

4 δ(q1, i, i) = {(q1, ǫ)}

5 δ(q1, ǫ, z) = {(q2, ǫ)}

LFAC (2019-20) Curs 6 36 / 37

Page 57: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac6.pdfEliminarea redenumirilor din gramatici de tip 2 Curs 6 1 Eliminarea redenumirilor din gramatici de tip 2 2 Forma

Automate pushdown deterministe

L2DET - Limbaje de tip 2 deterministe

Definitie 4

O gramatica G este determinista daca:

Orice regula este de forma A → aα, unde a ∈ T iar α ∈ (N ∪ T )∗

Pentru orice A ∈ N, daca A → aα , A → bα′ sunt reguli, atunci

a 6= b

Pentru orice gramatica determinista G exista un automat pushdown

determinist M astfel ca L(G) = L(M)

LFAC (2019-20) Curs 6 37 / 37