Autómatas de Pila y
Lenguajes Libres del Contexto
Motivación
-¿Es posible diseñar un AF que reconozca el lenguaje L1? L1 = { an bn / n > 0 }
-¿Es posible diseñar un AF que reconozca el lenguaje L2?
L2 = { x / x { (, ) }* y x es una cadena con paréntesis balanceados }
( ( ( ( ) ) ) ) ( ) ( ( ) )
Es necesario agregar algo a los AF para incrementar su poder computacional
Memoria auxiliar que funciona como una Pila
Autómatas de Pila
tope
Símbolo de pila vacía
Autómatas de Pila
Dado un lenguaje L, libre del contexto, definido sobre un alfabeto A y una cadena x arbitraria, determinar si x L o x L.
AUTOMATA DE PILA
Cadena x SI
NO
Lenguaje Libre del Contexto
• Dos puntos de vista:
Como dispositivo reconocedorreconocedor de la pertenencia de una cadena a un lenguaje libre del contexto.
Autómatas de Pila Reconocedores
Estados del AP:
Cantidad finita.
Un estado inicial.
Al menos un estado final o de aceptación.
Dada una cadena x en la cinta de entrada, si el AP:
termina en un estado finalestado final
cadena aceptadacadena aceptada
termina en un estado no finalestado no final
cadena rechazadacadena rechazada e0 e1 e2 e3 e4 e5
mecanismo de control
cinta de entrada (contiene cadena a ser leída)
cabeza lectora (se mueve a derecha o no se mueve)
indicador de estado
a b c d …
Z0 B A
Uso de la pila
L
1= { a
nb
n/ n > 0 }
a a b b …
Z0
1)
Z0 A
a a b b …
2)
Z0 A A
a a b b …
3)
Z0 A
a a b b …
4)
Z0
a a b b …
5)
Si la cantidad de a´s es igual
a la cantidad de b´s se llega al final de
la cadena con Z
0en la pila
Autómatas de Pila Reconocedores
Formalmente, un AP reconocedor determinístico (APD) se define como una 7-upla
APD = <E, A, P, , ei, F, Z0>
E es un conjunto finito de estados; E
A es el alfabeto de entrada
es la función de transición de estados
: E x ( A {
} ) x P E x P* ei es el estado inicial; ei E
F es el conjunto de estados finales o de aceptación; F E P es el alfabeto de la pila
Z0 símbolo distinguido de la Pila Z0 P
A
P =
e
je
iAutómatas de Pila Reconocedores
es la función de transición de estados
: E x ( A {
} ) x P E x P*1)
(e
i, a, X) = (e
k,
(e
i,
, X) = (e
k,
donde a A; X P;
P* ; ei , ek E
Importante:
Si existe transición de tipo (2), sólo se garantiza que AP es determinístico si
s: s A, ( ei, s, X) no está definida
e
je
ka, X /
e
je
kAutómatas de Pila Reconocedores
Transición de Tipo 1
(e
j, a, X) = (e
k,
e
j
e
ka, X /
Estado actual
Símbolo por leer en cinta de entrada Tope de la Pila
Nuevo estado
Acción sobre la Pila
Si ZYX deja X, apila Y, apila Z (Nuevo tope Z)
Si XX deja X, apila X (Nuevo tope X)
Si X deja X (No altera la Pila)
Si elimina X (Desapila)
Autómatas de Pila Reconocedores
Descripción instantánea
Una configuración de un AP es una tripla
<
e
i,
a
x
> donde Luego, se define una relación de transición |con (1) lee el símbolo a y reemplaza el tope X por
.donde a A; A*; X P; P*; ei ,ej E
con (2), no lee el símbolo a y reemplaza el tope X por
.<
e
i,
a
,
X
<
e
i,
a
X
estado actual
a símbolo a leer, w resto cadena cinta X tope, cadena debajo tope
ei
ej
a, X /
(1)
ei
ej
, X /
(2)
(1)
|
< e
j,
,
< e
j, a
,
Autómatas de Pila Reconocedores
Cadena aceptada por AP
Una cadena A* es aceptada por AP = <E, A , P, e
0, Z0, F> sí y sólo sí
< e
0,
, Z
0
|
*< e
f,
El AP, comienza en el estado e0, con pila vacía, y luego de leer toda la cadena
, llega a un estado ef F, y en la pila queda cualquier cadena
P*Los lenguajes aceptados por los Autómatas de Pila se denominan Autómatas de Pila Lenguajes Libres (Independientes) del Contexto
L = { a
nb
n/ n > 0 }
e
1a,Z
0/ AZ
0e
0a,A / AA
e
2b,A /
b,A /
e
3
, Z
0/ Z
0APD=<{e
0,e
1,e
2,e
3},{a,b}, {A,Z
0},
, e
0, Z
0, {e
3}>
L = { a
nb
2n/ n > 0 }
e
1a,Z
0/ AZ
0e
0a,A / AA
e
2b,A / A
e
4
, Z
0/ Z
0APD=<{e0,e1,e2,e3,e4}, {a,b}, {A,Z0}, , e0, Z0, {e4}>
e
3b,A /
b,A / A
e
1a,Z
0/ AAZ
0e
0a,A / AAA
e
2b,A /
APD=<{e
0,e
1,e
2,e
3}, {a, b}, {A, Z
0},
, e
0, Z
0, {e
3}>
b,A /
e
3
, Z
0/ Z
0Otra forma
Autómatas de Pila
Teorema:
Los APND tienen mayor poder de reconocimiento que los APD.
Es decir, hay lenguajes libres del contexto que pueden ser
reconocidos por un APND pero no por un APD.
Autómatas de Pila Reconocedores
Autómata de pila no determinístico
APND= <E, A , P, , e0, Z0, F>, donde las componentes E, A, P, e0, Z0, F se definen como antes, y la función de transición se define como
: E x (A {}) x P Pf( E x P*) P
f denota los subconjuntos finitos de E x P
*
1) ( ei ,a, X) = {(ej,1), (ek, 2), .... } 2) ( ei ,, X) = {(ej,1), (ek, 2), .... }
donde a A, X P,
1, 2 P*, e
Autómata de Pila de No Determinístico
APND= <E, A , P, , e0, Z0, F>, siendo no determinística definida como:
: E x (A {}) x P Pf( E x P *) Pf denota los subconjuntos finitos de E x P*
1) ( ei ,a, X) = {(ej, 1), (ek, 2), .... }
2) ( ei ,, X) = {(en,1), (em, 2),… }
donde a A, X P, 1, 2, 1, 2 P* y e
i, ej, ek, en, em E
ei ej
a, X /
a, X / ek
3) Combinadas (1) y (2)
Si lee a, con tope X
dos caminos
Si no lee cinta con tope X dos caminos
Si lee a, y tope X un camino Si no lee a, y tope X otro camino
CASOS DE NO DETERMINISMO
ei en
, X /
, X / em
ei ej
a, X /
Ejemplo: Lenguaje libre del contexto determinístico
L = { w c w
R/ w
{a,b}* }
e
0a,A / AA
b,B/
e
3
, Z
0/ Z
0Ejemplos de
cadenas
c
abcba
abbcbba
…
e
1a,Z
0/ AZ
0b,Z
0/ BZ
0b,A / BA
a,B / AB
b,B / BB
e
2c,A / A
c,B / B
a,A /
APD=<{e
0,e
1,e
2,e
3}, {a,b,c}, {A,B, Z
0},
, e
0, Z
0, {e
3}>
Ejemplo: Lenguaje libre del contexto no determinístico
L = { w w
R/ w
{a,b}* }
a,A / AA
b,B/
e
3
, Z
0/ Z
0Ejemplos de
cadenas
abba
abbbba
…
e
1a,Z
0/ AZ
0b,Z
0/ BZ
0b,A / BA
a,B / AB
b,B / BB
e
2a,A /
b,B /
a,A /
APND = <{e
0,e
1,e
2,e
3}, {a, b}, {A, B, Z
0},
, e
0, Z
0, {e
0,
,e
3}>
Para este lenguaje no existe una solución con AP determinístico
Análisis del Lenguaje
• Si el lenguaje es libre del contexto no
determinístico hacer APND
• Si el lenguaje es libre del contexto
determinístico hacer APD (fijarse si agregaron
transiciones que generan no determinismo y
Uso de la pila (CASO MENOR
n < i
)
L = { a
nb
i/ n ≥ 0 y n < i}
Z0 A A A
n
i
i>n
e
1a,Z
0/ AZ
0e
0a,A / AA
e
2b,A /
e
3b, Z
0/ Z
0b,A /
b,Z
0
/ Z
0b,Z
0/ Z
0APD = <{e0,e1,e2,e3}, {a, b}, {A, Z0}, , e0, Z0, {e3} >
Ej. de cadenas
bbb
aabbb
abb
…
Desapila igual cantidad
Uso de la pila (CASO MENOR IGUAL n ≤ i)
L = { a
nb
i/ n≥0 y n ≤ i}
Z0 A A A
n
i
i
≥
n
e
1a,Z
0/ AZ
0a,A / AA
e
2b,A /
e
3
, Z
0/ Z
0b,A /
b,Z
0/ Z
0b,Z
0/ Z
0e
0APD = <{e0,e1,e2,e3}, {a, b}, {A, Z0}, , e0, Z0, {e0, e3} >
Ej. de cadenas
Uso de la pila (CASO MAYOR n>i)
L = { a
nb
i/ i≥0 y n > i}
Si n>i tiene que llegar
a leer toda la cadena
y quedar A´s en la pila
Z0 A A A
n
i
e
1a,Z
0/ AZ
0e
0a,A / AA
e
2b,A /
e
3
, A / A
b, A /
APD = <{e0,e1,e2,e3}, {a, b}, {A, Z0}, , e0, Z0, {e1, e3}>
Ej. de cadenas
a
aaaa
aaabb
aaaab
…
Uso de la pila (CASO MAYOR IGUAL
n ≥ i
)
L = { a
nb
i/ i ≥ 0 y n ≥ i}
e
1a,Z
0/ AZ
0e
2b,A /
e
0a,A / AA
b,A /
Ej. de cadenas
aaa
aab
aabb
aaaabb
…
A A Z0
A
n
i
=
<
APD = <{e0,e1,e2}, {a, b}, {A, Z0}, , e0, Z0, {e0 ,e1 ,e2} >
Autómatas de Pila Traductores
Formalmente, un AP traductor (APT) se define como una 9-tupla
AP
T= <E, A, P,
, ei, F, Z0,
, S>
S es el alfabeto de salida
es la función de traducción;
: E x ( A
{
}) x P
S
*donde E, A , P, , e0, Z0, F se definen como antes y se agregan dos componentes
está definida siempre que está definida.
Si existe (ej, a, X) =( ek,) y además (ej, a, X) = t
donde ej, ek E; a A; X P; P*; t S*
e
je
kAutómatas de Pila Traductores
Función de traducción para cadenas
El autómata sólo define la traducción, si el autómata AP subyacente “acepta” la cadena.