1. AUTOMATAS DE PILA
Definición:
Un autómata de pila es formalmente una séxtupla de la forma (Z,V,P,delta,0,F),
donde
Z Conjunto finito de estados.
V Alfabeto de la máquina.
P Conjunto finito de símbolos de pila.
delta Colección finita de transiciones.
0 Estado inicial.
F Conjunto de estados de aceptación.
Esquemáticamente:
El autómata de pila analiza cadenas de la misma manera que los autómatas
finitos.
La diferencia con aquellos es que el símbolo leído, x , tenia en cuenta el estado
de la máquina A, donde se encontraba y la función de transición ubicada en el
par ordenado (A,x) nos daba el destino del nuevo estado B. Utilizando el
correspondiente grafo esta transición se manifestaba como
2. Las transiciones en los autómatas de pila se representan en cambio
A es el estado origen donde se encuentra la máquina. Si la tira en la celda
señala por la cabeza lectora tiene el símbolo al x, lee lo que tiene la pila en su
cabeza si es c. Lo saca y graba en la cabeza de la pila el elemento d.
Debemos agregar que al comienzo La primera celda de la cinta se coloca sobre
la cabeza lectora con la pila vacía.
Lo importante es el agregado a los autómatas finitos de un sistema de memoria
interna en forma de pila con lo que se incrementa considerablemente el
potencial de procesamiento de lenguaje del autómata.
Consideremos algunas características que se presentan
# es un símbolo de pila que suele usarse como elemento de control para
detectar el fin de la pila.
La palabra vacía & juega de distinta manera según las tres posiciones que
puede ocupar en la flecha de la transición.
En primer lugar sobre la flecha significa que no se lee nada de la tira y la
misma no avanza una posición,
En segundo lugar no extraemos nada de la pila
En tercer lugar no ponemos nada en la pila.
Vamos a dar un ejemplo de un autómata a pila que justamente reconoce las
palabras del lenguaje (xnyn/n es N) para el cual no existe autómata finito que lo
reconociera.
3. El estado 0 es el de inicio. El 3 es el de aceptación.
Al comenzar, asumiendo que la pila se encuentra vacía,la máquina se
encuentra apuntando al primer símbolo de la tira.
La transición &, &, # indica que no lee nada de la tira y no avanza a la segunda
celda, la segunda & señala que no se saca nada de la pila, y # en tercer lugar
nos dice que colocamos este símbolo en la pila en la parte superior y que la
misma por estar vacía, va a ser el único símbolo que lo ocupará. Finalmente
pasa la maquina al estado 1. En este estado comenzamos a leer desde la
primera celda hacia la derecha .Por cada x que se lee de la celda no sacamos
nada de la pila pero si colocamos la x en la pila en cada caso, y se pasa a la
derecha con la cabeza lectora.
Este proceso continua hasta que se lee una y. En ese momento tenemos la pila
con un símbolo # en el fondo y encima de ella tantas x como las que tenia la
cinta en la primera parte. Al leerse la primera y, se extrae la x que esta en la
parte superior de la pila. A continuación, en estado 2, por cada y que se lee de
la tira, se retira una x de la pila, continuando con su desplazamiento a la
derecha, Esto continua hasta que se terminan los símbolos de la tira. Pero
como en la pila, si hubo tantas y como x, quedo el símbolo # en la cabeza de la
pila. Por lo tanto de realiza la transición &, #, & con lo que no se lee nada de la
tira, quedando la cabeza lectora en esa posición, se extrae el símbolo # de la
pila (la pila queda vacía) y no coloca nada en la pila. Pasamos al estado 3, de
aceptación, sobre el que no hay transición.
De esta manera termina el proceso y como conclusión se tiene que se
reconocerán como válidas aquellas tiras que tienen una cantidad inicial de x a
la izquierda, seguidas con la misma cantidad de y.
La palabra vacía no es aceptada. Eso podría ocurrir si el estado 0 fuese
también de aceptación.
4. AUTOMATAS DE PILA COMO ACEPTADORES DE LENGUAJES
Los autómatas de pila se pueden utilizar para analizar cadenas en forma similar
a como se usan los autómatas finitos. Colocamos la cinta sobre la máquina
Desde su posición inicial, con la pila vacía, y declaramos que la cadena se
aceptara si es “posible” que la máquina llegue a un estado de aceptación
después de leer toda la cinta. No quiere decir que la máquina deba
encontrarse en un estado de aceptación inmediatamente después de leer el
último símbolo de la cadena de entrada. Puede ocurrir que después de leer el
último símbolo la máquina pueda ejecutar varias transiciones de la forma &, x, y
antes de aceptar la cadena. Usamos “posible”, ya que estos autómatas
que estamos considerando son no deterministas. Por esto deberían llamarse
técnicamente “autómatas de pila no deterministas”.
De igual manera como hicimos con los autómatas del cap 1, llamaremos a
todas las cadenas aceptadas por el autómata de pila M como el lenguaje
aceptado por la maquina, representado por L(M). Remarquemos como lo
hicimos antes, que el lenguaje L(M) no es cualquier colección de cadenas
aceptadas por M, sino la colección de todas las cadenas que acepta M.
Es fácil obtener una clase importante de máquinas restringiendo las
transiciones a las del tipo x,&,&. De esta manera se ignora la participación de la
pila, y pasa a depender exclusivamente del estado y del símbolo de entrada.
En otras palabras estas máquinas, construidas de esta manera son los
autómatas finitos. Por lo tanto, los lenguajes aceptados por los autómatas de
pila incluyen los lenguajes regulares.
Recordemos que el criterio de aceptación que se proporcionó antes permite
que un autómata de pila declare la aceptación de una cadena sin que se tenga
que vaciar antes la pila. En el siguiente ejemplo un autómata de pila basado en
el siguiente diagrama aceptará el lenguaje (xm y n/m,n es N y m>=n), pues se
aceptarán aquellas cadenas con más x que y, aunque queden x en la pila (No
aceptaría cadenas con más y que x, pues no podría leer todos los símbolos de
dicha cadena.
5. Habilitar esta posibilidad puede provocar inconvenientes en la programación de
los autómatas de pila. Por so es preferible evitar la presencia de estos
residuos, por lo que se eligen autómatas de pila que vacíen su pilas antes de
llegar al estado se aceptación.
Teorema 2.1
Para cada autómata de pila que acepte cadenas sin vaciar su
pila, existe un autómata que acepta el mismo lenguaje pero que
vacíe su pila antes de de llegar a un estado de aceptación.
Supongamos que tenemos un autómata de pila M que acepte cadenas sin
tener que vaciar necesariamente su pila. Vamos a modificar M de la siguiente
manera.
1- Elimine la designación “inicial” del estado inicial de M. Añada un nuevo
estado inicial y una transición que permita a M pasar del nuevo estado
inicial al anterior a la vez que inserta en la pila un símbolo especial #
(que no se encontraba anteriormente en T)
2- Elimine la característica de aceptación de cada estado de aceptación
de M .Luego añada un estado p junto con las transiciones que permitan a la
maquina pasa de cada uno de los antiguos estados de aceptación a p sin
leer, extraer o insertar un símbolo.
3- Para cada x de T(sin incluir #), del estado p al q, introduzca la transición
&, x, &
4- Añada un nuevo estado de aceptación q y del estado p al q la transición
&, #, &
Observe que la versión modificada de M solo marca el fondo de su pila
antes de efectuar algún cálculo. Y luego simula los cálculos de la máquina
original hasta el punto donde la máquina original habría declarado la
aceptación de la entrada. Aquí la máquina modificada pasa al estado p ,
vacía su pila y luego pasa a su estado de aceptación q quitando la marca de
fin de pila. Así tanto la máquina original como la modificada aceptan las
mismas cadenas, aunque la versión modificada llega a su estado de
aceptación únicamente cuando su pila esta vacía
La figura siguiente muestra el resultado de aplicar la técnica presentada al
diagrama anterior. Un autómata de pila basado en este nuevo diagrama
aceptará exactamente las mismas cadenas que el original, pero no puede
aceptar una cadena a menos que su pila se encuentre vacía.
6. Recordemos que los autómatas que aquí consideramos son no
deterministas .El proceso de modificación descripto puede introducir varios
puntos de no determinismo por medio de las transiciones que conducen de
los antiguos estados de aceptaron al nuevo estado p.
Ejercicios
1 Diseñe el autómata de pila M tal que L(M)= (x n ym x n/m,n es N )
2 Cual es el lenguaje que acepta el automata de pila cuyo diagrama de
transición se presenta a continiacion
3 Modifique el diagrama de transición del ejercicio 2 para que el autómata de
pila acepte el mismo conjunto de cadenas pero con pila vacia
7. 4 Muestre como puede combinarse 2 autómatas de pilas M1 y M2 para formar
un solo autómata de pila que acepte el lenguaje L(m1) U L(M2)
2.2 Gramáticas independientes de Contexto
Comenzamos en capítulo anterior analizando el concepto de gramática. En ese
momento mostramos, en forma particular, las gramáticas regulares.
Mostramos de ellas las características que presentaban las producciones,
su parte izquierda es un símbolo no Terminal, mientras que la derecha podía
ser Terminal, Terminal no Terminal o palabra vacía.
Ahora caracterizaremos las Gramáticas independientes de contexto. Las
producciones tendrán al igual que las regulares, un símbolo no Terminal a la
izquierda mientras que la parte derecha es menos restrictiva, ya que solo tiene
que ser un tira de símbolo terminales concatenados con no terminales en
cualquier orden.
Ej
S zMNz
M aMa
M z
N bNb
N z
Las minúsculas son terminales y la mayúculas no terminales.
Esta es una gramatica libre de contexto y el lenguaje que genera L(G) es
que genera cadenas de la forma zaNzaNbMzbMz donde m,n pertenecen a
Lo de libre de contexto viene por que no intereza en que contexto se encuentra
el no Terminal al aplicar cualquier producción.
En un árbol de derivación en su proceso de generar palabras puede
presentarse dudas sobre cual es el no Terminal que debera reemplasarse
En un paso especifico de la derivación.La regla rutinaria que se utiliza es
sustituir el no Terminal que se encuentra más a la izquierda de la cadena a
sustituir.(tambien podria usarse regla por la derecha lo cual dria una derivación
por la derecha.Tambien se podrian usar otros criterios combinatorios y obtener
otras derivaciones).
Los lenguajes generados por gramáticas libre de contexto se denominan
lenguajes libres de contexto.
Gramática libre de contexto y autómata de pila
Trataremos de ver ahora la relación entre los autómatas de pila y las gramáticas libre de
contexto. Lo que hay es que los lenguajes generados por gramaticas indepenientes de
contextos son exactamente los mismos lenguajes que acepten los autómatas de pila.
8. Teorema 2.2 Para cada gramática G libre de contexto, existe un
autómata de pila M tal que L(G)=L(M)
Para su demostración dado G, libre de contexto, se construye un autómata de pila M que
acepta el mismo lenguaje que genera la gramática.
Teorema 2.3 Por cada autómata de pila existe una gramática G
independiente de contexto tal que L(M)=L(G).
La idea sigue siendo la misma, dado un autómata de pila M nuestra tarea ed producir
una gramática G libre de contexto que genere el lenguaje L(M).
En resumen contamos ahora con dos caracterizaciones para los lenguajes independientes
de contexto; son los lenguajes aceptados por autómatas de pila, así como los lenguajes
generados por gramáticas independientes de contexto.
Límites de los autómatas de pila
Hasta ahora hemos concluido que los lenguajes independientes de contexto
como aquellos generados por gramáticas libre de contexto
Y como aquellos aceptados por los automtas de pila..Sin embargo no hemos
considerado el acance de estos lenguajes, no nos hemos preguntado si existen
lenguajes que no son librea de contextos.Ademas los autómatas de pila que
hemos considerados hasta ahora son no deterministicos.
Existe la consecuencia de un teorema que no demostraremos que
N N N
El lenguaje (x y z /N es entero positivo) no es libre de contexto.