Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Autómatas de pila (Pushdown automata)
2
Autómata de conteo Autómata finito determinista con un contador de enteros o “bolsa” en la que se colocan o extraen cuentas o “piedras” en respuesta a un símbolo de entrada. En otras palabras, en cada transición el autómata no sólo selecciona un nuevo estado sino que también decide, independientemente del estado de la bolsa, si añade otra cuenta a la bolsa o saca una cuenta de la bolsa o la deja igual. La bolsa inicia con una cuenta y el autómata continúa operando mientras haya símbolos de entrada y la bolsa no esté vacía. Si se consumen todos los símbolos de la palabra de entrada al mismo tiempo que se vacía la bolsa, entonces se acepta la palabra.
3
Ejemplo: {anbn | n 1} a b q1 q2 q0
4
Autómatas de pila a b a b b a Cinta de entrada Cabeza q0 lectora
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 First Out) 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. Cinta de entrada a b a b b a Cabeza lectora q0 Control qn q1 q2 qi q3 Pila q4
5
Definición formal Un autómata de pila (pushdown automata) es una sexteta (K, , , , s0, F) donde: K 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. s0 K es el estado inicial. F K es el conjunto de estados finales. (K ( {}) ( {})) (K *) es la relación de transición. (p, u, ) (q, ) significa que el autómata está en el estado p, lee el símbolo u, saca de la pila, pasa al estado q e introduce a la pila. La operación “push” (sólo meter a la pila) se logra tomando como la palabra vacía. La operación “pop” (sólo sacar de la pila) se logra tomando como la palabra vacía. Ya que es una relación y no necesariamente una función, un autómata 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 vacía. Debido al no-determinismo del autómata es posible que al terminar de procesar la palabra, varios estados estén 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.
6
Representación gráfica de un AP
La transición ((p, u, ), (q, )), (p, u, ) = (q, ), se representa 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 , entonces pasamos al estado q y ponemos en la pila la cadena . p q u, /
7
Ejemplo q0 q1 Autómata de pila que acepte {aibi | i 0} a, / A
K = {q0, q1} = {a, b} = {A} s0 = q0 F = {q0, q1} (q0, a, ) = (q0, A) (q0, b, A) = (q1, ) (q1, b, A) = (q1, ) a, / A b, A / q0 q1
8
Ejemplo: palíndromos de longitud impar
Autómata de pila que acepte {wcwR | w {a, b}*}. wR es la palabra w al revés, por ejemplo, “anita”R = “atina”. K = {q0, q1} = {a, b, c} = {A, B} s0 = q0 F = {q1} (q0, a, ) = (q0, A) (q1, a, A) = (q1, ) (q0, b, ) = (q0, B) (q1, b, B) = (q1, ) (q0, c, ) = (q1, ) a, / A b, / B b, B / a, A / c, / q0 q1
9
Ejemplo: palíndromos de longitud par
Autómata de pila que acepte {wwR | w {a, b}*}. wR es la palabra w al revés, por ejemplo, “anita”R = “atina”. K = {q0, q1} = {a, b} = {A, B} s0 = q0 F = {q1} (q0, a, ) = (q0, A) (q1, a, A) = (q1, ) (q0, b, ) = (q0, B) (q1, b, B) = (q1, ) (q0, , ) = (q1, ) a, / A b, / B b, B / a, A / , / q0 q1
10
AF AP Todo lenguaje aceptado por un autómata finito es también aceptado por un autómata de pila. Si M = (K, , , s0, F) es un autómata 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 autómatas de pila y los lenguajes generados por los autómatas de pila son los lenguajes libres de contexto.
11
LLC AP Sea G = (V, , R, S) una gramática libre de contexto. Entonces el autómata de pila M = ({p, q}, , V, , p, {q}) donde la relación de transición 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 R 3) (q, , ) = (q, ) para cada El autómata de pila contiene sólo dos estados. El primero se utiliza sólo en la primera transición por lo que los estados no sirven para “recordar” las características 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 ningún carácter de entrada. Las transiciones tipo 3) comparan la palabra en la pila con la palabra de entrada.
12
Ejemplo Obtener un AP que acepte el lenguaje generado por la gramática libre de contexto cuyas reglas son: S aSa S bSb S c Transiciones del AP Tipo 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, )
13
...Ejemplo: analizar abcba
Estado Falta leer Pila p abcba q abcba S q abcba aSa q bcba Sa q bcba bSba q cba Sba q cba cba q ba ba q a a q
14
Cerradura de los LLC Dadas dos gramáticas G1 = (V1, S1, R1, S1) y G1 = (V2, S2, R2, S2) entonces (se asume, sin perder generalidad, que los símbolos no terminales de G1 y G2 son disjuntos): La gramática libre de contexto que genera L(G1) L(G2) es G = (V1 V2 {S}, S1 S2, R1 R2 {S S1, S S2}, S) La gramática libre de contexto que genera L(G1) L(G2) es G = (V1 V2 {S}, S1 S2, R1 R2 {S S1S2}, S) La gramática 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 autómatas de pila que aceptan los lenguajes L1 y L2, respectivamente, entonces un autómata 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)
15
Obtener una GLC para el lenguaje {anbm | n m}.
Ejemplos Obtener 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
16
Tarea 5. Primera parte Fecha límite de entrega: 06/Mayo/2004
Problema 1. Obtener un autómata 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 almacenaría las a’s en la pila para luego ir descontando una b por cada a en la pila; las a’s deben acabarse antes de terminar las b’s o deben sobrar a’s al terminar con las b’s; las c’s no modifican la pila y simplemente se verifica que no haya a después de la primera b ni que haya a o b después de la primera c. La segunda parte de esta Tarea 5 está en la lámina 35 del TLarchivo09.ppt
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.