Sunteți pe pagina 1din 50

Limbaje Formale, Automate şi Compilatoare

Curs 6

2020-21

LFAC (2020-21) Curs 6 1 / 38


Curs 6

1 Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

2 Forma normală Chomsky

3 Problema recunoaşterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legătura dintre automatele pushdown şi limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2020-21) Curs 6 2 / 38


Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

Curs 6

1 Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

2 Forma normală Chomsky

3 Problema recunoaşterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legătura dintre automatele pushdown şi limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2020-21) Curs 6 3 / 38


Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

Eliminarea regulilor de ştergere

Intrare: G = (N, T , S, P)
Ieşire: G′ = (N, T , S, P ′ ), L(G′ ) = L(G), P ′ nu conţine reguli de ştergere
(reguli de forma A → ǫ)

N0 = {A|A ∈ N, A → ǫ ∈ P}; i = 0;
do {
i = i + 1;

Ni = Ni−1 ∪ {X |X ∈ N, ∃X → α ∈ P, α ∈ Ni−1 };
} while Ni 6= Ni−1 ;
Nǫ = Ni ;

LFAC (2020-21) Curs 6 4 / 38


Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

Eliminarea regulilor de ştergere

Intrare: G = (N, T , S, P)
Ieşire: G′ = (N, T , S, P ′ ), L(G′ ) = L(G), P ′ nu conţine reguli de ştergere
(reguli de forma A → ǫ)

N0 = {A|A ∈ N, A → ǫ ∈ P}; i = 0;
do {
i = i + 1;

Ni = Ni−1 ∪ {X |X ∈ N, ∃X → α ∈ P, α ∈ Ni−1 };
} while Ni 6= Ni−1 ;
Nǫ = Ni ;

Are loc:
N0 ⊆ N1 . . . ⊆ Ni ⊆ Ni+1 ⊆ . . . Nǫ ⊆ N
A ∈ Nǫ ⇐⇒ A⇒+ ǫ
LFAC (2020-21) Curs 6 4 / 38
Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

Eliminarea regulilor de ştergere

P ′ se obţine din P astfel:


ı̂n fiecare regulă A → α ∈ P se pun ı̂n evidenţă simbolurile din Nǫ
ce apar ı̂n α:

α = α1 X1 α2 X2 . . . αn Xn αn+1 , Xi ∈ Nǫ

se ı̂nlocuieşte fiecare regulă de acest fel cu mulţimea de reguli de


forma

A → α1 Y1 α2 Y2 . . . αn Yn αn+1 unde Yi = Xi sau Yi = ǫ

ı̂n toate modurile posibile (2n )


se elimină toate regulile de ştergere
pentru a obţine cuvântul nul (dacă S este ı̂n Nǫ ) se adaugă S ′
simbol de start nou şi regulile S ′ → S, S ′ → ǫ
LFAC (2020-21) Curs 6 5 / 38
Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

Exemplu

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


S → aAbC|BC
A → aA|aB
B → bB|C
C → cC|ǫ
G = ({S ′ , S, A, B, C}, {a, b, c}, S ′ , P ′ ) unde P ′ :

S ′ → S|ǫ
S → aAbC|aAb|B|C
A → aA|aB|a
B → bB|b|C
C → cC|c

LFAC (2020-21) Curs 6 6 / 38


Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

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

Intrare: G = (N, T , S, P)
Ieşire: G′ = (N, T , S, P ′ ), L(G′ ) = L(G), P ′ nu conţine 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 (2020-21) Curs 6 7 / 38
Eliminarea regulilor de ştergere şi 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 echivalentă fără 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 (2020-21) Curs 6 8 / 38


Forma normală Chomsky

Curs 6

1 Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

2 Forma normală Chomsky

3 Problema recunoaşterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legătura dintre automatele pushdown şi limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2020-21) Curs 6 9 / 38


Forma normală Chomsky

Forma normală Chomsky

Definiţie 1
O gramatică este ı̂n formă normală Chomsky dacă regulile sale au
forma:
A → BC, A → a ( şi eventual S → ǫ) (A, B, C ∈ N şi a ∈ T ).

Teorema 1
Orice limbaj independent de context poate fi generat de o gramatică ı̂n
formă normală Chomsky.

LFAC (2020-21) Curs 6 10 / 38


Forma normală Chomsky

Demonstraţie

Se elimină regulile de ştergere şi redenumirile

LFAC (2020-21) Curs 6 11 / 38


Forma normală Chomsky

Demonstraţie

Se elimină regulile de ştergere şi redenumirile


Se elemină regulile care nu sunt ı̂n formă normală Chomsky:
Dacă A → x1 x2 . . . xn , n > 1 este o astfel de regulă atunci o
ı̂nlocuim cu A → Y1 Y2 . . . Yn unde:
Yi = xi , dacă xi ∈ N (neterminalii rămân la fel)
Yi = xa dacă xi = a ∈ T (xa este neterminal nou) şi se adaugă
regula xa → a

LFAC (2020-21) Curs 6 11 / 38


Forma normală Chomsky

Demonstraţie

Se elimină regulile de ştergere şi redenumirile


Se elemină regulile care nu sunt ı̂n formă normală Chomsky:
Dacă A → x1 x2 . . . xn , n > 1 este o astfel de regulă atunci o
ı̂nlocuim cu A → Y1 Y2 . . . Yn unde:
Yi = xi , dacă xi ∈ N (neterminalii rămân la fel)
Yi = xa dacă xi = a ∈ T (xa este neterminal nou) şi se adaugă
regula xa → a
O regulă de forma A → Y1 Y2 . . . Yn , dacă n > 2, o ı̂nlocuim cu:
A → Y1 Z1
Z1 → Y2 Z2
......
Zn−3 → Yn−2 Zn−2
Zn−2 → Yn−1 Yn ,
unde Z1 , Z2 , . . . , Zn−2 sunt neterminali noi.
LFAC (2020-21) Curs 6 11 / 38
Forma normală Chomsky

Exemplu

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


S → aSb|cAc
A → cA|c
Gramatica echivalentă ı̂n formă normală Chomsky
G = ({S, A, xa , xb , Z1 , Z2 }, {a, b, c}, S, P ′ ), unde P ′ :
S → xa Z1 |xc Z2
Z1 → Sxb
Z2 → Axc
A → xc A|c
xa → a
xb → b
xc → c
LFAC (2020-21) Curs 6 12 / 38
Problema recunoaşterii: algoritmul Cocke Younger Kasami

Curs 6

1 Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

2 Forma normală Chomsky

3 Problema recunoaşterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legătura dintre automatele pushdown şi limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2020-21) Curs 6 13 / 38


Problema recunoaşterii: algoritmul Cocke Younger Kasami

Algoritmul Cocke Younger Kasami (CYK)

Problema recunoaşterii ı̂n gramatici de tip 2: dată o gramatică de


tip 2 si un cuvânt w, să se decidă dacă w ∈ L(G)
Problema recunoaşterii ı̂n gramatici ı̂n formă normală Chomsky se
poate rezolva cu algoritmul CYK ı̂n timp O(n3 ).

Dacă w = a1 a2 . . . an atunci se constuiesc mulţimile

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

inductiv pentru j = 1, . . . , n

w ∈ L(G) ⇔ S ∈ V1n

LFAC (2020-21) Curs 6 14 / 38


Problema recunoaşterii: algoritmul Cocke Younger Kasami

Algoritmul Cocke Younger Kasami

Pentru j = 1:
Vi1 = {A|A ⇒+ ai } = {A|∃A → ai ∈ P}

Pentru j > 1, Vij :


Dacă A ⇒+ ai ai+1 . . . ai+j−1 :
A ⇒ BC ⇒+ ai ai+1 . . . ai+j−1 şi
B ⇒+ ai ai+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
Sj−1
Vij = k=1 {A|A → BC ∈ P, B ∈ Vik , C ∈ Vi+k j−k }

LFAC (2020-21) Curs 6 15 / 38


Problema recunoaşterii: algoritmul Cocke Younger Kasami

Algoritmul Cocke Younger Kasami

Notaţie:

{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 :

[
j−1
Vij = (Vik ◦ Vi+k j−k )
k =1

LFAC (2020-21) Curs 6 16 / 38


Problema recunoaşterii: algoritmul Cocke Younger Kasami

Algoritmul Cocke Younger Kasami

Intrare: G = (N, T , S, P) ı̂n formă normală Chomsky, w = a1 a2 . . . an


Ieşire: 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 (2020-21) Curs 6 17 / 38


Problema recunoaşterii: 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 (2020-21) Curs 6 18 / 38


Problema recunoaşterii: 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 (2020-21) Curs 6 18 / 38


Automate pushdown

Curs 6

1 Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

2 Forma normală Chomsky

3 Problema recunoaşterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legătura dintre automatele pushdown şi limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2020-21) Curs 6 19 / 38


Automate pushdown

Automate pushdown

Automat finit + memorie pushdown (stiva)


Model fizic:

LFAC (2020-21) Curs 6 20 / 38


Automate pushdown

Automate pushdown-definiţie

Definiţie 2
Un automat pushdown este un 7-uplu: M = (Q, Σ, Γ, δ, q0 , z0 , F ):
Q este mulţimea (finită) a stărilor
Σ este alfabetul de intrare
Γ este alfabetul memoriei pushdown (stivei)
q0 ∈ Q este starea iniţială
z0 ∈ Γ este simbolul iniţial din stivă
F ⊆ Q este mulţimea stărilor finale

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

Modelul este nedeterminist


LFAC (2020-21) Curs 6 21 / 38
Automate pushdown

Configuraţia unui automat pushdown

Configuraţie: (q, w, γ) ∈ Q × Σ∗ × Γ∗

1 : γ (primul simbol din γ) reprezintă vârful stivei

LFAC (2020-21) Curs 6 22 / 38


Automate pushdown

Automate pushdown

Configuraţie iniţială: (q0 , w, z0 ) ∈ Q × Σ∗ × Γ∗

LFAC (2020-21) Curs 6 23 / 38


Automate pushdown

Relaţia de tranziţie ı̂ntre configuraţii

Configuraţia curentă (q, aw, zβ) şi (q ′ , α) ∈ δ(q, a, z)


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

LFAC (2020-21) Curs 6 24 / 38


Automate pushdown

Relaţia de tranziţie ı̂ntre configuraţii

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

LFAC (2020-21) Curs 6 25 / 38


Automate pushdown

Relaţia de tranziţie ı̂ntre configuraţii

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

Relaţia de tranziţie ı̂ntre configuraţii:


(q, aw, zβ) ⊢ (q ′ , w, αβ) dacă (q ′ , α) ∈ δ(q, a, z)
(q, q ′ ∈ Q, a ∈ Σ ∪ {ǫ}, z ∈ Γ, α, β ∈ Γ∗ )

Calcul: ı̂nchiderea reflexivă şi tranzitivă a relaţiei de mai sus: dacă


C1 , . . . , Cn configuraţii astfel ı̂ncât:

C1 ⊢ C2 ⊢ . . . ⊢ Cn

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

LFAC (2020-21) Curs 6 26 / 38


Automate pushdown

Limbajul recunoscut

Prin stări finale (dacă F 6= ∅)


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

Prin golirea stivei (dacă F = ∅)


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

LFAC (2020-21) Curs 6 27 / 38


Automate pushdown

Exemplu

Automat care recunoaşte limbajul {an bn |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 (2020-21) Curs 6 28 / 38


Automate pushdown

Exemple

Un automat pushdown ce recunoaşte limbajul {waw R |w ∈ {0, 1}∗ }

LFAC (2020-21) Curs 6 29 / 38


Automate pushdown

Exemple

Un automat pushdown ce recunoaşte limbajul {waw R |w ∈ {0, 1}∗ }

Fiecare 0 sau 1 citit se introduce ı̂n stivă


a la intrare produce pregătirea scoaterii a câte un simbol din stiva dacă el
coincide cu cel din intrare

LFAC (2020-21) Curs 6 29 / 38


Automate pushdown

Exemple

Un automat pushdown ce recunoaşte limbajul {waw R |w ∈ {0, 1}∗ }

Fiecare 0 sau 1 citit se introduce ı̂n stivă


a la intrare produce pregătirea scoaterii a câte un simbol din stiva dacă 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 (2020-21) Curs 6 29 / 38


Automate pushdown

Exemple

Un automat pushdown ce recunoaşte limbajul {waw R |w ∈ {0, 1}∗ }

Fiecare 0 sau 1 citit se introduce ı̂n stivă


a la intrare produce pregătirea scoaterii a câte un simbol din stiva dacă 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 recunoaşte limbajul {ww R |w ∈ {0, 1}∗ } ?

LFAC (2020-21) Curs 6 29 / 38


Automate pushdown

Exemple

Un automat pushdown ce recunoaşte limbajul {waw R |w ∈ {0, 1}∗ }

Fiecare 0 sau 1 citit se introduce ı̂n stivă


a la intrare produce pregătirea scoaterii a câte un simbol din stiva dacă 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 recunoaşte limbajul {ww R |w ∈ {0, 1}∗ } ?
Un automat pushdown ce recunoaşte limbajul {ww|w ∈ {0, 1}∗ } ?

LFAC (2020-21) Curs 6 29 / 38


Automate pushdown

Echivalenţa definiţiilor privind recunoaşterea

Teorema 2
Pentru orice automat pushdown M cu F = ∅, există un automat
pushdown M ′ cu stări finale astfel ca L(M ′ ) = Lǫ (M).

Teorema 3
Pentru orice automat pushdown M cu F 6= ∅, există un automat
pushdown M ′ cu F = ∅ astfel ca Lǫ (M ′ ) = L(M).

LFAC (2020-21) Curs 6 30 / 38


Legătura dintre automatele pushdown şi limbajele de tip 2

Curs 6

1 Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

2 Forma normală Chomsky

3 Problema recunoaşterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legătura dintre automatele pushdown şi limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2020-21) Curs 6 31 / 38


Legătura dintre automatele pushdown şi limbajele de tip 2

Automatul pushdown echivalent cu o gramatică de tip


2

Teorema 4
Pentru orice gramatică G există un automat pushdown M fără stări
finale astfel ı̂ncât Lǫ (M) = L(G)

LFAC (2020-21) Curs 6 32 / 38


Legătura dintre automatele pushdown şi limbajele de tip 2

Automatul pushdown echivalent cu o gramatică de tip


2

Teorema 4
Pentru orice gramatică G există un automat pushdown M fără stări
finale astfel ı̂ncât 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 ∈ N
2 δ(q, a, a) = {(q, ǫ)}, ∀a ∈ T
3 δ(q, x, y) = ∅, ı̂n restul cazurilor
w ∈ L(G) ⇔ S ⇒+ w ⇔ (q, w, S) ⊢+ (q, ǫ, ǫ) ⇔ w ∈ Lǫ (M)
M simulează derivările extrem stângi din G
LFAC (2020-21) Curs 6 32 / 38
Legătura dintre automatele pushdown şi 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 (2020-21) Curs 6 33 / 38


Legătura dintre automatele pushdown şi limbajele de tip 2

Gramatica echivalentă cu un automat pushdown

Teorema 5
Pentru orice automat pushdown M există o gramatică G astfel ı̂ncât
L(G) = Lǫ (M)

LFAC (2020-21) Curs 6 34 / 38


Legătura dintre automatele pushdown şi limbajele de tip 2

Gramatica echivalentă cu un automat pushdown


Teorema 5
Pentru orice automat pushdown M există o gramatică G astfel ı̂ncât
L(G) = Lǫ (M)

Fie M = (Q, Σ, Γ, δ, q0 , z0 , ∅)
Construim G = (N, Σ, S, P) astfel:
- N = {[qzp]|p, q ∈ Q, z ∈ Γ} ∪ {S}
- P conţine toate regulile de forma:
S → [q0 z0 q], ∀q ∈ Q
dacă (p, ǫ) ∈ δ(q, a, z), atunci:
[qzp] → a
dacă (p, z1 z2 . . . zm ) ∈ δ(q, a, z), atunci, pentru orice secvenţă de
stări q1 , . . . , qm ∈ Q :
[qzqm ] → a[pz1 q1 ][q1 z2 q2 ] . . . [qm−1 zm qm ]
Are loc: [qzp] ⇒+ w ⇔ (q, w, z) ⊢+ (p, ǫ, ǫ)
LFAC (2020-21) Curs 6 34 / 38
Automate pushdown deterministe

Curs 6

1 Eliminarea regulilor de ştergere şi redenumirilor din gramatici de tip 2

2 Forma normală Chomsky

3 Problema recunoaşterii: algoritmul Cocke Younger Kasami

4 Automate pushdown

5 Legătura dintre automatele pushdown şi limbajele de tip 2

6 Automate pushdown deterministe

LFAC (2020-21) Curs 6 35 / 38


Automate pushdown deterministe

Automate pushdown deterministe


Definiţie 3
Automatul pushdown M = (Q, Σ, Γ, δ, q0 , z0 , F ) este determinist dacă

funcţia de tranziţie δ : Q × (Γ ∪ {ǫ}) × Γ −→ 2Q×Γ ı̂ndeplineşte
condiţiile:
1 |δ(q, a, z)| = 1, ∀a ∈ Σ ∪ {ǫ}, ∀q ∈ Q, ∀z ∈ Γ
2 Dacă δ(q, ǫ, z) 6= ∅ atunci δ(q, a, z) = ∅, ∀a ∈ Σ

Un automat pushdown determinist poate avea ǫ-tranzii̧i

LFAC (2020-21) Curs 6 36 / 38


Automate pushdown deterministe

Automate pushdown deterministe


Definiţie 3
Automatul pushdown M = (Q, Σ, Γ, δ, q0 , z0 , F ) este determinist dacă

funcţia de tranziţie δ : Q × (Γ ∪ {ǫ}) × Γ −→ 2Q×Γ ı̂ndeplineşte
condiţiile:
1 |δ(q, a, z)| = 1, ∀a ∈ Σ ∪ {ǫ}, ∀q ∈ Q, ∀z ∈ Γ
2 Dacă δ(q, ǫ, z) 6= ∅ atunci δ(q, a, z) = ∅, ∀a ∈ Σ

Un automat pushdown determinist poate avea ǫ-tranzii̧i


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 , ǫ)}
L(M) = {waw R |w ∈ {0, 1}∗ }
LFAC (2020-21) Curs 6 36 / 38
Automate pushdown deterministe

L2DET - Limbaje de tip 2 deterministe

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

Clasa L2DET este o clasă proprie a clasei de limbaje L2


(L2DET ⊂ L2 ).
{ww R |w ∈ {0, 1}∗ } ∈ L2 \ L2DET

LFAC (2020-21) Curs 6 37 / 38


Automate pushdown deterministe

L2DET - Limbaje de tip 2 deterministe

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

Clasa L2DET este o clasă proprie a clasei de limbaje L2


(L2DET ⊂ L2 ).
{ww R |w ∈ {0, 1}∗ } ∈ L2 \ L2DET
M = ({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 (2020-21) Curs 6 37 / 38


Automate pushdown deterministe

L2DET - Limbaje de tip 2 deterministe

Definiţie 4
O gramatică G este deterministă dacă:
Orice regulă este de forma A → aα, unde a ∈ T iar α ∈ (N ∪ T )∗
Pentru orice A ∈ N, dacă A → aα , A → bα′ sunt reguli, atunci
a 6= b

Pentru orice gramatică deterministă G există un automat pushdown


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

LFAC (2020-21) Curs 6 38 / 38

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