Automi a pila 1 Un automa a pila

  • Slides: 10
Download presentation
Automi a pila (1) Un automa a pila (PDA) è M = (Q, S,

Automi a pila (1) Un automa a pila (PDA) è M = (Q, S, G, d, q 0, Z 0, F) dove: 1. Q insieme finito di stati 2. S alfabeto finito di input 3. G alfabeto di pila 4. d: Q (S {e}) G 2 Q G* 5. q 0 stato iniziale 6. Z 0 simbolo di inizio pila 7. 7. F = Q insieme degli stati finali (eventualmente vuoto). 8. La descrizione istantanea di un PDA è (q, w, g) dove 9. 1. q è lo stato 10. 2. w è la stringa ancora da leggere 11. 3. g è il contenuto della pila. 12. Dato un PDA M = (Q, S, G, d, q 0, Z 0, F), (q, aw, Za) |-M (p, w, ba) se 13. d(q, a, Z) contiene (p, b). 14. L(M) accettato a stati finali è {w | (q 0, w, Z 0) |-M* (p, e, g), p F}

Automi a pila (2) Esempio. Si abbia il PDA M = ({q 1, q

Automi a pila (2) Esempio. Si abbia il PDA M = ({q 1, q 2}, {0, 1}, {R, B, G}, d, q 1, R, Ø) dove d è: d(q 1, 0, R) = {(q 1, BR)} d(q 1, 1, R) = {(q 1, GR)} d(q 1, 0, B) = {(q 1, BB), (q 2, e)} d(q 1, 1, B) = {(q 1, GB)} d(q 1, 0, G) = {(q 1, BG)} d(q 1, 1, G) = {(q 1, GG), (q 2, e)} d(q 2, 0, B) = {(q 2, e)} d(q 1, 1, G) = {(q 2, e)} d(q 1, e, R) = {(q 2, e)} d(q 2, e, R) = {(q 2, e)} Il PDA accetta L = {ww. R | w (0+1)* }.

Automi a pila (3) Un PDA M = (Q, S, G, d, q 0,

Automi a pila (3) Un PDA M = (Q, S, G, d, q 0, Z 0, F) è deterministico se vale: 1. Se d(q, e, Z) non vuoto, allora d(q, a, Z) vuoto per ogni a S (non c’è una scelta tra una e -mossa e una mossa su input a) 2. d(q, a, Z) non contiene più di un elemento (per ogni a c’è una sola mossa). PDA deterministici e PDA non deterministici non sono equivalenti: non c’è un PDA che accetta L = {ww. R | w (0+1)* }. Teorema. I linguaggi accettati per stati finali sono esattamente quelli accettati per pila vuota. Prova. Se L è L(M 2) per un PDA M 2 allora è N(M 1) per un PDA M 1 cancella la pila quando M 2 entra in uno stato finale. Un nuovo marcatore di pila sotto quello originario impedisce che l’automa accetti senza che sia entrato in uno stato finale di M 2. Se L è N(M 1) per un PDA M 1 allora è L(M 2) per un PDA M 2. Quando M 1 svuota la pila rimane nella pila il nuovo marcatore e l’automa entra in uno stato finale.

Automi a pila (4) Teorema. Se L è un CFL allora esiste un PDA

Automi a pila (4) Teorema. Se L è un CFL allora esiste un PDA M tale che L = N(M). Prova. Sia G = (V, T, P, S) in GNF. Prendiamo M = ({q}, T, V, d, q, S, ) dove d(q, a, A) contiene (q, g) quando A ag è in P. Si dimostra S ÞG* xa se e solo se (q, x, S) |-M* (q, e, a). Prendendo a = e si ha S ÞG* x se e solo se (q, x, S) |-M* (q, e, e) ossia x L se e solo se x N(M). Teorema. Se L è N(M) per PDA M, allora L è un CFL. Prova. Sia M = (Q, S, G, d, q 0, Z 0 , ). Prendiamo G = (V, S, P, S) dove gli elementi di V sono della forma [q, A, p] con p, q Q e A G. P è l’insieme delle produzioni S [q 0, Z 0 , q] per ogni q Q [q, A, qm+1] a [q 1, B 1, q 2] … [qm, Bm, qm+1] se d(q, a, A) contiene (q 1, B 1 … Bm). Si dimostra [q, A, p] ÞG* x se e solo se (q, x, A) |-M* (p, e, e).

Pumping lemma per linguaggi non contestuali (1) Lemma. Sia L un CFL. Allora c’è

Pumping lemma per linguaggi non contestuali (1) Lemma. Sia L un CFL. Allora c’è una costante n (che dipende solo da L) tale che se z è in L e |z| >= n allora si può scrivere z= uvwxy con 1. |vx|>= 1 2. |vwx|<= n 3. per ogni i>= 0 uviwxiy è in L.

Pumping lemma per linguaggi non contestuali (4) Il pumping lemma può essere usato per

Pumping lemma per linguaggi non contestuali (4) Il pumping lemma può essere usato per provare che un linguaggio non è non contestuale. Esempio. Prendiamo L = {aibici | i >= 1}. Supponiamo che sia non contestuale e che n sia la costante del lemma. Prendiamo z = anbncn e scriviamo z = uvwxy. Dove potrebbero essere in anbncn le stringhe v e x da pompare? Poiché |vwx|<= n, vx non può contenere istanze di a e di c poiché la a più a destra è n+1 posizioni più lontano dal c più a sinistra. Se v e x consistono di sole a allora uwy ha n b e n c ma non n a (le altre istanze di a sono in vx) e quindi uwy non è della forma aibici , una contraddizione. Analogamente se v e x consistono di sole b o sole c. Se vx ha a e b allora uwy ha più c che a e b. Similmente se vx contiene b e c.

Proprietà dei linguaggi non contestuali (1) Teorema. I linguaggi non contestuali sono chiusi per

Proprietà dei linguaggi non contestuali (1) Teorema. I linguaggi non contestuali sono chiusi per unione, concatenazione, chiusura di Kleene. Prova. Sia L 1 non contestuale generato da G 1 = (V 1, T 1, P 1, S 1) e L 2 non contestuale generato da G 2 = (V 2, T 2, P 2, S 2). Assumiamo V 1 e V 2 disgiunti e S 3 , S 4 , S 5 non in V 1 V 2. Per L 1 L 2 prendiamo G 3 = (V 1 V 2 { S 3}, T 1 T 2, P 3, S 3) dove P 3 = P 1 P 2 {S 3 S 1 , S 3 S 2}. Per L 1. L 2 prendiamo G 4 = (V 1 V 2 { S 4}, T 1 T 2, P 4, S 4) dove P 3 = P 1 P 2 {S 4 S 1 S 2}. Per L 1* prendiamo G 5 = (V 1 {S 5}, T 1, P 5, S 5) dove P 3 = P 1 {S 5 S 1 S 5 , S 5 e }. Teorema. I linguaggi non contestuali sono chiusi per sostituzione. Teorema. I linguaggi non contestuali sono chiusi per omomorfismo.

Proprietà dei linguaggi non contestuali (2) Esempio. Sia L un linguaggio di parole con

Proprietà dei linguaggi non contestuali (2) Esempio. Sia L un linguaggio di parole con un numero uguale di a e di b, sia La = {0 n 1 n | n>= 1}, Lb = {ww. R | w (0+2)*}. Prendiamo per G la grammatica con produzioni S a S b S | b S a S| e Per Ga prendiamo Sa 0 Sa 1 | 01 Per Gb prendiamo Sb 0 Sb 0 | 2 Sb 2 | e Sia f la sostituzione f(a) = La, f(b) = La. Allora f(L) è generato dalla grammatica con produzioni S Sa S Sb S | Sb S S a S | e Sa 0 Sa 1 | 01 Sb 0 Sb 0 | 2 Sb 2 | e

Proprietà dei linguaggi non contestuali (3) Teorema. I linguaggi non contestuali sono chiusi per

Proprietà dei linguaggi non contestuali (3) Teorema. I linguaggi non contestuali sono chiusi per omomorfismo inverso. Prova. Sia L = L(M). Si costruisce un PDA M’ che sull’input a genera la stringa h(a), simula M su h(a) e accetta a se M accetta h(a). Teorema. I linguaggi non contestuali non sono chiusi per intersezione. Prova. Prendiamo L 1 = {aibici | i >= 1}, L 2 = {aibicj | i >= 1, j >= 1}, L 3 = {aibjcj | i >= 1, j >= 1}. Il linguaggio L 1 = L 2 L 3 è l’intersezione di due CFL ma non è un CFL. Teorema. I linguaggi non contestuali non sono chiusi per Intersezione con gli insiemi regolari.

Proprietà dei linguaggi non contestuali (4) Teorema. Data una CFG G = (V, T,

Proprietà dei linguaggi non contestuali (4) Teorema. Data una CFG G = (V, T, P, S) e x T* è decidibile se x L(G). Prova. Convertiamo G in G’ in forma normale di Greibach. Ogni produzione aggiunge un solo terminale e quindi se x ha una derivazione in G’ ne ha una in esattamente |x| passi. Se nessun non terminale in G’ ha più di k produzioni, allora ci sono al più k|x| Derivazioni da più a sinistra di stringhe di lunghezza |x|. Si possono provare sistematicamente. Questo algoritmo richiede un tempo esponenziale in |x|. Ne esiste uno di Cocke-Younger-Kasami in tempo cubico.