Está en la página 1de 56

Autómatas de

Pila

Descripciones
instantáneas
o IDs

El Lenguaje
de PDA
Autómatas de Pila
Equivalencia
entre PDAs y
CFGs

6 de mayo de 2015

() 6 de mayo de 2015 1 / 56
Contenido
Autómatas de
Pila

Descripciones
instantáneas
o IDs 1 Autómatas de Pila
El Lenguaje
de PDA

Equivalencia
entre PDAs y 2 Descripciones instantáneas o IDs
CFGs

3 El Lenguaje de PDA

4 Equivalencia entre PDAs y CFGs

() 6 de mayo de 2015 2 / 56
Autómatas de Pila

Pushdown Automata
Autómatas de
Pila

Descripciones
instantáneas
o IDs • Las gramáticas libres de contexto tienen un tipo de
El Lenguaje autómata que las define llamado pushdown automata.
de PDA

Equivalencia • Un pushdown automata (PDA) es básicamente un


entre PDAs y
CFGs -NFA con un stack, en donde se puede almacenar una
cadena y por lo tanto se puede recordar información.
• Sin embargo, sólo puede acceder a esta información en
forma LIFO por lo que existen lenguajes reconocidos
por una computadora pero no por un PDA, por ejemplo:
{0n 1n 2n |n ≥ 1}.

() 6 de mayo de 2015 3 / 56
Autómatas de Pila

Autómatas No-Deterministas
Autómatas de
Pila

Descripciones
instantáneas
o IDs
En una transición el PDA:
El Lenguaje 1 Consume un sı́mbolo de entrada o hace una transición
de PDA

Equivalencia
vacı́a ()
entre PDAs y
CFGs 2 Se va a un nuevo estado (o se queda en el mismo)
3 Reemplaza el primer elemento del stack por alguna
cadena (puede ser el mismo sı́mbolo de arriba del
stack, lo que corresponde con no hacer nada, hace
pop, lo que corresponde con , o hace push de una
cadena al stack)

() 6 de mayo de 2015 4 / 56
Autómatas de Pila

Autómatas No-Deterministas
Autómatas de
Pila

Descripciones
instantáneas
o IDs

El Lenguaje
de PDA

Equivalencia
entre PDAs y
CFGs

() 6 de mayo de 2015 5 / 56
Autómatas de Pila

Ejemplo
Autómatas de
Pila

Descripciones
Sea Lw = {ww R : w ∈ {0, 1}∗ } con una gramática:
instantáneas P → 0P0, P → 1P1, P → . Un PDA para Lww r tiene 3
o IDs

El Lenguaje
estados y opera de la siguiente manera:
de PDA
1 Empieza en q0 y mientras está ahı́ lee los sı́mbolos y
Equivalencia
entre PDAs y los almacena en el stack.
CFGs
2 En cualquier momento adivina que está en medio de la
cadena (ww R ) y se mueve espontáneamente al estado
q1 .
3 En q1 , está leyendo w R y compara el valor de la cadena
con el valor de hasta arriba del stack. Si son iguales
hace un pop y se queda en el estado q1 .
4 Si se vacı́a el stack, se va al estado 2 y acepta.

() 6 de mayo de 2015 6 / 56
Autómatas de Pila

Autómatas No-Deterministas
Autómatas de
Pila
El PDA para Lww r es el siguiente diagrama de transición:
Descripciones
instantáneas
o IDs

El Lenguaje
de PDA

Equivalencia
entre PDAs y
CFGs

() 6 de mayo de 2015 7 / 56
Autómatas de Pila

Autómatas No-Deterministas
Autómatas de
Pila

Descripciones
instantáneas
o IDs
• Los nodos, nodo inicial y final, son como los hemos
El Lenguaje
de PDA visto antes. La diferencia principal es que en las
Equivalencia
entre PDAs y
transiciones (arcos) la etiqueta a, X /α significa que
CFGs δ(q, a, X ) tiene el par (p, α). Osea nos dice la entrada
(a) y cómo estaba (X ) y cómo queda (α) la parte
superior del stack.
• Lo único que no nos dice es cuál es el sı́mbolo inicial
del stack. Por convención se usa Z0 .

() 6 de mayo de 2015 8 / 56
Autómatas de Pila

Autómatas No-Deterministas
Autómatas de
Pila Formalmente, un PDA es una séptupla:
Descripciones
instantáneas
P = (Q, Σ, Γ, δ, q0 , Z0 , F ), donde:
o IDs
• Q: es un conjunto finito de estados
El Lenguaje
de PDA • Σ: es un alfabeto finito de entradas
Equivalencia
entre PDAs y • Γ: es un alfabeto finito del stack
CFGs ∗
• δ : Q × Σ ∪ {} × Γ → 2Q×Γ es la función de transición.
δ(q, a, X ) → (p, γ), {p, q} ∈ Q, a ∈ Σ ∪ {}, X ∈ Γ y γ
reemplaza a X .
• q0 : es el estado inicial
• Z0 ∈ Γ: es el sı́mbolo inicial del stack
• F ⊆ Q: es el conjunto de estados finales o de
aceptación

() 6 de mayo de 2015 9 / 56
Autómatas de Pila

Ejemplo
Autómatas de
Pila El PDA:
Descripciones
instantáneas
o IDs

El Lenguaje
de PDA

Equivalencia
entre PDAs y
CFGs

() 6 de mayo de 2015 10 / 56
Autómatas de Pila

Ejemplo
Autómatas de
Pila

Descripciones Es la siguiente tupla:


instantáneas
o IDs P = ({q0 , q1 , q2 }, {0, 1}, {0, 1, Z0 }, δ, q0 , Z0 , {q2 }).
El Lenguaje
de PDA
Donde δ está definida por la siguiente tabla:
Equivalencia
0, Z0 1, Z0 0, 0 0, 1 1, 0
entre PDAs y
CFGs
→ q0 q0 , 0Z0 q0 , 1Z0 q0 , 00 q0 , 01 q0 , 10
q1 q1 , 
∗q2
cont...
1, 1 , Z0 , 0 , 1
→ q0 q0 , 11 q1 , Z0 q1 , 0 q1 , 1
q1 q1 ,  q2 , Z0
∗q2

() 6 de mayo de 2015 11 / 56
Descripciones instantáneas o IDs

Descripciones instantáneas o IDs


Autómatas de
Pila

Descripciones
instantáneas
o IDs • Una ID es una tripleta (q, w, γ) donde q es un estado,
El Lenguaje
de PDA
w es lo que falta de la entrada y γ es el contenido del
Equivalencia
stack. Esto es lo que para los FA es el δ̂.
entre PDAs y
CFGs • Usamos ` para representar un movimiento en un PDA.
• Sea P = (Q, Σ, Γ, δ, q0 , Z0 , F ) un PDA. Entonces
∀w ∈ Σ∗ , β ∈ Γ∗ : (p, α) ∈ δ(q, a, X )
• (q, aw, X β) ` (p, w, αβ). Esto consume a, reemplaza X
de arriba del stack por α y se va del estado q al estado
p.

() 6 de mayo de 2015 12 / 56
Descripciones instantáneas o IDs

Cerradura de `
Autómatas de
Pila

Descripciones
instantáneas
o IDs

El Lenguaje
de PDA

Equivalencia • Definimos como la cerradura reflexiva-transitiva de ` a


entre PDAs y ∗
CFGs `, para representar cero o más movimientos del PDA.
∗ ∗ ∗
• I ` J. Si I ` J y I ` K , entonces K ` J

() 6 de mayo de 2015 13 / 56
Descripciones instantáneas o IDs

Ejemplo
Autómatas de El PDA anterior con la entrada 1111 nos da la siguiente
Pila

Descripciones
secuencia de transiciones:
instantáneas
o IDs

El Lenguaje
de PDA

Equivalencia
entre PDAs y
CFGs

() 6 de mayo de 2015 14 / 56
Descripciones instantáneas o IDs

Propiedades
Autómatas de
Pila

Descripciones Se cumplen las siguientes propiedades. Si una secuencia


instantáneas
o IDs de ID (computación) es legal para un PDA:
El Lenguaje
de PDA 1 Entonces también es legal la secuencia que se obtiene
Equivalencia al añadir una cadena igual al final de la entrada de cada
entre PDAs y
CFGs ID (segundo componente).
2 Entonces también es legal la secuencia que se obtiene
al añadir una cadena igual hasta abajo del stack en
cada ID (tercer componente).
3 Y si el final de una entrada no es consumida, al eliminar
ese final de todos los ID’s también resulta en una
secuencia legal.

() 6 de mayo de 2015 15 / 56
Descripciones instantáneas o IDs

Autómatas No-Deterministas
Autómatas de
Pila

Descripciones
instantáneas
o IDs

El Lenguaje
de PDA Teoremas: ∀w ∈ Σ∗ , γ ∈ Γ∗
∗ ∗
Equivalencia
entre PDAs y (q, x, α) ` (p, y, β) ⇒ (q, xw, αγ) ` (p, yw, βγ) que cubre el
CFGs
primer principio si γ =  y el segundo si w = , y
∗ ∗
(q, xw, α) ` (p, yw, β) ⇒ (q, x, α) ` (p, y , β) que cubre el
tercer principio.

() 6 de mayo de 2015 16 / 56
Descripciones instantáneas o IDs

Ejemplo
Autómatas de
Pila Suponga que el PDA
Descripciones
instantáneas
P = ({q, p}, {0, 1}, {Z0 , X }, δ, q, Z0 , {p}) tiene la siguiente
o IDs función de transición:
El Lenguaje
de PDA
δ(q, 0, Z0 ) = {(q, XZ0 )}
Equivalencia δ(q, 0, X ) = {(q, XX )}
entre PDAs y
CFGs δ(q, 1, X ) = {(q, X )}
δ(q, , X ) = {(p, )}
δ(p, , X ) = {(p, )}
δ(p, 1, X ) = {(p, XX )}
δ(p, 1, Z0 ) = {(p, )}
Empezando del ID inicial (q, w, Z0 ) muestre todos los ID’s
alcanzables cuando w es: 01
(q, 01, Z0 ) ` (q, 1, XZ0 ) ` (q, , XZ0 ) ` (p, , Z0 ) ` (p, 1, Z0 ) `
(p, , )

() 6 de mayo de 2015 17 / 56
El Lenguaje de PDA

El Lenguaje de PDA
Autómatas de
Existen dos formas equivalentes de PDA que aceptan un
Pila cierto lenguaje L:
Descripciones
instantáneas 1 Aceptar por el estado final:
o IDs ∗
El Lenguaje L(P) = {w : (q0 , w, Z0 ) ` (q, , α), q ∈ F }. Por ejemplo,
de PDA
podemos ver una secuencia legal para aceptar por
Equivalencia
entre PDAs y estado final un palı́ndrome:
CFGs ∗ ∗
(q0 , ww R , Z0 ) ` (q0 , w R , w R Z0 ) ` (q1 , w R , w R Z0 ) `
(q1 , , Z0 ) ` (q2 , , Z0 )
2 Aceptar por el stack vacı́o:

N(P) = {w : (q0 , w, Z0 ) ` (q, , )}. El ejemplo anterior
no acepta por stack vacı́o, pero con una pequeña
modificación lo puede hacer si en lugar de
δ(q, , Z0 ) = {(q2 , Z0 )} ponemos δ(q, , Z0 ) = {(q2 , )}
Las dos representaciones son equivalentes y se puede
pasar de una a la otra
() 6 de mayo de 2015 18 / 56
El Lenguaje de PDA

De stack vacı́o a estado final


Se puede mostrar que si L = N(PN ) para un PDA PN ,
Autómatas de
Pila entonces existe un PDA PF tal que L = L(PF ). Se ilustra en
Descripciones la siguiente figura:
instantáneas
o IDs

El Lenguaje
de PDA

Equivalencia
entre PDAs y
CFGs

() 6 de mayo de 2015 19 / 56
El Lenguaje de PDA

De stack vacı́o a estado final


Autómatas de
Pila

Descripciones
• La idea, es usar un sı́mbolo nuevo (X0 ∈
/ Γ) como marca
instantáneas
o IDs
para señalizar el final del stack y un nuevo estado cuyo
El Lenguaje único objetivo es poner Z0 arriba de este sı́mbolo
de PDA
especial.
Equivalencia
entre PDAs y • Después se simula la misma transición de estados
CFGs
hasta que se vacı́e el stack.
• Finalmente, añadimos un nuevo estado que es el de
aceptación al que se llega cada vez que se vacı́a el
stack.
• También necesitamos un nuevo estado inicial (p0 ) que
lo único que hace es hacer un push del sı́mbolo inicial
Z0 e irse al estado inicial de PN (q0 ).

() 6 de mayo de 2015 20 / 56
El Lenguaje de PDA

De stack vacı́o a estado final


Autómatas de
Pila

Descripciones Lo anterior lo podemos expresar como sigue:


instantáneas ∗
o IDs
(q0 , w, X0 ) `F (q0 , w, Z0 X0 ) `F (q, , X0 ) `F (pf , , )
El Lenguaje
de PDA Ejemplo: podemos pasar del siguiente PDA que acepta por
Equivalencia stack vacı́o a un PDA que acepta por estado final:
entre PDAs y
CFGs

() 6 de mayo de 2015 21 / 56
El Lenguaje de PDA

Ejemplo (cont.)
Autómatas de
Pila

Descripciones
instantáneas
o IDs
PN = ({q}, {i, e}, {Z }, δN , q, Z ), donde δN es:
El Lenguaje
δN (q, i, Z ) = {(q, ZZ )}
de PDA δN (q, e, Z ) = {(q, )}
Equivalencia
entre PDAs y
CFGs

() 6 de mayo de 2015 22 / 56
El Lenguaje de PDA

Ejemplo (cont.)
Autómatas de
Pila

Descripciones
instantáneas
o IDs

El Lenguaje
de PDA
PF = ({p, q, r }, {i, e}, {Z , X0 }, δF , p, X0 , r ), donde δF es:
Equivalencia
entre PDAs y δF (p, , X 0) = {(q, ZX0 )}
CFGs
δF (q, i, Z ) = {(q, ZZ )}
δF (q, e, Z ) = {(q, )}
δF (q, , X0 ) = {(r , )}

() 6 de mayo de 2015 23 / 56
El Lenguaje de PDA

De un estado final a un stack vacı́o


Autómatas de
Pila

Descripciones
instantáneas
o IDs Se puede mostrar que si L = L(PF ) para un PDA PF ,
El Lenguaje entonces existe un PDA PN tal que L = N(PN ). Se ilustra en
de PDA

Equivalencia
la siguiente figura:
entre PDAs y
CFGs

() 6 de mayo de 2015 24 / 56
El Lenguaje de PDA

De un estado final a un stack vacı́o


Autómatas de
Pila

Descripciones
instantáneas
o IDs • La idea es la siguiente: Cada vez que se llega a un
El Lenguaje estado final, se hace una transición vacı́a a un nuevo
de PDA
estado en donde se vacı́a el stack sin consumir
Equivalencia
entre PDAs y sı́mbolos de entrada.
CFGs
• Para evitar simular una situación en donde se vacı́a el
stack sin aceptar la cadena, de nuevo se introduce al
principio un nuevo sı́mbolo al stack.
• Lo anterior lo podemos expresar como sigue:
∗ ∗
(p0 , w, X0 ) `N (q0 , w, Z0 X0 ) `N (q, , αX0 ) `N (p, , )

() 6 de mayo de 2015 25 / 56
El Lenguaje de PDA

Ejemplos
Autómatas de
Pila

Descripciones
instantáneas • Diseñe PDAs que acepten los siguientes lenguajes:
o IDs
1 {0n 1n |n ≥ 1}
El Lenguaje
de PDA 2 {ai b j c k |i = j o j = k }
Equivalencia
entre PDAs y
• Para el siguiente PDA genere las trazas de IDs para la
CFGs cadena bab:
δ(q0 , a, Z0 ) = (q1 , AAZ0 ) δ(q0 , b, Z0 ) = (q2 , BZ0 )
δ(q0 , , Z0 ) = (f , ) δ(q1 , a, A) = (q1 , AAA)
δ(q1 , b, A) = (q1 , ) δ(q1 , , Z0 ) = (q0 , Z0 )
δ(q1 , a, B) = (q3 , ) δ(q2 , b, B) = (q2 , BB)
δ(q2 , , Z0 ) = (q0 , Z0 ) δ(q3 , , B) = (q2 , )
δ(q3 , , Z0 ) = (q1 , AZ0 )

() 6 de mayo de 2015 26 / 56
El Lenguaje de PDA

Soluciones
Autómatas de
• Aceptando por stack vacı́o:
Pila δ(q, 0, Z0 ) = {(q, X )} δ(q, 0, X ) = {(q, XX )}
Descripciones
instantáneas
δ(q, 1, X ) = {(p, )} δ(q, 1, X ) = {(p, )}
o IDs
• Adivinar: (i) i = j = 0 (q1 ), (ii) i = j > 0 (q2 ) y (iii) j = k
El Lenguaje
de PDA (q3 ):
Equivalencia δ(q0 , , Z0 ) = {(q1 , Z0 ), (q2 , Z0 ), (q3 , Z0 )}
entre PDAs y
CFGs δ(q1 , c, Z0 ) = {(q1 , Z0 )}
δ(q2 , a, Z0 ) = {(q2 , XZ0 )} y δ(q2 , a, X ) = {(q2 , XX )}
δ(q2 , b, X ) = δ(q4 , b, X ) = {(q4 , )}
δ(q3 , a, Z0 ) = {(q3 , Z0 )}
δ(q3 , b, Z0 ) = {(q5 , XZ0 )}
δ(q5 , b, X ) = {(q5 , XX )}
δ(q5 , c, X ) = δ(q6 , c, X ) = {(q6 , )}
δ(q6 , , Z0 ) = {(q3 , )}
• (q0 , bab, Z0 ) ` (q2 , ab, BZ0 ) ` (q3 , b, Z0 ) ` (q1 , b.AZ0 ) `
(q1 , b, AZ0 ) ` (q1 , , Z0 ) ` (q0 , , Z0 ) ` (f , , )
() 6 de mayo de 2015 27 / 56
Equivalencia entre PDAs y CFGs

Equivalencia entre PDAs y CFGs


Autómatas de
Pila

Descripciones • Los lenguajes definidos por los PDA son los lenguajes
instantáneas
o IDs libres de contexto.
El Lenguaje • Un lenguaje es generado por un CFG si y solo si es
de PDA

Equivalencia
aceptado por un PDA con stack vacı́o si y solo si es
entre PDAs y
CFGs
aceptado por un PDA con estado final.

La última parte ya la sabemos y sólo nos falta demostrar lo


primero.

() 6 de mayo de 2015 28 / 56
Equivalencia entre PDAs y CFGs

De un CFG a un PDA
Autómatas de
Pila

Descripciones • Dada una gramática G vamos a construir un PDA que


instantáneas ∗
o IDs simula ⇒lm
El Lenguaje • Cualquier forma de sentencia izquierda que no es una
de PDA

Equivalencia
cadena terminal la podemos escribir como xAα donde
entre PDAs y
CFGs
A es la variable más a la izquierda, x son los sı́mbolos
terminales que aparecen a la izquierda, y α es la
cadena de sı́mbolos terminales y variables que
aparecen a la derecha de A.
• La idea para construir un PDA a partir de una
gramática, es que el PDA simula las formas de
sentencia izquierdas que usa la gramática para generar
una cadena w.

() 6 de mayo de 2015 29 / 56
Equivalencia entre PDAs y CFGs

De un CFG a un PDA
Autómatas de
Pila

Descripciones
instantáneas • Aα que es la “cola” de la forma de sentencia izquierda
o IDs
va a aparecer en el stack con A como primer elemento.
El Lenguaje
de PDA
• Sea xAα ⇒lm xβα. Usa o adivina que se usa la
Equivalencia
entre PDAs y producción A → β.
CFGs
• Esto corresponde a un PDA que consume primero a x
con Aα en el stack y luego con  saca (pops) A y mete
(pushes) β.
• O de otra forma, sea w = xy, entonces el PDA va en
forma no-determinı́sta de la configuración (q, y, Aα) a la
configuración (q, y, βα).

() 6 de mayo de 2015 30 / 56
Equivalencia entre PDAs y CFGs

De un CFG a un PDA
Autómatas de
Pila

Descripciones
instantáneas
• En (q, y, βα) el PDA se comporta como antes, a menos
o IDs que sean sı́mbolos terminales en el prefijo de β, en
El Lenguaje
de PDA
cuyo caso el PDA los saca (pops) del stack, si puede
Equivalencia consumir sı́mbolos de entrada.
entre PDAs y
CFGs • Si todo se adivina bien, el PDA acaba con un stack
vacı́o y con la cadena de entrada. Nótese que el PDA
tiene un solo estado.
• Formalmente, sea G = (V , T , Q, S) un CFG. Se define
un PG como ({q}, T , V ∪ T , δ, q, S) donde:
δ(q, , A) = {(q, β) : A → β ∈ Q} para A ∈ V , y
δ(q, a, a) = {(q, )} para a ∈ T .

() 6 de mayo de 2015 31 / 56
Equivalencia entre PDAs y CFGs

Ejemplo
Autómatas de
Pila

Descripciones • Convirtamos la siguiente gramática en un PDA:


instantáneas
o IDs I → a|b|Ia|Ib|I0|I1
El Lenguaje E → I|E ∗ E|E + E|(E)
de PDA

Equivalencia
• Los sı́mbolos terminales del PDA son:
entre PDAs y
CFGs
{a, b, 0, 1, (, ), +, ∗}
• La función de transición del PDA es:
δ(q, , I) = {(q, a), (q, b), (q, Ia), (q, Ib), (q, I0), (q, I1)}
δ(q, , E) = {(q, I), (q, E + E), (q, E ∗ E), (q, (E))}
δ(q, a, a) = {(q, )}, δ(q, b, b) = {(q, )},
δ(q, 0, 0) = {(q, )}, δ(q, 1, 1) = {(q, )},
δ(q, (, () = {(q, )}, δ(q, ), )) = {(q, )},
δ(q, +, +) = {(q, )}, δ(q, ∗, ∗) = {(q, )}.

() 6 de mayo de 2015 32 / 56
Equivalencia entre PDAs y CFGs

Teorema: N(P) = L(G)


Autómatas de
Pila

Descripciones
instantáneas
o IDs

El Lenguaje
de PDA
• Sea w ∈ L(G), entonces, S = γ1 ⇒lm γ2 ⇒lm · · · γn = w
Equivalencia
entre PDAs y • Sea γi = xi αi . Vamos a probar por inducción en i que
CFGs ∗

si: S ⇒lm γi , entonces: (q, w, S) ` (q, yi , αi ), donde
w = xi yi . El caso base es fácil, donde i = 1, γ1 = , y
y1 = w.

() 6 de mayo de 2015 33 / 56
Equivalencia entre PDAs y CFGs

Teorema: N(P) = L(G)


Autómatas de
Pila

Descripciones
instantáneas ∗
o IDs • Dado (q, w, S) ` (q, yi , αi ) queremos probar para el
El Lenguaje
de PDA
siguiente paso, o sea: (q, yi , αi ) ` (q, yi+1 , αi+1 )
Equivalencia • αi empieza con una variable A y tenemos lo siguiente:
entre PDAs y
CFGs xi Aχ ⇒lm xi+1 βχ
| {z } | {z }
γi γi+1
• Por la hipótesis inductiva, Aχ está en el stack y yi no ha
sido consumida. De la construcción de PG se sigue que
podemos hacer el siguiente movimiento:
(q, yi , Aχ) ` (q, yi , βχ).

() 6 de mayo de 2015 34 / 56
Equivalencia entre PDAs y CFGs

Teorema: N(P) = L(G)


Autómatas de
Pila

Descripciones
instantáneas
o IDs • Si β tiene un prefijo de terminales, podemos sacarlos
El Lenguaje (pop) con terminales correspondientes en un prefijo de
de PDA
yi , acabando con la configuración (q, yi+1 , αi+1 ), donde
Equivalencia
entre PDAs y αi+1 = βχ que es la parte final de: xi+1 βχ = γi+1 .
CFGs
• Finalmente, como γn = w, tenemos que αn = , y

yn = , y por lo tanto: (q, w, S) ` (q, , ), por lo que
w ∈ N(PG ), osea que P acepta w con stack vacı́o.
• Para la otra parte de la prueba, tenemos que probar
∗ ∗
que si: (q, x, A) ` (q, , ) entonces: A ⇒ x.

() 6 de mayo de 2015 35 / 56
Equivalencia entre PDAs y CFGs

Teorema: N(P) = L(G)


Autómatas de
Pila

Descripciones
instantáneas
o IDs
• El caso base es simple, con x = .
El Lenguaje • Para el caso inductivo, tenemos que, como A es una
de PDA

Equivalencia
variable, tenemos en general:
entre PDAs y (q, x, A) ` (q, x, Y1 Y2 . . . Yk ) ` . . . ` (q, , )
CFGs
donde A → Y1 Y2 . . . Yk está en G.
• Si escribimos x como x1 x2 . . . xk , x1 es la parte de la
entrada que es consumida hasta que Y1 es sacada
(popped) del stack.
• Luego consumimos x2 sacando a Y2 del stack, y
ası́ sucesivamente.

() 6 de mayo de 2015 36 / 56
Equivalencia entre PDAs y CFGs

Teorema: N(P) = L(G)


Autómatas de Podemos imaginarnoslo de la siguiente figura con
Pila

Descripciones
Y1 = B, Y2 = a y Y3 = C.
instantáneas
o IDs

El Lenguaje
de PDA

Equivalencia
entre PDAs y
CFGs

() 6 de mayo de 2015 37 / 56
Equivalencia entre PDAs y CFGs

Teorema: N(P) = L(G)


Autómatas de
Pila

Descripciones
instantáneas
o IDs
• Aquı́ x es dividió en 3 partes.
El Lenguaje

de PDA
1 La hipótesis inductiva nos dice que si (q, x, A) ` (q, , )
Equivalencia ∗
entre PDAs y entonces A ⇒ x.
CFGs
2 Si ahora tenemos una x que la podemos descomponer
en varias xi , entonces podemos aplicar la hipótesis
inductiva a cada una de las partes y demostrar que:
∗ ∗ ∗
A ⇒ Y1 Y2 . . . Yk ⇒ x1 Y2 . . . Yk ⇒ . . . ⇒ x1 x2 . . . xk .
3 Para completar la prueba suponemos que A = S y que
x = w.

() 6 de mayo de 2015 38 / 56
Equivalencia entre PDAs y CFGs

De PDA’s a Gramáticas
Se puede también demostrar como pasar de PDA’s a
Autómatas de
Pila CFG’s. Osea como consumir una cadena x = x1 x2 . . . xn y
Descripciones
instantáneas
vaciar el stack.
o IDs

El Lenguaje
de PDA

Equivalencia
entre PDAs y
CFGs

() 6 de mayo de 2015 39 / 56
Equivalencia entre PDAs y CFGs

De PDA’s a Gramáticas
Autómatas de
Pila

Descripciones
instantáneas
o IDs • La idea es definir una gramática con variables de la
El Lenguaje
de PDA
forma [pi−1 Yi pi ] que representan ir de pi−1 a pi
Equivalencia
haciendo un pop de Yi .
entre PDAs y
CFGs • Formalmente, sea P = (Q, Σ, Γ, δ, q0 , Z0 ) un PDA.
Definimos una gramática G = (V , Σ, R, S), donde:
V = {[pXq] : {p, q} ⊆ Q, X ∈ Γ} ∪ {S}
R = {S → [q0 Z0 p] : p ∈ Q ∪ {[qXrk ] →
a[rY1 r1 ] . . . [rk−1 Yk rk ] : a ∈ Σ ∪ {}, {r1 , . . . , rk } ⊆
Q, (r , Y1 Y2 . . . Yk ) ∈ δ(q, a, X )}

() 6 de mayo de 2015 40 / 56
Equivalencia entre PDAs y CFGs

De PDA’s a Gramáticas
Autómatas de • Osea las variables son el sı́mbolo inicial S junto con
Pila
todos los sı́mbolos formados por pXq donde p y q son
Descripciones
instantáneas estados de Q y X es un sı́mbolo del stack.
o IDs

El Lenguaje
• Las producciones se forman primero para todos los
de PDA estados p, G tiene la producción S → [q0 Z0 p], que
Equivalencia
entre PDAs y
genera todas las cadenas w que causan a P sacar
CFGs
(pop) a Z0 del stack mientras se va del estado q0 al
estado p.

• Esto es (q0 , w, Z0 ) ` (p, , ).
• Por otro lado, se tienen las producciones que dicen que
una forma de sacar (pop) a X e ir de un estado q a un
estado rk , es leer a a (que puede ser ), usar algo de
entrada para sacar (pop) a Y1 del stack, mientras
vamos del estado r al estado r1 , leer más entrada que
saca Y2 del stack y ası́ sucesivamente.
() 6 de mayo de 2015 41 / 56
Equivalencia entre PDAs y CFGs

Ejemplo
Autómatas de
Pila

Descripciones
instantáneas
o IDs
Supongamos el siguiente PDA:
El Lenguaje
de PDA

Equivalencia
entre PDAs y
CFGs

() 6 de mayo de 2015 42 / 56
Equivalencia entre PDAs y CFGs

De PDA’s a Gramáticas
Autómatas de
Pila
• PN = ({q}, {i, e}, Z , δN , q, Z ), donde
Descripciones δN (q, i, Z ) = {(q, ZZ )}, y δN (q, e, Z ) = {(q, )}.
instantáneas
o IDs • Podemos definir la siguiente gramática equivalente:
El Lenguaje
de PDA
G = (V , {i, e}, R, S), donde V = {[qZq], S} y
Equivalencia
R = {S → [qZq], [qZq] → i[qZq][qZq], [qZq] → e}.
entre PDAs y
CFGs • Asumimos que S es el sı́mbolo de entrada para toda
gramática. [qZq] es la única tripleta que podemos
formar con sı́mbolos de entrada y sı́mbolos del stack.
• A partir de S la única producción entonces que
tenemos es: S → [qZq].
• Debido que tenemos la transición:
δN (q, i, Z ) = {(q, ZZ )} generamos la producción:
[qZq] → i[qZq][qZq], y con δN (q, e, Z ) = {(q, )},
generamos la producción: [qZq] → e.

() 6 de mayo de 2015 43 / 56
Equivalencia entre PDAs y CFGs

De PDA’s a Gramáticas
Autómatas de
Pila

Descripciones
instantáneas
• Si remplazamos a [qZq] por A, nos queda: S → A y
o IDs
A → iAA|e. De hecho podemos poner simplemente
El Lenguaje
de PDA S → iSS|e.
Equivalencia • Ejemplo2: Sea PN = ({p, q}, {0, 1}, {X , Z0 }, δ, q, Z0 ),
entre PDAs y
CFGs donde δ está dada por:
δ(q, 1, Z0 ) = {(q, XZ0 )}
δ(q, 1, X ) = {(q, XX )}
δ(q, 0, X ) = {(p, X )}
δ(q, , X ) = {(q, )}
δ(p, 1, X ) = {(p, )}
δ(p, 0, Z0 ) = {(q, Z0 )}

() 6 de mayo de 2015 44 / 56
Equivalencia entre PDAs y CFGs

Ejemplo (cont.)
Autómatas de El CFG equivalente es: G(V , {0, 1}, R, S), donde:
Pila
V =
Descripciones
instantáneas {[pXp], [pXq], [pZ0 p], [pZ0 q], [qXq], [qXp], [qZ0 q], [qZ0 p], S}
o IDs
y las reglas de producción R son:
El Lenguaje
de PDA • S → [qZ0 q]|[qZ0 p]
Equivalencia
entre PDAs y • De la primera regla de transición:
CFGs
[qZ0 q] → 1[qXq], [qZ0 q]
[qZ0 q] → 1[qXp], [pZ0 q]
[qZ0 p] → 1[qXq], [qZ0 p]
[qZ0 p] → 1[qXp], [pZ0 q]
• De la 2:
[qXq] → 1[qXq], [qXq]
[qXq] → 1[qXp], [pXq]
[qXp] → 1[qXq], [qXp]
[qXp] → 1[qXp], [pXp]
() 6 de mayo de 2015 45 / 56
Equivalencia entre PDAs y CFGs

Ejemplo (cont.)
Autómatas de
Pila

Descripciones
instantáneas • De la 3:
o IDs

El Lenguaje
[qXq] → 0[pXq]
de PDA [qXp] → 0[pXp]
Equivalencia
entre PDAs y • De la 4:
CFGs
[qXq] → 
• De la 5:
[pXp] → 1
• De la 6:
[pZ0 q] → 0[qZ0 q]
[pZ0 p] → 0[qZ0 p]

() 6 de mayo de 2015 46 / 56
Equivalencia entre PDAs y CFGs

De PDA’s a Gramáticas
Autómatas de
Pila

Descripciones
instantáneas
o IDs • Se puede probar que si G se construye como arriba a
El Lenguaje
de PDA partir de un PDA P, entonces, L(G) = N(P).
Equivalencia • La prueba se hace por inducción sobre las
entre PDAs y
CFGs derivaciones. Se quiere probar que: Si
∗ ∗
(q, w, X ) ` (p, , ) entonces: [qXp] ⇒ w
• El caso base, es sencillo cuando w es a o  y
(p, ) ∈ δ(q, w, X ), por lo que por construcción de G

tenemos [qXp] → w y por lo tanto [qXp] ⇒ w.

() 6 de mayo de 2015 47 / 56
Equivalencia entre PDAs y CFGs

De PDA’s a Gramáticas
Autómatas de
Pila
• Para la parte de inducción tenemos que:
Descripciones
instantáneas (q, w, X ) ` (r0 , x, Y1 Y2 . . . Yk ) ` . . . ` (p, , ). Donde
o IDs

El Lenguaje
w = ax o w = x, por lo que
de PDA (r0 , x, Y1 Y2 . . . Yk ) ∈ δ(q, a, X ).
Equivalencia
entre PDAs y • Entonces tenemos la siguiente producción:
CFGs
[qXrk ] → a[r0 Y1 r1 ] . . . [rk−1 Yk rk ] para toda
{r1 , . . . , rk } ⊂ Q.
• Podemos escoger ri ser el estado en la secuencia
cuando Yi sale del stack (popped). Sea
w = w1 w2 . . . wk , donde wi es consumido cuando Yi es
sacado (popped).

• Entonces: (ri−1 , wi , Yi ) ` (ri , , )

() 6 de mayo de 2015 48 / 56
Equivalencia entre PDAs y CFGs

De PDA’s a Gramáticas
Autómatas de
Pila ∗
• Por la hipótesis de inducción tenemos: [ri−1 , Y , ri ] ⇒ wi .
Descripciones
instantáneas
o IDs
• Por lo que obtenemos la siguiente secuencia de
El Lenguaje derivación:
de PDA ∗
[qXrk ] ⇒ a[r0 Y1 r1 ] . . . [rk−1 Yk rk ] ⇒
Equivalencia ∗
entre PDAs y aw1 [r1 Y2 r2 ][r2 Y3 r3 ] . . . [rk−1 Yk rk ] ⇒
CFGs ∗
aw1 w2 [r2 Y3 r3 ] . . . [rk −1 Yk rk ] ⇒
...
aw1 w2 . . . wk = w

• Para el only-if queremos probar que si: [qXp] ⇒ w

entonces: (q, w, X ) ` (p, , ).
• La prueba sigue las mismas ideas que hemos estado
viendo.

() 6 de mayo de 2015 49 / 56
Equivalencia entre PDAs y CFGs

PDA’s determinı́sticos
Autómatas de
Pila

Descripciones
instantáneas
o IDs

El Lenguaje
de PDA Un PDA P = (Q, Σ, Γ, δ, q0 , Z0 , F ) es determinı́stico si y solo
Equivalencia
entre PDAs y
si:
CFGs
1 δ(q, a, X ) es siempre vacı́o o es un singleton.
2 Si δ(q, a, X ) no es vacı́o, entonces δ(q, , X ) debe de
ser vacı́o.

() 6 de mayo de 2015 50 / 56
Equivalencia entre PDAs y CFGs

Ejemplo
Autómatas de Sea Lwcw r = {wcw R : w ∈ {0, 1}∗ }. Entonces Lwcw r es
Pila
reconocido por el siguiente DPDA:
Descripciones
instantáneas
o IDs

El Lenguaje
de PDA

Equivalencia
entre PDAs y
CFGs

() 6 de mayo de 2015 51 / 56
Equivalencia entre PDAs y CFGs

Ejemplo
Autómatas de
Pila

Descripciones
instantáneas
o IDs
Covertir el siguiente PDA a un CFG:
El Lenguaje
de PDA 1 δ(q, 1, Z0 ) = {(q, XZ0 )}
Equivalencia
entre PDAs y 2 δ(q, 1, X ) = {(q, XX )}
CFGs
3 δ(q, 0, X ) = {(p, X )}
4 δ(q, , X ) = {(q, )}
5 δ(p, 1, X ) = {(p, )}
6 δ(p, 0, Z0 ) = {(q, Z0 )}

() 6 de mayo de 2015 52 / 56
Equivalencia entre PDAs y CFGs

Ejemplo (cont.)
Autómatas de
Pila
S → [qZq]|[qZp] (S sı́mbolo de entrada, e cadena vacı́a, y Z
Descripciones en lugar de Z0 )
instantáneas
o IDs De la regla (1):
El Lenguaje [qZq] → 1[qZq][qZq]
de PDA
[qZq] → 1[qZp][pZq]
Equivalencia
entre PDAs y [qZp] → 1[qZq][qZp]
CFGs
[qZp] → 1[qZp][pZq]
De la regla (2):
[qXq] → 1[qXq][qXq]
[qXq] → 1[qXp][pXq]
[qXp] → 1[qXq][qXp]
[qXp] → 1[qXp][pXq]
De la regla (3):
[qXq] → 0[pXq]
[qXp] → 0[pXp]

() 6 de mayo de 2015 53 / 56
Equivalencia entre PDAs y CFGs

Ejemplo (cont.)
Autómatas de
Pila

Descripciones
instantáneas
o IDs

El Lenguaje De la regla (4):


de PDA

Equivalencia
[qZq] → 
entre PDAs y
CFGs
De la regla (5):
[pXp] → 1
De la regla (6):
[pZq] → 0[qZq]
[pZp] → 0[qZp]

() 6 de mayo de 2015 54 / 56
Equivalencia entre PDAs y CFGs

PDA’s determinı́sticos
Autómatas de
Pila

Descripciones
instantáneas
o IDs

El Lenguaje
de PDA

Equivalencia
• Se puede demostrar que RE ⊂ L(DPDA) ⊂ CFL.
entre PDAs y
CFGs • La primera parte es fácil. Si es RE se puede construir
un DFA, por lo que construir un DPDA es trivial a partir
de este. De hecho podemos ignorar el stack.

() 6 de mayo de 2015 55 / 56
Equivalencia entre PDAs y CFGs

Algunas propiedades
Autómatas de
Pila

Descripciones
instantáneas
o IDs
• RE ⊂ L(DPDA) ⊂ CFL
El Lenguaje
de PDA • Por ejemplo: Lwcw r es reconocido por L(DPDA) pero no
Equivalencia
entre PDAs y por RE.
CFGs
• Lww r es reconocido por un lenguaje de un CFG pero no
por L(DPDA).
• Si L = L(P) para algún DPDA P, entonces L tiene un
CFG no ambiguo.
Es el PDA del primer ejemplo (acetato 17) determinista?

() 6 de mayo de 2015 56 / 56

También podría gustarte