algunas soluciones - Universidad Rey Juan Carlos

Transcripción

algunas soluciones - Universidad Rey Juan Carlos
Universidad Rey Juan Carlos
Curso 2007–2008
Teorı́a de Autómatas y Lenguajes Formales
Ingenierı́a Técnica en Informática de Sistemas
Hoja de Problemas 2
Gramáticas Formales
Nivel del ejercicio : (!) básico, (♣) medio, (♠) avanzado.
1. (!) Obtener las derivaciones de las palabras 002 y 0001 a partir de la siguiente
gramática :
G = ({A, B}, {0, 1, 2}, A, {A ::= 0B, A ::= 2, B ::= 0A, B ::= 1}) .
Obtener el lenguaje que genera.
Solución:
A::=0B
B::=0A
A::=2
A −→ 0B −→ 00A −→ 002
A::=0B
B::=0A
A::=0B
B::=1
A −→ 0B −→ 00A −→ 000B −→ 0001
El lenguaje que genera esta gramática son palabras que tienen un número determinado de ceros seguido de la paridad de los mismos (un 1 si el número de ceros
es impar y un 2 en caso contrario):
L = {0n 2 | n mod 2 = 0} ∪ {0n 1 | n mod 2 = 1}
2. (!) Obtener el lenguaje generado por la gramática :
G = ({S}, {a, b}, S, {S ::= aSbb | λ}) .
Solución:
La gramática genera un lenguaje cuyas palabras están compuestas por una ristra
de a’s seguida por otra ristra de b’s y además, el número de a’s es la mitad del
número de b’s.
L = {an b2n | n ≥ 0}
3. (!) Construir una gramática que genere el lenguaje L = {an bn+1 | n ≥ 0}.
Página 1 de 8
Hoja de Problemas 2 (cont.)
Solución:
G = ({S, A}, {a, b}, S, {S ::= Ab, A ::= aAb | λ})
4. (♣) Construir una gramática que genere el lenguaje L = {w | na (w) y nb (w) son pares }.
Solución:
G = ({S, A, B, C, D}, {a, b}, S, P })
P = {S ::= SS | A | B | λ,
A ::= aSa,
B ::= bSb,
C ::= DSD,
D ::= ab | ba}
5. (!) Indicar si las gramáticas con los siguientes conjuntos de producciones son equivalentes :
P1 = {S ::= aSb | λ},
P2 = {S ::= aAb | λ, A ::= aAb | λ}.
Solución:
Dos gramáticas son equivalentes cuando generan el mismo lenguaje. Podemos
observar que los lenguajes que generan G1 y G2 son los siguientes:
L(G1 ) = {an bn | n ≥ 0} y L(G2 ) = {an bn | n ≥ 0}
Por lo tanto, como L(G1 ) = L(G2 ), son gramáticas equivalentes.
6. (!) Construir gramáticas para Σ = {a, b} que generen los lenguajes cuyo conjunto
de palabras sean :
(a) Todas las cadenas con una única a.
Solución:
G = (ΣN , {a, b}, S, P )
ΣN = {S, B}, P = {S ::= BaB, B ::= bB | λ}
Página 2 de 8
Hoja de Problemas 2 (cont.)
(b) Todas las cadenas con al menos la subcadena ababbb.
Solución:
G = (ΣN , {a, b}, S, P )
ΣN = {S, A}, P = {S ::= AababbbA, A ::= aA | bA | λ}
(c) Todas las cadenas con no más de tres a! s.
Solución:
G = (ΣN , {a, b}, S, P )
ΣN = {S, P, G, T, B}, P = {S ::= B | P, P ::= GaB | BaG | BaB,
G ::= T aB | BaT | BaB, T ::= BaB, B ::= bB | λ}
7. (!) Describir el lenguaje generado por la gramática cuyo conjunto de producciones
es
{S ::= aA | λ, A ::= bS}.
Solución:
L = {(ab)n | n ≥ 0}
8. (!) Describir el lenguaje generado por la gramática cuyo conjunto de producciones
es
{S ::= Aa, A ::= B, B ::= Aa}.
Solución:
Recordemos que por definición, dada una gramática G = (ΣN , ΣT , S, P ) el lenguaje reconocido o generado por G está formado por todas las sentencias (palabras)
de G:
L(G) = {x | S →∗ x y x ∈ Σ∗T }
Dado que ninguna forma sentencial generada por la gramática del ejemplo es
una sentencia (x ∈ Σ∗T ), entonces el lenguaje generado por esta gramática es el
lenguaje vacı́o (L = ∅).
9. (♣) Construir una gramática para cada uno de los siguientes lenguajes :
(a) L1 = {an bm | n ≥ 0, m > n}.
Página 3 de 8
Hoja de Problemas 2 (cont.)
Solución:
G1 = ({S1 , A, B}, {a, b}, S1 , {S1 ::= B | aAbB, A ::= aAb | λ, B ::= b | bB})
(b) L2 = {an+2 bn | n ≥ 1}.
Solución:
G2 = ({S2 , C}, {a, b}, S2, {S2 ::= aaaCb, C ::= aCb | λ})
(c) L3 = {an bn−3 | n ≥ 3}.
Solución:
Para resolver este apartado, podemos tener en cuenta que L3 = {an bn−3 | n ≥
3} es equivalente a L3equiv = {am+3 bm | m ≥ 0} y por lo tanto, se puede
resolver de forma parecida al apartado anterior.
G3 = ({S3 , D}, {a, b}, S3, {S3 ::= aaaD | λ, D ::= aDb | λ})
(d) L1 L2 .
Solución:
Para realizar este ejercicio, podemos utilizar las reglas de producción creadas en el apartado (a) y (b), teniendo cuidado al mezclar las producciones
renombrándolas si fuese necesario, y generar otro axioma que haga uso de
ellas: S ::= S1 S2 .
G4 = ({S, S1 , S2 , A, B, C}, {a, b}, S, {S ::= S1 S2 , S1 ::= B | aAbB, A ::=
aAb | λ,
B ::= b | bB, S2 ::= aaaCb, C ::= aCb | λ})
Si nos damos cuenta, las producciones relativas a los elementos no terminales A y C son iguales, por lo que podemos eliminar una y retocar las
reglas de producción que hagan uso de ellos. Al finalizar, la solución queda:
G4 = ({S, S1 , S2 , A, B, C}, {a, b}, S, {S ::= S1 S2 , S1 ::= B | aAbB, A ::=
aAb | λ,
B ::= b | bB, S2 ::= aaaAb})
(e) L1 ∪ L2 .
Solución:
Procederemos de forma análoga al apartado anterior, sı́mplemente varı́a el
nuevo axioma: S ::= S1 | S2
(f) L32 .
Solución:
Página 4 de 8
Hoja de Problemas 2 (cont.)
De forma parecida, reutilizaremos la gramática que genera L2 , añadiendo un
nuevo axioma: S ::= S2 S2 S2
(g) L∗1 .
Solución:
Idem del anterior. Nuevo axioma: S ::= SS1
(h) L4 = {abn a | n ≥ 1}.
Solución:
G5 = ({S5 , B}, {a, b}, S5 , {S5 ::= aBa, B ::= bB | b})
10. (♣) Construir una gramática para cada uno de los siguientes lenguajes para Σ = {a} :
(a) L1 = {w | |w| mod 3 = 0}.
Solución:
G1 = ({S}, {a}, S, {S ::= aaaS | λ}) .
(b) L2 = {w | |w| mod 3 > 0}.
Solución:
G2 = ({S}, {a}, S, {S ::= a | aa | aaaS}) .
11. (♣) Dado un alfabeto Σ y una palabra w ∈ Σ∗ , se dice que w es un palı́ndromo si
se verifica que w−1 = w. Dado Σ2 := {0, 1}, construir una gramática que genere el
lenguaje de los palı́ndromos sobre Σ2 , Lpal (Σ2 ) := {w ∈ Σ∗2 | w−1 = w}.
Solución:
G = ({S, A}, {0, 1}, S, {S ::= 0S0 | 1S1 | A, A ::= 0 | 1 | λ})
12. (♣) Construir una grámatica que genere el lenguaje L = {ww | w ∈ {a, b}∗ }.
Solución:
El lenguaje generado está formado por palabras que resultan de la concatenación
de una misma palabra w dos veces, tal que w ∈ {a, b}∗ .
G = ({S, X, Y, F, A, B}, {a, b}, S, P )
Página 5 de 8
Hoja de Problemas 2 (cont.)
P =
=
=
=
=
=
=
=
=
=
=
{S ::= XY,
X ::= XaA | XbB | F,
Aa ::= aA,
Ab ::= bA,
AY ::= Y a,
Ba ::= aB,
Bb ::= bB,
BY ::= Y b,
F a ::= aF,
F b ::= bF,
F Y ::= λ}
13. (♣) Construir una grámatica que genere el lenguaje L = {www | w ∈ {a, b}+ }.
Solución:
El lenguaje generado está formado por palabras que resultan de la concatenación
de una misma palabra w tres veces, tal que w ∈ {a, b}∗ .
G = ({S, X, Y, Z, F, A, B}, {a, b}, S, P )
P = {S ::= XY Z,
X ::= XaA | XbB | F,
Aa ::= aA,
Ab ::= bA,
Ba ::= aB,
Bb ::= bB,
AY ::= Y aA,
BY ::= Y bB,
AZ ::= Za,
BZ ::= Zb,
F a ::= aF,
F b ::= bF,
F Y ::= Y F,
F Za ::= λ,
F Zb ::= λ}
Página 6 de 8
Hoja de Problemas 2 (cont.)
14. (♣) Sea Σ := {(, ), 0, 1}. Las expresiones con paréntesis bien balanceadas se definen
del siguiente modo :
• La palabra vacı́a está bien balanceada.
• 0 y 1 son palabras bien balanceadas.
• Si w ∈ Σ∗ es una palabra bien balanceada, entonces (w) es una palabra bien
balanceada.
• Si w, w! ∈ Σ∗ son palabras bien balanceadas, entonces ww! es una palabra bien
balanceada.
Construye una gramática que genere el lenguaje de las palabras bien balanceadas.
Solución:
G = ({S, W, P }, {0, 1}, S, {S ::= SW S | P, W ::= (W ) | (P ), P ::= OP | 1P | 0 | 1 | λ})
15. (!) ¿ Son equivalentes las gramáticas cuyas producciones son las siguientes?.
P1 = {S ::= aSb | ab | λ},
P2 = {S ::= aAb | ab, A ::= aAb | λ}.
Solución:
Observemos los lenguajes que genera cada una de las gramáticas:
L(G1 ) = {an bn | n ≥ 0} y L(G2 ) = {an bn | n > 0}
Como podemos ver, L(G1 ) incluye la palabra vacı́a(λ), mientras que el segundo
lenguaje no la incluye, por lo tanto, al no generar el mismo lenguaje, no son
equivalentes.
16. (!) Demostrar si las gramáticas con las siguientes producciones son ambiguas :
{A ::= 1B | 11, B ::= 1},
{S ::= AB | aaB, A ::= a | Aa, B ::= b}.
Solución:
Recordemos las definiciones.
Una gramática es ambigua si genera alguna sentencia ambigua.
Una sentencia es ambigua si puede obtenerse por medio de varias derivaciones
distintas correspondientes a árboles de derivación diferentes.
Página 7 de 8
Hoja de Problemas 2 (cont.)
Por lo tanto, debemos encontrar una sentencia que pueda corresponderse con
dos (o más) árboles de derivación.
Para la primera gramática, podemos encontrar dos árboles de derivación correspondientes a la palabra 11:
A
1
A
1
1
B
1
Y para la segunda gramática, podemos encontrar dos árboles de derivación para
la palabra aab:
S
S
a
a B
b
A
A
a
Por lo tanto, ambas gramáticas son ambiguas.
Página 8 de 8
B
a
b

Documentos relacionados