AUTÓMATAS DE PILA 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-first-out (LIFO). 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. 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. Autómata de pila reconocedor determinístico APD=<E, A, P, δ,, Z 0, F> E: Conjunto finito de estados, A: Alfabeto o conjunto finito de símbolos de la cinta de entrada, P: Alfabeto o conjunto finito de símbolos de la Pila. P A= δ: función de transición de estados : Estado inicial E. Z 0 : Símbolo distinguido Z 0 P F: Conjunto de estados finales o estados de aceptación. F E. La función de transición definida como: δ:e x ( A {ε}) x P E x P 1) δ( e i, a, X) =( e j, α) 2) δ( e i, ε, X) =( e j, α) donde a A; X P; α P ; e i, e j E. Nota: Si existe transición de tipo (2), sólo se garantiza que AP es determinístico si s A, δ( e i, s, X) está indefinida. Descripción instantánea Una configuración de un AP es una tripla <e,σ,π> donde e: estado_actual; σ: cadena de entrada a ser leída; π: contenido de la pila. Luego, se define una relación de transición en el espacio de posibles configuraciones del AP, tanto si: (1) < e i, aω,xβ > < e j, ω, αβ > Si existe la transición tipo (1), el AP pasa al estado e j, avanza la cabeza lectora y reemplaza el tope X por α. (2) < e i, ω, Xβ > < e j, ω, αβ > Si existe la transición tipo (2), el AP pasa al estado e j, NO avanza la cabeza lectora y reemplaza el tope X por α. donde a A; ω A ; X P; α,β P ; e i,e j E
La función de transición de estados de un AP puede ser representada por un diagrama donde los nodos representan los estados y los arcos transiciones. Si existe transición tipo (1), el arco queda rotulado de la siguiente manera: e i a,x / α e j Si el estado actual es e i y la cabeza lectora apunta un símbolo a, y el tope de la pila es X, entonces cambiar al nuevo estado e j, avanzar la cabeza lectora, y sustituir el símbolo del tope X en la pila por la cadena α. Por ejemplo: Si α = ZYX deja X, apila Y, y apila Z (nuevo tope Z). donde X, Y, Z P Si α =XX deja X y apila X (nuevo tope X). Si α =X deja X como el mismo tope (no altera la pila) Si α =ε elimina X, y el nuevo tope es el símbolo por debajo (desapila) Ejemplo 1 A={a,b,c} L 1 ={ωcω R / ω {a,b} } APD 1 es un autómata de pila que reconoce L1. APD 1 =<{,,e 2 },{a,b,c},{x,y, Z 0 }, δ,, Z 0, {e 2 }> δ: a, Z 0 / XZ 0 b, Z 0 / YZ 0 a, X / XX b, Y / YY a, Y / XY b, X / YX e o c, Z 0 / Z 0 c, X / X c, Y / Y a, X / ε b, Y / ε ε, Z 0 / Z 0 e 2 Ejemplos de cadenas aceptadas ó no aceptadas por AP 1 δ (, abcba)=e 2 abcba L 1 δ (, c)=e 2 c L 1 δ (,abcab)= abcab L 1 δ (,a)= a L 1 Ejemplo 2 L 2 = {a i b c k / i,k 1 y i<k} APD 2 =<{,,e 2 },{a,b,c},{a, Z 0 }, δ 2,, Z 0, {e 2 }> δ 2 : c,z 0 /Z 0 c,z 0 /Z 0 e 2
1,Z 0 /BZ 0 3,Z 0 /Z 0 CIENCIAS DE LA COMPUTACION I 2009 Ejemplo 3 L 3 = {a i b c k / i,k 1 y i k} APD 3 =<{,,e 2 },{a,b,c},{a, Z 0 }, δ 3,, Z 0, {e 2 }> δ 3 : c,z 0 /Z 0 e ε,z 0 /Z 0 1 e 2 Ejemplo 4 L 4 = {a i b c k / i, k 1 y i > k} APD 41 =<{,,e 2,e 3 },{a,b,c},{a, Z 0 }, δ 41,, Z 0, {e 3 }> δ 41: c,α/ε e 2 ε,α/a e 3 c,a/ ε APD 42 =<{,,e 2,e 3 },{a,b,c},{a, Z 0 }, δ 42,, Z 0, {e 3 }> δ 42: a,z 0 / Z 0 e 1 e 2 e 3 Ejemplo 5 L 5 = {a i b c k / i, k 1 y i k} APD 5 =<{,,e 2,e 3 },{a,b,c},{a, Z 0 }, δ 5,, Z 0, {e 3 }> δ 5: e 2 c,a/ ε e 3 c,a/ ε Ejemplo 6 L 6 ={0 i 1 i+k 2 k 3 n+1 / i, k, n 0 } APD 6 =<{e o,,e 2, e 3,e 4 },{0,1,2,3},{A,B, Z 0 }, δ 6,, Z 0, {e 4 }> δ 6 : 0,Z 0 /AZ 0 0,A /AA 1, A /ε 1,B/BB 2, B /ε 3,Z 0 /Z 0 e o 1, A /ε 1,Z 0 /BZ 2, B /ε 0 e 3,Z 0 /Z 0 2 e 3 e 4 3,Z 0 /Z 0
Ejemplo 7 L 7 = {h n g j e 2n d 3i / i, j, n 0} Casos Cadenas de L 7 si n, i, j >0 h n g j e 2n d 3i si n=0 y i, j >0 g j d 3i si i=0 y n, j >0 h n g j e 2n si j=0 y n, i >0 h n e 2n d 3i si n, i=0 y j >0 g j si n, j=0 y i >0 d 3i si i, j =0 y n >0 h n e 2n si n,i,j=0 ε APD 7 = <{e o,,e 2,e 3,e 4,e 5,,,e 8, e 9 },{h,e,g,d},{h, Z 0 }, δ 7,, Z 0, {, e 4, e 8, e 9 }> δ 7 : e,h/h h,h/hh g,h/h e,h/h e,h/ε e o h,z 0 /HZ g,h/h e 2 e,h/h e 3 e 4 e 5 ε,z 0 /Z 0 g,z 0 /Z 0 g,z 0 /Z 0 e 9 e 8 Autómata de pila no determinístico APND= <E, A, P, δ,, Z 0, F>, donde las componentes E, A, P,, Z 0, F se definen como antes, y la función de transición se define como δ: E x (A {ε}) x P P f ( E x P * ) P f denota los subconjuntos finitos de E x P * 1) δ( e i,a, X) = {(e j, α 1 ), (e k, α 2 ),... } 2) δ( e i,ε, X) = {(e j, α 1 ), (e k, α 2 ),... } donde a A, X P, α 1, α 2 P *, e i, e j, e k E Como ya se ha estudiado los autómatas finitos no determinísticos (AFND) reconocen los mismos lenguajes que los autómatas finitos determinísticos (AFD). Sin embargo no ocurre lo mismo con autómatas de pila no determinísticos (APND) y autómatas de pila determinísticos (APD). Algunos lenguajes sólo pueden ser reconocidos por un APND, pero no por un APD.
Ejemplo 8 L 8 = {a m b p c p+m / m,p 1} {a 2i b i / i 1} L 8 sólo puede reconocerse con un APND. APND 8 =<{,,e 2, e 3,e 4,e 5,,,e 8, e 9 },{a,b,c},{a,b, Z 0 }, δ 8,, Z 0, {e 9 }> δ 8 : a, A/AA b,b/bb c,b/ε a, Z 0 /AZ 0 b,a/ba e 2 c,b/ε e 3 e 4 e o a, Z 0 /AZ 0 a,a/a b,a/ε APND 8 es no determinístico ya que en el caso de: δ(,a, Z 0 ) = {(, AZ 0 ), (, A Z 0 )} b,a/ε ε, Z 0 / Z 0 e 8 ε, Z 0 / Z 0 e 9 Ejemplo 9 L 9 = {a m b p c p+m / m,p 1} {a i b 2i / i 1} L 9 sólo puede reconocerse con un APND. APND 9 =<{,, e 2, e 3, e 4, e 5,, },{a,b,c},{a,b, Z 0 }, δ 9,, Z 0, { }> δ 9 : a, A/AA b,b/bb c,b/ε a, Z 0 /AZ 0 b,a/ba e 2 c,b/ε e 3 e 4 e o e 5 b,a/ε ε, Z 0 / Z 0 ε, Z 0 / Z 0 Lenguajes aceptados por los Autómata de Pila Una cadena ω A * es aceptada por AP=<E, A, P, δ,, Z 0, F> si y solo si <,ω, Z 0 > * < e f, ε, α > El AP, comienza en el estado, con pila vacía, luego de leer toda la cadena ω, llega a un estado e f F, y en la pila queda cualquier cadena α P *. El lenguaje aceptado por AP, es el conjunto de todas las cadenas que son aceptadas por AP: L(AP)= { ω / <,ω, Z 0 > * < e f, ε, α > y ω A * y e f F y α P * } Los lenguajes aceptados por los Autómatas de Pila se denominan lenguaje libres del contexto.
Autómata de pila traductor Autómata de pila traductor AP T Un AP T es simplemente un AP que se define como una 9-upla AP T = <E, A, P, δ,, Z 0, F, γ, S> donde E, A, P, δ,, Z 0, F se definen como antes y se agregan dos componentes: S: Alfabeto o conjunto finito de símbolos de salida γ: función de traducción definida como γ:e x (A {ε}) x P S * La γ está definida siempre que δ está definida. En el diagrama de transición de AP T puede describirse como una extensión de la notación usada para AP. Si existe δ(e i, a, X) =( e j, α) y además γ(e i, a, X) = t; luego el arco queda rotulado de la siguiente manera: e i a,x / α,t e j donde e i, e j E ; a A; X P; α P * ;t S * Función de traducción para cadenas El autómata sólo define la traducción, si el autómata AP subyacente acepta la cadena. Es decir la traducción T(ω): A * S * asociada a AP T está definida como T(ω) es válida <,ω, Z 0 > * < e f, ε, α > Ejemplo 10 L 6 ={0 i 1 i+k 2 k 3 n+1 / i, k, n 0 } Traducir las cadenas de L 6 0 i 1 i+k 2 k 3 n+1 como a i+ k b 2k c 3n APD T6 =<{e o,,e 2,e 3,e 4 },{0,1,2,3},{A,B, Z 0 }, δ 6,, Z 0, {e 4 },γ 6, {a,b,c}> δ 6 y γ 6 : 0,Z 0 /AZ 0,ε 0,A /AA, ε 1,A/ε,a 1,B/BB,a 2,B/ε,bb 3,Z 0 / Z 0,ccc e o 1,A/ε,a 1,Z 0 /BZ 0,a e 2,B/ε,bb 3,Z 0 /Z 0,ε 2 e 3 e 4 1,Z 0 /BZ 0,a 3,Z 0 /Z 0, ε 3,Z 0 /Z 0, ε
Ejemplo 11: L 7 = {h n g j e 2n d 3i / i, j, n 0} Traducir las cadenas de L 7 h n g j e 2n d 3i como 1 2j 0 n 2 i APD T7 =<{e o,,e 2,e 3,e 4,e 5,,,e 8, e 9 },{h,e,g,d},{h, Z 0 }, δ 7,, Z 0, {, e 4, e 8, e 9 },γ 7, {0,1,2}> δ 7 y γ 7 : h,h/hh, ε e,h/h, ε g,h/h,11 e,h/h, ε e 5 ε,z 0 /Z 0, ε e o h,z 0 /HZ 0, ε g,h/h,11 e e,h/h,ε e,h/ε,0 2 e 3 e 4 g,z 0 /Z 0, 11 g,z 0 /Z 0,11 e 9, ε, ε, ε, ε, ε e 8, 2