1. UNIVERSIDAD PONTIFICIA COMILLAS
Ingeniería en Informática (ICAI)
Teoría de Autómatas y Lenguajes Formales
3º IINF
Examen Intersemestral – 2º Semestre 23-IV-2010
Nombre: _______________________________________ Titulación: _____
Fila: _______ Columna: __________ Aula: _________
Normas: No desgrapar las hojas: no se calificarán los exámenes que tengan alguna hoja suelta.
Se calificarán con 0 las preguntas que merezcan menos de medio punto y las que contengan un error
de concepto.
Algunas preguntas pueden ser deliberadamente imprecisas: forma parte de la respuesta el que el
alumno sepa los datos que faltan y les asigne valores.
No olvidar explicar los pasos intermedios de los problemas. No se corrigen los problemas sin expli-
cación inteligible.
En aquellas preguntas que tengan varios apartados, la calificación individual de cada uno de ellos
queda a la discreción del profesor.
Ejercicio 1 (1.5 Puntos, 0.3 puntos cada apartado)
Decir si cada una de las siguientes afirmaciones es cierta o falsa justificando la decisión:
a. Una gramática regular siempre puede transformarse en otra equivalente en la Forma Normal de Chomsky
b. Sea G una GIC tal que λ∈L(G). Si G no tiene reglas de redenominación, entonces el axioma ha de derivar
directamente λ.
c. Una GIC limpia no permite derivaciones en λ a no ser que se derive directamente del axioma.
d. Toda GIC sin reglas no generativas ni reglas de redenominación, está bien formada
e. Según las propiedades de cierre de los lenguajes regulares si L1 es no regular y L2 es no regular, su unión
también es no regular.
Solución:
a. CIERTO. Toda gramática regular es una GIC y por tanto existe siempre una equivalente en FNC
b. FALSO. Puede que haya reglas no generativas y suceda que S→AB, A→λ y B→λ
c. FALSO. Una GIC si está limpia no significa que no pueda tener reglas no generativas
d. FALSO. Puede haber símbolos inaccesibles y/o superfluos
e. FALSO. Puede ser regular o no ver caso ejemplo en apuntes.
1
2. Ejercicio 2 (2 Puntos) Dada la gramática G = ({S, A, B}, {0, 1}, S, P) donde P es:
1. S → 01AB
2. A → 1AB
3. A → λ
4. B → BA0
5. B → A
6. B → λ
Responder a las siguientes preguntas:
1. Hallar una gramática equivalente en la Forma Normal de Chomsky. (1 Punto)
2. ¿Es ambigua la gramática G? Razonar la respuesta. (0.5 Puntos)
3. ¿Se puede deducir por reducción que la palabra 0111010 es generada por G? Enumerar los pasos de la
demostración. (0.5 Puntos)
SOLUCIÓN:
Apartado 1
La gramática ya está limpia no hay símbolos superfluos ni símbolos inalcanzables
Pasamos a crear una Gramática bien formada. Quitamos primero las reglas no generativas:
Nλ=={A, B}
S → 01AB
S → 01A
S → 01B
S → 01
A → 1AB
A → 1A
A → 1B
A→1
B → BA0
B → A0
B → B0
B→0
B→A
Quitamos la única Regla de redenominación que tenemos: B→A y queda
S → 01AB
S → 01A
S → 01B
S → 01
A → 1AB
A → 1A
A → 1B
A→1
B → BA0
B → A0
B → B0
B→0
B → 1AB
B → 1A
B → 1B
B→1
La gramática ya está bien formada y ya podemos pasarla a la FNC.
S → 01AB
C→ 0 (FNC)
S → C1AB S→CD (FNC)
D → 1AB D→ EF (FNC)
2
3. E→ 1 (FNC)
F → AB (FNC)
S → 01A
S → C1A S→CG (FNC)
G → 1A G→ EA (FNC)
S → 01B
S → C1B S→CH (FNC)
H → 1B H→ EB (FNC)
S → 01
S→CE (FNC)
A → 1AB
A → E1AB A→EF (FNC)
A → 1A
A→EA (FNC)
A → 1B
A→EB (FNC)
A → 1 (FNC)
B → BA0 B→BI (FNC)
I → A0 I→AC (FNC)
B → A0 B→AC (FNC)
B → B0 B→BC (FNC)
B → 0 (FNC)
B → 1AB B→ EF (FNC)
B → 1A B→ EA (FNC)
B → 1B B→ EB (FNC)
B → 1 (FNC)
Reordenando así queda la gramática equivalente a G en la FNC
S→ CD | CG | CH |CE
A→ EF | EA | EB | 1
B→ BI | AC | BC |0 | EF | EA | EB | 1
C→ 0 (FNC)
D→ EF (FNC)
E→ 1 (FNC)
F → AB (FNC)
G→ EA
H→ EB
I→AC
Apartado 2
Sí es ambigua la gramática G ya que se puede obtener por ejemplo la cadena 011 mediante dos árboles sintácticos
diferentes:
3
4. Árbol de derivación I Árbol de derivación II
para 011 para 011
S S
1 A B
0 1 A B
λ A
λ
1 A B
1 A B
λ λ
λ λ
Apartado 3
0111010
011101λλ0
011101BA0
011101B
011101λB
011101AB
01110A
01110B
01110λB
01110BB
0111λλ0BB
0111BA0BB
0111BBB
0111λBBB
0111ABBB
011ABB
01AB
S
Efectivamente la palabra 0111010 se genera desde G
4
5. Ejercicio 3 (1.5 Puntos)
Aplicando el lema del bombeo indicar razonadamente si el siguiente lenguaje es regular o no:
L = {w | w ∈ {0,1}* y que el número de ceros de w es el doble que el de unos}
Solución:
1) m
2) w =02m1m; |w| = 2m +m ≥ m
3) Para cualquier descomposición de w se tiene que
x =0m-p-q ; y = 0p ; z = 0q+m1m
p≥1
m-p-q+p ≤ m; m-q ≤ m ; 0 ≤ q ≤ m-p
wi = 0m-p-q(0p)i 0q+m1m
para i =0 => w0 = 0m-p-q0q+m1m
número de ceros = m-p-q+q+m = 2m-p
número de unos = m
dado que p ≥1 el número de ceros no es el doble que de unos y por tanto el lenguaje no es regular
5
6. Ejercicio 4 (1.5 Puntos)
Construir una GIC que genere el lenguaje:
L = {w | w ∈ {0,1}* y |w| = 2(2n+1) , n ≥ 0, de tal forma que en la posición 1 (carácter más a la izquierda de w) y
en la posición 2n+2 de w tenga siempre un cero }
Solución
Todas las palabras tienen longitud par y se construyen como concatenación de dos subpalabras de longi-
tud impar |w| = 2(2n+1)
La posición 1 es la posición más a la izquierda de la primera subpalabra impar
La posición 2n+2 es la posición más a la izquierda de la segunda subpalabra impar
Luego w se construye poniendo un cero a la izquierda concatenado con cadenas de longitud impar cuyo
centro es un cero.
La GIC será la siguiente:
G = ({S, A}, {0, 1}, S, P) donde P es
S → 0A Se concatenan el cero con una palabra de longitud impar cuyo centro es 0
A → BAB Sigue cualquier combinación pareja de ceros y unos
B → 00
B → 01
B → 10
B → 11
A→0 Cierre
6
7. Ejercicio 5 (1.5 Puntos)
Construir una GIC que genere el lenguaje L = {0i1j2k | i, j, k ≥ 0 y i ≤ k}.
Explicar la razón de cada una de las reglas propuestas.
Solución
Las palabras del lenguaje pueden tener solo 1, solo 2, puede ser λ, puede tener 0 en igual o menor número
de 2 y dentro puede haber o no 1 en el número que se desee
G = ({S, A,B}, {0, 1,2}, S, P) donde P es
S → S2 Para generar el número de 2 que se desee a la derecha además de parejas de 0 y 2
S→A Para poder cambiar la estructura de la cadena desde la anterior regla o desde S
A → 0A2 Por cada 0 de 0i se genera un 2 de 2k. Así como mucho el número de 0 es igual al de 2
A→B Permitirá crear 1 en medio de la palabra o bien , desde S
B → B1 Permite generar los 1 que se deseen tanto en el centro de la palabra como aisladamente
B→λ Cierre de palabra
7
8. Ejercicio 6 (2 Puntos)
a. Dada la gramática G = ({S, A, B}, {a,b,c}, S, P) donde P es:
1. S → aSc
2. S → Sc
3. S → A
4. A → bAc
5. A → bc
¿Qué lenguaje genera? Razonar y expresar dicho lenguaje con exactitud y simplicidad (1 Punto).
b. Dada la gramática G = ({S, A, B}, {a,b}, S, P) donde P es:
S→A|B
A → aAb | aA | a
B → aBb | Bb| b
¿Qué lenguaje genera? Razonar y expresar dicho lenguaje con exactitud y simplicidad (1 Punto).
Solución:
1. L = {anbmck | n ≥ 0, m ≥ 1, k ≥ n+m}
EXPLICACIÓN:
S → aSc permite poner el mismo número de aes que ces y S → Sc permite poner más ces que aes
S → A permite poner una estructura diferente desde el axioma o meterla en el interior de la anterior de aes y
ces
A → bAc permite poner el mismo número de bes que de ces de forma que nunca el número de bes supere al de
ces y por tanto la suma de aes y bes nunca supera al número de ces
A → bc Es la regla de cierre y por tanto también la mínima cadena, de ahí que b≥1
2. L = {anbm | n ≠ m, n, m ≥ 0} = {anbm | n < m, n, m ≥ 0} ∪ {anbm | n > m, n, m ≥ 0}
EXPLICACIÓN:
S → A | B indica que el lenguaje estará formado por la unión de dos tipos de palabras
A → aAb | aA | a Estas reglas hacen que se creen palabras de sólo aes o bien de aes y bes pero con el número
de aes mayor que el de bes
B → aBb | Bb | b Estas reglas hacen que se creen palabras de sólo bes o bien de aes y bes pero con el número
de bes mayor que el de aes
8