16
1 Autómatas de pila (Pushdown automata)

Automatas_de_Pila.ppt

Embed Size (px)

Citation preview

  • *Autmatas de pila(Pushdown automata)

  • *Autmata de conteoAutmata finito determinista con un contador de enteros o bolsa en la que se colocan o extraen cuentas o piedras en respuesta a un smbolo de entrada. En otras palabras, en cada transicin el autmata no slo selecciona un nuevo estado sino que tambin decide, independientemente del estado de la bolsa, si aade otra cuenta a la bolsa o saca una cuenta de la bolsa o la deja igual. La bolsa inicia con una cuenta y el autmata contina operando mientras haya smbolos de entrada y la bolsa no est vaca. Si se consumen todos los smbolos de la palabra de entrada al mismo tiempo que se vaca la bolsa, entonces se acepta la palabra.

  • *Ejemplo: {anbn | n 1}q0q1q2

  • *Autmatas de pilaDesafortunadamente los autmatas de conteo no son suficientemente poderosos para reconocer todos los LLC. En ocasiones se requiere ms de un tipo de cuenta o roca o en lugar de una bolsa. Se utiliza un stack o pila LIFO (Last In First Out) en el cual el orden es importante. La accin que lleva a cabo el autmata slo es influenciada no slo por el estado en que se encuentra y por el smbolo que lee, sino tambin por el tipo de piedra u objeto que se encuentra arriba en la pila.ababbaq0q1q2q4q3qiqnCinta deentradaCabezalectoraControlPila

  • *Definicin formalUn autmata de pila (pushdown automata) es una sexteta (K, , , , s0, F) donde:K es un conjunto no vaco de estados. es el alfabeto de entrada, no vaco. es el alfabeto de la pila, no vaco.s0 K es el estado inicial.F K es el conjunto de estados finales. (K ( {}) ( {})) (K *) es la relacin de transicin. (p, u, ) (q, ) significa que el autmata est en el estado p, lee el smbolo u, saca de la pila, pasa al estado q e introduce a la pila. La operacin push (slo meter a la pila) se logra tomando como la palabra vaca. La operacin pop (slo sacar de la pila) se logra tomando como la palabra vaca. Ya que es una relacin y no necesariamente una funcin, un autmata de pila es no determinista.Una palabra es aceptada por un AP si al procesarla completamente, se llega a un estado final y la pila queda vaca. Debido al no-determinismo del autmata es posible que al terminar de procesar la palabra, varios estados estn activos. Es suficiente que uno de estos estados sea final para que la palabra se acepte. L(M) denota al lenguaje formado por las palabras aceptadas por M.

  • *Representacin grfica de un APLa transicin ((p, u, ), (q, )), (p, u, ) = (q, ), se representa grficamente por y significa que cuando estamos en el estado p, leemos de la palabra de entrada el smbolo u y sacamos del stack el smbolo , entonces pasamos al estado q y ponemos en la pila la cadena .

  • *EjemploAutmata de pila que acepte {aibi | i 0} K = {q0, q1} = {a, b} = {A}s0 = q0F = {q0, q1}(q0, a, ) = (q0, A)(q0, b, A) = (q1, )(q1, b, A) = (q1, )

  • *Ejemplo: palndromos de longitud imparAutmata de pila que acepte {wcwR | w {a, b}*}. wR es la palabra w al revs, por ejemplo, anitaR = atina. K = {q0, q1} = {a, b, c} = {A, B}s0 = q0F = {q1}(q0, a, ) = (q0, A) (q1, a, A) = (q1, ) (q0, b, ) = (q0, B) (q1, b, B) = (q1, )(q0, c, ) = (q1, )

  • *Ejemplo: palndromos de longitud parAutmata de pila que acepte {wwR | w {a, b}*}. wR es la palabra w al revs, por ejemplo, anitaR = atina. K = {q0, q1} = {a, b} = {A, B}s0 = q0F = {q1}(q0, a, ) = (q0, A) (q1, a, A) = (q1, ) (q0, b, ) = (q0, B) (q1, b, B) = (q1, )(q0, , ) = (q1, )

  • *AF APTodo lenguaje aceptado por un autmata finito es tambin aceptado por un autmata de pila. Si M = (K, , , s0, F) es un autmata finito, entonces (K, , , , s0, F) con = = {((p, u, ), (q, )) | (p, u, q) }acepta el mismo lenguaje que M.Los lenguajes libres de contexto son aceptados por los autmatas de pila y los lenguajes generados por los autmatas de pila son los lenguajes libres de contexto.

  • *LLC APSea G = (V, , R, S) una gramtica libre de contexto. Entonces el autmata de pila M = ({p, q}, , V, , p, {q}) donde la relacin de transicin se define de la siguiente manera acepta exactamente el mismo lenguaje que G.1) (p, , ) = (q, S)2) (q, , A) = (q, x) para cada regla A x R3) (q, , ) = (q, ) para cada El autmata de pila contiene slo dos estados. El primero se utiliza slo en la primera transicin por lo que los estados no sirven para recordar las caractersticas de la palabra de entrada, este recordatorio se hace en la pila. Las transiciones tipo 2) lo que hacen es derivar en la pila la palabra de entrada sin consumir ningn carcter de entrada. Las transiciones tipo 3) comparan la palabra en la pila con la palabra de entrada.

  • *EjemploObtener un AP que acepte el lenguaje generado por la gramtica libre de contexto cuyas reglas son:S aSa S bSb S cTransiciones del APTipo 1): (p, , ) = (q, S)Tipo 2): (q, , S) = (q, aSa)(q, , S) = (q, bSb)(q, , S) = (q, c)Tipo 3): (q, a, a) = (q, ) (q, b, b) = (q, ) (q, c, c) = (q, )

  • *...Ejemplo: analizar abcbaEstadoFalta leerPilapabcbaqabcbaSqabcbaaSaqbcbaSaqbcbabSbaqcbaSbaqcbacbaqbabaqaaq

  • *Cerradura de los LLCDadas dos gramticas G1 = (V1, S1, R1, S1) y G1 = (V2, S2, R2, S2) entonces (se asume, sin perder generalidad, que los smbolos no terminales de G1 y G2 son disjuntos):La gramtica libre de contexto que genera L(G1) L(G2) es G = (V1 V2 {S}, S1 S2, R1 R2 {S S1, S S2}, S)La gramtica libre de contexto que genera L(G1) L(G2) es G = (V1 V2 {S}, S1 S2, R1 R2 {S S1S2}, S)La gramtica libre de contexto que genera L(G1)*es G = (V1, S1, R1 {S , S S1S1}, S}Si M1 = (K1, 1, 1, 1, s1, F1) y M2 = (K2, 2, 2, 2, s2, F2) son dos autmatas de pila que aceptan los lenguajes L1 y L2, respectivamente, entonces un autmata de pila que acepta el lenguaje L1 L2 es M1 2 = (K1 K2 {s}, 1 2, 1 2, {((s, , ),(s1, )), (s, , ),(s2, ))} 1 2, s, F1 F2)

  • *EjemplosObtener una GLC para el lenguaje {anbm | n m}.{anbm | n m} = {anbm | n < m} {anbm | n > m}{anbm | n < m} es generado por S aSb, S Sb, S b.{anbm | n > m} es generado por ........

  • *Tarea 5. Primera parteFecha lmite de entrega: 06/Mayo/2004Problema 1.Obtener un autmata de pila que acepte el lenguaje L = {aibjck | (i = j = k)} Utilice el hecho L = {aibjck | (i = j = k)} = {aibjck | i j} {aibjck | j k}Sugerencia: para obtener el AP que acepte el primer lenguaje, primero almacenara las as en la pila para luego ir descontando una b por cada a en la pila; las as deben acabarse antes de terminar las bs o deben sobrar as al terminar con las bs; las cs no modifican la pila y simplemente se verifica que no haya a despus de la primera b ni que haya a o b despus de la primera c.La segunda parte de esta Tarea 5 est en la lmina 35 del TLarchivo09.ppt

    *