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 / Autómatas y Lenguajes Formales Septiembre 2007 Final Normas : La duración de esta parte del examen es de 2 horas y 30 minutos. Todos los ejercicios se entregarán en hojas separadas. El examen tipo test cuenta hasta 2 puntos sobre la nota total. Además de obtener un mı́nimo de 5 puntos en el global del examen, para poder aprobar es necesario obtener un mı́nimo de 1.3 puntos entre las dos primeras preguntas y un mı́nimo de 1.3 puntos entre las dos últimas. 1. (a) (0.8 puntos) Sea el siguiente lenguaje: L = {x | siendo x ∈ {a, b}∗ y |x| > 0 y na (x) 6= 2} donde na (x) representa el número total de a’s (no necesariamente consecutivas) en la palabra x. Obtén una gramática regular, lineal por la derecha, que genere el lenguaje L. Solución: Una posible solución serı́a la siguiente gramática: G = ({S, A, B, C}, {a, b}, S, P ) con P ={ S A B C ::= ::= ::= ::= aA aB aC aC | bS | a | b, | bA | b, | bB | a, | bC | a | b} (b) (0.8 puntos) Sea L el lenguaje compuesto por las palabras x que cumplan las siguientes condiciones: x ∈ {a, b}∗ |x| > 0 si x contiene b’s, el numero de b’s consecutivas siempre es 1 o mayor que 2 (pero no 2). Página 1 de 7 Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.) Ejemplos de palabras que pertenecen a L: abab, abbba, bbbb, ababbbbaaabbb,... Ejemplos de palabras que no pertenecen a L: bb, abba, ababb, ababbaaabbb ... Obtén una gramática regular, lineal por la derecha, que genere el lenguaje L. Solución: Una posible solución serı́a la siguiente gramática: G = ({S, A, B, C, D}, {a, b}, S, P ) con P ={ S A B C ::= aS | bA | a | b, ::= aS | bB | a, ::= bC | b, ::= aS | bC | a | b} 2. (1.6 puntos) Dada la expresión regular r = (1 + 01)∗ (0 + λ), diseña un autómata finito determinista que reconozca L(r). El autómata no podrá tener más de 3 estados. Solución: Un posible autómata finito no determinista equivalente a la expresión regular, es el siguiente: f →q0 q1 q2 *q3 0 {q1 } 1 {q2 } {q2 } {q3 } λ {q2 } {q0 , q3 } Para convertir este autómata finito no determinista en un determinista equivalente, primero hallaremos la clausura lambda de su estado inicial: clausuraλ (q0 ) = {q0 , q2 , q3 } Esta clausura será el estado inicial de nuestro nuevo autómata finito determinista: ′ fAF 0 1 D →*{q0 , q2 , q3 } {q1 , q3 } {q0 , q2 , q3 } *{q1 , q3 } {} {q0 , q2 , q3 } {} {} {} Renombrando queda: Página 2 de 7 Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.) ′ fAF 0 1 D →*A B A *B C A C C C Intentaremos ver si existe algún autómata equivalente más pequeño. Para ello, minimizamos. Primero eliminamos los estados inaccesibles (en este caso no hay ninguno). Después, pasamos a calcular el conjunto cociente Q/E: Q/E0 = {{A, B}, {C}} Q/E1 = {{A}, {B}, {C}} Q/E2 = {{A}, {B}, {C}} Q/E2 = Q/E1 por lo tanto Q/E1 = Q/E Este es el autómata mı́nimo que reconoce el lenguaje L(r). Por lo tanto, no existe ninguna otra solución a este problema a excepción de los autómatas isomorfos correspondientes. 3. (1.6 puntos) Consideremos el alfabeto finito Σ := {0, 1}, y sea L ⊆ Σ∗ el lenguaje definido por la siguiente igualdad : L := {w0n | n ∈ N , n0 (w) = (n mod 4)} . ¿Es L un lenguaje regular?. Razona la respuesta. Solución: El lenguaje es regular. Un autómata finito que evalua dicho lenguaje es el siguiente : Página 3 de 7 Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.) 1 1 q0 0 q1 λ q7 1 0 λ q6 0 1 q2 0 λ 0 q5 q3 λ 0 q4 0 q8 0 0 q9 0 q10 (a) (0.6 puntos) Diseña una gramática independiente de contexto que genere el siguiente lenguaje: L = {w | w ∈ {a, b, c, (, ), {, }, [, ], <, >}∗ y en w las parejas de paréntesis, corchetes, llaves y ángulos están bien formados} Ejemplos: w = ab(a) ∈ L; x = (bc)a[b] ∈ L; y = ((a[a]{b})) ∈ L; z = (a{)b} ∈ /L (b) (0.2 puntos) Genera las palabras w = ab(a); x = (bc)a[b]; y = ((a[a]{b})) con la gramática obtenida en el apartado a) de este ejercicio. (c) (0.6 puntos) Transforma la gramática independiente de contexto L (obtenida en el apartado a) de este ejercicio) en un autómata de pila. Utiliza el algoritmo visto en el temario del curso. (d) (0.2 puntos) Describe la secuencia de descripciones instantáneas del autómata de pila para el reconocimiento de las palabras w = ab(a); x = (bc)a[b]; y = ((a[a]{b})). Solución: Solución 1: Gramática en FNG Página 4 de 7 Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.) 1. Se diseña una gramática en forma normal de Greibach G. La gramática G = (V, T, S, P ) siendo V = {S, A, B, C, D} T = {a, b, c, (, ), {, }, [, ], < , >} y P como sigue: S ::= λ|aS|bS|cS|(SA|{SB|[SC| < SD A ::=)S B ::=}S C ::=]S D ::=> S 2. w : S → aS → abS → ab(SA → ab(aSA → ab(aA → ab(a)S → ab(a) x : S → (SA → (bSA → (bcSA → (bcA → (bc)S → (bc)aS → (bc)a[SC → (bc)a[bSC → (bc)a[bC → (bc)a[b]S → (bc)a[b] y : S → (SA → ((SAA → ((aSAA → ((a[SCAA → ((a[aSCAA → ((a[aCAA → ((a[a]SAA → ((a[a]{SBAA → ((a[a]{bSBAA → ((a[a]{bBAA → ((a[a]{b}SAA → ((a[a]{b}AA → ((a[a]{b})SA → ((a[a]{b})A → ((a[a]{b}))S → ((a[a]{b})) 3. Siendo la gramática en FNG, se convierte en un autómata de pila: AP P = ({a, b, c, (, ), {, }, [, ], <, >}, {S, B}, {q}, q, S, P, ∅), siendo P f (q, λ, S) = {(q, λ)} f (q, a, S) = {(q, S)} f (q, b, S) = {(q, S)} f (q, c, S) = {(q, S)} f (q, (, S) = {(q, SA)} f (q, {, S) = {(q, SB)} f (q, [, S) = {(q, SC)} f (q, <, S) = {(q, SD)} f (q, ), A) = {(q, S)} f (q, }, B) = {(q, S)} f (q, ], C) = {(q, S)} f (q, >, D) = {(q, S)} 4. w : (q, ab(a), S) ⊢ (q, b(a), S) ⊢ (q, (a), S) ⊢ (q, a), SA) ⊢ (q, ), SA) ⊢ (q, ), A) ⊢ (q, λ, S) ⊢ (q, λ, λ) x : (q, (bc)a[b], S) ⊢ (q, bc)a[b], SA) ⊢ (q, c)a[b], SA) ⊢ (q, )a[b], SA) ⊢ (q, )a[b], A) ⊢ (q, a[b], S) ⊢ (q, [b], S) ⊢ (q, b], SC) ⊢ (q, ], SC) ⊢ (q, ], C) ⊢ (q, λ, S) ⊢ (q, λ, λ) y : (q, ((a[a]{b})), S) ⊢ (q, (a[a]{b})), SA) ⊢ (q, a[a]{b})), SAA) ⊢ (q, [a]{b})), SAA) ⊢ (q, a]{b})), SCAA) ⊢ (q, ]{b})), SCAA) ⊢ (q, ]{b})), CAA) ⊢ (q, {b})), SAA) ⊢ (q, b})), SBAA) ⊢ (q, })), SBAA) ⊢ (q, })), BAA) ⊢ (q, )), SAA) ⊢ (q, )), AA) ⊢ (q, ), SA) ⊢ (q, ), A) ⊢ (q, λ, S) ⊢ (q, λ, λ) Página 5 de 7 Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.) Solución 2: Gramática sin restricciones 1. La gramática G = (V, T, S, P ) siendo V = {S, B} T = {a, b, c} y P como sigue: S ::= λ|B|SS|aS|bS|cS B ::= (S)|[S]| < S > |{S} 2. w : S → aS → abS → ab(S) → ab(aS) → ab(a) x : S → SS → (S)S → (bS)S → (bcS)S → (bc)S → (bc)aS → (bc)a[S] → (bc)a[bS] → (bc)a[b] y : S → (S) → ((S)) → ((aS)) → ((aSS)) → ((a[S]S)) → ((a[aS]S)) → ((a[a]S)) → ((a[a]{S})) → ((a[a]{bS})) → ((a[a]{b})) 3. AP P = ({a, b, c, (, ), {, }, [, ], <, >}, {S, B}, {q}, q, S, P, ∅), siendo P f (q, λ, S) = {(q, λ), (q, B), (a, SS), (q, aS), (q, bS), (q, cS), (q, SS)} f (q, λ, B) = {(q, (S)), (q, [S]), (q, < S >), (q, [S]), (q, {S}))} f (q, x, x) = {(q, λ)}, siendo x ∈ {a, b, c, (, ), {, }, [, ], <, >} 4. w : (q, ab(a), S) ⊢ (q, ab(a), aS) ⊢ (q, b(a), S) ⊢ (q, b(a), bS) ⊢ ⊢ (q, (a), (S)) ⊢ (q, a), S)) ⊢ (q, a), aS)) ⊢ (q, ), S)) ⊢ (q, ), )) ⊢ (q, λ, λ) x : (q, (bc)a[b], S) ⊢ (q, (bc)a[b], SS) ⊢ (q, (bc)a[b], (S)S) ⊢ (q, bc)a[b], S)S) ⊢ (q, bc)a[b], bS)S) ⊢ (q, c)a[b], S)S) ⊢ (q, c)a[b], cS)S) ⊢ (q, )a[b], S)S) ⊢ (q, )a[b], )S) ⊢ (q, a[b], S) ⊢ (q, a[b], aS) ⊢ (q, [b], S) ⊢ (q, [b], [S]) ⊢ (q, b], S]) ⊢ (q, b], bS]) ⊢ (q, ], S]) ⊢ (q, ], ]) ⊢ (q, λ, λ) y : (q, ((a[a]{b})), S) ⊢ (q, ((a[a]{b})), (S)) ⊢ (q, (a[a]{b})), S)) ⊢ (q, (a[a]{b})), (S))) ⊢ (q, a[a]{b})), S))) ⊢ (q, a[a]{b})), SS))) ⊢ (q, a[a]{b})), aSS))) ⊢ (q, [a]{b})), SS))) ⊢ (q, [a]{b})), [S]S))) ⊢ (q, a]{b})), aS]S))) ⊢ (q, ]{b})), S]S))) ⊢ (q, ]{b})), ]S))) ⊢ (q, {b})), S))) ⊢ (q, {b})), {S}))) ⊢ (q, b})), S}))) ⊢ (q, b})), bS}))) ⊢ (q, })), S}))) ⊢ (q, })), }))) ⊢ (q, )), ))) ⊢ (q, ), )) ⊢ (q, λ, λ) 4. (1.6 puntos) Dados dos números naturales x, y ∈ N, se define la operación módulo como el resto de la división entera de x entre y; se denota como x mod y, y cumple que 0 ≤ (x mod y) < y. Diseña una máquina de Turing que calcule dicha función. f :N×N→ N f (x, y) = x mod y ∀x, y ∈ N e y > 0 Explica su funcionamiento y el algoritmo que has utilizado para resolver la función. Se deberán tener en cuenta los siguientes aspectos: Página 6 de 7 Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.) La codificación a utilizar, para todos los números, será una codificación natural (es decir, cada número estará representado por tantos unos como su valor natural). Ası́, la codificación del número 3 será: 111, la del 4: 1111, etcétera. En la cinta tendremos como entrada el dividendo x, un asterisco y el divisor y. Tanto el dividendo como el divisor serán siempre mayores o iguales a 1. En caso de que el resto de la división sea cero la cadena debe quedar vacı́a. Al finalizar el cómputo en la cinta sólo quedará la solución y, además, el cabezal de la máquina de Turing deberá apuntar al primer carácter de la misma. •q0 111111 ∗ 1111• •q0 11111 ∗ 11• •q0 111 ∗ 111• •q0 111 ∗ 1111• ⊢∗ ⊢∗ ⊢∗ ⊢∗ •qf 11• •qf 1• •qf • • •qf 111• Solución: M = ({1, ∗, x, •}, {1, ∗}, •, {q0, q1 . . . q9 }, q0 , f, {q9 }) Donde la función de transición f , se define de la siguiente manera: (1, 1, R) (∗, ∗, R) q0 (1, 1, L) (∗, ∗, L) (•, •, L) q1 (1, x, L) q2 (1, •, R) (•, •, R) q3 (∗, •, R) q4 (x, x, L) (•, •, L) (∗, ∗, R) (1, •, R) (1, 1, R) (∗, ∗, R) q6 q5 (x, •, R) (x, 1, R) q9 (•, •, R) q8 (•, •, R) (1, 1, L) Página 7 de 7 q7 (x, 1, R)