Autómata de pila

... los autómatas finitos. El acceso restringido a la memoria auxiliar es del tipo LIFO (last input first output). Tal memoria se denomina almacén pushdown o pila.
2MB Größe 58 Downloads 144 vistas
09:15

00

Temas  Definición de autómata de pila  Autómata de pila determinístico y no determinístico

Objetivo Que el estudiante logre: 1) Identificar conceptos constructivos de la Teoría de la Computabilidad. 2) Definir autómatas de pila.

09:15

11

Autómata • Dispositivo mecánico capaz de procesar cadenas de símbolos. • Dado un lenguaje L definido sobre un alfabeto A y una cadena x arbitraria, determina si x  L o x  L. • Un autómata tiene dos posibles reacciones: SI

Las hileras son reconocidas o aceptadas

Cadena x

Autómata NO Las hileras son rechazadas por el autómata

Lenguaje 09:15

22

Las gramáticas proporcionan un método para generar cadenas de un lenguaje y para reconocer cadenas de un lenguaje se han descripto autómatas de varios tipos. GRAMÁTICAS

Gramáticas no restringidas

Gramáticas sensibles al contexto

09:15

LENGUAJES

AUTÓMATAS

Lenguajes Irrestrictos o recursivamente enumerables (Tipo 0)

Máquinas de Turing

Lenguajes sensibles al contexto (Tipo 1)

Autómatas ligados linealmente

Gramáticas libres de contexto

Lenguajes libres de contexto (Tipo 2)

Gramáticas regulares

Lenguajes regulares (Tipo 3)

Autómatas de pila

Autómatas finitos

33

Un autómata de pila consiste de: 1) Una unidad de control, que es un autómata finito. 2) Una memoria auxiliar que es una cinta semi-infinita con una clase particular de acceso restringido. La memoria de los autómatas de pila los hace más poderosos que los autómatas finitos. El acceso restringido a la memoria auxiliar es del tipo LIFO (last input first output). Tal memoria se denomina almacén pushdown o pila.

a b Cabeza lectora

a b b a q0 q1

qn

 

Control

q2

qi

q4 09:15

Cinta de entrada

q3

Pila 44

Un autómata de pila (pushdown automata) es:

A = (Q, ,, ,q0 ,z0 ,F) donde:   

  



Q es un conjunto no vacío de estados.  es el alfabeto de entrada, no vacío.  es el alfabeto de la pila, no vacío. q0  Q es el estado inicial. F  Q es el conjunto de estados finales.  es la función de transición directa. Es una proyección: Q x (  ) x  en subconjuntos finitos de Q x *. z0 : símbolo inicial de la pila.

Una configuración de un autómata de pila es una tripla c = (q , a , z) con q Q, a  * , z  *; q es el estado actual, a es el elemento a considerar de la hilera de entrada y z es el contenido de la pila. 5

09:15

5

Entrada no procesada a

Entrada Unidad de control en estado q

q

z

Pila

Funcionamiento o movimientos atómicos: Existen dos clases : 1) (q,a,z) = (p,w) donde: q : estado actual. a : símbolo de la hilera de entrada. z : símbolo del tope de pila. p : próximo estado. w : símbolo que se deja en el tope de pila. Al realizar el movimiento atómico la unidad de control pasa al estado p, el símbolo de entrada a se procesa y el símbolo z del tope de pila se reescribe como la hilera w  *. • Si w =  se borra, la pila pierde el primer símbolo de arriba. • Si |w| = 1, z se reemplaza por otro símbolo, posiblemente el mismo. • Si |w| > 1 se añaden símbolos a la pila.

09:15

66

Entrada no procesada a

Entrada Unidad de control en estado q

q

z

2) (q,,z) = (p,w) Al realizar este movimiento no se procesa ningún símbolo de entrada (la cabeza de entrada no se mueve). El autómata de pila puede cambiar de estado y modificar el contenido de la pila.

Pila

09:15

77

a

,

b

Símbolo que se toma de la hilera de entrada

a

/

Símbolo de tope de pila

b

Símbolo que se carga en el tope de pila

Símbolo anterior al que se carga

El símbolo  a la derecha de la barra, como único elemento: a, b /  significa que se borra de la pila el elemento que se encuentra como tope de pila. El símbolo  a la izquierda de la barra significa fin de la hilera de entrada. L(G) = { an bn / n ≥ 1} a,a/aa

q0

a,z0/az0 09:15

q1

A = ({q0 ,q1 ,q2 ,q3}, {a,b}, {z0 ,a},,q0 ,z0 ,{q3 }) b,a/

b,a/

q2

,z0/z0

q3

(q0 ,a,z0 ) = (q1 ,a z0 ) (q1 ,a,a) = (q1 ,a a) (q1 ,b,a) = (q2 ,) (q2 ,b,a) = (q2 ,) (q2 ,,z0 ) = (q3 ,z0)

88

Los autómatas de pila son no determinísticos, si para algún: (q,a,z) Q x ( ) x , |(q,a,z)| > 1 Un autómata de pila es determinístico si |(q,a,z)| ≤ 1. Ejemplo de Autómata de Pila Determinístico L = {xcx-1 / x {a,b}*} un conjunto de palíndromas con marcador central c. A = ({q0 , q1 , q2}, {a,b,c}, {a,b,z0 }, , q0 , z0 , {q2}) (q0 ,a,z0 ) = (q0 ,a z0 ) (q0 ,b,z0 ) = (q0 ,b z0 ) (q0 ,a,a) = (q0 ,a a) (q0 ,b,b) = (q0 ,b b) (q0 ,a,b) = (q0 ,a b)

(q0 ,b,a) = (q0 ,b a) (q0 ,c,z0 ) = (q1 ,z0 ) (q0 ,c,a) = (q1 ,a) (q0 ,c,b) = (q1 ,b) (q1 ,a,a) = (q1 ,) (q1 ,b,b) = (q1 , ) (q1 , ,z0 ) = (q2 ,z0 )

a,z0/az0 b,z0/bz0 a,a/aa b,b/bb a,b/ab b,a/ba

q0

09:15

c,z0/z0 c,a/a c,b/b

a,a/

b,b/

q1

,z0/z0

q2 99

Ejemplo de Autómata de Pila No Determinístico L = {xx-1 / x {a,b}*} un conjunto de palíndromas sin marcador central.

A = ({q0 , q1 , q2}, {a,b}, {a,b,z0 }, , q0 , z0 , {q2}) (q0 ,a,z0 ) = (q0 ,a z0 ) (q0 ,b,z0 ) = (q0 ,b z0 ) (q0 ,a,a) = (q0 ,a a) (q0 ,b,b) = (q0 ,b b) (q0 ,a,b) = (q0 ,a b)

a,z0/az0 b,z0/bz0 a,a/aa b,b/bb a,b/ab b,a/ba

q0

a,a/  b,b/ 

a,a/

b,b/

q1

,z0/z0

q2

,z0/z0

Es no determinístico debido a: (q0 ,a,a) = {(q0 ,a a), (q1 ,)} (q0 ,b,b) = {(q0 ,b b), (q1 , )} No siempre es posible, dado un autómata de pila no determinístico, encontrar un autómata de pila determinístico que acepte el mismo lenguaje. 09:15

10 10



El AP tiene más poder que el autómata finito.

 La memoria (dada por la pila) es de acceso limitado, para acceder a un cierto dato es necesario borrar los anteriores. Esto impide, por ejemplo, reconocer el lenguaje: L(G) = {anbncn / n ≥1}  Se ve entonces la necesidad de disponer otro modelo computacional, que se presenta como otro tipo de autómata, cuya memoria no tenga esas limitaciones. Este modelo es la Máquina de Turing.

 Cada tipo de autómata definido, incluye al anterior como caso particular.

09:15

11 11