Teorı́a de Automatas, Lenguajes Formales y Gramáticas D. Castro Esteban TEX & LATEX Contenidos 1 Autómatas finitos Autómatas finitos deterministas Autómatas finitos no deterministas Autómatas finitos no deterministas 1 Gramáticas regulares Expresiones y gramáticas regulares Autómatas finitos y gramáticas regulares Autómatas y expresiones regulares 1 Propiedades de los lenguajes regulares Lenguajes no regulares Propiedades de clausura Propiedades de decisión Equivalencia y minimización 1 Autómatas a pila Definiciones básicas Autómatas a pila deterministas Autómatas finitos deterministas Definición Un autómata finito determinista es una tupla D = (K , Σ, δ , s, F ) donde: K es un conjunto (finito) de estados, Σ es un alfabeto (finito), δ : K × Σ −→ K es la función de transición, s ∈ K es el estado inicial, y F ⊆ K es el conjunto de los estados aceptadores. Autómatas finitos deterministas Ejemplo Consideramos A = (K , Σ, δ , s, F ), donde K := {s, q1 , q2 }, Σ := {0, 1}, F := {q2 } y la función de transición δ se describe mediante la tabla de transiciones: →s q1 ∗q2 0 q1 q1 q2 1 s q2 q2 La flecha indica el estado inicial y el asterisco indica el estado final. El autómata acepta las cadenas que contienen la secuencia 01. Configuración y paso de computación Definición (Configuración, AFD) Dado un autómata finito determinista D = (K , σ , δ , s, F ), llamaremos configuración a toda tupla (q , w ) ∈ K × Σ∗ . Definición (Paso de computación, AFD) Sea D = (K , Σ, δ , s, F ) un autómata finito determinista y sean (q , w ) y (q ′ , w ′ ) dos configuraciones del mismo. Diremos que la configuración (q ′ , w ′ ) se sigue de (q , w ) en un paso de computación, denotado mediante (q , w ) ⊢D (q ′ , w ′ ), si existe σ ∈ Σ tal que δ (q , σ ) = q ′ y w = σ w ′ . (q , w ) ⊢∗D (q ′ , w ′ ) denota cero o más pasos de computación. Lenguaje de un AFD Definición (Lenguaje de un AFD) Dado un autómata finito determinista D = (K , Σ, δ , s, F ), se define el lenguaje aceptado por el autómata, denotado L(D ), como: L(D ) := {ω ∈ Σ∗ : (s, ω ) ⊢∗D (f , ε ), con f ∈ F }. Los lenguajes que son aceptado por un autómata finito determinista se llaman regulares. Representación de AFD L os AFD se representan, normalmente mediante su diagramas de transición. En ella se representa el autómata mediante un grafo orientado sujeto a las siguientes consideraciones: cada nodo del grafo se corresponde con un estado del autómata, dos nodos p y q están unidos mediante un arco dirigido de p a q si y sólo si existe σ ∈ Σ, tal que δ (p, σ ) = q; dicho arco se etiqueta con el sı́mbolo σ ; si existen diversos sı́mbolos σ1 , . . . , σn ∈ Σ, el arco se etiqueta con σ1 , . . . , σn , los nodos correspondientes a estados aceptadores se representan mediante una doble circunferencia, y al nodo correspondiente al estado inicial llega una flecha sin origen concreto. Ejemplo Ejemplo El autómata anterior se representa mediante: s 0, 1 0 1 0 q1 1 q2 Autómatas finitos no deterministas Definición Un autómata finito no determinista es una tupla N = (K , Σ, δ , s, F ) donde: K es un conjunto (finito) de estados, Σ es un alfabeto (finito), δ : K × Σ −→ P(K ) es la función de transicióna b . s ∈ K es el estado inicial, y F ⊆ K es el conjunto de los estados aceptadores. a P(K ) es el conjunto de todos los subconjuntos de K , i.e. las partes de K b La función de transición también puede definirse como una relación δ ⊆ K ×Σ×K. Paso de computación Definición Sea N = (K , Σ, δ , s, F ) un autómata finito no determinista y sean (q , w ) y (q ′ , w ′ ) dos configuraciones del mismo. Diremos que la configuración (q ′ , w ′ ) se sigue de (q , w ) en un paso de computación, denotado mediante (q , w ) ⊢D (q ′ , w ′ ), si existe σ ∈ Σ tal que q ′ ∈ δ (q , σ ) y w = σ w ′ . La notación (q , w ) ⊢∗N (q ′ , w ′ ) indicará que la configuración (q ′ , w ′ ) se sigue de (q , w ) en cero o más pasos de computación. Ejemplo Considerar el autómata N = (K , Σ, δ , s, F ), donde K := {s, q1 , q2 }, Σ := {0, 1}, F := {q2 } y la función de transición δ se describe mediante: 0 1 → s {s, q1 } {s} 0/ {q2 } q1 ∗q2 {q2 } {q2 } Ejemplo El diagrama de transición es como sigue: 0, 1 s 0, 1 0 q1 1 q2 Equivalencia entre AFDs y AFNs Teorema Todo lenguaje L ⊆ Σ∗ aceptado por un autómata finito no determinista es aceptado por un autómata finito determinista. Demostración Sea L ⊆ Σ∗ un lenguaje aceptado por un AFN N = (K , Σ, δ , s, F ). Construimos un AFD D = (K ′ , Σ, δ ′ , s′ , F ′ ) que acepta L como sigue: Definimos K ′ := P(K ), F ′ := {q ∈ K ′ : q ∩ F 6= 0}, / δ ′ : K ′ × Σ → K ′ se define mediante δ ′ (q , σ ) := δ (q × {σ }) = ∪p∈q δ (p, σ ), y el estado inicial mediante s′ := {s}. Demostración Veamos, por inducción en la longitud de la cadena w, que si D acepta w partiendo de un cierto estado q ′ , existe una estado q ∈ q ′ , tal que N acepta w partiendo de q. (Base) Supongamos w = ε . Por lo tanto, si D acepta ε partiendo de q ′ , se sigue que q ′ ∈ F ′ . Tomando q ∈ q ′ ∩ F tenemos que N acepte w partiendo de q. (Paso inductivo) Supongamos que la afirmación es cierta para todas las cadenas de longitud a lo más n − 1 y sea w = w1 · · · wn una de longitud n aceptada por D partiendo de q ′ . Tenemos que D acepta w2 · · · wn partiendo de δ ′ (q ′ , w1 ). Por lo tanto, existe un p ∈ δ ′ (q ′ , w1 ) tal que N acepta w2 · · · wn partiendo del estado p. Puesto que p ∈ δ ′ (q ′ , w1 ), existe un q ∈ q ′ tal que δ (q , w1 ) = p y por ende, N acepta w partiendo de q con q ∈ q ′ . Tomando como q ′ = {s}, si D acepta una cierta cadena w, N también la acepta. Igualmente se demuestra que si N acepta una cadena w, D también. Algoritmo de conversión Algoritmo El algoritmo toma como entrada la descripción de un autómata finito no determinista cualquiera A = (K , Σ, δ , s, F ) y devuelve como salida un autómata finito determinista A′ = (K ′ , Σ, δ ′ , s′ , F ′ ) que acepta el mismo lenguaje. Su evolución es la siguiente. (Inicialización) Inicializa el nuevo conjunto de estados K ′ := {{s}} y para cada σ ∈ Σ lleva a cabo la siguiente tarea: define δ ′ ({s}, σ1 ) = δ (s, σ ) y, si δ (s, σ ) 6= {s} añade δ (s, σ ) a K ′. (Iteración) Si para todo q ∈ K ′ y σ ∈ Σ está definido δ ′ (q , σ ), el algoritmo termina su ejecución devolviendo A′ = (K ′ , Σ, δ ′ , s′ , F ′ ) donde F ′ = {q ∈ K ′ ; q ∩ F 6= 0} / . En caso contrario, considera un ′ ′ par (q , σ ) ∈ K × Σ tal que δ (q , σ ) no haya sido definido, define δ ′ (q , σ ) = δ (q , σ ) y, si δ (q , σ ) ∈ / K ′ , se añade a K ′ y se itera de nuevo. Ejemplo de conversión de AFN a AFD Cosideramos el AFN anterior. Tomamos como estado inicial {s}, inicializamos K ′ = {{s}} y definimos las transiciones δ ′ ({s}, 0) = {s, q1 } y δ ′ ({s}, 1) = {s}. Actualizamos K ′ a {{s}, {s, q1 }} y definimos δ ′ ({s, q1 }, 0) = {s, q1 } y δ ′ ({s, q1 }, 1) = {s, q2 }. Actualizamos K ′ a {{s}, {s, q1 }, {s, q2 }} y definimos δ ′ ({s, q2 }, 0) = {s, q1 , q2 } y δ ′ ({s, q2 }, 1) = {s, q2 }. Actualizamos K ′ a {{s}, {s, q1 }, {s, q2 }, {s, q1 , q2 }} y definimos: δ ′ ({s, q1 , q2 }, 0) = {s, q1 , q2 } y δ ′ ({s, q1 , q2 }, 1) = {s, q2 }. Lo que termina el proceso. Ejemplo de conversión de AFN a AFD 0 1 {s} 0 {s, q1 } 1 1 {s, q2 } 1 0 {s, q1 , q2 } 0 Autómatas finitos no deterministas con transiciones vacı́as Definición Un autómata finito con transiciones ε es una tupla E = (K , Σ, δ , s, F ) donde: K es un conjunto (finito) de estados, Σ es una alfabeto (finito), δ : K × (Σ ∪ {ε }) −→ P(K ) es la función de transición, s ∈ K es el estado inicial, y F ⊆ K es el conjunto de los estados aceptadores.a a Nótese que la función de transición también puede definirse como una relación δ ⊆ K × Σ × Σ, al igual que en el caso de los autómatas finitos no deterministas. Paso de computación Definición Sea E = (K , Σ, δ , s, F ) un autómata finito no determinista con transiciones vacı́as y sean (q , w ) y (q ′ , w ′ ) dos configuraciones del mismo. Diremos que la configuración (q ′ , w ′ ) se sigue de (q , w ) en un paso de computación, notado (q , w ) ⊢D (q ′ , w ′ ), si existe σ ∈ Σ ∪ {ε } tal que δ (q , σ ) = q ′ y w = σ w ′ . La notación (q , w ) ⊢∗D (q ′ , w ′ ) indicará, al igual que en otros casos, que la configuración (q ′ , w ′ ) se sigue de (q , w ) en cero o más pasos de computación. Clausura respecto de ε Definición (Clausura respecto de ε ) Dado un autómata finito no determinista con transiciones vacı́as E = (K , Σ, δ , s, F ), se define la clausura de un estado q ∈ K , con respecto de ε , de manera recursiva q ∈ Clε (q ), para todo p ∈ Clε (q ) y todo r ∈ Q tales que r ∈ δ (p, ε ), se verifica r ∈ Clε (q ). En general, dado un conjunto Q ⊆ K , se define la clausura de Q con respecto a transiciones vacı́as de manera análoga. Un ejemplo Sea E = (K , Σ, δ , F , s) es autómata finito no determinista con transiciones vacı́as descrito por el siguiente diagrama de transición: 0, 1 0, 1 s ε q1 0 q2 1 q3 El autómata anterior acepta el lenguaje de las cadenas que contienen la secuencia 01. En este caso, por ejemplo, Clε (s) = {s, q1 } y Clε (q1 ) = {q1 }. Equivalencia con AFD Teorema Todo lenguaje L ⊆ Σ∗ aceptado por un autómata finito no determinista con transiciones vacı́as es aceptado por un autómata finito determinista. Demostración Sea dado un AFN–ε E = (K , Σ, δ , s, F ). Construimos un AFD D = (K ′ , Σ, δ ′ , s′ , F ), que acepte el mismo lenguaje, como sigue K ′ := {P ⊆ K : Clε (P ) = P }, s′ := Clε (s), F ′ := {P ∈ K ′ : P ∩ F 6= 0} / ,y dados P ∈ K ′ y σ ∈ Σ, definimos δ ′ (P , σ ) := Clε [ p∈P ! δ (p, σ ) . Demostración Demostración. Por inducción en la longitud de la cadena w, veamos que si D acepta w partiendo de un cierto estado q ′ , existe una estado q ∈ q ′ , tal que E acepta w partiendo de q. (Base) Si w = ε y D acepta ε partiendo de q ′ , tenemos q ′ ∈ F ′ . Tomando q ∈ q ′ ∩ F se tiene que E acepte w partiendo de q. (Paso inductivo) Supongamos la afirmación es cierta para todas las cadenas de longitud a lo más n − 1 y sea w = w1 · · · wn . Si w es aceptada por D partiendo de un cierto estado q ′ , tenemos que D acepta w2 · · · wn partiendo de δ ′ (q ′ , w1 ). Por lo tanto, existe un p ∈ δ ′ (q ′ , w1 ) tal que E acepta w2 · · · wn partiendo del estado p. Puesto que p ∈ δ ′ (q ′ , w1 ), existe un q ∈ q ′ tal que δ (q , w1 ) = q ′′ de manera que p ∈ Clε (q ′′ ) y por ende, que E acepta w partiendo de q con q ∈ q ′ . Tomando s′ = {s}, si D acepta una cierta cadena w, N también. Igualmente se muestra que si N acepta w, D también. Algoritmo de conversión Algoritmo El algoritmo toma como entrada un AFN–ε A = (K , Σ, δ , s, F ) y devuelve un AFD con igual lenguaje. Su funcionameinto es: (Inicialización) Inicializa K ′ := {CLε {s}} y para cada σ ∈ Σ define δ ′ ({s}, σ1 ) = Clε (δ (s, σ )). Si Clε (δ (s, σ )) 6= Clε ({s}) añade Clε (δ (s, σ )) a K ′ . (Iteración) Si todas las transiciones están definidas, el algoritmo termina devolviendo A′ = (K ′ , Σ, δ ′ , s′ , F ′ ), con F ′ = {q ∈ K ′ ; q ∩ F 6= 0} / . Si no es ası́, considera (q , σ ) ∈ K ′ × Σ ′ t.q. δ (q , σ ) no está definido, y define δ ′ (q , σ ) = Clε (δ (q , σ )) y, si Clε (δ (q , σ )) ∈ / K ′ , se añade a K ′ e itera de nuevo. Ejemplo El estado inicial es {s, q1 } (clausura con respecto al vacı́o de s), definimos K ′ = {{s, q1 }}) y las transiciones δ ′ ({s, q1 }, 0) = {s, q1 } y δ ′ ({s}, 1) = {s}. Actualizamos K ′ a {{s}, {s, q1 }} y definimos δ ′ ({s, q1 }, 0) = {s, q1 } y δ ′ ({s, q1 }, 1) = {s, q2 }. Actualizamos K ′ a {{s}, {s, q1 }, {s, q2 }} y definimos: δ ′ ({s, q2 }, 0) = {s, q1 , q2 } y δ ′ ({s, q2 }, 1) = {s, q2 }. Luego K ′ = {{s}, {s, q1 }, {s, q2 }, {s, q1 , q2 }} y definimos δ ′ ({s, q1 , q2 }, 0) = {s, q1 , q2 } y δ ′ ({s, q1 , q2 }, 1) = {s, q2 }. Los estados finales son F ′ = {{s, q2 }, {s, q1 , q2 }}. Ejemplo El autómata diagrama de transiciones del autómata construido es el siguiente: 0 1 {s} 0 {s, q1 } 0 1 1 {s, q2 } 0 1 {s, q1 , q2 } Contenidos 1 Autómatas finitos Autómatas finitos deterministas Autómatas finitos no deterministas Autómatas finitos no deterministas 1 Gramáticas regulares Expresiones y gramáticas regulares Autómatas finitos y gramáticas regulares Autómatas y expresiones regulares 1 Propiedades de los lenguajes regulares Lenguajes no regulares Propiedades de clausura Propiedades de decisión Equivalencia y minimización 1 Autómatas a pila Definiciones básicas Autómatas a pila deterministas Expresiones regulares Definición Dado un alfabeto finito Σ, se define un expresión regular, vı́a inducción estructural, de la siguiente manera: (Base) 0/ ,ε y σ (con σ ∈ Σ) son expresiones regulares cuyos lenguajes asociados son 0/ , {ε } y {σ } respectivamente. (Inducción) Distinguimos los siguientes casos: Dada una e.r. E, (E ) es una e.r. cuyo lenguaje es precisamente L(E ) (el lenguaje asociado a E). Dada una e.r. E, E ∗ es una e.r. cuyo lenguaje es L(E )∗ (la cláusura de L(E ) con respecto a la concatenación). Dadas dos e.r. E1 y E2 , E1 + E2 es una e.r. cuyo lenguaje es L(E1 ) ∪ L(E2 ) (la unión de los lenguajes asociados a E1 y E2 ). Dadas dos e.r. E1 y E2 , E1 E2 es una e.r. cuyo lenguaje asociado es L(E1 )L(E2 ) (la concatenación de los lenguajes de E1 y E2 ). Ejemplo Un ejemplo sencillo de e.r. es (0 + 1)∗ 01(0 + 1)∗ . Dicha expresión describe el conjunto de las cadenas de ceros y unos que continen la subcadena 01. Para verlo, basta observar que (0 + 1)∗ describe cualquier cadena de ceros y unos. Gramática regular Definición Una gramática regular (lineal a derecha) es una tupla G = (N , T , P , S ) donde N es un conjunto finito de sı́mbolos llamados variables o sı́mbolos no terminales, T es un conjunto finito de sı́mbolos, llamados terminales, satisfaciendo T ∩ N = 0/ , P ⊆ N × (T ∗ N ∪ T ) es un conjunto finito de elementos, llamados producciones, de manera tal que si (p, q ) ∈ P se denotará mediante la expresión p → q; p recibe el nombre de cabeza y q el de cuerpo de la producción, y S ∈ N es el sı́mbolo inicial. Ejemplo La gramática que describe el lenguaje asociado a (0 + 1)∗ 01(0 + 1)∗ viene dada por las producciones siguientes: S → 0S S → 1S S → 01S ′ S ′ → 0S ′ S ′ → 1S ′ , y S′ → ε . Más compactamente, S → 0S |1S |01S ′ S ′ → 0S |1S |ε . Derivación Definición Dada una gramática regular G = (N , T , P , S ) y una cadena α v, con α ∈ T ∗ y v ∈ N, diremos que αγ ∈ (T ∗ N ∪ T ∗ ) deriva de α v, si existe una producción v → γ ∈ P. Si es el caso, lo indicaremos mediante la notación α v ⇒G αγ ; en general, si una cierta cadena β ∈ (T ∗ N ∪ T ∗ ) deriva de δ ∈ (T ∗ N ∪ T ∗ ) tras un número finito de derivaciones, lo notaremos mediante δ ⇒∗G γ . Ejemplo Continuando con el ejemplo anterior, es sencillo ver que se tiene, por ejemplo, S ⇒ 0S ⇒ 01S ⇒ 0101S ′ ⇒ 0101. En particular, se tiene que 0101 pertenece al lenguaje de la gramática. Autómatas finitos y gramáticas regulares Teorema Sea A un autómata finito. Entonces, existe una gramática regular G tal que L(G) = L(A). Demostración Supongamos dado un autómata A = (K , Σ, δ , q0 , F ). Construimos la gramática G tal que L(G) = L(A) como sigue: el conjunto de variables de G coincide con Q (el conjunto de estados de A), el conjunto de carácteres terminales de G es Σ y su sı́mbolo inicial es q0 . Las producciones de G se definen como sigue: dada una variable q ∈ Q, q → σ p (con p ∈ Q y σ ∈ Σ) es una producción si δ (q , σ ) = p; dado un estado aceptador f ∈ F , f → ε es una producción. Queda claro que una cierta cadena w ∈ Σ∗ se deriva del sı́mbolo inicial de G si y sólo si es aceptado por el autómata. Por lo tanto, L(G) = L(A). Ejemplo Consideremos el autómata finito determinista visto anteriormente, la gramática del lenguaje por él aceptado es: q0 → 1q0 q0 → 0q1 q1 → 0q1 q1 → 1q2 q2 → 0q2 , q2 → 1q2 , y q2 → ε . De gramáticas regulares a autómatas Teorema Sea G una gramática regular. Entonces, existe un autómata finito (no determinista) A tal que L(A) = L(G). Demostración Supongamos dada una gramática regular G = (V , T , P , S ) (lineal a derecha). Construimos el autómata A = (K , T , δ , q0 , F ) como sigue: el conjunto de estado viene dado por las expresiones de la forma [v ], donde v es una subcadena del cuerpo de alguna producción, el alfabeto del autómata coincide con el conjunto de caracteres terminales de G, la función de transición se define mediante las reglas siguientes: dado un estado [p], con p una variable de G, y un sı́mbolo t ∈ T , se define δ ([p], t ) = {[q ] : p → q ∈ P }. Dados t ∈ T y p ∈ T ∗ ∪ T ∗ V definiendo un estado [p], se define δ ([tp], t ) = {[p]} Es fácil ver, por inducción en la longitud de las cadenas, que L(A) = L(G). De expresiones regulares a autómatas Teorema Sea Σ un alfabeto finito y E una expresión regular sobre dicho alfabeto. Entonces, existe un autómata finito (no determinista con transiciones vaciás) A = (K , Σ, δ , q0 , F ) tal que L(A) = L(E ). Demostración La demostración es por inducción estructural en la expresión regular; como subproducto, se describe un algoritmo que transforma expresiónes regulares en autómatas finitos (no deterministas con transiciones vaciás) Demostración (Caso Base) Supongamos que la e.r. es de los tipos: 0/ , ε o σ (con σ ∈ Σ; consideramos los autómatas: ε σ Los lenguajes de dichos AFN–ε son 0/ , ε ) y σ (respec). Demostración (Paso inductivo).- Si E = E1 + E2 , donde E1 y E2 son dos e.r. con A1 y A2 como AF asociados (i.e. se satisface que L(E1 ) = L(A1 ) y L(E2 ) = L(A2 )), consideramos: A1 ε ε ε ε A2 Demostración Si E = E1∗ , donde E1 es e.r. con A1 AF asociado, consideramos: ε ε ε ε Demostración Si E = E1 E2 , donde E1 y E2 son dos e.r. con A1 y A2 como AF asociados, consideramos: ε A2 ε A2 Queda claro que los lenguajes se corresponden con los de las e.r.. De autómatas a expresiones regulares Teorema Sea A = (K , Σ, δ , q0 , F ) un autómata finito sobre un alfabeto Σ. Entonces, existe una expresión regular sobre el mismo alfabeto Σ, digamos E , tal que L(E )=L(A). Demostración Supongamos que A es un AFD. Además, suponemos que el conjunto de estados es {1, . . . , n}. Construimos una familia de e.r. Rijk , con 1 ≤ k ≤ n y 1 ≤ i , j ≤ k, cuyo interpretación es la siguiente: Rijk es la expresión regular que describe las cadenas que hacen que A pase del estado i al estado j atravesando, únicamente, nodos etiquetados con naturales menores o iguales a k. La construcción de dichas e.r. es inductiva en k. Demostración En primer lugar, supongamos que k = 0 (caso base). Entonces, Rij0 denota el conjunto de las cadenas que hacen transicionar al autómata A del estado i al estado j sin pasar por estado alguno (todos los estados están etiquetados con un natural mayor que cero). Por lo tanto, caben dos posibilidades: existe una transición del nodo i al nodo j o, equivalentemente, existe un camino (arco) en el diagrama de transición de A que va de i a j; suponiendo que dicho camino está etiquetado con los sı́mbolos σ1 , . . . , σl , definimos Rij0 = σ1 + . . . + σl , no existe una tal transición; en este caso, definimos Rij0 = 0/ . Demostración Supongamos construidas las expresiones regulares Rijk para 1 ≤ k ≤ n. Construyamos la expresiones regulares Rijn+1 , con 1 ≤ i , j ≤ n + 1. Dados i , j, con 1 ≤ i , j ≤ n + 1, supongamos que existe una caden que hace transicionar al autómata del estado i al j atravesando estados etiquetados con naturales menores o iguales que n + 1. Distinguimos los siguientes casos: si existe la cadena en cuestión no hace transicionar al autómata A por el estado n + 1 (la cadena da un camino del nodo i al nodo j que no atraviesa nodos etiquetados con naturales mayores que n en el diagrama de transiciones), dicha cadena está comtemplada en la expresión regular Rijn , Demostración si no es el caso, esto es, la cadena hace transicionar al autómata por el estado n, partimos dicha cadena en fragmentos de la siguiente manera: el primer fragmento hace transicionar al autómata del estado i al n + 1 sin pasar por n + 1 como estado intermedio, el último fragmento hace transicionar al autómata del estado n + 1 al estado j sin pasar por n + 1 como estado intermedio, y los fragmentos intermedios son tales que hacen pasar al autómata del estado n + 1 al estado n + 1 sin que éste sea uno de los intermedios. El primer fragmento está descrito por Rin(n+1) , el último por R(nn+1)j y los fragmentos intermedios por R(nn+1)(n+1 . Demostración Por lo tanto y en cualquier caso, dicha cadena queda descrita por Rijn + Rin(n+1) (R(nn+1)(n+1 )∗ R(nn+1)j . El lenguaje de A está dado por es la dada por la suma de las e.r. de la n forma R1k , donde 1 suponemos es el estado inicial y k es un estado final. Contenidos 1 Autómatas finitos Autómatas finitos deterministas Autómatas finitos no deterministas Autómatas finitos no deterministas 1 Gramáticas regulares Expresiones y gramáticas regulares Autómatas finitos y gramáticas regulares Autómatas y expresiones regulares 1 Propiedades de los lenguajes regulares Lenguajes no regulares Propiedades de clausura Propiedades de decisión Equivalencia y minimización 1 Autómatas a pila Definiciones básicas Autómatas a pila deterministas Ejemplo Considérese el lenguaje definido sobre {0, 1} L := {0n 1n : n ∈ N} Intuitivamente se puede llegar a la conclusión de que dicho lenguaje no es regular puesto que un autómata finito que lo reconozca debe ser capaz de contar el número de ceros para compararlo con el número de unos. Sin embargo, dado que los autómatas tienen una capacidad de almacenamiento limitada por el número de estado, no pueden almacenar números arbitrariamente grandes. Por lo tanto, no puede existir un tal autómata, i.e. L no es regular Lema de Bombeo Lema (Lema de Bombeo) Sea L un lenguaje regular. Entonces, existe una constante n (dependiente de L) tal que para toda cadena ω ∈ L de longitud mayor o igual que n, existen cadenas ω1 , ω2 , ω3 ∈ Σ∗ tales que: ω2 6= ε , |ω1 ω2 | ≤ n, y para todo k ∈ N, la cadena ω1 ω2k ω3 pertenece a L. Función de transición extendida Definición Dado un autómata A = (K , Σ, δ , s, F ), se define la extensión de δ al dominio K × Σ∗ (denotada por δ̂ ) de manera inductiva en la longitud de las cadenas: dado q ∈ K , definimos δ̂ (q , ε ) := q, dados q ∈ K , ω ∈ Σ∗ y σ ∈ Σ, definimos δ̂ (q , σ ω ) := δ (δ̂ (q , ω ), σ ). Nota A acepta w ∈ Σ∗ si y sólo si δ̂ (s, w ) ∈ F . Demostración Demostración. Supongamos dado un lenguaje regular L y consideremos un AF A = (K , Σ, δ , s, F ) t.q. L = L(A); supongamos además que #K = n. Dada una cadena ω = σ1 · · · σm ∈ Σ∗ , con m ≥ n, definimos pi , para 0 ≤ i ≤ m, como el estado en el que se encuentra el autómata tras procesar la cadena σ1 · · · σi , i.e. pi = δ̂ (s, σ1 · · · σi ) (notar que p0 = s). Obviamente, existen 0 ≤ j < k ≤ n tales que pj = pk . Definiendo ω1 := σ1 · · · σj , ω2 := σj +1 · · · σk , y ω3 := σk +1 · · · σm , se sigue el resultado. Ejemplo Ejemplo Consideramos el lenguaje del ejemplo anterior, veamos por reducción al absurdo, que no es regular. Si ası́ fuera, por el Lema de Bombeo, existirı́a un natural n ∈ N tal que para toda cadena de longitud como poco n, digamos ω ∈ Σ∗ existen cadenas ω1 , ω2 , ω3 ∈ Σ∗ tales que ω2 6= ε , 2 |ω1 ω2 | ≤ n, y 3 para todo k ∈ N, la cadena ω1 ω2k ω3 pertenece a L. En particular, consideramos la cadena de L definida por ω = 0n 1n . Por lo anterior, existen ω1 , ω2 , ω3 verificando 1, 2 y 3. Tomando k = 0, se sigue que ω1 ω3 pertenece a L, lo cual es absurdo puesto que su número de ceros es forzosamente menor que él de unos (ω2 tiene 1 longitud mayor o igual a uno, i.e. consta de como poco de un cero). Propiedades básicas Teorema Las siguientes afirmaciones son ciertas. 1 La unión de dos lenguajes regulares es regular. 2 El complementario de un lenguaje regular es regular. 3 La intersección de dos lenguajes reuglares es regular. 4 La diferencia de dos lenguajes regulares es regular. Nota Las afirmaciones anteriores son ciertas para un número finito de lenguajes (la demostración es por inducción). Demostración 1. Sean L, L′ ⊆ Σ∗ dos lenguajes regulares y EL y EL′ e.r. para los mismos. La expresión regular EL + EL′ ) da el lenguaje L ∪ L′ y, por lo tanto, es regular. 2. Sea L un lenguaje regular dado por un AFD A. Construimos un autómata A′ igual a A con la salvedad de que sus estados aceptadores son los estados de rechazo de A. El autómata A′ acepta cualquier cadena que A rechaze, i.e. determina el lenguaje Lc . Por lo tanto, el complementario de L es un lenguaje regular. Demostración 3. Dados dos lenguaje regulares L, L′ ⊂ Σ∗ tenemos (Leyes de Morgan): c L ∩ L′ = Lc ∪ L′c . Puesto que, tal y como se ha demostrado en 1. y 2., la unión y el complementario de lenguajes regulares es regular, se sigue que la intersección es regular. 4. Sean L, L′ ⊆ Σ∗ dos lenguajes regulares. Puesto que se verifica: L \ L′ = L ∩ L′c , se sigue de 1. y 3. que la diferencia de lenguajes regulares es regular. Reflexión Definición Dada una cadena cualquiera ω = ω1 · · · ωn ∈ Σ∗ sobre el alfabeto Σ, se define la reflexión de la cadena ω , notada ω R , como ω R := ωn · · · ω1 . Definición Dado un lenguaje L ⊆ Σ∗ , se define la reflesión del lenguaje L, denotada por LR , como LR := {ω R : ω ∈ L}. Teorema Sea L ⊆ Σ un lenguaje regular. Entonces, LR es un lenguaje regular. Demostración Para demostrar el enunciado haremos uso de la relación existente entre lenguajes regulares y expresiones regulares. Supongamos en primer lugar que el lenguaje regular L es descrito por una expresión regular E . Procediendo por inducción estructural, distinguimos los siguientes casos: (Caso Base) Si E = 0/ , E = ε o E = σ , para algún σ ∈ Σ, definiendo E R como E se tiene L(E R ) = L(E )R = L. Demostración (Paso inductivo) Consideremos las restantes alternativas: Supongamos que E = E1 + E2 , para ciertas expresiones regulares E1 y E2 . Definiendo E R = E1R + E2R tenemos que L(E R ) = L(E1R + E2R ) = L(E1R ) ∪ L(E2R ) = L(E1 )R ∪ L(E2 )R = L(E1 + E2 )R = L(E ). Con respecto al caso E = E1 E2 , definiendo E R = E2R E1R tenemos L(E R ) = L(E22 E1R ) = L(E2R )L(E1R ) = L(E2 )R L(E1 )R = (L(E1 )L(E2 ))R = L(E1 E2 )R = L(E )R . Finalmente, el caso E = E1∗ se sigue del anterior. Homomorfismo Definición Dados dos alfabetos finitos Σ y Γ, llamaremos homomorfismo a toda aplicación h : Σ → Γ∗ . Toda aplicación como la anterior induce, de manera natural una aplicación h : Σ∗ → Γ∗ definida mediante h(σ1 · · · σn ) := h(σ1 ) · · · h(σn ). Dado un lenguaje cualquiera L ⊆ Σ, llamaremos homomorfismo de L (con respecto a h) al lenguaje h(L) definido por h(L) = {ω ∈ Γ : ∃ω ′ ∈ Lt.q. h(ω ′ ) = ω }. Teorema Sea L ⊂ Σ∗ un lenguaje regular y h : Σ → Γ un homomorfismo entre los alfabetos (finitos) Σ y Gamma. Entonces, el homomorfismo del lenguaje L (con respecto a h) es un lenguaje regular. Demostración Supongamos que el lenguaje L viene dado mediante una expresión regular sobre el alfabeto Σ, digamos E . Construyamos, por inducción estructural, una nueva expresión, digamos E h , que determine h(L). (Caso Base) Supongamos de entrada que E = 0/ , E = ε ó E = σ (con σ ∈ Σ). Entonces, definimos E h mediante E h := 0/ , E h := ε ó E h := h(σ ) de pendiendo del caso. Está claro que, en este caso, h(L(E )) = L(E h ). (Paso Inductivo) Distinguimos los siguientes casos: si E = E1 + E2 , definimos E h := E1h + E2h . si E = E1 E2 , definimos E h := E1h E2h y, finalmente, si E = E1∗ , definimos E h := (E h )∗ . Resulta fácil de ver que en los tres casos anteriores se tiene que h(L(E )) = L(E h ). En resumen, el homomorfismo de un lenguaje regular es regular. Homomorfismo inverso Definición Sean Σ y Γ dos alfabetos finitos, h : Σ → Γ un homomorfismo y L ⊂ Γ∗ un lenguaje regular. Se define el homomorfismo inverso de L (con respecto a h), denotado h−1 (L), como: h−1 (L) := {ω ∈ Σ∗ : h(ω ) ∈ L}. Teorema Sean Σ y Γ dos alfabetos finitos, h : Σ → Γ un homomorfismo y L ⊂ Γ∗ un lenguaje regular. El homomorfismo inverso de L es un lenguaje regular. Demostración Supongamos dado A = (K , Γ, δ , s, F ) aceptando L. Construyamos un autómata A′ = (K , Σ, δ ′ , s, F ) (sólo cambia la función de transición) definiendo: δ ′ (q , σ ) := δ̂ (q , h(σ )), donde δ̂ denota la función de transición extendida de A. Queda claro que el lenguaje de A′ es precisamente h−1 (L). Equivalencia Teorema Existen algoritmos que 1 dada una e.r. E , construyen un AF A tal que L(A) = L(E ), 2 dado un AF A, construyen una g.r. G tal que L(G) = L(A), y 3 dada una g.r. G, construyen una e.r. E , tal que L(E ) = L(G). Otros problemas Cuestión Dado un lenguaje regular L, ¿es L no vacı́o? Cuestión Dado un lenguaje regular L, ¿es L el total, i.e. L = Σ∗ ? Cuestión Dados lenguajes regulares L1 y L2 , ¿es L1 = L2 ? Vaciedad Teorema Existe un algoritmo que dado un lenguaje regular L decide si es o no vacı́o. Demostración para AF Si L viene dado por un AF, dicha pregunta equivale a: ¿existe un camino del estado inicial a un estado aceptador? Ası́ enunciada, la pregunta tiene fácil respuesta algorı́tmica: el estado inicial es accesible desde el estado inicial, y si el estado p es accesible desde el estado inicial y existe un arco de p a q, entonces el estado q es accesible desde el estado inicial. Lo anterior resume la construcción inductiva del conjunto de estados accesibles desde el estado inicial, en el momento en que dicho conjunto contenga un estado aceptador, concluimos que el lenguaje no es vacı́o. Si dicho conjunto no se puede ampliar y no contiene ningún estado aceptador, concluimos que el lenguaje L es vacı́o. Demostración para ER Si L viene dado mediante una ER E , procedemos por inducción estructural: (Caso Base) Si E es 0/ define el lenguaje vacı́o; si es del tipo ε o σ (σ ∈ Σ), entonces L no es vacı́o. (Paso Inductivo) Si E no es de los tipos anteriores, distinguimos: Si es de la forma E1 + E2 , el lenguaje es vacı́o si y sólo si los lenguajes de E1 y E2 lo son, Si es del tipo E1 E2 , el lenguaje es vacı́o si y sólo si el lenguaje de E1 o el de E2 lo son. Finalmente, si la expresión regular es del tipo E ∗ , el lenguaje no es vacı́o. Demostración para GR Si L viene dado por una GR, dicha pregunta equivale a: ¿existe una serie de producciones que llevan del sı́mbolo inicial S a una cadena cuya variable se puedes substituir por una cadena de sólo terminales? Ası́ enunciada, la pregunta tiene también fácil respuesta algorı́tmica: el sı́mbolo inicial es accesible desde el sı́mbolo inicial, y si una variable V se obtiene mediante una producción desde una variable que es accesible desde el sı́mbolo inicial, tb. es accesible desde S. En el momento en que dicho conjunto contenga una variable que se puede substituir por una cadena sólo de terminales, concluimos que el lenguaje no es vacı́o. Si dicho conjunto no se puede ampliar y no contiene ninguna de tales variables, el lenguaje L es vacı́o. Totalidad e igualdad Totalidad Para determinar si un lenguaje regular L es el total, basta decidir si Lc es el vacı́o. Igualdad Para saber si dos lenguajes regulares L1 y L2 coinciden, basta saber si L1 ⊆ L2 y L2 ⊆ L1 o equivalentemente, si L1 \ l2 = 0/ y L2 \ L1 = 0/ . Relaciones de equivalencia Definición Sea X un conjunto. Una relación ∼⊆ X × X se dice de equivalencia, si satisface las siguientes propiedades: [Reflexiva] para todo x ∈ X , x ∼ x, [Simétrica] para todos x , y ∈ X , x ∼ y implica y ∼ x, y [Transitiva] para todos x , y , z ∈ X , x ∼ y y y ∼ z implica x ∼ z. Clases de equivalencia y conjuntos cociente Definición Dada una relación ∼⊆ X × X y un elemento x ∈ X , se define la clase de x, notada [x ]∼ , como el conjunto de todos los elementos de X relacionados con x, i.e. [x ] := {y ∈ X : x ∼ y }. El conjunto X / ∼ es el conjunto cociente, i.e. el conjunto de todas las clases de equivalencia Nota Dados dos elementos x , y ∈ X no relacionados mediante ∼, se verifica [x ]∼ ∩ [y ]∼ = 0. / La demostración de este hecho se sigue la propiedad transitiva: por reducción al absurdo, sean x , y ∈ X dos elementos no relacionados tales que [x ] ∩ [y ] 6= 0/ y sea z ∈ [x ] ∩ [y ]. Puesto que x ∼ z y z ∼ y se sigue x ∼ y, lo cúal es absurdo. Por lo que se tiene la afirmación. Estados equivalentes Definición Sea A = (K , σ , δ , s, F ) un autómata finito determinista y sean p, q ∈ K dos estados del mismo. Diremos que los estados p y q son equivalentes, denotado por p ∼ q, si para toda cadena w ∈ Σ∗ se verifica que δ̂ (p, w ) es de aceptación si y sólo si δ̂ (q , w ) es de aceptación. En caso contrario, diremos que los estados son distinguibles. Propiedades Teorema La relación estados equivalentes es una relación de equivalencia. Demostración. Las tres propiedades se siguen directamente de la definición, omitiremos su prueba. Algoritmo de marcado Teorema Existe un algoritmo que tomando como entrada un autómata finito determinista, calcula los pares de estados distinguibles y por ende, los pares de estados equivalentes. Demostración El algoritmo procede como sigue: (Caso Base) Si p ∈ K es un estado de aceptación y q ∈ K no lo es, se marca el par (p, q ) como par de estados distinguibles. Dichos estado se distinguen mediante la cadena ε . (Paso Inductivo) Sean p, q ∈ K dos estados tales que para algún σ ∈ Σ se tiene δ (p, σ ) = s y δ (q , σ ) = r . Si el par (r , s) esta marcado como distinguible, se marca el par (p, q ) como distinguible. Obviamente, una cadena que distingue p y q es aw, donde w ∈ Σ∗ es una cadena que distingue a r y s. Demostración El algoritmo anterior marca todos los pares de estados distinguibles. Para demostrarlo, supongamos que no es ası́, i.e. que existe un par de estado p, q ∈ K distinguibles que no han sido marcados por el algoritmo. Los estados p y q no pueden ser distinguidos mediante la cadena ε , puesto que si ası́ fuera hubieran sido marcados en la primera etapa del algoritmo (uno serı́a aceptador mientras que el otro no). Sea w = w1 . . . wn ∈ Σ+ la cadena más corta que distingue a p y q, los estados δ (p, w1 ) y δ (q , w1 ) son distinguidos por la cadena w2 . . . wn . Continuando con la argumentación, llegamos a la conclusión de que unos ciertos estados r ∈ K y s ∈ K son distinguibles por la cadena vacı́a y por tanto conforman un par marcado en la primera etapa del algoritmo. Por lo tanto, el par conformado por p y q hubiera sido marcado durante la ejecución de la segunda etapa. Ejemplo Sea A el autómata finito: 0 C 0 1 0 D 1 E 1 En este caso, el algoritmo comienza marcando lo pares formados por estados aceptadores y no aceptadores, i.e.: {(C , E ), (D , E )}. Tras esta primera fase, el algoritmo pasa a la fase inductiva. Sin embargo, en esta fase no marca nuevos pares puesto que el par (D , C ) es indistinguible. Equivalencia Teorema Existe un algoritmo que decide si dos autómatas finitos aceptan el mismo lenguaje. Demostración Supongamos dados dos autómatas finitos A = (KA , ΣA , δA , sA , FA ) y B = (KB , ΣB , δB , sB , FB ) tales que sus conjuntos de estados sean disjuntos. Consideramos un nuevo autómata cuyo conjunto de estados viene dado por la unión de los conjuntos KA y KB . El resto de los elementos del nuevo autómata se definen de manera acorde a esta elección. El autómata ası́ definido, tiene dos estados iniciales; sin embargo esto no afecta a lo que sigue. El algoritmo emplea el algoritmo de marcado para detectar si los estados iniciales son equivalentes o no. Ambos autómatas definen el mismo lenguaje si y sólo si ası́ es. Ejemplo Consideramos el AF del Ejemplo anterior y 0 A 1 1 B 0 Empleando el algoritmo de marcado, son distinguibles los pares de estados: (B , A), (E , A), (C , B ), (D , B ), (E , C ) y (E , D ). Por lo tanto, el par (A, C ) es un par de estados equivalentes y ambos autómatas definen el mismo lenguaje. Minimización Teorema Existe un algoritmo que tomando como entrada un autómata finito determinista, produce un autómata equivalente con el menor número posible de estados. Demostración Supongamos dado un autómata A = (K , Σ, δ , s, F ). El algoritmo elimina de entrada aquellos estados que no son accesibles desde el estado inicial. Después, construye un nuevo autómata B = (K ′ , Σ, δ ′ , s′ , F ′ ) de la siguiente manera: K ′ es el conjunto de clases de equivalencia de K con respecto a ∼ (equivalencia de estados), s′ es la clase de equivalencia de s, i.e. s′ := [s]∼ , F ′ es el conjunto de clases de equivalencia de los elementos de F, y δ ′ se define de la siguiente manera: dado σ ∈ Σ y q ∈ K ′ , se define δ ′ (q , σ ) = [δ (q , σ )]∼ . La función de transición esta bien definida puesto que, si p ∈ [q ]∼ y [δ (q , σ )]∼ 6= [δ (p, σ )]∼ , los estados p y q serı́an distinguibles. Demostración El algoritmo, para construir un tal autómata, hace uso del algoritmo de marcado con el fin de determinar las clases de equivalencia. Veamos que el autómata B ası́ construido tiene el menor número de estados posibles. Por reducción al absurdo, supongamos que no es ası́ y sea C un autómata con un número menor de estados. Como definen el mismo lenguaje, i.e. son autómatas aquivalentes, los estados iniciales son equivalentes. Como ninguno de los dos autómatas posee estados aislados del inicial, cada estado de B va a ser equivalente a alguno de C. Puesto que C tiene menos estados que B, hay dos estados de B equivalentes entre si, lo cual resulta absurdo. Ejemplo Consideramos el autómata: 1 0 A 0 B 1 E 1 1 0 C 1 0 F D 0 1 1 G 0 1 0 0 H Ejemplo El mı́nimo autómata que acepta el lenguaje del anterior es: 1 0 G A, E 1 D, F 1 0 0 0 B, H 0 1 C 1 Contenidos 1 Autómatas finitos Autómatas finitos deterministas Autómatas finitos no deterministas Autómatas finitos no deterministas 1 Gramáticas regulares Expresiones y gramáticas regulares Autómatas finitos y gramáticas regulares Autómatas y expresiones regulares 1 Propiedades de los lenguajes regulares Lenguajes no regulares Propiedades de clausura Propiedades de decisión Equivalencia y minimización 1 Autómatas a pila Definiciones básicas Autómatas a pila deterministas Autómatas a pila Definición Un autómata a pila es una tupla P = (K , Σ, Γ, δ , s, Z , F ) donde: 1 K es un conjunto finito de estados, 2 Σ y Γ son dos alfabetos finitos llamados de entrada y de pila (respec.), 3 δ : K × (Σ ∪ {ε }) × Γ → P(K ) × Γ∗ es una aplicación llamada de transición, 4 s ∈ K es el estado inicial, Z es el sı́mbolo inicial de la pila, y 5 F es el conjunto de estados aceptadores. Configuración y paso de computación de un AP Definición Dado un AP P = (K , Σ, Γ, δ , s, Z , F ), llamaremos configuración del autómata P a toda tupla (q , w , γ ) ∈ K × Σ∗ × Γ∗ . En particular, llamaremos configuración inicial para un cadena dada w ∈ Σ∗ a la tupla (s, w , Z ). Definición Supongamos dados un AP P = (K , Σ, Γ, δ , s, Z , F ), un sı́mbolo del alfabeto de entrada σ ∈ Σ y un sı́mbolo del alfabeto de pila ρ ∈ Γ tales que δ (q , σ , ρ ) = (Q , α ) para ciertos Q ∈ P(K ) y α ∈ Γ∗ . Para todo p ∈ Q, w ∈ Σ∗ y γ ∈ Γ∗ , diremos que la configuración (q , σ w , ργ ) da lugar, en un paso de computación, a la configuración (p, w , αγ ) y lo denotaremos por (q , σ w , ργ ) ⊢P (p, w , αγ ). En general, emplearemos la notación ⊢∗P para indicar que una configuración se sigue de otra en un número finito de pasos (quizás nulo). Lenguaje aceptado por estado final Definición Dado un autómata a pila P = (K , Σ, Γ, δ , s, Z , F ), se define el lenguaje aceptado por P por estado final como el conjunto de las cadenas w ∈ Σ∗ tales que partiendo de la configuración inicial para w, el autómata alcanza en un número finito de pasos una configuración aceptadora, i.e. L(P ) = {w ∈ Σ∗ : (s, w , Z ) ⊢∗P (f , ε , γ ) ∈ F × {ε } × Γ∗ }. Lenguaje aceptado por pila vacı́a Definición Dado un autómata a pila P = (K , Σ, Γ, δ , s, Z , F ), se define el lenguaje aceptado por P por pila vacı́a como el conjunto de las cadenas w ∈ Σ∗ tales que partiendo de la configuración inicial para w, el autómata alcanza en un número finito de pasos una configuración con cadena y pila vacı́as, i.e. L(P ) = {w ∈ Σ∗ : (s, w , Z ) ⊢∗P (f , ε , ε ) ∈ K × {ε } × {ε }}. Equivalencia Teorema Dado un lenguaje aceptado por un autómata P por estado final, existe un autómata P ′ que acepta L por pila vacı́a. Recı́procamente, si L es aceptado por un autómata por pila vacı́a, existe un autómata P ′ que acepta L por estado final. Demostración (1) Supongamos dado un lenguaje L ⊂ Σ∗ aceptado por un AP P = (K , Σ, Γ, δ , s, Z , F ) por estado final. La construcción de un autómata P ′ que acepta L por pila vacı́a es como sigue: P ′ coincide con P con las siguientes salvedades: el sı́mbolo inicial de pila viene dado por un nuevo sı́mbolo X , el conjunto de estado coincide con el de P salvo por la inclusión de dos nuevos estados: un nuevo estado inicial p0 y un nuevo estado denotado pF encargado de vaciar la pila. la función de transición es igual que en el autómata a pila salvo por la inclusión de diversas transiciones: la primera está definida mediante δ (p0 , ε , X ) = {(s, ZX )} y se encarag de apilar el sı́mbolo inicial de pila del autómata P, mientras que las restantes son de la forma δ (f , ε , γ ) = {(pF , ε )}, donde f ∈ F y γ ∈ Γ. Demostración (2) Gráficamente, representamos a continuación dicho autómata: ε , Γ/ε p0 ε , X /ZX s ε , Γ/ε pF Demostración (3) Recı́procamente, supongamos que el lenguaje L es aceptado por un autómata a pila por pila vacı́a. La construcción del autómata P ′ es como sigue: al igual que en el caso anterior, el nuevo autómata es esencialmente igual a P con las siguientes salvedades: el sı́mbolo inicial de pila viene dado por un nuevo sı́mbolo Z , se añaden dos nuevos estados p0 (estado inicial) y pF (estado final), se consideran, además de las transiciones de originales P, las siguientes: una transición inicial definida mediante δ (p0 , ε , X ) = {(s, ZX )} y unas transiciones encargadas de aceptar definidas por δ (q , ε , Z ) = {(pF , X )}. Demostración (4) En lı́neas generales, el diagrama de transiciones de P ′ tiene la pinta: p0 ε , X /ZX s ε , X /X pF Autómata a pila determinista Definición Dado un autómata a pila P = (K , Σ, Γ, s, Z , F ), diremos que es determinista si verifica: 1 2 δ (q , σ , γ ) = (Q , γ ′ ) verifica #Q ≤ 1 para todo q ∈ K , σ ∈ Σ y γ ∈ Γ. Si δ (q , σ , γ ) = (Q , γ ′ ) con Q 6= 0/ , entonces δ (q , ε , γ ) = (0, / γ ′ ). AP y lenguajes regulares Teorema Dado un lenguaje regular L ⊆ Σ∗ , exite un autómata a pila deterministas que acepta L por estado final. Nota Para finalizar, notemos que existen lenguajes aceptador por autómatas a pila que no son aceptados por autómatas a pila deterministas.