

















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Algunos de los ejercicios resueltos del tema 4
Tipo: Ejercicios
1 / 25
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!


















Autores:
Araceli Sanchis de Miguel
Agapito Ledezma Espino
Jose A. Iglesias Martínez
Beatriz García Jiménez
Juan Manuel Alonso Weber
Salomón. Teoría de autómatas y lenguajes formales. McGraw-Hill (2007).
gramáticas y autómatas. Publicaciones R.A.E.C. (1997).
Autómatas. Un enfoque práctico. Addison-Wesley (1997).
a) { a, aa, aaa }
b) { a, aa, aaa, aaaa, aaaaa, …)
c) { λ, a, aa, aaa }
d) { λ, a, aa, aaa, aaaa, aaaaa, …)
La notación empleada para representar cada uno de los lenguajes será:
a) { a
n
| n ∈ [1, 3] }
b) { a
n
| n > 0 }
c) { a
n
| n ∈ [0, 3] }
d) { a
n
| n ≥ 0 }
NT
i
} donde:
1
2
3
4
5
T
= {c}
NT
T
= {c,d}
NT
T
= {c}
NT
T
= {c,d}
NT
T
= {c,d}
NT
1
: S→λ⏐A
A→AA| c
2
: S→λ⏐A
A→cAd| cd
3
: S→λ⏐A
A→AcA| c
4
: S→cA
A→d | cA| Td
T→Td | d
5
: S→λ⏐A
A→Ad| cA | c| d
Determinar el lenguaje asociado a dichas gramáticas.
justificándolo:
a) G=({a,b}, {A,B,S}, S, P),
P={S::=aA, A::=bB, A::=aA, A::=a, B::=λ}
b) G=({a,b,c}, {A,B,C,S}, S, P),
P={S::=aAb, S::=Ba, S::=λ, aAbC::=aAbB, aAbC::=aabC, BCc::=AaCc,
BCc::=BaAbc, C::=Ca, C::=a}
c) G=({casa, jardin, gato}, {S, CASERON, BOSQUE, TIGRE}, S, P),
P={ S::=TIGRE jardin, S::=BOSQUE CASERON, BOSQUE::=λ,
jardin CASERON TIGRE casa::=jardin BOSQUE TIGRE casa,
gato CASERON BOSQUE::=gato BOSQUE casa TIGRE BOSQUE,
BOSQUE::=TIGRE casa, BOSQUE::=jardin
d) G=({x,y}, {C,A,B,S}, S, P),
P={S::=Cx, S::=Cy, S::=By, S::=Ax, S::=x, S::=y, A::=Ax, A::=Cx, A::=x,
B::=By, B::=yA, C::=xA}
e) G=({a,b,c}, {S,B}, S, P),
P={S::=abc, S::=aBSc, Ba::=aB, Bb::=bb}
G = ({a, b, c},{S, A, B, C, D, E), S, P)
P = { S::=AaB | Cbb | B
A::=Aa | cD
B::=a | Ba | λ
C::=Sa | a | abB
D::=aaA
E::=aa }
G = ({a,b}, {S}, S, P), donde P = {S::=aSb | SS | λ}
1. Crear una gramática que genere los siguientes lenguajes: (T4p1E1)
a) { a, aa, aaa }
b) { a, aa, aaa, aaaa, aaaaa, …)
c) { λ, a, aa, aaa }
d) { λ, a, aa, aaa, aaaa, aaaaa, …)
La notación empleada para representar cada uno de los lenguajes será:
a) { a
n
| n ∈ [1, 3] }
b) { a
n
| n > 0 }
c) { a
n
| n ∈ [0, 3] }
d) { a
n
| n ≥ 0 }
Solución:
a) La gramática sólo debe generar tres palabras y se puede admitir que todas ellas
están formadas por el símbolo “a”. Por tanto, una posible solución es:
G=({a}, {S}, S, P} donde:
P={S::=a | aa | aaa}
b) En este caso, las palabras del lenguaje están formadas por una o varias aes. Por
tanto, una posible solución es:
G=({a}, {S, A}, S, P} donde:
A::= a | aA}
o simplemente,
G=({a}, {S}, S, P} donde:
P={S::=a | aS}
c) Este caso es similar al planteado en el primer apartado pero, a diferencia de éste, la
palabra vacía debe pertenecer al lenguaje. Por tanto, una posible solución es:
G=({a}, {S}, S, P} donde:
P={S::= λ | a | aa | aaa}
d) Este caso es similar al planteado en el segundo apartado pero, a diferencia de éste,
la palabra vacía debe pertenecer al lenguaje. Por tanto, una posible solución es:
G=({a}, {S, A}, S, P} donde:
P={S::= λ |A
A:= a | aA}
o simplemente,
G=({a}, {S}, S, P} donde:
P={S::= λ | aS}
Determinadas palabras se pueden encontrar por más de un camino:
La Gramática es ambigua.
Dos árboles sintácticos (o de derivación) que
producen la sentencia ccc
c c c
c c c
b) S::=λ | A
A::=cAd | cd
2
)={ λ, cd, ccdd, cccddd, …. }= {λ, c
n
d
n
} con n=1, 2, 3, ……
λ
c A d
cd
cc A dd
ccdd
ccc A ddd
cccddd
Dos árboles sintácticos (o de derivación) que
producen la sentencia ccccc
c c c c c
c c c c c
d) S::=cA
A::=d | cA | Td
T::=Td | d
En ocasiones, analizar la semántica de las producciones que definen la gramática puede
resultar más factible que intentar encontrar las palabras del lenguaje asociado a una
palabra y, a partir de ellas, obtener su definición genérica. Así, por ejemplo, analizando
las producciones que definen esta gramática es fácil obtener las siguientes conclusiones:
S → cA : “la palabra empieza por c ”
A→ | cA: “añade ene ces ”
A→ d | Td : “la palabra termina en d”
T → Td | d: “añade eme des ”
A partir de este análisis es relativamente fácil determinar que las palabras del lenguaje
asociado a esta gramática se ajustan a:
d
)={c
n
d
m
/ n,m≥ 1 }
Construyendo el árbol, se encuentra que:
4
)={ cd, ccd, cccd, …..,cdd, ccdd,..... ccddd, ccddd, cdddd, …. }= {c
n
d
m
} con n,m≥ 1
cdddd
ccddd
ccTd
cccA
cTd
ccA cd
cA
cTddd cddd
cdd cTdd
ccd
ccccA cccTd
cccd
ccdd
ccTdd
ccTddd
cTdddd
Determinadas palabras se pueden encontrar por más de un camino:
La Gramática es ambigua.
Dos árboles sintácticos (o de derivación) que
producen la sentencia ccdd
c c d d
c c d d
3. Determinar el tipo de las siguientes gramáticas en la jerarquía de Chomsky,
justificándolo: (T4p1E4)
a) G=({a,b}, {A,B,S}, S, P),
P={S::=aA, A::=bB, A::=aA, A::=a, B::=λ}
b) G=({a,b,c}, {A,B,C,S}, S, P),
P={S::=aAb, S::=Ba, S::=λ, aAbC::=aAbB, aAbC::=aabC, BCc::=AaCc,
BCc::=BaAbc, C::=Ca, C::=a}
c) G=({casa, jardin, gato}, {S, CASERON, BOSQUE, TIGRE}, S, P),
P={ S::=TIGRE jardin, S::=BOSQUE CASERON, BOSQUE::=λ,
jardin CASERON TIGRE casa::=jardin BOSQUE TIGRE casa,
gato CASERON BOSQUE::=gato BOSQUE casa TIGRE BOSQUE,
BOSQUE::=TIGRE casa,BOSQUE::=jardin
d) G=({x,y}, {C,A,B,S}, S, P),
P={S::=Cx, S::=Cy, S::=By, S::=Ax, S::=x, S::=y, A::=Ax, A::=Cx, A::=x,
B::=By, B::=yA, C::=xA}
e) G=({a,b,c}, {S,B}, S, P),
P={S::=abc, S::=aBSc, Ba::=aB, Bb::=bb}
Solución:
a) Tipo 0. Podría ser de tipo 3 pero tiene una regla compresora (B::=λ).
b) Tipo 1. En las producciones 4, 5, 6 y 7 se mantiene el contexto; y el resto serían
válidas en una gramática de tipo 2.
c) Tipo 0. Por regla compresora (BOSQUE::=λ). El resto de reglas mantienen el
contexto, siendo válidas en una gramática de tipo 1.
d) Tipo 2. Porque hay reglas de producción tipo Nt::=t Nt (G3LD) y tipo Nt::=Nt t
(G3LI) mezcladas en la misma gramática.
e) Tipo 0. Porque la regla 3 (Ba::=aB) no mantiene el contexto.
c) Palabra=aabcc
Derivación de árbol izquierdo: S → aAc → a aA c → aaAcc → aaBcc → aabcc
Derivación de árbol derecho: S → aAc → a Ac c → aaAcc → aaBcc → aabcc
d)
d.1.- aaAcc : S → aAc → aaAc → aaAcc
d.2.- ac: inválida
d.3.- ababBcc: inválida
d.4.- abbccc: S → aAc → aAcc → aAccc → aBccc → aBbccc → abbccc
5. Obtener una gramática de tipo 0 para el lenguaje L={a
n
b
n
c
n
/ n ≥ 1} (T4p1E10)
Solución:
Si L={ a
n
c
n
las producciones de la gramática serían:
S::= ac | aSc
¿Cómo introducir las “bes”?
Si se considera la producción: S::= abc | abSc
se obtendrían las siguientes palabras:
L’={abc, ababcc, abababccc, ababababcccc,.....}={(ab)
n
c
n
/ n≥1}
En este lenguaje, el número de veces que aparece cada carácter es el correcto pero no el
orden en el que lo hacen. Para obtener el orden correcto se deberían utilizar reglas del tipo:
ba→ab
Ahora bien, puesto que esta regla no satisface las condiciones de una producción (al menos
un símbolo NT en la parte izquierda) no puede utilizarse.
Se podría pensar que la solución es:
S::= abc| aBSc
Ba::=aB
B::=b
No obstante, y como se puede comprobar analizando el árbol de derivación, esta solución
es errónea pues el orden de los caracteres sigue siendo incorrecto. Para conseguir el orden
correcto es necesario garantizar que la sustitución B->b se realiza única y exclusivamente
una vez que las B están situadas en la posición correcta.
Puesto que la forma genérica de las cadenas obtenidas por las producciones:
S::= abc| aBSc
Ba::=aB
es: aBaBaB……abcccc….
Es fácil ver que una de las B estará correctamente posicionada sí y sólo sí precede a la b:
aBaBa….aBbcccc…. Si en este momento se realiza la sustitución, la forma genérica de las
palabras será:
aBaBa….abbcccc……
abc
aBSc
abSc
aBabcc
aBaBScc
ababcc abaBScc
¡¡Error!!
6. Realizar las transformaciones necesarias del proceso de limpieza de gramáticas,
para obtener una gramática limpia G' equivalente a la G dada. (T4p2E3)
G = ({a,b,c,d}, {X,Y,Z,O,P,Q,A}, Z, P),
P = { Z::=Z, Q::=OP, X::=aa, Z::=aX, Y::=aa, Z::=Ya, O::=b, Z::=aaa,
P::=QO, Q::=d, P::=c, O::=PQ}
Solución:
G' = ({a}, {X,Y, Z}, Z, P'), P' = {Z::=aaa, Z::=aX, Z::=Ya, X::=aa, Y::=aa}
La gramática de entrada tiene una regla innecesaria asociada al axioma (Z::=Z).
Los símbolos inaccesibles son:
los NT que se eliminan).
No hay reglas supérfluas.
7. Dada la gramática G LI, obtener una G’ LD equivalente. (T4p2E6)
Solución:
Primero, como hay axioma inducido (axioma en la parte derecha) en la tercera regla, por lo
que antes de aplicar el algoritmo de conversión G3LI en G3LD hay que eliminar el axioma
inducido, obteniendo su gramática equivalente.
Se añade un nuevo NT => B ∈ Σ N
Se añade una regla B::=x, para cada regla S::=x (pero no se eliminan las reglas del
axioma):
Se sustituye el axioma en la parte derecha (en todas las reglas que aparezca) por el nuevo
símbolo NT añadido:
La gramática resultante equivalente sin axioma inducido es:
G’ = ({a,b}, {A,S,B}, S, P’), P’={S::=1 | A1, A::=B 0 , B::=1 | A1}
Ahora se puede pasar a convertir en LD, construyendo el grafo correspondiente, e
invirtiendo la orientación de las conexiones:
Reescribiendo las producciones leyendo el grafo de la derecha, la gramática G LD
equivalente resultante es:
G LI = ({a,b}, {A,S,B}, S, P), P={S::=1|1B, B::=0A, A::=1|1B}