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 2ndo. Parcial Junio 2007 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. El examen tipo test cuenta hasta 2 puntos sobre la nota total. 1. (a) (0,75 puntos) Construye una gramática en Forma Normal de Chomsky equivalente a la siguiente gramática: G := ({S, A, B}, {a, b}, S, {S ::= AB ; A ::= Aaaa | a ; B ::= b | Ab}) . (b) (0,75 puntos) Aplica el algoritmo visto en clase para decidir si la palabra aaaaab pertenece al lenguaje generado por la gramática anterior. 2. (2,25 puntos) Dados dos números naturales a, b ∈ N, se define la operación módulo como el resto de la división entera de a entre b; se denota como a mod b, y cumple que 0 ≤ (a mod b) < b. Demuestra que el siguiente lenguaje no es independiente de contexto: L := {ap bq cr | p, q ∈ N , r = (p mod q)}. 3. (a) (1,3 puntos) Diseñar un autómata de pila que reconozca el siguiente lenguaje L sobre el alfabeto {0, 1, p}: L = {(0 + 1) x, donde x = ∗ 0, p, si el número de 1 es par si el número de 1 es impar Explica la construcción de dicho autómata. (b) (0,5 puntos) Transformar el autómata de la parte a) en un autómata de pila de otro tipo. Es decir, convertir un AP que reconoce por vaciado de pila en un AP que reconoce por estado final o viceversa. (c) (0,2 puntos) Señalar mediante el uso de descripciones instantáneas la secuencia de movimientos que realiza el autómatas de la parte a) al leer las palabras “0111p”, “0110”, “011” y “0111”. Página 1 de 2 Examen Teorı́a de Autómatas y Lenguajes Formales - 2ndo. Parcial (cont.) 4. (2,25 puntos) Diseña una máquina de Turing que calcule la función “división entera de dos números naturales”, que se define de la siguiente manera: f :N×N→ N f (x, y) = x div 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: 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 resultado 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. Considérense los siguientes ejemplos: •q0 111111 ∗ 11• ⊢∗ •qf 111• •q0 11111 ∗ 11• ⊢∗ •qf 11• •q0 11 ∗ 111• ⊢∗ •qf • •• Página 2 de 2