26
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

Articulo Automata (Push-Down)

Embed Size (px)

Citation preview

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