La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Automi a pila (1) Un automa a pila (PDA) è M = (Q, , , , q 0, Z 0, F) dove: 1.Q insieme finito di stati  alfabeto finito di input 3.  alfabeto di.

Presentazioni simili


Presentazione sul tema: "Automi a pila (1) Un automa a pila (PDA) è M = (Q, , , , q 0, Z 0, F) dove: 1.Q insieme finito di stati  alfabeto finito di input 3.  alfabeto di."— Transcript della presentazione:

1 Automi a pila (1) Un automa a pila (PDA) è M = (Q, , , , q 0, Z 0, F) dove: 1.Q insieme finito di stati  alfabeto finito di input 3.  alfabeto di pila  Q  (  {  })   2 Q  * 5.q 0 stato iniziale 6.Z 0 simbolo di inizio pila 7.F  = Q insieme degli stati finali (eventualmente vuoto). La descrizione istantanea di un PDA è (q,w,  ) dove  q è lo stato  w è la stringa ancora da leggere  è il contenuto della pila. Dato un PDA M = (Q, , , , q 0, Z 0, F), (q, aw, Z  ) |- M (p, w,  ) se  (q, a, Z) contiene (p,  ). L(M) accettato a stati finali è {w | (q 0, w, Z 0 ) |- M * (p, ,  ), p  F} N(M) accettato a pila vuota è {w | (q 0, w, Z 0 ) |- M * (p, ,  ), p  Q}.

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

3 Automi a pila (3) Un PDA M = (Q, , , , q 0, Z 0, F) è deterministico se vale: 1. Se  (q, , Z) non vuoto, allora  (q, a, Z) vuoto per ogni a   (non c’è una scelta tra una  -mossa e una mossa su input a)  (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. 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.

4 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, , q, S,  ) dove  (q, a, A) contiene (q,  quando A  a  è in P. Si dimostra S  G * x  se e solo se (q,x,S) |- M * (q, ,  ). Prendendo  =  si ha S  G * x se e solo se (q,x,S) |- M * (q, ,  ) 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, , , , q 0, Z 0,  ). Prendiamo G = (V, , P, S) dove gli elementi di V sono della forma [q,A,p] con p, q  Q e A  . P è l’insieme delle produzioni S  [q 0, Z 0, q] per ogni q  Q [q, A, q m+1 ]  a [q 1, B 1, q 2 ] … [q m, B m, q m+1 ] se  (q,a,A) contiene (q 1, B 1 … B m ). Si dimostra [q, A, p]  G * x se e solo se (q, x, A) |- M * (p, ,  ).

5 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 uv i wx i y è in L.

6 Pumping lemma per linguaggi non contestuali (4) Il pumping lemma può essere usato per provare che un linguaggio non è non contestuale. Esempio. Prendiamo L = {a i b i c i | i >= 1}. Supponiamo che sia non contestuale e che n sia la costante del lemma. Prendiamo z = a n b n c n e scriviamo z = uvwxy. Dove potrebbero essere in a n b n c n 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 a i b i c i, 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.

7 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  }. Teorema. I linguaggi non contestuali sono chiusi per sostituzione. Teorema. I linguaggi non contestuali sono chiusi per omomorfismo.

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

9 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 = {a i b i c i | i >= 1}, L 2 = {a i b i c j | i >= 1, j >= 1}, L 3 = {a i b j c j | 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.

10 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.


Scaricare ppt "Automi a pila (1) Un automa a pila (PDA) è M = (Q, , , , q 0, Z 0, F) dove: 1.Q insieme finito di stati  alfabeto finito di input 3.  alfabeto di."

Presentazioni simili


Annunci Google