U.R.J .C. Ingenierı́a Técnica en Informática de Sistemas Ingenierı́a Informática Teorı́a de Autómatas y Lenguajes Formales Curso 2005/06 Solución Segundo Parcial Normas : La duración de esta parte del examen es de 2 horas y 15 minutos. Todos los ejercicios se entregarán en hojas separadas. 1. (2 puntos) Sea Σ el alfabeto finito Σ := {if , then, else, comando, {, }, true, false}. Consideremos la gramática independiente del contexto siguiente : G := ({S, E, C}, Σ, S, {S ::= if E then S else S|comando|{S}; E ::= true | false}). Se pide : Calcular una Forma Normal de Chomksy para la gramática G. Utilizando la Forma Normal previamente calculada, y usando el algoritmo visto en el curso, comprueba si la palabra if true then comando else { false } está en el lenguaje generado por la gramática. Solución La gramática en Forma Normal de Chomsky es ({S, E, T, R1 , R2 , A1 , A2 , A3 , C1 , C2 , C3 } , {true, false, if , else, then, {, }, comando} , S, P), donde P son las producciones siguientes : S E T R1 R2 A1 A2 A3 C1 C2 C3 C4 ::= ::= ::= ::= ::= ::= ::= ::= ::= ::= ::= ::= C1 C2 | comando | R1 T true | false SR2 { } if then else A1 E C3 C4 A2 S A3 S Pagina 1 de 4 U.R.J .C. Ingenierı́a Técnica en Informática de Sistemas Ingenierı́a Informática Teorı́a de Autómatas y Lenguajes Formales Solución Segundo Parcial Curso 2005/06 Para saber si la palabra x = if true then comando else {false} pertenece al lenguaje generado por la gramática, aplicaremos el algoritmo visto durante el curso. Para ello, construı́mos la tabla correspondiente : if A1 C1 ∅ ∅ ∅ ∅ ∅ ∅ true E ∅ ∅ ∅ ∅ ∅ ∅ then A2 C3 ∅ ∅ ∅ ∅ comando S ∅ ∅ ∅ ∅ else A3 ∅ ∅ ∅ { R1 ∅ ∅ false E ∅ } R2 Como la última casilla no contiene el axioma, podemos deducir que la palabra x no está en el lenguaje generado por la gramática. 2. (2,5 puntos) Diseña un autómata a pila que reconozca el siguiente lenguaje: L = {an+m bm+t at bn | n, t > 0, m ≥ 0} Solución A = ({a, b}, {S, A, B, C}, S, {q0 , q1 , q2 , q3 }, q0 , f, {}) f (q0 , a, S) f (q0 , a, A) f (q0 , a, B) f (q0 , b, B) f (q0 , b, A) f (q1 , b, B) f (q1 , b, A) f (q1 , b, C) f (q1 , a, C) f (q2 , a, C) f (q2 , b, A) f (q3 , b, A) = = = = = = = = = = = = {(q0 , A)} {(q0 , AA), (q0 , BA)} {(q0 , BB)} {(q1 , λ)} {(q1 , CA)} {(q1 , λ)} {(q1 , CA)} {(q1 , CC)} {(q2 , λ)} {(q2 , λ)} {(q3 , λ)} {(q3 , λ)} Pagina 2 de 4 U.R.J .C. Ingenierı́a Técnica en Informática de Sistemas Ingenierı́a Informática Teorı́a de Autómatas y Lenguajes Formales Curso 2005/06 Solución Segundo Parcial 3. (2,5 puntos) Diseña una máquina de Turing que reconozca el siguiente lenguaje: L = {an bn+m am | n, m ≥ 0} Solución M = ({a, b}, {a, b, •}, •, {q0 , . . . , q7 }, q0 , f, {q7 }) f (q0 , •) f (q0 , a) f (q0 , b) f (q1 , a) f (q1 , b) f (q1 , •) f (q2 , a) f (q2 , b) f (q2 , •) f (q3 , a) f (q3 , b) f (q3 , •) f (q4 , a) f (q5 , a) f (q5 , b) f (q5 , •) f (q6 , •) f (q6 , b) = = = = = = = = = = = = = = = = = = (q7 , •, R) (q1 , •, R) (q3 , •, R) (q1 , a, R) (q1 , b, R) (q2 , a, L) (q2 , a, L) (q2 , b, L) (q0 , •, R) (q3 , a, R) (q3 , b, R) (q4 , •, L) (q5 , •, L) (q5 , a, L) (q5 , b, L) (q6 , •, R) (q7 , •, R) (q3 , •, R) 4. (2 puntos) Sea Σ = {0, 1, 2} un alfabeto finito, y consideremos el lenguaje L ⊆ Σ∗ , definido por la igualdad siguiente : L := {0p 1q 2r | 0 ≤ 2p + 3 ≤ 3q + 2 ≤ r + 1} ⊆ Σ∗ . Demuestra que el lenguaje L no es un lenguaje independiente del contexto. Solución Supongamos que el lenguaje L es independiente del contexto. Entonces debe verificar el Lema de Bombeo. Sea N ∈ N la constante del enunciado del Lema de Bombeo. Definamos x := 03N +1 12N +1 26N +4 . Se tiene que x ∈ L. Adems, |x| ≥ N . Sea x = yzuvw una descomposición cualquiera cumpliendo las propiedades del Lema de Bombeo. Esto es, Pagina 3 de 4 U.R.J .C. Ingenierı́a Técnica en Informática de Sistemas Ingenierı́a Informática Teorı́a de Autómatas y Lenguajes Formales Curso 2005/06 Solución Segundo Parcial i) |zuv| ≤ N . ii) |zv| > 0. iii) ∀i ≥ 0, yz i uv i w ∈ L. Estudiemos todas las posibilidades para dicha descomposición. Supongamos que la cadena zv contiene algún 2. Entonces, por la propiedad i) se tiene que no puede contener ningún 0. Ahora, por la propiedad iii) para i = 0, se tiene que α := yz 0 uv 0 w ∈ L. Pero eso es imposible, pues n2 (α) + 1 ≤ 6N + 4 < 6N + 5 = 2n0 (α) + 3. Supongamos que la cadena zv no contiene ningún 2. Entonces, como dicha cadena no puede ser vacı́a (por la propiedad ii) ), se tiene que debe contener algún 0 o algún 1. Estudiemos ambas opciones. • Supongamos que la cadena zv contiene algún 0. Entonces, por la propiedad iii) para i = 2, se tiene que α := yz 2 uv 2 w ∈ L. Pero eso es imposible, pues 2n0 (α) + 3 ≥ 6N + 6 > 6N + 5 = n2 (α) + 1. • Supongamos que la cadena zv contiene algún 1. Entonces, por la propiedad iii) para i = 2, se tiene que α := yz 2 uv 2 w ∈ L. Pero eso es imposible, pues 3n1 (α) + 2 ≥ 6N + 6 > 6N + 5 = n2 (α) + 1. En todos los casos llegamos a una contradicción, que parte de suponer que L es un lenguaje independiente del contexto. Concluı́mos que el lenguaje L no es un lenguaje independiente del contexto. Pagina 4 de 4