Ejercicios - Repaso - Temas 1-5
Ejercicios - Repaso - Temas 1-5
Ejercicios - Repaso - Temas 1-5
Ejercicio 1
Solución ejercicio 1
• 𝐿(𝐺) ⊆ 𝐿
Cualquier palabra generada por esta gramática tendrá que aplicar una vez la regla 𝑆 → 𝑎𝑎𝑇𝑐 y
a continuación una serie, 𝑖 ≥ 0, de veces la regla 𝑇 → 𝑎𝑎𝑎𝑎𝑇𝑐𝑐 posteriormente se puede aplicar
una cierta cantidad, 𝑗 ≥ 0, de veces la regla 𝐹 → 𝐹𝑏 y finalmente una sola vez la regla 𝐹 → 𝑏
que eliminará todas las variables.
Entonces, las palabras generadas por esta gramática tendrán la forma 𝑎4𝑖+2 𝑏 𝑗+1 𝑐 2𝑖+1 . Ahora,
comprobamos si estas palabras pueden ser de L o no. Si son se L, resulta que:
Y también se tiene que cumplir que 2𝑖 + 1 debe ser impar. Eso es cierto ∀𝑖 ≥ 0 que es el número
de veces que se aplica la regla 𝑇 → 𝑎𝑎𝑎𝑎𝑇𝑐𝑐. Por lo tanto, parece aceptable que 2𝑖 + 1 = 𝑚,
por lo tanto, 2(2𝑖 + 1) = 4𝑖 + 2 = 2𝑚.
De esta forma, solo queda comprobar si 𝑗 + 1 puede ser un valor válido para representar el
número de b de la palabra. La restricción es que sea estrictamente un valor mayor que 0, y
seguro que ya lo es, ya que 𝑗 ≥ 0 es el número de veces que se aplica la regla 𝐹 → 𝐹𝑏 y si 𝑗 ≥ 0,
entonces 𝑗 + 1 > 0.
Grado de Ingeniería Informática Teoría de la Computación
Entonces, las palabras generadas por la gramática cumplen con todas las condiciones para ser
de L, y por lo tanto 𝐿(𝐺) ⊆ 𝐿.
• 𝐿 ⊆ 𝐿(𝐺)
Todas las palabras de L son de la forma 𝑎2𝑚 𝑏 𝑛 𝑐 𝑚 siendo n>0, es decir, al menos hay una b, y
siendo m>0 e impar, por lo tanto el número de c será 1, 3, 5, 7,… y el correspondiente número
de a será 2, 6, 10, 14,…
Si n>0 significa que se puede expresar 𝑛 = 𝑗 + 1 > 0 ∀𝑗 ≥ 0. Por otro lado, si m es impar,
entonces se puede expresar como 𝑚 = 2𝑖 + 1 > 0 ∀𝑖 ≥ 0. Entonces:
Que es la forma que tienen las palabras generadas por la gramática. Por lo tanto, 𝐿 ⊆ 𝐿(𝐺).
Ejercicio 2
Proporcionar una gramática para el siguiente lenguaje definido sobre Σ = {𝑎, 𝑏, 𝑐, 𝑑}:
𝐿 = {𝑎𝑚 𝑏 𝑛 𝑐 𝑝 𝑑 𝑞 |𝑚 + 𝑛 = 𝑝 + 𝑞}
Demuestra que la gramática realmente genera L.
Solución ejercicio 2
𝑆 → 𝑎𝑆𝑑 | 𝑆1 |𝑆3
𝑆1 → 𝑎𝑆1 𝑐 | 𝑆2
𝑆2 → 𝑏𝑆2 𝑐 | 𝜆
𝑆3 → 𝑏𝑆3 𝑑 | 𝑆2
Una vez definida la gramática, falta demostrar que 𝐿(𝐺) = 𝐿.
𝑳(𝑮) ⊆ 𝑳
Las palabras generadas por 𝐿(𝐺) son las producidas a partir de la aplicación sucesiva de las
producciones. En primer lugar, se aplica una cierta cantidad, 𝑥1 , de veces la regla 𝑆 → 𝑎𝑆𝑑 i a
continuación o bien se aplica otra cantidad, 𝑥2 , a veces la regla 𝑆1 → 𝑎𝑆1 𝑐 o bien una cantidad
𝑥4 de veces la regla 𝑆3 → 𝑏𝑆3 𝑑, siendo 𝑥1 ≥ 0 i 𝑥4 ≥ 0. Después, tanto en un caso como en
otro, se aplica una serie de veces la regla 𝑆2 → 𝑏𝑆2 𝑐 (𝑥3 i 𝑥5 veces respectivamente) i finalmente
se aplica la regla 𝑆2 → 𝜆, de forma que la palabra queda construida:
Grado de Ingeniería Informática Teoría de la Computación
Por lo tanto, las palabras generadas por 𝐿(𝐺) son de L y en consecuencia 𝐿(𝐺) ⊆ 𝐿.
𝑳 ⊆ 𝑳(𝑮)
Partiendo de una palabra 𝑤 ∈ 𝐿, y que por lo tanto tiene igual número de a y b que de c y d, se
tiene que comprobar si esta palabra puede ser generada a partir de G. Para ello, se tienen que
encontrar una combinación de producciones que genere la palabra.
𝑥1 + 𝑥2 = 𝑚
𝑥3 = 𝑛
𝑥3 + 𝑥2 = 𝑝
𝑥1 = 𝑞
Por lo tanto, como 𝑤 ∈ 𝐿, entonces 𝑚 ≥ 0, 𝑛 ≥ 0, 𝑝 ≥ 0 y 𝑞 ≥ 0:
𝑞 ≥ 0 → 𝑥1 ≥ 0
𝑛 ≥ 0 → 𝑥3 ≥ 0
𝑥2 = 𝑚 − 𝑞
𝑥2 + 𝑥3 = 𝑝 → 𝑥2 = 𝑝 − 𝑛
𝑚 − 𝑞 = 𝑝 − 𝑛 ≥ 0 ⇔ 𝑚 ≥ 𝑞 AND 𝑝 ≥ 𝑛
Por lo tanto, esta manera de construir la palabra es correcta si el número de a es mayor o igual
al número de d y el número de c es mayor que el número de b (los casos se dan a la vez, debido
a que 𝑚 + 𝑛 = 𝑝 + 𝑞 ya que 𝑤 ∈ 𝐿).
𝑚 ≥ 0 → 𝑥1 ≥ 0
𝑝 ≥ 0 → 𝑥5 ≥ 0
𝑥4 = 𝑛 − 𝑝
𝑥4 + 𝑥5 = 𝑞 → 𝑥4 = 𝑞 − 𝑚
𝑛 − 𝑝 = 𝑞 − 𝑚 ≥ 0 → 𝑛 ≥ 𝑝 𝐴𝑁𝐷 𝑞 ≥ 𝑚
Como podemos observar es el caso complementario a la otra opción, por tanto, es la
manera de construir la palabra en el caso en que el número de b sea mayor o igual al de
c y el número de d sea mayor o igual al de a.
Ejercicio 3
Solución ejercicio 3
Ejercicio 4
Dados los lenguajes 𝐿1 = {𝑎𝑛 𝑏𝑏 | 𝑛 ≥ 0} i 𝐿2 = {𝑏𝑎2𝑖 𝑏 2𝑗+1 | 𝑖, 𝑗 ≥ 0}, calcula cual es:
Solución ejercicio 4. En los apartados b y c, hacer uso de los autómatas del apartado a.
𝐿1 𝐿2
Grado de Ingeniería Informática Teoría de la Computación
𝐿1 𝐿2
Ejercicio 5
𝑄 = {𝑞0 , 𝑞1 , 𝑞2 , 𝑞3 } 𝛿 𝑎 𝑏 𝑐
Σ = {𝑎, 𝑏, 𝑐} 𝑞0 𝑞1 ∅ ∅
𝐼 = {𝑞0} 𝑞1 ∅ 𝑞2 𝑞1
𝐹 = {𝑞1 , 𝑞3 } 𝑞2 𝑞2 ∅ 𝑞3
𝑞3 ∅ ∅ 𝑞3
Solución ejercicio 5
Ejercicio 6
Proporciona una gramática que genere expresiones aritméticas con los operadores +, -, * y / de
forma que los operadores * y / tiene preferencia sobre los operadores + y -, y que sea de forma
que haya una asociatividad:
Ejercicio 7
2. En base 16. Los valores en base 16 comienzan por “0x” o bien por “0X”, por ejemplo
“0x10” (vale 16)
3. En base 2, los valores en base 2 comienzan por “0b” o bien por “0B”, por ejemplo “0b10”
(vale 2)
4. En base 8, los valores en base 8 empiezan por 0, por ejemplo “010” (vale 8)
Grado de Ingeniería Informática Teoría de la Computación
5. Una combinación de todas las posibilidades, es decir, que se pueda expresar el nombre
en cualquier base
Ejercicio 8
1. Decir cuáles son los alfabetos de entrada, el conjunto de estados, estado inicial, estados
finales y función de transición.
2. Describe el lenguaje aceptado por este autómata.
Ejercicio 9
Diseña un AFD que acepte el lenguaje 𝐿 ⊆ {0,1}∗ formado por las representaciones binarias de
números naturales múltiples de 3 (incluidos numerales que empiecen por 0).
Ejercicio 10