You are on page 1of 20

Captulo 11.

Autmatas a pila

11.1. Concepto de AP

Definicin, Representacin, Lenguaje


reconocido, AP por vaciado de pila, AP
por estado final, AP determinista.

11.2. Equivalencia entre AP por vaciado


de pila y AP por estado final

11.3. AP y lenguajes independientes de


contexto

Obtener un AP para aceptar el lenguaje


generado por una GIC. Obtener una GIC
para generar el lenguaje aceptado por un
AP.

1
11.1. Concepto de Autmata a pila

Introduccin

De igual manera que los lenguajes regulares se pueden


representar mediante autmatas finitos deterministas, los
lenguajes independientes del contexto tienen su correspondencia
en otro tipo de dispositivo: el Autmata a Pila (AP).
Un autmata a pila es un dispositivo que tiene acceso a:

Una secuencia de smbolos de entrada, que en general se


representa por una cinta que se desplaza frente a un
mecanismo de captacin de dichos smbolos.
El smbolo superior de una memoria en pila (LIFO)
Un autmata a pila se encuentra en cada momento en un estado
determinado y el estado siguiente depende de los tres elementos
siguientes:

estado actual
smbolo de entrada
smbolo superior de la pila
Generalmente, el autmata a pila es no determinista en el
sentido de que se permite que haya varias acciones posibles en
cada momento.

2
Un AP puede realizar dos tipos de operaciones elementales:
1. Dependientes de la entrada.
Se lee la cinta y se avanza la cabeza lectora,
En funcin:
del estado actual (qi)
del smbolo ledo en la cinta (a)
del smbolo en la cima de la pila (Z)
Se pasa a un nuevo estado, se elimina el elemento Z de la
cima de la pila y se introduce en su lugar una cadena de
smbolos.
2. Independientes de la entrada.
Las mismas operaciones que en el caso anterior, slo que
no se lee la cinta, ni se avanza la cabeza lectora. Se
maneja la pila sin la informacin de entrada.

3
Definicin formal de un AP

Un autmata a pila es una sptupla:


AP= (, , Q, A0, q0, f, F)
donde :
1. es el alfabeto de entrada
2. es el alfabeto de la pila
3. Q es un conjunto finito de estados
4. A0 es el smbolo inicial de la pila
5. q0 Q el estado inicial del autmata
6. F Q es el subconjunto de estados finales
7. f es una aplicacin denominada funcin de transicin
de ternas (estado, smbolo de entrada o , smbolo de
pila) en el conjunto de las partes Q*

Q*
f : Q{{}} 2 (subconjunto finito)

Un AP comienza su funcionamiento en la configuracin inicial:


en el estado inicial (q0)
con slo un smbolo en la pila (A0)
con la cabeza lectora en el primer smbolo de la entrada

A partir de esta configuracin realiza transiciones segn la


definicin de la funcin f.

4
Interpretacin de la funcin de transicin

Representaremos con:
(a, b,...) los elementos de
(A, B, C..) los de
(x, y, z,...) los de *
(X, Y, Z,...) los de *
La interpretacin de f es:
a) f(q, a, A) = {(q1, Z1), (q2, Z2),... (qn, Zn)}
cuando el autmata se encuentra en el estado q, lee el smbolo
de entrada a y tiene el smbolo A en la cima de la pila; el
autmata pasar a algn estado qi (recordar que es no
determinista), eliminar el smbolo A de la pila e introducir en
ella la palabra Zi , quedando la cabeza de Zi en la cima de la
pila.
b) f(q, , A) = {(q1, Z1), (q2, Z2),... (qn, Zn)}
cuando el autmata se encuentra en el estado q, y tiene el
smbolo A en la cima de la pila; el autmata pasar a algn
estado qi (recordar que es no determinista), eliminar el smbolo
A de la pila e introducir en ella la palabra Zi , quedando la
cabeza de Zi en la cima de la pila.
Se entiende que el resultado de la funcin f para las
configuraciones (estado, smbolo de entrada y smbolo de pila)
no explcitamente especificadas es el conjunto vaco. Estas
representan configuraciones muertas del autmata.

5
Representacin grfica

AP=({a,b,c},{S,A,B,b},{p,q,r},S,p,f,{r})

f(p,a,S)={(p,SAB), (q,b)}
f(p,,S)={(p,SAB)}
f(q,b,b)={(q,)}
f(q,b,B)={(q,)}
f(q,c,A)={(q,A),(q,)}
f(q,,B)={(r,)}

(,B,)
S (a,S,b) r*
p q
(b,b,)
(a,S,SAB) (c,A,A)
(,S,SAB) (c,A,)
(b,B,)

Cada estado corresponde a un nodo en el grafo y est


etiquetado con el nombre del estado (si es un estado final se
marca adems con *)
Cada transicin (q, Z)f(p, a, A) corresponde a un arco del
nodo p al nodo q y tiene la etiqueta (a,A,Z).
Las etiquetas de los arcos pueden tener la forma:
(a,A,), (a,A,B), (a,A,BC...), (,A,), (,A,B), (,A,BC...)
siendo (a, A,B,C).
No hay transiciones de forma:
(..., , ...), (ab..., ..., ...) o (..., AB..., ...)

6
Descripcin instantnea

Una descripcin instantnea o configuracin es una terna (q, x,


Z) donde qQ, x*, Z* que define: el estado del autmata,
la entrada que resta por leer y el contenido de la pila en un
momento dado.

Movimientos

Un movimiento es el paso de una descripcin instantnea a otra


y se produce como resultado de la aplicacin de la funcin f.
Se representa por el smbolo , que se lee como precede a.

Hay dos tipos de movimientos:


(q, az, AZ) (p, z, YZ) si (p, Y)f(q, a, A)
(q, z, AZ) (p, z, YZ) si (p, Y)f(q, , A)
(q,pQ, a, A, z*, Z,Y*)

Utilizaremos el smbolo * para expresar el cierre transitivo y


reflexivo de . Es decir se entiende por Ii * Ij el resultado de
una serie movimientos tales que
Ii * Ij Ii Ik ...... Ij

7
Lenguaje aceptado por un autmata a pila

Se describe el proceso de aceptacin o rechazo de una palabra


de * mediante una sucesin de movimientos.

Un AP= (, , Q, A0, q0, f, F) puede reconocer palabras del


alfabeto de entrada de dos formas distintas:

- por estado final:


LF(AP) = {x | (q0, x, A0) * (p, , X), con pF, X*}
- por vaciado de pila :
LV(AP) = { x | (q0, x, A0) * (p, , ) con pQ}

LF(AP) y LV(AP) representan a los lenguajes reconocidos por el


autmata AP por estado final y por vaciado de pila
respectivamente.
Cuando la aceptacin se realiza por vaciado de pila, el conjunto
de estados finales F es irrelevante.

Equivalencia de AP

Dos autmata a pila (por vaciado de pila o por estado final),


AP1 y AP2, son equivalentes, si aceptan el mismo lenguaje, es
decir, si L(AP1)=L(AP2).

8
Ejemplo:

Autmata a pila para el lenguaje L={anbn | n > 0}


APV=({a,b},{S,A},{p,q},S,p,f,)
f(p,a,S)={(p,A)}
f(p,a,A)={(p,AA)}
f(p,b,A)={(q, )}
f(q,b,A)={(q, )}

S (b,A,)
p q
(a,S,A) (b,A,)
(a,A,AA)

APF=({a,b},{S,A},{p,q,r},S,p,f,{r})
f(p,a,S)={(p,AS)}
f(p,a,A)={(p,AA)}
f(p,b,A)={(q,)}
f(q,b,A)={(q,)}
f(q,,S)={(r,S)}

S (,S,S)
p (b,A,) q r*
(a,S,AS) (b,A,)
(a,A,AA)

Movimientos para (p,aabb,S) (p,abb,S) (p,aab,S)

Otro ejemplo:
Autmata a pila para el lenguaje
L={wwR | w{a,b}*, wR imagen inversa de w}.
9
Autmatas a pila deterministas

Decimos que un autmata a pila es determinista si se verifica lo


siguiente:

1. qQ, A:
f(q, , A) a: f(q, a, A) =
2. qQ, A, a {}:
f(q, a, A) contiene como mximo un elemento.

A lo sumo, desde una configuracin cualquiera existe como


mucho un posible movimiento.
A diferencia de los autmatas finitos, se entiende que un AP es
no determinista, a menos que se diga lo contrario.

Ejemplo:
AP (por vaciado de pila) para L={anbmcp | n0, m1, p n+m}

(a,S,AS) (c,S,S)
(a,A,AA) (c,A,)
(b,A,AA)
(,S,)

S
p q r
(c,A,)
(b,A,AA)
(b,S,AS)

Determinista o no?

Construir un APP determinista para L={anbmcp | n0, m1, p=


n+m}.
10
11.2. Equivalencia de APF y APV

Teorema:

El conjunto de lenguajes aceptados por estado final por los


autmatas a pila LAPF es igual que el conjunto de lenguajes
aceptados por vaciado por pila de los autmatas a pila LAPV.

Mtodo de demostracin:

1. LAPF LAPV

Sea AP= (, , Q, A0, q0, f, F) un autmata a pila y LF(AP) el


lenguaje aceptado (por estado final) de este autmata.
Construimos AP= (, {B}, Q{s,r}, B, s, f, ), con B
y s,rQ, donde f esta definido por:

f(s,,B)={(q0,A0B)}
f(q,a,A)=f(q,a,A) para todo qQ, qF, a{} y A
f(q,a,A)=f(q,a,A) para todo qF, a y A
f(q,,A)=f(q,,A) {(r, )} para todo qF y A
f(q,,B)= {(r, )} para todo qF
f(r,,A)= {(r, )} para todo A{B}

Se puede mostrar que LF(AP)=LV(AP). Por tanto se verifica que


LAPF LAPV.

11
2. LAPV LAPF

Sea AP= (, , Q, A0, q0, f, F) un autmata a pila y LV(AP) el


lenguaje aceptado (por vaciado de pila) de este autmata.
Construimos AP= (, {B}, Q{s,r}, B, s, f, {r}), con B
y s,rQ, donde f esta definido por:

f(s,,B)={(q0,A0B)}
f(q,a,A)=f(q,a,A) para todo qQ, a{} y A
f(q,,B)= {(r, )} para todo qQ

Se puede mostrar que LV(AP)=LF(AP). Por tanto se verifica que


LAPV LAPF.

De LAPF LAPV y LAPV LAPF se sigue que LAPV = LAPF, lo que


demuestra el teorema.

12
11.3. AP y lenguajes independientes del
contexto
Construccin de un AP a partir de una GIC

Teorema:
Sea AP el conjunto de todos los autmatas a pila sobre un
alfabeto y LAP_={L | L=L(AP) y AP AP} la familia de
lenguajes sobre aceptados por los autmatas a pila. (Da igual
si se acepta el lenguaje por estado final o por vaciado de pila.)
Sea LG_2_ la familia de todos los lenguajes sobre generados
por gramticas del tipo 2 (lenguajes independientes del
contexto).
LG_2_ = LAP_ .

Mtodo de demostracin:
1. LG_2_ LAPV_
Para cada GIC, G, existe un autmata a pila por vaciado de
pila, AP, tal que L(G)=LV(AP).
Encontrar un algoritmo para construir AP a partir de una
gramtica genrica G.
2. LG_2_ LAPV_
Para cada autmata a pila, AP, por vaciado a de pila existe
una GIC, G, tal que L(G)=LV(AP).
Encontrar un algoritmo para construir G a partir de un AP
genrico.

LG_2_ LAPV_ y LG_2_ LAPV_ LG_2_=LAPV_

Se verifica: Lic_= LG_2_=LAPV_=LAPF_=LAP_

13
GIC AP reconocedor por vaciado de pila

Ejemplo:

Lenguaje L={ anbn | n0}:


S::=aSb| (bien formada) S::= aSb|ab|

1. Transformar gramtica en FNG:


G=({a,b},{S,B},S,P)
P={S::= aSB|aB|, B::= b}

2. Construir autmata:
S (,S,)
q
(a,S,SB)
(a,S,B)
(b,B,)

AP= ({a,b}, {S,B}, {q}, S, q, f, ), donde f se define por:


f(q,,S)={(q, )} f(q,b,B)={(q,)}
f(q,a,S)={(q,SB),(q,B)}

(q,aabb,S) (q,abb,SB) (q,bb,SBB) (q,bb,BB) (q,b,B) (q,,)


otra posibilidad: (q,aabb,S) (q,abb,B) no

(q,abb,S) (q,bb,SB) (q,bb,B) (q,b,) no


otra posibilidad:
(q,abb,S) (q,abb,) no
(q,abb,S) (q,bb,B) (q,b,) no

14
Otra posibilidad:

Gramtica en FNG
G=({a,b},{S,B},S,P)
P={S::= aSB|aB|, B::= b}
(,S,aSB)
(,S,aB)
(,S,)
(,B,b)
(a,a,)
(b,b, )
S q

AP= ({a,b}, {S,B,a,b}, {q}, S, q, f, ), donde f se define:


f(q,,S)={(q,aSB),(q,aB),(q,)}
f(q,,B)={(q,b)}
f(q,a,a)={(q,)}
f(q,b,b)={(q,)}

(q,aabb,S) (q,aabb,aSB) (q,abb,SB) (q,abb,aBB) (q,bb,BB)


(q,bb,bB) (q,b,B) (q,b,b) (q,, )

(q,abb,S) (q,abb,aSB) (q,bb,SB) (q,bb,aBB) no


otra posibilidad:
(q,abb,S) (q,abb,) no
(q,abb,S) (q,abb,aB) (q,bb,B) (q,bb,b) (q,b,) no

15
Algoritmo:

Sea la gramtica G = (T, N, S, P), que suponemos en forma


normal de Greibach. A partir de ella construimos un autmata
a pila AP= (, , Q, A0, q0, f, F) como sigue:

Algoritmo 1:
= T, = N, Q={q}, A0 = S, q0=q, F=
y f se define por:
1. (q, ) f(q, , S) si (S::= ) P
2. (q, Z) f(q, a, A) si (A::= aZ) P

Algoritmo 2:
= T, = NT, Q={q}, A0 = S, q0=q, F=
y f se define por:
1. (q, ) f(q, , S) si (S::= ) P
2. (q, aZ) f(q, , A) si (A::= aZ) P
3. f(q, a, a)={(q, )} para todo aT

16
Ejemplo:
Lenguaje de las parntesis (bien formada):
S::=SS|aSb| S::= SS|aSb|ab|

1. Transformar gramtica en FNG (proceso sin S::= ):


G=({a,b},{S,B,C},S,P)
P= {S::= aSBC|aBC|aSB|aB|
C::= aSBCC|aBCC|aSBC|aBC|aSB|aB, B::= b}

2. Construir autmata:
AP= ({a,b}, {S,B,C}, {q}, S, q, f, ), donde f se define:
f(q,,S)={(q, )}
f(q,a,S)={(q,SBC),(q,BC),(q,SB),(q,B)}
f(q,a,C)={(q,SBCC),(q,BCC),(q,SBC),(q,BC),(q,SB),(q,B)}
f(q,b,B)={(q,)}

(q,abaababb,S) (q,baababb,BC) (q,aababb,C) (q,ababb,SB)


(q,babb,BCB) (q,abb,CB) (q,bb,BB) (q,b,B) (q,,)

17
GIC AP reconocedor por estado final

Idea:
Construir el AP por vaciado de pila (de un estado) y aadir dos
estados nuevos:

(,A0,SA0)
A0 s (,S,) r*
q (,A0,A0)
(a,S,SB)
(a,S,B)
(b,B,)

Algoritmo:
Sea la gramtica G = (T, N, S, P), que suponemos en forma
normal de Greibach. A partir de ella construimos un autmata
a pila AP como sigue:
1. Construir el autmata AP= (, , {q}, S, q, f, F) que
acepta por vaciado de pila con el algoritmo dado anteriormente.
Sea q el nico estado de este autmata.
2. AP=(, A0, {q, r, s}, A0, s, f, {r}) con A0 y f
definido por:
f(s, , A0)={(q, SA0)}
f(q, a, A)=f(q,a,A) para todo a {} y A
f(q, , A0)={(r, A0)}

18
Construccin de una GIC a partir de un AP genrico

Sea el autmata a pila AP=(, , Q, A0, q0, f, ) (que acepta por


vaciado de pila). Para todo qi,qj Q, A:
El smbolo [qiAqj] representa el conjunto de cadenas x que
permiten al autmata eliminar el smbolo A de la cima de la pila,
partiendo del estado qi y terminando en el estado qj, consumiendo
todos los smbolos de x. Formalmente:

{ x* / (qi,x,A) * (qj,,) }

A partir de este autmata, y de la definicin anterior,


construimos la siguiente GIC: G=(T, N, S, P), donde:
T=, N={S}{[qiAqj] | qi, qjQ , A}

y el conjunto de producciones P:
1. para todo qi Q:
S::=[q0A0qi] P
2. por cada (qj, Y1Y2Yk) f(qi, a, A), donde k >0, y
a{}:
{[qiArk] ::= a[qjY1r1][r1Y2 r2] [rk-1Yk rk],
para todas las listas de estados (r1,r2, ,rk) Qk } P
3. por cada (qj, ) f(qi, a, A), donde a{}:
{[qiAqj] ::= a, para todo qjQ } P

Se puede demostrar que L(G)=LV(AP), es decir:


S * x, si y slo si, (q0,x,A0)* (qj,,), para algn qj
Eso completa la demostracin para LG_2_ LAPV_.
Dado que LG_2_ LAPV_ (construccin de AP a partir de G) se
verifica LG_2_= LAPV_.

19
Ejemplo:
Autmata (por vaciado de pila): S (,S,)
q
(a,S,SB)
(a,S,B)
(b,B,)
AP= ({a,b}, {S,B}, {q}, S, q, f, ), donde f se define por:
f(q,,S)={(q, )} f(q,b,B)={(q,)}
f(q,a,S)={(q,SB),(q,B)}

Gonstruir G a partir de AP:


G=({a,b}, N, A, P)
N={A, [qSq], [qBq]}
P={ A::=[qSq] , [qSq]::= , [qBq]::= b
[qSx]::=a[qBx] con xQ [qSq]::=a[qBq]
[qSx]::=a[qSy][yBx] con x,y Q [qSq]::=a[qSq][qBq] }

Usamos otros smbolos y simplificamos:


P={ A::=S, S::=|aB|aSB, B::=b} {A::=|aB|aAB, B::=b}

Autmata:
(q,aaabbb,S) (q,aabbb,SB) (q,abbb,SBB) (q,bbb,BBB)
(q,bb,BB) (q,b,B) (q,,)
Gramtica:
AaABaaABBaaaBBBaaabBB aaabbB aaabbb

Otro ejemplo:
S (a,S,SAA)
q
(b,A,)
(b,S,)

20