LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 - BOLETÍN DE EJERCICIOS Víctor J. Díaz Madrigal y José Miguel Cañete Departamento de Lenguajes y Sistemas Informáticos 1. Cadenas La operación reversa aplicada sobre una cadena v, denotada por v R, calcula la cadena inversa de v. Es decir, aquella que contiene los mismos símbolos que v pero en orden inverso. Podemos aprovechar la secuencialidad de los símbolos de una cadena para definir operaciones de manera inductiva. Por ejemplo, dado el alfabeto Σ = {a, b} la operación reversa : Σ Σ se puede definir de la siguiente forma: reversa(λ) = λ reversa(aw) = reversa(w)a reversa(bw) = reversa(w)b Como se ve hay un caso base sobre la cadena vacía, y tantos casos generales como símbolos tenga el alfabeto, que se describen con el patrón cw, donde w es cualquier cadena perteneciente a Σ. Haciendo uso de este esquema, defina las siguientes operaciones sobre cadenas del alfabeto Σ = {a, b}: 1. longitud : Σ Natural, que cuenta el número de símbolos que tiene una cadena. 2. Na : Σ Natural, que cuenta el número de aes que tiene una cadena. 3. vacía : Σ {0, 1}, detecta si una cadena es vacía. 4. final : Σ Σ, que calcula el sufijo de longitud n 1 de una cadena de longitud n. 5. cola : Σ Σ, que calcula el último símbolo de una cadena. 6. inicio : Σ Σ, que calcula el prefijo de longitud n 1 de una cadena de longitud n.
Curso 05/06: Ejercicios de LFA 2 7. palíndroma : Σ {0, 1}, que detecta si una cadena es palíndroma o no (es decir, si se cumple v = v R ). 2. Lenguajes Sean L 1, L 2 y L 3 tres lenguajes arbitrarios descritos sobre un cierto alfabeto Σ. Compruebe si la igualdad L 1 (L 2 L 3 ) = L 1 L 2 L 1 L 3 es o no cierta. Sea el lenguaje L = {λ, a}. Calcular L n en el caso de que n sea 0, 1, 2 y 3. Cuántas cadenas hay en el lenguaje L n para un n arbitrario? Cuáles son las cadenas incluidas en L n para un n arbitrario? Sean los lenguajes L 1 = {λ, ab} y L 2 = {cd}. Dado un n arbitrario cuántas cadenas hay en L n 1L 2?. EJERCICIO 4 Encuentre dos lenguajes L 1 y L 2 descritos sobre {a, b} tales que (L 1 L 2 ) L 1 L 2. EJERCICIO 5 Encuentre dos lenguajes disjuntos L 1 y L 2 descritos sobre {a, b} tales que que (L 1 L 2 ) = L 1 L 2. EJERCICIO 6 Qué debe cumplir un lenguaje L para que sea cierto L + = L?
Curso 05/06: Ejercicios de LFA 3 EJERCICIO 7 Sea L un lenguaje descrito sobre {a, b} cuyas cadenas no acaban en b y no contienen la subcadena bb. Encuentre un lenguaje finito L sobre {a, b} que cumpla que L = L. 3. Expresiones Regulares Dadas las expresiones regulares E 1 = a + b y E 2 = ab + ba + b a + (a b) Encuentre una cadena que encaje con E 2 pero no con E 1 Encuentre una cadena que encaje con E 1 pero no con E 2 Encuentre una cadena que encaje con E 1 y con E 2 Encuentre una cadena que no encaje ni con E 1 ni con E 2 Encuentre la cadena más corta que no se encuentre en el lenguaje descrito por la expresión regular b (abb ) a Se dice que una expresión regular es ambigua si una misma cadena puede ser obtenida de dos formas distintas a partir de ella. Determine cuál de las siguientes expresiones son ambiguas: 1. a bb + b bc 2. a((ab) cb ) +a(abababcb ) a 3. aab (ab) + ab + a bba 4. aaba + aaaba + aabba + a
Curso 05/06: Ejercicios de LFA 4 EJERCICIO 4 Escribe expresiones regulares equivalentes a las siguientes lo más simplificadas que sea posible: 1. + a + b + (a + b) 2. ((a b ) (b a ) ) 3. (a b) + (b a) 4. (a + b) a(a + b) EJERCICIO 5 Escriba expresiones regulares para los siguientes lenguajes: 1. Cadenas del alfabeto {a, b} de longitud par. 2. Cadenas del alfabeto {a, b} de longitud impar. 3. Cadenas del alfabeto {a, b} con un número par de aes. 4. Cadenas del alfabeto {a, b} con un número impar de aes. 5. Cadenas del alfabeto {a, b} que no tengan dos aes consecutivas. 6. Cadenas del alfabeto {a, b} que no tengan ni dos aes consecutivas ni dos bes consecutivas. 7. Cadenas del alfabeto {a, b} que no tengan tres aes consecutivas. 8. Cadenas del alfabeto {a, b, c} que no contengan la subcadena bc. 9. Cadenas del alfabeto {a, b, c, d} que no contengan la subcadena bc. 10. Cadenas del alfabeto {a, b} con no más de tres aes. 11. Cadenas del alfabeto {a, b} con exactamente una sola ocurrencia de la subcadena aaa. 12. Todas las posibles formas de escribir la cadena reservada MODULO con letras mayúsculas o minúsculas.
Curso 05/06: Ejercicios de LFA 5 EJERCICIO 6 Las expresiones regulares clásicas se definen mediante las operaciones unión, concatenación y clausura. Sin embargo, es posible añadir nuevas operaciones como por ejemplo las siguientes: Complementario E es una expresión regular que representa el lenguaje de todas las cadenas que no forman parte del lenguaje descrito por la expresión regular E. Intersección E 1 E 2 es una expresión regular que representa el lenguaje de todas las cadenas que encajan en la expresión regular E 1 y también en la expresión regular E 2 El hecho de incluir estas nuevas operaciones no amplía el poder descriptivo de las expresiones regulares pero en algunas situaciones puede llegar a sustituir la potencia expresiva de otros operadores. Apoyándose en los nuevos operadores introducidos describa, sin usar las operaciones de unión ni de cierre estrella, los siguientes lenguajes sobre el alfabeto {a, b}: 1. Todas las cadenas que se pueden construir con dicho alfabeto. 2. Cadenas que no contengan dos aes consecutivas. 3. Cadenas que no contengan dos aes consecutivas o dos bes consecutivas 4. Gramáticas Incontextulaes Dada la gramática G = ({0, 1, 2}, {S, A}, S, P ) cuyas producciones P son {S 0A 2, A 0S 1}. Muestre si las cadenas 002 y 001 pertenecen al lenguaje de G. Considere la siguiente gramática G = ({0, 1, 2}, {S, A, B}, S, P ) donde P se define como: S 0A 2 A A1 A2 B 0B 0
Curso 05/06: Ejercicios de LFA 6 Justifique de qué forma puede ser simplificada la gramática manteniendo intacto el lenguaje que genera. Describe verbalmente los lenguajes que generan las siguientes gramáticas: 1. S asb ab 2. S as λ 3. S 0S1 0S0 1S1 1S0 0 1 4. S ABC, A aa λ, B bb λ, C cc λ EJERCICIO 4 Comprueba si alguna de las siguientes gramáticas genera un lenguaje palindrómico: 1. S as Sa bs Sb a b 2. S asa bsb λ 3. S ab c, B Sb EJERCICIO 5 Demuestra que las siguientes gramáticas son ambiguas: 1. S asbs as c 2. S SbS SaS c 3. S abs AS c, B ab, A baa aab a 4. S AA, A AAA ba Ab a
Curso 05/06: Ejercicios de LFA 7 EJERCICIO 6 Dada la siguiente gramática que genera el lenguaje de las expresiones regulares sobre el alfabeto {a, b, c, d}: E E E E + E (E) E a b c d lambda vacío 1. Obtenga los árboles de derivación de las expresiones d + λ + b y a y (b + ad). Obtén para cada árbol de derivación su correspondiente secuencia de derivaciones por la izquierda y por la derecha 2. Justifique si la gramática es o no ambigua?. En caso afirmativo, obtenga un gramática equivalente que no lo sea. EJERCICIO 7 Escriba gramáticas incontextuales para los siguientes lenguajes: 1. Cadenas del alfabeto {a, b, c, d} que no contengan la subcadena bc. 2. Cadenas del lenguaje a n b m. 3. Cadenas del lenguaje a n b n. 4. Cadenas del lenguaje a n b m con n m. 5. Cadenas del alfabeto {a, b} con el mismo número de aes y de bes. 6. Cadenas del alfabeto {a, b} con más aes que bes. 7. Cadenas del alfabeto {a, b} con un número par de aes. 8. Cadenas del alfabeto {a, b} que no tengan dos aes consecutivas. 9. Cadenas del alfabeto {a, b} que no tengan dos aes consecutivas ni dos bes consecutivas EJERCICIO 8 Dadas dos gramáticas incontextuales, G 1 y G 2, que comparten el mismo alfabeto de símbolos terminales y cuyos alfabetos de símbolos no terminales son disjuntos, obtenga aquella gramática incontextual G que verifica L(G) = L(G 1 ) L(G 2 )
Curso 05/06: Ejercicios de LFA 8 EJERCICIO 9 Dadas dos gramáticas incontextuales, G 1 y G 2, que comparten el mismo alfabeto de símbolos terminales y cuyos alfabetos de símbolos no terminales son disjuntos, obtenga aquella gramática incontextual G que verifica L(G) = L(G 1 )(G 2 ) 0 Dada un gramática incontextual G obtenga aquella gramática incontextual G que cumple L(G ) = L(G) 5. Autómatas Finitos Considere el siguiente autómata: a b q 0 q 0 q 1 q 1 q 1 q 1 q 2 q 1 q 2 Justifique de qué forma puede ser simplificado el autómata manteniendo intacto el lenguaje que acepta. Demuestre, apoyándose en el concepto de autómata finito determinista y en las leyes de Morgan, que: 1. La complementación de un lenguaje regular es un lenguaje regular. 2. La intersección de dos lenguajes regulares es un lenguaje regular Construya autómatas finitos deterministas para los siguientes lenguajes regulares:
Curso 05/06: Ejercicios de LFA 9 1. Cadenas del alfabeto {a, b} que finalicen con b y que no tengan dos bes consecutivas. 2. Cadenas del alfabeto {a, b} que finalicen con la subcadena ba. 3. Cadenas del alfabeto {a, b} que no tengan dos aes consecutivas. 4. Cadenas del alfabeto {a, b} cuya longitud sea múltiplo de cuatro. 5. Cadenas del alfabeto {a, b} con un número par de aes. 6. Cadenas del alfabeto {a, b} con un número par de aes y un número impar de bes. 7. Cadenas del alfabeto {a, b} en las que cada instancia del símbolo a está precedida y seguida de al menos una instancia del símbolo b. 8. Cadenas del alfabeto {a, b} que tienen como subcadena la cadena abab. EJERCICIO 4 Dadas las parejas de autómatas finitos de la figura, justifique que parejas de autómatas reconocen exactamente el mismo lenguaje. EJERCICIO 5 Escribe un AFD que acepte el lenguaje de todas aquellas cadenas que cumplen simultáneamente las siguientes dos condiciones: Longitud igual a múltiplo de tres. Comenzar con a y terminar con b EJERCICIO 6 Construye un autómata finito no determinista que acepte todas aquellas cadenas del alfabeto {a, b} que contengan la subcadena ababa, o contengan la subcadena bbbb.
Curso 05/06: Ejercicios de LFA 10 EJERCICIO 7 Sea un AF M con un solo estado final que reconoce un determinado lenguaje L. Queremos modificarlo para que acepte el lenguaje La. Plantea un AFND que demuestre que añadiendo simplemente a M una a-transición desde el estado final a él mismo no siempre se consigue esto Cómo se podría modificar el autómata para que se consiga reconocer La? 6. Autómatas de Pila Diseña autómatas de pila no deterministas que acepten los siguientes lenguajes: 1. Todos los palíndromos que se pueden formar con el alfabeto {a, b}. 2. Todos los palíndromos de longitud impar que se pueden formar con el alfabeto {a, b}. 3. Todos los palíndromos de longitud par que se pueden formar con el alfabeto {a, b}. 4. {x Na(x) = Nb(x)} 5. {a N b 2N N 0} 6. {a N b N+M a M N, M 0} Construya un APD para el lenguaje a k b m c n+1 b m+n con k, n 0 y m 1 con la condición de que en la pila sólo podrá almacenarse la marca Z 0 y los símbolos a, b y c. Sean M 1 y M 2 son dos autómatas de pila que aceptan los lenguajes L 1 y L 2, respectivamente. Describe un procedimiento para construir un AP que acepte los lenguajes L 1 L 2, L 1 L 2 y L 1
Curso 05/06: Ejercicios de LFA 11 EJERCICIO 4 Encontrar un método general que obtenga un AP M a partir de otro AP M de forma que se cumpla L V (M ) = L F (M). EJERCICIO 5 Encontrar un método general que obtenga un AP M a partir de otro AP M de forma que se cumpla L F (M ) = L V (M). 7. La jerarquía de Chomsky Determine a qué clase pertenecen dentro de la jerarquía de Chomsky las siguientes gramáticas: S Aa ba a b, A Aa a S aa bb c, A ab, B ba λ S aa bb λ, A ab a, B ba b S Ba a, Sa Bb, Sb λ, B bs BB b S abc aabc, Ab ba, Ac Bbcc, bb Bb, ab aa aaa Considere el lenguaje L = {ab, aab, abab}. Diseñe una gramática para generar L teniendo en cuenta que su tipo debe ser el más restrictivo posible dentro de la jerarquía de Chomsky. Considere la siguiente gramática G = ({a}, {A, C, B, D, E, S}, S, P ) cuya producciones son:
Curso 05/06: Ejercicios de LFA 12 P = S ACaB Ca aac CB DB E ad Da AD AC ae Ea AE λ Qué lenguaje genera y a qué clase pertenece? Cómo procede la gramática para reconocer las cadenas que genera? EJERCICIO 4 Considere la siguiente gramática G = ({a, b, c}, {A, B, S}, S, P ) cuya producciones son: S abb P = B ba abb c bab Bb Qué lenguaje genera y a qué clase pertenece? Cómo procede la gramática para reconocer las cadenas que genera? 8. Máquinas de Turing Estudiar las siguientes máquinas de Turing y determinar qué realizan: M 1 0 1 q 0 q 1 1D q 1 q 0 0D q 2 D q 2 M 2 0 1 q 0 q 0 D q 1 D q 1 q 1 D q 2 D q 2 Diseñe máquinas de Turing que acepten los siguientes lenguajes:
Curso 05/06: Ejercicios de LFA 13 1. 01 + 10 2. 0 n 1 n con n > 0 3. wcw R con w {a, b} 4. wcw con w {0, 1}{0, 1} Demostrar que todo autómata finito M puede ser transformado en una máquina de Turing M tal que L(M) = L(M ). Aplicar la transformación propuesta al siguiente autómata: a b q 0 q 1 q 1 q 1 q 0 q 0