Está en la página 1de 31

GRAMÁTICAS Y L.L.C.

SESIÓN PL9

Autómatas y Matemáticas Discretas


2022/2023
Ejercicios
1. Determinar la gramática que genera el lenguaje reconocido
por el siguiente AF:
1 0 1
0 1 1 0
A B C D E
0 0

1
Ejercicios
1. Determinar la gramática que genera el lenguaje reconocido
por el siguiente AF:
1 0 1
0 1 1 0
A B C D E
0 0

1
Solución:
G= ({A,B,C,D,E}, {0,1}, A, P) siendo
P ={ A à 0B | 1A
B à 0B | 1C
C à 0B | 1D
D à 0E | 1A | λ
E à 0D | 1C | λ }
Ejercicios
2. Construir el autómata que reconoce el lenguaje generado
por la siguiente gramática
G=(V, T, P, S) P: { S → 1B | 1C
V = {S, A, B, C} A → 1B | 1C
T = {0, 1} B → 0A
C→λ }
Ejercicios
2. Construir el autómata que reconoce el lenguaje generado
por la siguiente gramática
G=(V, T, P, S) P: { S → 1B | 1C
V = {S, A, B, C} A → 1B | 1C
T = {0, 1} B → 0A
C→λ }
Solución:
Ejercicios
3. Dada la expresión ac*(a+b)(ab+bb)*, indica cuál sería una
gramática regular equivalente:
a) G=({A,B,C,D,E}, {a,b,c}, P, A) b) G=({A,B,C,D,E,F}, {a,b,c}, P, A)
P: { A → aB P: { A → aB
B → cB | aC | bC B → cB | aC | bC
C → aD | bE | λ C → aD | bE
D → bC D → bF
E → bC } E → bF
F→λ }

c) G=({A,B,C,D}, {a,b,c}, P, A) d) No se puede obtener una GR


P: { A → aCDB porque ac*(a+b)(ab+bb)* no es una
B → abB | bbB | λ ER
C → cC | λ
D→a|b }
Ejercicios
3. Solución:
a) Verdadero.
b) Falso, esa es una gramática regular, pero genera un
lenguaje con una expresión regular ligeramente
distinta, en particular: ac*(a+b)(ab+bb)
c) Falso, aunque esa gramática es efectivamente
equivalente a la expresión regular, eso no es una
gramática regular.
d) Falso, sí que es una expresión regular.
Ejercicios
4. Sea la gramática G = (V, T, P, S) dada por:

V = {S, A, B} P: { S → AzB
T = {x, y, z} A → xA | λ
B → By | y }

a) ¿Qué lenguaje genera?


b) ¿De qué tipo son la gramática y el lenguaje generado por ella?
c) Dar una derivación más a la derecha, una derivación más a la
izquierda y un árbol de derivación para la palabra ‘xzyy’
Ejercicios
4. Sea la gramática G = (V, T, P, S) dada por:

V = {S, A, B} P: { S → AzB
T = {x, y, z} A → xA | λ
B → By | y }

a) ¿Qué lenguaje genera?

El símbolo A generaría: xi , i ≥ 0
El símbolo B generaría: yj , j ≥ 1
El símbolo S generaría: xi z yj, i ≥ 0, j ≥ 1

Por tanto, L(G) = {xi z yj, i ≥ 0, j ≥ 1} = L(x* z y y*)


Ejercicios
4. Sea la gramática G = (V, T, P, S) dada por:

V = {S, A, B} P: { S → AzB
T = {x, y, z} A → xA | λ
B → By | y }

b) ¿De qué tipo son la gramática y el lenguaje generado por ella?

G es una gramática libre de contexto (no es regular)

L(G) es un lenguaje regular (ya que podemos expresarlo


mediante la expresión regular x* z y y*)
Ejercicios
4. Sea la gramática G = (V, T, P, S) dada por:

V = {S, A, B} P: { S → AzB
T = {x, y, z} A → xA | λ
B → By | y }

c) Dar una derivación más a la derecha, una derivación más a la


izquierda y un árbol de derivación para la palabra ‘xzyy’
S

Más dcha.: S⇒AzB ⇒AzBy⇒Azyy⇒xAzyy⇒xzyy A z B

Más izq.: S⇒AzB⇒xAzB⇒xzB⇒xzBy⇒xzyy x A B y

λ y
Ejercicios
5. Sea la gramática G = (V, T, P, S) dada por:

V = {S, X, Y, Z} P: { S → XY
T = {a, b, 0, 1} X → 0X1 | λ
Y → Za | aY
Z → bZ | λ }

a) Determina el lenguaje L(G).


b) ¿De qué tipo son la gramática y el lenguaje generado por ella?
c) Dar una derivación más a la derecha, una derivación más a la
izquierda y un árbol de derivación para la palabra ’01abba’
Ejercicios
5. Sea la gramática G = (V, T, P, S) dada por:

V = {S, X, Y, Z} P: { S → XY
T = {a, b, 0, 1} X → 0X1 | λ
Y → Za | aY
Z → bZ | λ }

a) Determina el lenguaje L(G).

L(G) = {0i 1i aj bk a / i,j,k ≥ 0 }


X Z
Y
S
(nótese que no es posible representar este
lenguaje mediante una expresión regular)
Ejercicios
5. Sea la gramática G = (V, T, P, S) dada por:

V = {S, X, Y, Z} P: { S → XY
T = {a, b, 0, 1} X → 0X1 | λ
Y → Za | aY
Z → bZ | λ }

b) ¿De qué tipo son la gramática y el lenguaje generado por ella?

G es una gramática libre de contexto (no es regular)


L(G) es un lenguaje libre de contexto (no es regular)
Ejercicios
5. Sea la gramática G = (V, T, P, S) dada por:

V = {S, X, Y, Z} P: { S → XY
T = {a, b, 0, 1} X → 0X1 | λ
Y → Za | aY
Z → bZ | λ } S

X Y
c) Dar una derivación más a la derecha, una derivación
más a la izquierda y un árbol de derivación para la
0 X 1 a Y
palabra ’01abba’
Más dcha.: S ⇒ XY ⇒ XaY ⇒ XaZa ⇒ XabZa ⇒ λ Z a
⇒ XabbZa ⇒ Xabba ⇒ 0X1abba ⇒ 01abba
b Z
Más izq.: S ⇒ XY ⇒ 0X1Y ⇒ 01Y ⇒ 01aY ⇒ b Z
⇒ 01aZa ⇒ 01abZa ⇒ 01abbZa ⇒ 01abba
λ
Ejercicios
6. Dada la siguiente gramática:
G = (V, T, P, S) P: { S → XY
V = {S, X, Y} X → aXb | Yb
T = {a, b} Y → aY | Λ }

a) Determina el lenguaje generado por G.


b) Dar una derivación más a la derecha, una derivación
más a la izquierda y un árbol de derivación para la
palabra ‘aabba’
Ejercicios
6. Dada la siguiente gramática:
G = (V, T, P, S) P: { S → XY
V = {S, X, Y} X → aXb | Yb
T = {a, b} Y → aY | Λ }
a) Determina el lenguaje generado por G. S
b) Dar una derivación más a la derecha, una derivación
más a la izquierda y un árbol de derivación para la X Y
palabra ‘aabba’
Solución: a X b a Y
a) L(G) = { ai aj b bi ak | i,j,k ³ 0 } b
Y λ
b) Más dcha.: S ⇒ XY ⇒ XaY ⇒ Xa ⇒ aXba ⇒
⇒ aYbba ⇒ aaYbba ⇒ aabba a Y
Más izq.: S ⇒ XY ⇒ aXbY ⇒ aYbbY ⇒ aaYbbY ⇒
⇒ aabbY ⇒ aabbaY ⇒ aabba λ
Ejercicios
7. Considerar G = ({S,A}, {0,1}, P, S) donde P es:
P: { S ® A1A
A ® 0 | A1A }

Determinar si la gramática es ambigua.


Ejercicios
7. Considerar G = ({S,A}, {0,1}, P, S) donde P es:
P: { S ® A1A
A ® 0 | A1A }

Determinar si la gramática es ambigua.


Solución: Es fácil ver que, por ejemplo, la palabra 01010 se puede
generar mediante dos árboles de derivación distintos, y por lo tanto la
gramática es ambigua.
S S

A 1 A A 1 A

0 A 1 A A 1 A 0

0 0 0 0
Ejercicios
8. Construir una gramática que genere el lenguaje L y dar una
derivación más a la izquierda para la palabra ‘baab’.

𝐿 = {𝑏 G 𝑎 𝑏 I 𝑎J 𝑏 J ∶ 𝑚, 𝑛 ≥ 0, 𝑡 ≥ 1}
Ejercicios
8. Construir una gramática que genere el lenguaje L y dar una
derivación más a la izquierda para la palabra ‘baab’.

𝐿 = {𝑏 G 𝑎 𝑏 I 𝑎J 𝑏 J ∶ 𝑚, 𝑛 ≥ 0, 𝑡 ≥ 1}
A A B

Una posible solución: G= ({S,A,B}, {a,b}, S, P) siendo

P = { S ® AaAB
A ® bA | λ
S ⇒ AaAB ⇒ bAaAB ⇒ baAB ⇒ baB ⇒ baab
B ® aBb | ab }
Ejercicios
8. Construir una gramática que genere el lenguaje L y dar una
derivación más a la izquierda para la palabra ‘baab’.

𝐿 = {𝑏 G 𝑎 𝑏 I 𝑎J 𝑏 J ∶ 𝑚, 𝑛 ≥ 0, 𝑡 ≥ 1}

Una posible solución: G= ({S,A,B}, {a,b}, S, P) siendo


P = { S ® AaAB
A ® bA | λ S ⇒ AaAB ⇒ bAaAB ⇒ baAB ⇒ baB ⇒ baab
B ® aBb | ab }

Otra posible solución: G= ({S,A,B}, {a,b}, S, P) siendo


P = { S ® bS | aA
A ® bA | B S ⇒ bS ⇒ baA ⇒ baB ⇒ baab
B ® aBb | ab }
Ejercicios
9. Construir una gramática que genere el lenguaje L y dar una
derivación más a la derecha y un árbol de derivación para
las palabras ‘abccc’ y ‘bbcccc’.
𝐿 = {𝑎P 𝑏 Q 𝑐 PSTQ ∶ 𝑖, 𝑗 ≥ 0}
Ejercicios
9. Construir una gramática que genere el lenguaje L y dar una
derivación más a la derecha y un árbol de derivación para
las palabras ‘abccc’ y ‘bbcccc’.
𝐿 = {𝑎P 𝑏 Q 𝑐 PSTQ ∶ 𝑖, 𝑗 ≥ 0}
Solución:
Nótese que el lenguaje también se podría escribir como:
𝐿 = {𝑎P 𝑏 Q 𝑐 TQ 𝑐 P ∶ 𝑖, 𝑗 ≥ 0}
Y nótese que los terminales con el mismo superíndice DEBEN
generarse con la misma producción. Una posible solución sería:
G= ({S,A}, {a,b,c}, S, P) siendo S ⇒ aSc ⇒ aAc ⇒ abAccc ⇒ abccc
P = { S à aSc | A S ⇒ A ⇒ bAcc ⇒ bbAcccc ⇒ bbcccc
A à bAcc | λ }
Los árboles de derivación se construyen
análogamente a los ejercicios anteriores
Ejercicios
10. Construir una gramática que genere el lenguaje L y dar una
derivación más a la derecha y un árbol de derivación para
las palabras ‘acbacca’ y ‘cbbacccca’.
𝐿 = {𝑎P 𝑐 𝑏 Q 𝑎 𝑐 TQ 𝑎 ∶ 𝑖 ≥ 0, 𝑗 ≥ 1}
Ejercicios
10. Construir una gramática que genere el lenguaje L y dar una
derivación más a la derecha y un árbol de derivación para
las palabras ‘acbacca’ y ‘cbbacccca’.
𝐿 = {𝑎P 𝑐 𝑏 Q 𝑎 𝑐 TQ 𝑎 ∶ 𝑖 ≥ 0, 𝑗 ≥ 1}

Una posible solución: G= ({S,A}, {a,b,c}, S, P) siendo


P = { S à aS | cAa
A à bAcc | bacc }
Ejercicios
10. Construir una gramática que genere el lenguaje L y dar una
derivación más a la derecha y un árbol de derivación para
las palabras ‘acbacca’ y ‘cbbacccca’.
𝐿 = {𝑎P 𝑐 𝑏 Q 𝑎 𝑐 TQ 𝑎 ∶ 𝑖 ≥ 0, 𝑗 ≥ 1}

Una posible solución: G= ({S,A}, {a,b,c}, S, P) siendo


P = { S à aS | cAa
A à bAcc | bacc }
Otra posible solución: G= ({S,A,B}, {a,b,c}, S, P) siendo
P = { S à AcbBcca
A à aA | λ
B à bBcc | a }
Ejercicios
11. Construir una gramática que genere el lenguaje:
𝐿 = {2 0Q 1 1P 1 2 0QSP 2 ∶ 𝑖, 𝑗 ≥ 1}
Ejercicios
11. Construir una gramática que genere el lenguaje:
𝐿 = {2 0Q 1 1P 1 2 0QSP 2 ∶ 𝑖, 𝑗 ≥ 1}

Solución:
Nótese que el lenguaje también se podría escribir como:
𝐿 = {2 0Q 1 1P 1 2 0P 0Q 2 ∶ 𝑖, 𝑗 ≥ 1}
Y nótese que los terminales con el mismo superíndice DEBEN
generarse con la misma producción. Una posible solución sería:
G= ({S,A,B}, {0,1,2}, S, P) siendo
P = { S à 2A2
A à 0A0 | 01B0
B à 1B0 | 1120 }
Ejercicios
12. Hallar una GLC que genere 𝐿 = {𝜔𝜔Y ∶ 𝜔 ∈ {0,1}}.
– Es decir, cadenas de longitud par de 0’s y 1’s que se lean igual del
derecho que del revés (palíndromos de longitud par).
– Hacer lo mismo para palíndromos de longitud impar.
Ejercicios
12. Hallar una GLC que genere 𝐿 = {𝜔𝜔Y ∶ 𝜔 ∈ {0,1}}.
– Es decir, cadenas de longitud par de 0’s y 1’s que se lean igual del
derecho que del revés (palíndromos de longitud par).
– Hacer lo mismo para palíndromos de longitud impar.

Solución:
Longitud par:
G= ({S}, {0,1}, S, P) siendo
P = { S à 0S0 | 1S1 | λ }
Longitud impar:
G= ({S}, {0,1}, S, P) siendo
P = { S à 0S0 | 1S1 | 0 | 1 }

También podría gustarte