1 SSL Guia de Ejercicios INTRODUCCIÓN A LENGUAJES FORMALES 1. Dado el alfabeto = {a, b, c}, escriba las palabras del lenguaje L = {x / x }. 2. Cuál es la cardinalidad del lenguaje L = {, a, aa, aaa}? 3. Describa, mediante una frase en castellano, el lenguaje del Ejercicio 2. 4. Escriba todas las palabras del lenguaje L = {a 2n+1 / 1 n 4}. 5. Describa, mediante una frase en castellano, el lenguaje del Ejercicio (4). 6. Sea el lenguaje L = {, a, ba, abc}. Cuál es el mínimo alfabeto sobre el que se puede construir este lenguaje? 7. Sea el lenguaje L = {0, 00, 01, 010}. Escriba una concatenación de dos palabras que produce otra palabra de este lenguaje. 8. Sea el lenguaje anterior. Escriba una concatenación de dos palabras que produce una cadena que no es palabra del lenguaje. 9. Sea el lenguaje del Ejercicio (7). Escriba tres sublenguajes de L, de distinta cardinalidad. 10. Sea el lenguaje L = {(ab) 2n / 0 n 100}. Escriba las tres palabras de menor longitud de este lenguaje. 11. Sea el lenguaje del Ejercicio (10). Es cerrado bajo concatenación? 12. Describa, mediante una frase en castellano, el lenguaje del Ejercicio (10). 13. Describa, mediante una frase en castellano, el lenguaje L = {a n b n / 1 n 3000}. 14. Sea = {a, b} y sea el lenguaje *. Cuántas palabras de longitud 3 tiene este lenguaje? Y cuántas de longitud 4? 15. Sea el lenguaje infinito L = {ab n / n 1}. Escriba las tres palabras de menor longitud. 16. Sea el lenguaje infinito L = {(ab) n / n 1}. Escriba las tres palabras de menor longitud. 17. Sea el alfabeto = {0, 1}. Describa, por comprensión, un lenguaje infinito L sobre (que no sea *). 18. Describa, mediante una frase en castellano, el lenguaje definido en el ejercicio anterior. GRAMÁTICAS FORMALES Y JERARQUÍA DE CHOMSKY 1. Sea el LF L = {aa, ab, aba}. Describa la Definición Formal de dos GFs que generen este LF: una debe ser una 2. GR y la otra una GIC (no GR). 3. Sea el LF infinito L = {a n bc n / n 1}. Describa la Definición Formal de una GIC que genere este LF. 4. Dada la GIC construida en el punto anterior, utilice DERIVACIÓN para determinar si las siguierntes cadenas 5. son o no palabras del LF generado: a) aaabccc b) aabbcc c) aaabcc d) aabccc e) aaaccc LENGUAJES REGULARES E INTRODUCCIÓN A BNF 1. Escriba reglas en BNF que definan la sintaxis del siguiente lenguaje: Todos los números binarios que comienzan con una cantidad impar de 1s y terminan con un 0.
2 2. Sea un LP cuyos identificadores deben comenzar con dos letras en el rango A..F, y que a continuación pueden tener (no obligatoriamente) dígitos decimales en el rango 1..4. Escriba reglas en BNF que describan este LR. 3. Sea un LP cuyos números reales son sin signo y están formados por uno o más dígitos (parte entera), un punto y uno o más dígitos (parte fraccionaria). Escriba reglas en BNF que describan este LR. LAS EXPRESIONES REGULARES (ERs) 1. Escriba una ER que represente al LR Todas las palabras que comienzan con una a, seguida de dos o tres bes. 2. Escriba una ER que represente al LR Todas las palabras de longitud 5 que comienzan con una a y terminan con una b. 3. Escriba una ER que represente al LR La palabra vacía y todas las palabras de longitud 5 que comienzan con aa o con bb, y que terminan con aa o con bb. 4. Compruebe que las ERs 1(0+1)(0+1)1 y 1001+1011+1101+1111 son equivalentes. 5. Describa, mediante una frase, al LR del ejercicio anterior. 6. Escriba, por enumeración, el LR +(a+b) 3. 7. Sea la ER 101101+1001101+1001. Obtenga una ER más compacta, que sea equivalente a esta expresión. Ayuda: utilice las factorizaciones que crea conveniente. 8. Describa, mediante una frase, al lenguaje representado por la ER ab 10 (a + b) 6. 9. Explique por qué las ERs a* y a + no son equivalentes. 10. Verifique si el lenguaje asociado a la expresión a + es un subconjunto del lenguaje asociado a la ER a*. 11. Describa, mediante una frase, al LR representado por la ER a + b + y escriba sus tres palabras de menor longitud. 12. Describa, mediante una frase, al LR representado por la ER a + a y escriba sus tres palabras de menor longitud. 13. Compruebe que la ER a* + b* representa un LR que es un subconjunto del LR denotado por la ER a*b*. 14. Escriba una ER que represente a Todas las palabras sobre el alfabeto {0,1} que tienen exactamente tres 0s. 15. Compruebe que la ER a* + b* no denota el mismo lenguaje que (a + b)*. 16. Explique la diferencia que existe entre a*b*, (ab*)* y (a*b)*. Escriba las palabras comunes a los tres LRs. 17. Describa, mediante una frase, al lenguaje denotado por la ER ab* + (ba)*. 18. Escriba una ER que represente al lenguaje Todas las palabras sobre el alfabeto {0, 1} que comienzan con un 1 y terminan con un 0. 19. Escriba una ER que represente al lenguaje Todos los números binarios que comienzan con una cantidad impar de 1s o que solo tienen 1s. 20. Escriba una ER que represente al lenguaje Todas las palabras sobre el alfabeto {a, b, c} que comienzan con aa y terminan con cc, o que comienzan con un número impar de bes, o que solo tienen ces. 21. Escriba una ER que represente al lenguaje Todas las palabras sobre el alfabeto {a, b, c} que terminan con doble letra, o que comienzan con a y tienen un número impar de aes en total. 22. Escriba una ER que denote el lenguaje Todos los números binarios que terminan con doble 1, o que terminan con un triple 0, o que comienzan con una cantidad de 1s que es múltiplo de cuatro y terminan con 010. 23. Escriba una Definición Regular que represente al lenguaje de comentarios en C. 24. Escriba una Definición Regular que represente al lenguaje de los números reales en C (reales en punto fijo y reales en punto flotante, sin signo). 25. Escriba una Definición Regular que represente al lenguaje Todas las palabras sobre {a, b} que terminan con abb, o que comienzan con ba y terminan con bba.
3 INTRODUCCIÓN AL DISEÑO DE AUTÓMATAS FINITOS 1. Dibuje el Diagrama de Transiciones de un Autómata Finito que reconoce al lenguaje a*bb. 2. Dibuje el Diagrama de Transiciones de un Autómata Finito que reconoce al lenguaje bba*. 3. Dibuje el Diagrama de Transiciones de un Autómata Finito que reconoce al lenguaje a (a + b)*. 4. Dibuje el Diagrama de Transiciones de un Autómata Finito que reconoce al lenguaje a(ab)*. AFDs Y AFNs 1. Sea el lenguaje Todos los números binarios que contienen el grupo 00 por lo menos una vez. Dibuje el DT de un AFN que lo reconozca. 2. Dscriba la descripción formal del AFN diseñado en el ejercicio anterior. 3. Sea el lenguaje Todas las palabras sobre el alfabeto {a, b, c} que terminan con b. Dibuje el DT de un AFN que lo reconozca. 4. Escriba la descripción formal del AFN diseñado en el ejercicio anterior. 5. Describa formalmente los AFDs diseñados en los ejemplos del capítulo 4. 6. Dibuje el diagrama de transiciones de un AFN que acepte el lenguaje 101* + 1*00. 7. Escriba la descripción formal del AFN diseñado en el ejercicio anterior. 8. Describa formalmente a los AFDs de un solo estado sobre el alfabeto {a, b}, completos y no completos. 9. Describa formalmente a los AFDs de un solo estado sobre el alfabeto {a, b, c}, completos y no completos. 10. Describa formalmente a los AFDs de dos estados sobre el alfabeto {a, b}, completos y no completos. 11. Elija tres AFNs de dos estados de cada uno, sobre el alfabeto {a, b}, y descríbalos formalmente. 12. Encuentre un Lenguaje Regular que no contenga la palabra vacía, que no pueda ser aceptado por un AFD con un solo estado final. Escriba la Expresión Regular del lenguaje hallado. DE LA EXPRESIÓN REGULAR AL AUTÓMATA FINITO 1. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular a +. 2. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular (a + ba) +. 3. Obtenga un autómata por Semi Thompson que reconozca la expresión (a + ba) +. 4. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular (a + ba) +. 5. Obtenga un autómata por Semi Thompson que reconozca la expresión (a + ba) +. 6. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular a*ba + aba*. 7. Obtenga un autómata por Semi Thompson que reconozca la expresión a*ba + aba*. 8. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular (a + b + ab)*. 9. Obtenga un autómata por Semi Thompson que reconozca la expresión (a + b + ab)*. 10. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular (a + b)* aa (a + b)*. 11. Obtenga un autómata por Semi Thompson que reconozca la expresión (a + b)* aa (a + b)*. 12. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular (aa)* (a + b)*. 13. Obtenga un autómata por Semi Thompson que reconozca la expresión (aa)* (a + b)*. 14. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular (a + b) + (bb) +. 15. Obtenga un autómata por Semi Thompson que reconozca la expresión (a + b) + (bb) +. 16. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular (a* + b*)* a. 17. Obtenga un autómata por Semi Thompson que reconozca la expresión (a* + b*)* a. 18. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular a*b(c*a)*.
4 19. Obtenga un autómata por Semi Thompson que reconozca la expresión a*b(c*a)*. 20. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular cb* + a +. 21. Obtenga un autómata por Semi Thompson que reconozca la expresión cb* + a +. 22. Obtenga, por Thompson, el AFN que reconoce a la Expresión Regular a + ac (a + b)* + c (a + b + c)*. 23. Obtenga un autómata por Semi Thompson que reconozca a + ac (a + b)* + c (a + b + c)*. DEL AFN AL AFD 1. Diseñe un AFN que tenga 4 transiciones-, 2 ciclos y 3 estados finales; luego, aplique la Construcción de Subconjuntos para hallar un AFD equivalente. 2. Sea el AFN con las siguiente TTs: estado a b 0- {1,3} {1} {1,2} 1 - {1,2} {1} 2 - {1,3} {1} 3+ {3} {1,2,3} - Construya el AFD equivalente. 3. Sea el AFN del ejercicio anterior, pero sin las transiciones-. Construya el AFD equivalente. OBTENCIÓN DEL AFD MÍNIMO 4. Dibuje el DT y describa formalmente al AFD mínimo para cada uno de los siguientes lenguajes: (i) (a+b+c)*acb*; (ii) a*ba* + a*b*aa; (iii) (a+b)*a(a+b). 5. Compruebe que las siguientes Expresiones Regulares son equivalentes: (i) (a*+b*)*; (ii) (( +a)b*)*. 6. Verifique si las siguientes expresiones son equivalentes: (i) a(b+ab*a)*(ab*+ ); (ii) a(a+b)*. 7. Obtenga el DT y la descripción formal del AFD mínimo para el autómata que tiene estado inicial A, estado final D, y las siguientes transiciones: A => 0 => B y A => 1 => A, B => 0 => A y B => 1 => C, C => 0 => D y C => 1 => B, D => 0 => D y D => 1 => A, E => 0 => D y E => 1 => F, F => 0 => G y F => 1 => E, G => 0 => F y G => 1 => G, H => 0 => G y H => 1 => D. 8. Cuáles de los siguientes AFDs son equivalentes? x a b x a b x a b x a b x a b 0-1 0 0-1 5 0-5 1 0-2 1 0-1 2 1+ 2 3 1 2 4 1 4 2 1 2 1 1 1 4 2+ 1 4 2 3 4 2 3 2 2+ 3 4 2+ 3 1 3 4 5 3 2 4 3+ 4 2 3+ 2 4 3+ 2 1 4 3 5 4 5 3 4+ 5 1 4 4 1 4 2 1 9. 5 1 5 5+ 5 1 5+ 3 0 5 5 0 10. Sea el AFN con la siguiente Tabla de Transiciones: x a b c 0- {1} {1} - - 1 {2,3} - {3} {4,5} 2 {2} - {4} {5} 3+ - - {1,2} {5} 4 {4,5} {0,2} - - 5+ - {3,4} - - Obtenga el AFD mínimo.
5 11. Determine, por medio de los respectivos AFDs mínimos, si los siguientes pares de ERs son equivalentes: (i) a(ba)* + c(a* + b)* y c(a*b)*a* + (ab)*a (ii) (a*bbb)*a* y a*(bbba*)* (iii) ((a + bb)*aa)* y + (a + bb)*aa (iv) a(aa)*( + a)b + b y a*b. DEL AUTÓMATA FINITO A LA EXPRESIÓN REGULAR 1. Si se parte de un AFN: el método sufre alguna modificación? En caso afirmativo, explíquelo. 2. Sea el lenguaje: Todas las palabras sobre {a, b} que contienen, por lo menos, tres aes consecutivas, o que terminan con b. Obtenga una ER que denote este lenguaje, partiendo de un autómata que lo reconozca. La ambigüedad del lenguaje natural posibilita que la frase que describe al lenguaje pueda ser interpretada de varias formas; si es así, obtenga la ER solicitada para cada lenguaje que se le ocurra. 3. Sea un AF de cinco estados, con estas características: el estado inicial es 0; los estados finales son 1 y 2; las transiciones son 0 => a => 1, 0 => b => 1, 0 => b => 0, 1 => a => 2, 2 => a => 3, 2 => b => 2, 3 => b => 3, 4 => a => 1. Obtenga una ER que represente al lenguaje reconocido por este autómata. Ayuda: no se olvide de la depuración. 4. Sea el lenguaje: Todos los números binarios que terminan con 11 y cuya cantidad total de 1s es múltiplo de cuatro. Obtenga una ER para este lenguaje. 5. Sea el AFN con la siguiente TT: x a b 0- {0,1} - - 1 - - {2,4} 2 - {3} - 3+ {3} - - 4 {3} - - Obtenga la ER del lenguaje reconocido. 6. Sea la ER a*bc + a(b + c)*c. Obtenga el AFD mínimo y, a partir de él, la ER del lenguaje que reconoce. Compare las dos ERs. OPERACIONES CON AUTÓMATAS FINITOS 1. Describa formalmente al AFD que reconoce al lenguaje Todas las palabras sobre {a, b} que no contienen la subcadena bab. A partir de este AFD, halle una ER que denota al lenguaje definido. 2. Dados los siguientes pares de ERs, obtenga el AFD intersección para cada caso y, a partir de él, una ER del LR intersección. Además, describa cada lenguaje mediante una frase. a. (a+b)*a y b(a+b)*; b. (a+b)*a y (a+b)*aa(a+b)* c. (a+b)*a y (a+b)*b d. (b+ab)*(a+ ) y (a+b)*aa(a+b)* e. (ab*)* y b(a+b)* 3. Sea el lenguaje L 1 : Todas las palabras sobre {a, b} de longitud impar y sea el lenguaje L 2 : Todas las palabras sobre {a, b} con una cantidad impar de aes en total. Obtenga el AFD intersección y la ER del lenguaje intersección. Describa, mediante una frase, el LR hallado. 4. Sea el lenguaje L 1 : Todas las palabras sobre {a, b} de longitud par y sea el lenguaje L 2 : Todas las palabras sobre {a, b} con una cantidad impar de bes en total. Obtenga el AFD intersección y la Expresión Regular del lenguaje intersección. Describa, mediante una frase, al lenguaje hallado.
6 5. Para los lenguajes intersección hallados en los dos ejercicios anteriores, obtenga los AFDs que reconocen a los respectivos lenguajes complemento. Para cada uno de ellos, deduzca una Expresión Regular a partir del AFD y descríbalo mediante una frase. 6. Sea el AFD M 1 dado por la siguiente Tabla de Transiciones: x a b 0-1 - 1+ - 0 y sea el AFD M 2 descripto mediante la siguiente Tabla de Transiciones: x a b 2-3 - 3 4 2 4+ - - Obtenga los siguientes AFDs, y, a partir de ellos, una Expresión Regular que describa al correspondiente lenguaje: a. M 1 M 2 ; (b) M 1 M 2 ; (c) M 2 M 1 ; (d) M 1 *; (e) M 2 *; (f) M + 1 ; (g) M + 2 ; (h) M c 1 ; (i) M c 2 ; (j) M 1 M 2. 7. Sea el lenguaje Todas las palabras sobre {a, b, c} que: (i) comienzan con a y terminan con c, o (ii) no tienen dos o más bs consecutivas y comienzan con un número impar de cs. Diseñe el AFD mínimo que reconoce a este lenguaje y halle, a partir de él, una Expresión Regular para el lenguaje descripto. 8. Sea el lenguaje Todas las palabras sobre {a, b, c} que no contienen triple aes y no contienen la subcadena abc. Diseñe el AFD mínimo que reconoce a este lenguaje y halle, a partir de él, una Expresión Regular para el lenguaje descripto. VALIDACIÓN DE CADENAS En cada caso, escriba un programa ANSI C que pruebe la implementación realizada. 1. Diseñe e implemente un AFD que convierta cadenas que representan números binarios, a su valor en base 10, sobre el alfabeto ASCII (alfabeto completo). 2. Diseñe e implemente un AFD que convierta cadenas que representan números en hexadecimal, a su valor en base 10, sobre el alfabeto ASCII (alfabeto completo). Implemente el Algoritmo para los ejercicios anteriores. ANALIZADORES LÉXICOS Supongamos un lenguaje de programación muy básico e inefectivo, constituído solo por identificadores, el operador de asignación (=), el carácter punto y coma (;) que actúa como terminador de una sentencia, y espacios que actúan como separadores. 1. Incremente el Lenguaje de Programación descripto con las palabras reservadas if y while, los caracteres de puntuación paréntesis izquierdo ( ( ) y paréntesis derecho ( ) ), y los operadores mayor ( >) y menor o igual (<=). Diseñe e implemente el Analizador Léxico que reconoce los lexemas para este nuevo LP. 2. Agregue el reconocimiento de números enteros con signo.