Debido a que no existe un Autómata Finito (AF) que
pueda reconocer un lenguaje del tipo ‘x^n y^n: para n={1,2,3,...}’, para reconocer este tipo de Lenguajes Independientes de contexto (LIC), se tuvo que optar por otra alternativa. Si para un AF, una entrada fue 100 veces ‘x’, no tengo forma de controlar que la ‘y’ siguiente que pueda introducirse en la entrada, se repita sólo por 50 veces, resultando de esta forma una palabra aceptada pero no perteneciente al lenguaje. Entonces, para estos casos se utilizan los AP.
Los AP se pueden utilizar para analizar cadenas en forma
similar a como se usan los AF pero la diferencia es que los AP son no determinísticos (en caso que los comparemos con un AFD) y además cuentan con una pila donde pueden almacenar información para poder recuperarla más tarde.
Esta pila está formada por un subconjunto finito de
elementos que pueden pertenecer al conjunto de símbolos del alfabeto del lenguaje a reconocer, o por algunos símbolos adicionales que el autámata utilizará como marcas de control. Se suele utilizar un carácter ‘#’ especial como indicador de que la pila está vacía.
El proceso ‘pasar a un nuevo estado’ equivalente a los
AFs se denota de la siguiente forma: (p, x, s, q, y), donde: ‘p’ es estado actual, ‘x’ es el símbolo del alfabeto que se lee de la entrada, ‘s’ es el símbolo que se extrae de la pila, ‘q’ es el nuevo estado e ‘y’ es el símbolo que se inserta a la pila.
Pero en la forma gráfica se utiliza la terna (x, y, z) para
indicar las transiciones, donde ‘x’ es el símbolo del alfabeto que se lee de la entrada, ‘y’ es el símbolo que se extrae de la pila y ‘z’ es el símbolo que se inserta en la pila. Cabe aclarar que los lenguajes aceptados por los AP incluyen a los lenguajes regulares (LR) cuando las restringimos sus transiciones a la forma (p, x, q ya que con indicamos que no nos interesa que hay en la pila y nada insertamos en ella.
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.