Universidad Iberoamericana (Unibe)
PUSH-DOWN
AUTÓMATA
DESCRIPCIÓN BREVE
Autómatas Push-Down es una máquina con un número
finito de estados, una cinta de entrada y una Pila.
Anyela Báez 13-1005 - Leslei García 13-0991
PROFESORA:
DRA. ING. RINA FAMILIA
pág. 2
Anyela Báez 13-1005
Leslei García 13-0991
Artículo Push-Down Autómata
Materia: Lenguajes Formales y Teoría de Autómatas
PROFESORA:
DRA. ING. RINA FAMILIA
Santo Domingo Rep., Dom.
24 de Febrero 2014
pág. 3
Índice
Resumen.…………………………………………………………………………………………4
Introducción………………………………………………………………………………………5
Historia y aplicaciones…………………………………………………………………………...7
Teoría……………………………………………………………………………………………..7
Definición………………………………………………………………………………………...7
Ejemplo de un autómata de pila…………………………………………………………8
Un autómata Push-Down (APD) es una colección de 8 cosas…………………………10
Aceptores Push-Down. Definiciones……………………………………………..……11
Autómatas de Pila y lenguajes libres de contexto……………………………………...12
Clasificación de Autómatas Push-Down……………………………………………………..12
El funcionamiento típico de un autómata Push-down………………………………….14
Descripción……………………………………………………………………………..14
Aplicación de un Autómata Push-down………………………...……………………...16
Aceptores Push-Down Propios…………………………………………………………18
Autómatas de pila………………………………………………………………………20
Representación gráfica de un AP……………………………………………………….20
Conclusión……………………………………………………………………………...24
Glosario………………………………………………………………………………...25
Referencias……………………………………………………………………………..26
pág. 4
Resumen
Autómatas Push-Down es una máquina con un número finito de estados, una
cinta de entrada y una Pila. El autómata lee cadenas de símbolos de longitud finita de la
cinta de entrada que es infinita. El comportamiento de la máquina está determinado por
el estado en que se encuentra, el símbolo o símbolos en el tope de la Pila y el o los
símbolos en la cinta de entrada. Para cada estado y dependiendo del tope de la Pila, al
leer uno o varios símbolos de la cinta de entrada cambia de estado, empila o despila de
la Pila y avanza en la cinta de entrada.
Estas máquinas también pueden usarse para reconocer lenguajes, es decir, para
leer cadenas y determinar si pertenecen o no a un lenguaje dado. También sirven para
describir el comportamiento de ciertas máquinas.
Dependiendo de lo que lee, del tope de la Pila y del estado en el que se
encuentra, cambia de estado avanza en la cinta de entrada, despila lo que reconoció en
la Pila y empila símbolos en la Pila de acuerdo con la relación de transición de estados.
pág. 5
Introducción
La Introducción a la Informática Teórica, también conocido como TALF (Teoría
de Autómatas y Lenguajes Formales), trata principalmente sobre las capacidades de
cualquier máquina que sea capaz de calcular o computar (incluida entre estas máquinas,
están los computadores... porque computan). Por una parte, están los problemas de
cesibilidad, los cuales nos permiten decidir cuándo un computador (o una máquina que
computar) es capaz de resolver un problema dado.
Cuando se habla de autómata, se hace referencia a máquinas (abstractas o no)
que sean capaces de computar. De igual manera que los lenguajes regulares se pueden
representar mediante autómatas finitos deterministas, los lenguajes independientes del
contexto tienen su correspondencia en otro tipo de dispositivo: el Autómata de Pila
(AP). Push-Down.
Un autómata de pila es un dispositivo que tiene acceso a:
• Una secuencia de símbolos de entrada, que en general se representa por una
cinta que se desplaza frente a un mecanismo de captación de dichos símbolos.
• El símbolo superior de una memoria en pila (LIFO) Un autómata a pila se
encuentra en cada momento en un estado determinado y el estado siguiente depende de
los tres elementos siguientes:
• Estado actual
• Símbolo de entrada
• Símbolo superior de la pila
Generalmente, el autómata a pila es no determinista en el sentido de que se
permite que haya varias acciones posibles en cada momento.
Los autómatas de pila, en forma similar a como se usan los autómatas finitos,
también se pueden utilizar para aceptar cadenas de un lenguaje definido sobre un
alfabeto A. Los autómatas de pila pueden aceptar lenguajes que no pueden aceptar los
autómatas finitos. Un autómata de pila cuenta con una cinta de entrada y un mecanismo
de control que puede encontrarse en uno de entre un número finito de estados. Uno de
estos estados se designa como estado inicial, y además algunos estados se llaman de
aceptación o finales. A diferencia de los autómatas finitos, los autómatas de pila cuentan
Con una memoria auxiliar llamada pila. Los símbolos (llamados símbolos de
pila) pueden ser insertados o extraídos de la pila, de acuerdo con el manejo last-in-
firstout (LIFO). Las transiciones entre los estados que ejecutan los autómatas de pila
pág. 6
dependen de los símbolos de entrada y de los símbolos de la pila. El autómata acepta
una cadena x si la secuencia de transiciones, comenzando en estado inicial y con pila
vacía, conduce a un estado final, después de leer toda la cadena x.
pág. 7
Historia y aplicaciones
EPDAs fueron descritos por primera vez por K. Vijay-Shanker en su tesis
doctoral 1988. Desde entonces, han sido aplicadas a descripciones más completas de la
clase de gramáticas levemente sensibles al contexto y han tenido un papel importante en
la ampliación y el perfeccionamiento de la jerarquía de Chomsky a esta clase. Varios
subgrammars, tales como la gramática indexada lineal, por lo tanto se pueden definir.
También están empezando a jugar un papel importante en el procesamiento del lenguaje
natural.
Mientras que los lenguajes naturales tradicionalmente han sido analizados
mediante gramáticas libres de contexto, este modelo no funciona bien para los idiomas
con dependencias cruzadas, como la holandesa, situaciones para las que la EPDA es
muy adecuada.
Teoría
Un EPDA es una máquina de estados finitos con un conjunto de pilas que se
puede acceder a través de ellos la pila incorporada. Cada pila contiene elementos del
alfabeto de pila, y por lo que definen un elemento de una pila por, donde la estrella es el
cierre de Kleenedel alfabeto.
Cada pila se puede definir en términos de sus elementos, por lo que se denota la
pila ª en el autómata mediante un símbolo de la doble daga:, donde sería el siguiente
símbolo accesible en la pila.
Definición
Un autómata con pila (PDA) es esencialmente un autómata finito que posee
control sobre una pila, es decir una lista de la cual solo se puede “leer”, “poner” o
“sacar” el primer elemento. Dado el estado actual del autómata y el primer elemento de
la pila, un símbolo de input nos llevará (posiblemente en forma no determinística) el
estado siguiente y a la modificación que se debe hacer en el primer elemento de la pila.
Diremos que una cadena es aceptada por pila vacía por el PDA si cuando la
aplicamos obtenemos una pila vacía. Diremos que una cadena es aceptada por estado
final por el PDA si lleva el estado inicial a uno final. Los lenguajes aceptados por los
autómatas con pila, tantos los aceptados por pila vacía o por estado final, son los
mismos que los aceptados por las gramáticas libres de contexto e incluye estrictamente
a los lenguajes regulares.
pág. 8
Un autómata de pila o Push-Down es un autómata que cuenta con un mecanismo
que permita almacenamiento ilimitado y opera como una pila. El autómata de pila (se
abrevia PDA de sus siglas en inglés Push-Down Autómata) tiene una cinta de entrada,
un control finito y una pila. La pila es una cadena de símbolos de algún alfabeto. El
símbolo que se encuentra más a la izquierda se considera como que está en la “cima”. El
dispositivo será no determinístico y tendrá un número finito de alternativas de
movimiento en cada situación como se muestra en la siguiente figura.
Ejemplo de un autómata de pila
Un autómata de pila (APN) es una máquina de estados finito al que se le añade
una memoria externa en forma de pila (stack), es decir que sólo acepta operaciones
meter (push) y sacar (pop).
Los movimientos serán de dos tipos. En el primer tipo de movimiento se utiliza
un símbolo de entrada. Dependiendo del símbolo de entrada, del símbolo de la cima y el
estado de control finito, es posible un número de alternativas. Cada alternativa consiste
en un estado posterior para el control finito y una cadena (posiblemente vacía) de
símbolos, para sustituir al símbolo que se encuentra en la cima de la pila. Después de
seleccionar una alternativa, la cabeza de entrada avanza un símbolo como se ilustra en
la siguiente figura:
pág. 9
La figura anterior muestra el avance de un símbolo de entrada (q1, c, B), a un
estado posterior y sustitución de la cima de la pila {(q2, B)}.
El segundo tipo de movimiento conocido como movimiento ε es parecido al
primero, excepto que el símbolo de entrada no se utiliza y la cabeza de la entrada no
avanza después del movimiento. Este tipo de movimiento permite al PDA manipular la
pila sin leer símbolos de entrada como se muestra en la figura: Manipulación de la pila
sin leer símbolo de entrada.
Un autómata de pila es un autómata finito más una pila. Se definen por la a tupla
M = (Q; P ; ¡; ±; q0; Z0; F) donde Q; P,S , q0 y F se definen igual que en un AFN. G es
un alfabeto de los caracteres que pueden introducirse a la pila, y Z0 es el símbolo inicial
en la misma, generalmente l (significa pila vacía), pero en ocasiones es útil usar otro
símbolo.
La función de transición es definida como:
: Q x (S È {l } ) x (G È {l } ) ® [Q x (G È {l })]*
Es decir que el cambio de estado ya no sólo depende del estado y del símbolo en
la entrada, sino además del contenido de la pila, específicamente del símbolo en el tope
de la pila. El contenido de la pila puede cambiar después de cada transición.
Para clarificar a la función de transición, analicemos la parte por parte:
Q x (S È {l } ) x (G È {l } ): Esta nos dice que los elementos del dominio son
tercias (estado, alfabeto, pila)
[Q x (G È {l })]*: Indica que el codominio son varios pares del tipo (estado,
pila).
pág. 10
Un autómata Push-Down (APD) es una colección de 8 cosas:
1. Un alfabeto Σ de letras de entrada
2. Una cinta de entrada (infinita en una dirección). Inicialmente la cadena de
letras de entrada se ubica en la cinta comenzando en la celda i. El resto de la cinta tiene
blancos.
3. Un alfabeto Γ de caracteres del stack.
4. Un stackpush-down (infinito en una dirección). Inicialmente el stack está
vacío (contiene todos blancos).
5. Un estado start que contiene solo aristas de salida, no aristas de entrada.
6. Estados de detención de dos clases: algunos accept y algunosreject. Tienen
aristas de entrada y no aristas de salida.
7. Un número finito de estados pushsin ramificación que introducen caracteres
en la parte superior del stack. Son de la forma:
8. Donde X es cualquier letra en Γ.Un número finito de estados con
ramificación de dos clases:
i) estados que leen la próxima letra no usada de la cinta.
Que pueden tener aristas de salida etiquetadas con letras de Σ y el carácter
blanco Δ, sin restricciones de duplicación de etiquetas y sin obligación de que haya una
etiqueta para cada letra de Σ, o una Δ.
Y
ii) estados que leen el carácter superior del stack
pág. 11
Que pueden tener aristas de salida etiquetadas con letras de Γ y el carácter
blanco Δ, nuevamente sin restricciones.
Ejecutar una cadena de letras entradas en un APD significa comenzar desde el
estado starty seguir las aristas no etiquetadas y las etiquetadas que generen un camino a
través del diagrama. El camino termina en un estado de detención o hará crash en algún
estado que no posea ramificación ante la lectura de un carácter de la entrada desde la
cinta.
Aceptores Push-Down. Definiciones
Un aceptor Push-Down (APD) es una tupla de seis elementos:
M = (Q, S, U, P, I, F) en la cual:
Q es el conjunto finito de estados de la unidad de control
S es un alfabeto finito de entrada
U es un alfabeto finito de la pila o "stack"
P es el programa de M
I Í Q es un conjunto de estados iniciales
F Í Q es un conjunto de estados finales o estados de aceptación
El programa P es una secuencia finita de instrucciones, cada una de las cuales tiene una
de las siguientes formas:
En cada caso, el estado q es la etiqueta o rótulo de la instrucción, y el estado q'
es el estado sucesor. Cada estado en Q rotula como máximo un tipo de instrucción read,
write o scan.
pág. 12
Si q es un estado cualquiera, j es un string cualquiera de S* y s es cualquier
string en U*, luego (q, j, s) es una configuración de M. El string s se llama usualmente
pila o "stack" y el símbolo que se encuentra al tope de la misma se conoce como
símbolo tope de la pila.
Una configuración (q, j, s) es una descripción completa del estado total de un
aceptor Push-Down en algún punto en su análisis de una cinta de entrada. El control se
encuentra en el estado q; el prefijo j del string de entrada ya ha sido explorado
("scanned") y el cabezal de entrada se posiciona en el último símbolo de j; la pila s es el
contenido de la cinta de almacenamiento, y el cabezal de la pila se posiciona en el
último símbolo de s.
Autómatas de Pila y lenguajes libres de contexto
Los autómatas de pila son máquinas que nos permiten aceptar lenguajes libres de
contexto. Los autómatas de pila son máquinas finitas que tienen una memoria que les da
la capacidad de "recordar". De esta manera es posible reconocer lenguajes del tipo aibi |
i >= 0, en el que se necesita saber cuántas a’s tiene la palabra para determinar si el
número de b’s es igual.
Clasificación de Autómatas Push-Down
Autómatas a pila embebidos
Autómatas a pila embebidos ascendentes
Autómatas lógicos a pila restringidos
Autómatas lineales de índices
Autómatas con dos pilas.
Autómatas a pila embebidos
En los cuales la estructura principal de almacenamiento la constituye una pila de
pilas. Junto a la definición clásica se presenta una nueva formulación en la cual se
elimina el control de estado finito y se simplifica la forma de las transiciones al tiempo
que se mantiene la potencia expresiva. Esta nueva formulación permite diseñar una
técnica de tabulación para la ejecución eficiente de los diversos esquemas de
compilación para gramáticas de adjunción de árboles y gramáticas lineales de índices.
Autómatas a pila embebidos ascendentes
Constituyen los autómatas a pila embebidos ascendentes. La eliminación del
control de estado finito permite simplificar la forma de las transiciones, lo cual facilita
la definición de una técnica de tabulación para este modelo de autómata.
Autómatas lógicos a pila restringidos
pág. 13
Las gramáticas lineales de índices constituyen un tipo específico de gramáticas
de cláusulas definidas en el cual los predicados tienen un único argumento en forma de
pila de índices. Aprovechamos esta característica para definir una versión restringida de
los autómatas lógicos a pila adecuada al tratamiento de este tipo de gramáticas y de las
gramáticas de adjunción de árboles. Dependiendo de la forma de las transiciones
permitidas, podemos distinguir tres tipos diferentes de autómata, uno que permite el
análisis ascendente de los índices o adjunciones, otro que permite el análisis
descendente y otro que permite estrategias mixtas. En los dos últimos casos es preciso
establecer restricciones en la combinación de las transiciones para garantizar que dichos
autómatas aceptan exactamente la clase de los lenguajes de adjunción de árboles. Se
presentan esquemas de compilación y técnicas de tabulación para los tres tipos de
autómata.
Autómatas lineales de índices
Los autómatas lineales de índices, que utilizan la misma estructura de
almacenamiento que los autómatas lógicos a pila restringidos pero con un juego
diferente de transiciones. Distinguimos tres tipos diferentes de autómata: los autómatas
lineales de índices orientados a la derecha para estrategias en las cuales las pilas de
índices se evalúan de modo ascendente, los autómatas lineales de índices orientados a la
izquierda en los cuales las pilas de se evalúan de modo descendente y los autómatas
lineales de índices fuertemente dirigidos que permiten definir estrategias mixtas de
análisis para el tratamiento de las pilas de índices.
Autómatas con dos pilas
Se opta por un modelo de autómata con una nueva estructura de
almacenamiento. Se preserva la pila de los autómatas a pila tradicionales, a la que
acompaña una pila auxiliar cuyo contenido restringe el conjunto de transiciones
aplicables es un momento dado. Los autómatas con dos pilas fuertemente dirigidos
permiten definir esquemas de compilación arbitrarios para gramáticas de adjunción de
árboles y gramáticas lineales de índices. Por su parte, los autómatas con dos pilas
ascendentes sólo permiten describir esquemas de compilación que incorporan
estrategias ascendentes en lo referente al tratamiento de las adjunciones y de las pilas de
índices. Se presentan las técnicas de tabulación que permiten una ejecución eficiente de
ambos modelos de autómata.
pág. 14
El funcionamiento típico de un autómata Push-down.
Por ejemplo, el siguiente autómata de pila reconoce L(G) = {wcwR|w E (0+1)*}
, es decir los palíndromes en (0 + 1)* cuyo punto intermedio está marcado con un
carácter especial c:
M = ({q1,q2}, {0,1}, {RBG}, d , q1, R, q )
Donde d vale:
Descripción
[q, w, a ] ^ [qj,v,b ] ^ * ^ + Se pueden usar descripciones instantáneas para ver el
funcionamiento del autómata: (q, aw, za ) ^ (p,w,b a ) si d (q,a,z) = (p,b ).
La cadena de un lenguaje es aceptado por el autómata si éste para en elestado
final: L(M) = {w|(q0,w,Z0) ^ (p,e ,g ) para algún p Î F, g Î G *}
Autómata Push-down para el reconocimiento de lenguajes libres de
contexto.
Toda gramática GLC puede ponerse en forma normal de Greibach, en donde
todas las producciones son del tipo
L ->aa donde a Î (V U T)*, a Î (T U {e }).
Método de normalización:
Suponer V = { L 1 ... L m}.
Hacer todas las producciones del estilo
L i -> L jg para j >i.
Si j < i, sustituir L j por sus lados derechos. Si j = i, eliminar recursión a la
izquierda, sustituyendo: L i -> L a 1 | L a 2 | ... | L ia 1 || b 1 | .... |b n | por:
L i -> b 1 | .... |b s | b 1B| .... |b s Bi
Bi -> a 1 |a 2| .... |a T | a 1Bi| a 2Bi| .... |a T Bi
Sustituir L m -> g en L m-1, después en L m-2 y así sucesivamente.
En las nuevas producciones Bi, si es necesario sustituir el primer símbolo no
terminal por lo que produce.
Por ejemplo en:
G = ({L 1; L 2; L 3 },{a,b},P, L 1)
P : L 1 -> L 2L 3
pág. 15
L 2 -> L 3L 1 | b
L 3 -> L 1L 2 | a
Hay que cambiar la última producción en
L 3 -> L 1L 2 | a
L 3 -> L 2L 3L 2 | a
L 3 -> L 3L 1L 3L 2 | bL 3L 2 |a
y después de eliminar la recursión a la izquierda tenemos
L 3 ->bL 3L 2B3 | aB3 | bL 3L 2 | a
B3 -> L 1L 3L 2 | L 1L 3L 2B3
Finalmente sólo nos resta sustituir en toda producción, a partir de L 3, los
símbolos no terminales de la izquierda.
Obtención de una GLC a partir de un Autómata de Pila (push-down).
Para obtener la GLC G = (V, T, P, S) correspondiente a un APN M, hay que
crear primero un APN extendido M´ con d ´ construida a partir de d a la que se le añade:
1. Si [ qj, e ] Î d ( qi, u, e ) entonces [ qj, L ] Î d ´ (qi, u, L ) para toda L Î G .
2. Si [ qj, B ] Î d ( qi, u, e ) entonces [ qj, BL ] Î d ´ (qi, u, L ) para toda L Î G .
El alfabeto de entrada de G es el alfabeto de entrada de M´. Las variables de G
consisten de un símbolo inicial S y objetos de la forma <qi, L ,qj> donde las q’s son los
estados de M´ y L Î G È {e }. La variable <qi, L ,qj> representa un cálculo que
comienza en el estado qi , termina en qj y quita el símbolo L de la pila. Las reglas de G
son construidas de la siguiente manera:
S Þ < q0, e ,qj> para cada qj Î F.
Cada transición [ qj, B ] Î d ( qi, x, L ), donde L Î G È {e } genera el conjunto de
reglas
{<qi, L , qk>Þ x <qj, B, qk> | qk Î Q }
3. Cada transición [ qj, BL ] Î d ( qi, x, L ), donde L Î G È {e } genera el
conjunto de reglas
{<qi, L , qk>Þ x <qj, B, qn><qn, L , qk> | qk , qn Î Q }
Para cada estado qk Î Q ,<qk , e , qk> Þ e
Obtención de una gramática de contexto libre a partir de un Autómata
Push-down sin estados finales.
Si en lugar de tener un Autómata Push-down con estados finales como en el caso
anterior tenemos un autómata Push-down que termina cuando se vacía la pila, podemos
aplicar el procedimiento explicado a continuación. Si M = (Q, S , G , d , q0, Z0, q ) es
pág. 16
una autómata Push-down, puede ser representado por la gramática libre de contexto G =
(V, S , P, S), donde V = {< q, L , p > | q, p Î Q ^ L Î G } È {S} y P tiene las siguientes
producciones:
S Þ [q0, Z0, q] para cada q en Q.
[q, L , qm+1] Þ a[q1,B1,q2][q2,B2,q3] ... [qm,Bm,qm+1] para cada q,q1,q2, ...,
qm+1
en Q, cada a en S È {e } y L , B1, B2, ... Bm en G tal que d (q,a,L )contiene a
(q1, B1B2 ... Bm).
Aplicación de un Autómata Push-down
El autómata para procesar un lenguaje del tipo 2 o Lenguaje de contexto libre es
llamado
Autómata Finito Push-down (PDFA). El elemento push-down permite que este
tipo de autómata puede procesar las sentencias más complejas que puedan resultar de un
lenguaje de contexto libre. En otras palabras, una de las diferencias fundamentales entre
un lenguaje del tipo 3 y uno del tipo 2 es la necesidad de "recordar" cuándo fue la
ocurrencia de un símbolo y cuándo se generó una comparación de símbolo.
Este es el caso del lenguaje de paréntesis, en el que es necesario recordar el
número de paréntesis izquierdo en orden para reconocer el número de paréntesis
derecho correcto. El Autómata Pushdown mantiene un stack que es usado como
memoria para este propósito. En el autómata finito de estados, las transiciones entre
estados se basan sólo en el estado actual y en el carácter de la cadena de entrada. EN el
caso de los autómatas Pushdown la transición es una función del estado actual, el
carácter actual en la cadena de entrada y el carácter actual en la CIMA del stack del
autómata Push-down.
En el lenguaje de paréntesis, es necesario no perder de vista cada paréntesis
izquierdo que es encontrado, además de cuándo se ha encontrado un paréntesis derecho
después en la sentencia. Esto puede hacerse poniendo una marca en el stack del
Autómata Push-down cada vez que se encuentra un paréntesis izquierdo. Cuando se
encuentra un paréntesis derecho en la sentencia de entrada, se hace una transición de
estado se hace solo si el stack tiene la marca correspondiente; y en caso contrario,
entonces la sentencia no es parte del lenguaje de paréntesis.
Si el último estado del autómata push-down no es un estado de aceptación
entonces la sentencia no es parte del lenguaje.
pág. 17
Figura 3.5.1.- Autómata de Estados Finitos para el Lenguaje de Paréntesis.
El primer paso del autómata del diseño de un autómata de push-down para el lenguaje
de paréntesis es desarrollar un autómata finito como el siguiente.
El autómata finito para el lenguaje de paréntesis consiste en un control de 4
estados:
el estado inicial (S), el estado para el procesamiento del paréntesis izquierdo (L),
el estado para el procesamiento del paréntesis derecho (R) y el estado final (F). En este
caso asumimos que una sentencia de lenguaje termina por el símbolo (#). Este carácter
final, cuando es encontrado realiza una transición desde el estado R hasta el estado F.
Pero qué tipo de sentencias en lenguaje de paréntesis podrá reconocer este
autómata finito por ejemplo:
El paréntesis izquierdo inicial nos indica hacer una transición desde el estado
Sistemas al estado L y el siguiente paréntesis izquierdo causa una transición hacer esta
al mismo estado L.
Luego el primer paréntesis derecho es procesado y se hace una transición al
estado R. En el estado R si se encuentra otro paréntesis izquierdo, se hará una transición
de regreso al estado L. El siguiente paréntesis derecho es procesado, y se hace una
transición al estado R una vez más. El siguiente paréntesis causa una transición en el
mismo estado R. Finalmente (#) causa una transición al estado final y la sentencia es
reconocida. Y la sentencia es (()()) # .
Pasos del reconocimiento de la sentencia anterior.
El autómata finito push-down tiene la memoria necesaria para no perder de vista
los paréntesis izquierdos y así es como estos son procesados en una sentencia del
lenguaje de paréntesis. Al autómata finito se le aumentan operaciones destack (PILA),
para que pueda procesar elementos de una sentencia y sea capaz de no perder de vista
pág. 18
los paréntesis. El autómata aumentado (PDFA) se muestra en la siguiente figura.
Figura 3.5.4.- Autómata Finito push-down para el lenguaje de paréntesis
Aceptores Push-Down Propios
Nuestra definición de APD no permite ciertos comportamientos anómalos o no
productivos. En particular:
1.- Un APD no puede explorar más allá del final del stringque está en la cinta de
entrada, debido a que no puede hacer un movimiento en el cual un "numeral" sea
explorado.
2.- Un APD no puede mover su cabezal sobre la pila a la izquierda del primer
segmento de la cinta de almacenamiento, ya que no puede realizar un movimiento en el
cual un "numeral" sea leído de la pila. Sin embargo, otros dos tipos de comportamientos
improductivos que pueden ocurrir, y que pueden conducir a dificultades en el análisis de
las propiedades de aceptores Push-Down, son:
3.- Uno se produce cuando un movimiento de read ocurre inmediatamente
después de un movimiento de write.
4.- El otro es una repetición sin fin de sucesivos movimientos de write (ciclo).
Supongamos que un APD M tiene una secuencia de movimientos en la cual un
movimiento de write es seguido por un movimiento de read, y en esta secuencia no
intervienen movimientos de scan:
Este par de movimientos no tiene un efecto neto además de hacer que la unidad
de control cambie entre los estados q y q". Esta secuencia de movimientos
pág. 19
inconsistentes puede ocurrir solamente si M tiene una instrucción de escritura: q] write
(u, q') para la cual el estado sucesor q' es el rótulo de una instrucción read.
En el programa de un APD M, una instrucción write: q] write (u, q') es impropia
si q' es el rótulo de una instrucción read cualquiera. Una APD es propio si su programa
no contiene instrucciones impropias. Las instrucciones impropias son fácilmente
identificables en el diagrama de estados de un APD, y pueden ser eliminadas sin
modificar el comportamiento de la máquina en lo referente al lenguaje reconocido. En
particular, si M es un APD cualquiera, es posible construir un APDP mediante la
adición y el borrado de instrucciones tal como sigue.
Obsérvese que no hay transiciones para todas las ternas posibles de estado,
símbolo de entrada y símbolo de pila. Por lo tanto, si el PDA pasa a un estado para el
cual no se especifica un estado siguiente y una acción de la pila para los símbolos
actuales de la pila y la entrada, el PDA no puede volver a realizar ningún movimiento.
En particular, cuando el autómata está en el estado q4, que es el estado de
aceptación, no hay ninguna transición sea cual sea el símbolo de la cima y de la entrada.
Si el PDA se mueve al estado q2, entonces obsérvese que cada vez que aparece en la
entrada se apila una B en la pila.
El PDA permanece en el estado q2 hasta que se encuentra la primera b entonces
se mueve al estado q3, ninguna b puede preceder a una a.
pág. 20
Finalmente, en el estado q3 sólo se consideran las b’s y, cuando se encuentra
cualquier b, se desapila B de la pila. (Sólo pueden desapilarse las B’s que fueron
apiladas, debido a encontrarse una a en la entrada). Las únicas cadenas que acepta el
PDA pertenecen al lenguaje puesto que son las únicas cadenas de entrada que, una vez
que han sido consumidas, causan que el PDA termine en el estado final q4.
Autómatas de pila
Desafortunadamente los autómatas de conteo no son suficientemente poderosos
para reconocer todos los LLC.
En ocasiones se requiere más de un tipo de cuenta o “roca” o en lugar de una
“bolsa”.
Se utiliza un stack o pila LIFO (Last In FirstOut) en el cual el orden es
importante. La acción que lleva a cabo el autómata sólo es influenciada no sólo por el
estado en que se encuentra y por el símbolo que lee, sino también por el tipo de piedra u
objeto que se encuentra arriba en la pila.
Representación gráfica de un AP
La transición ((p, u, b), (q, g)), d(p, u, b) = (q, g), se presenta gráficamente por
Y, significa que cuando estamos en el estado p, leemos de la palabra de entrada
el símbolo u y sacamos del stack el símbolo b, entonces pasamos al estado q y ponemos
en la pila la cadena g.
Y, significa que cuando estamos en el estado p, leemos de la palabra de entrada
el símbolo u y sacamos del stack el símbolo b, entonces pasamos al estado q y ponemos
en la pila la cadena g.
pág. 21
Ejemplo
Autómata de pila que acepte {aibi | i m 0}
K = {q0, q1}
–S = {a, b}
–G = {A}
–s0 = q0
–F = {q0, q1}
–d(q0, a, l) = (q0, A)
–d(q0, b, A) = (q1, l)
–d(q1, b, A) = (q1, l)
pág. 22
Ejemplo: palíndromos de longitud impar
Ejemplo: palíndromos de longitud par
pág. 23
Ejemplo
pág. 24
Conclusión
El análisis de este nivel de autómatas específicamente de Push-Down nos
permitió abrir el horizonte mostrando en cada punto de la investigación la existencia
de múltiples herramientas que pueden favorecer en nuestro trabajo del día a día, las
cuales ya están demostradas en su funcionamiento desde su inicio y existirá siempre la
seguridad de que no habrá un problema con dicho análisis.
Donde además de conocer se obtuvieron informaciones, en las cuales se
destacaron que los autómatas de pila, en forma similar a como se usan los autómatas
finitos, también se pueden utilizar para aceptar cadenas de un lenguaje definido sobre un
alfabeto A; a diferencia de los autómatas finitos, los autómatas de pila si cuentan con
una memoria auxiliar llamada pila.
Y sobre todo las transiciones entre los estados que ejecutan los autómatas de pila
dependen de los símbolos de entrada y de los símbolos de la pila.
Esperando que este artículo de investigación pueda aportar conocimientos y a su vez
servir de apoyo a la hora de indagar dicho tema.
pág. 25
Glosario
Autómata: Es una máquina capaz de efectuar por sí misma un cierto número de
operaciones previamente especificadas.
Pila: Lista de elementos a la cual se puede insertar o eliminar elementos sólo por
uno de sus extremos.
Compilador: Programa escrito generalmente en lenguaje de máquina que
permite compilar.
Compilar: Producir una rutina en lenguaje máquina mediante una rutina escrita
en otro lenguaje diferente a la máquina.
Extraer (Pop): Reemplazar el contenido de una parte específica de una palabra
con las partes correspondientes de otra palabra, lo cual es determinado por algún tipo de
control de patrón.
Instrucción: Conjunto de caracteres que representan una orden dada a la
máquina y que esta puede cumplir.
Lenguaje: Conjunto de caracteres, símbolos, palabras, frases, instrucciones y
reglas que permiten escribir y describir programas para una aplicación dada.
Lenguaje de máquina: Sistema de instrucciones que es directamente utilizable
por la máquina, tal como se encuentra en la memoria principal en el momento en que
está cargada.
Lenguaje de programación: Aquel que utilizan los programadores para escribir
un programa en forma más o menos cómoda y que lo general requiere una traducción
para ser transformado a lenguaje de máquina.
Embebido: sistema de computación diseñado para realizar una o algunas pocas
funciones dedicadas frecuentemente en un sistema de computación en tiempo real.
pág. 26
Referencias
Centro de Artigos (S.F). Historia, aplicaciones y teoría. Recuperado el 20 de Febrero
del 2014 de: http://centrodeartigos.com/articulos-revista-digital/contenido-
revista-30635.html
CS. Famaf (2012). Definición. Recuperado el 20 de Febrero del 2014 de:
http://www.cs.famaf.unc.edu.ar/wiki/lib/exe/fetch.php?media=intrologica:autom
atas2012.pdf
Frro.utn.edu (S.F) Automata Push-Down. Recuperado el 20 de Febrero del 2014 de:
http://www.frro.utn.edu.ar/repositorio/catedras/sistemas/2_anio/sintaxis/PushDo
wn_y_Turing.pdf
OOcities. (S.F). Autómatas de pila. Recuperado el 20 de Febrero del 2014 de:
http://www.oocities.org/mx/prog_sis_itq/Equipo3/autopush.html#_Toc52627736
8
OOcities. (S.F) Clasificación de autómatas Push-Down. Recuperado el 20 de Febrero
del 2014 del:http://www.oocities.org/mx/prog_sis_itq/Equipo3/autopush.html#_
OOcities (S.F) Ejemplo de un autómata de pila. Recuperado el 20 de Febrero del 2014 de:
http://www.oocities.org/mx/prog_sis_itq/Equipo3/autopush.html#_Toc52627736
8
Portal Tecnología. (2010). Aceptores Push-Down. Recuperado el 20 de Febrero del
2014 del: http://www.portaltecnologica.com.ar/wp-
content/uploads/2010/03/Unidad-3.pdf
Portal tecnología (2010). Aplicación de un autómata push-down. Recuperado el 20 de
Febrero del 2014 de: http://www.portaltecnologica.com.ar/wp-
content/uploads/2010/03/Unidad-3.pdf
Teo de la Comp (2011) Aceptores Push-Down Propios. Recuperado el 20 de Febrero
del 2014 de: http://teodelacomp.blogspot.com/2011/03/automata-push-
down.html
Teo de la Comp (2011) Ejemplo de un autómata de pila. Recuperado el 20 de Febrero del
2014 de: http://teodelacomp.blogspot.com/2011/03/automata-push-down.html
Top Related