You are on page 1of 5

Examen de Autómatas, Lenguajes y

Computabilidad
TAL
25 de Junio de 2004

(I) CUESTIONES: (Justifique formalmente las respuestas)

1. Pronúnciese acerca del siguiente enunciado: ”Sea u ∈ Σ∗ y sea L ⊆ Σ∗ , si L es recursivo entonces


u−1 L es recursivo”.
(1.5 puntos)
Solución
El enunciado es cierto. Para demostrarlo proponemos el siguiente esquema de una máquina de
Turing que acepta u−1 L y que garantiza la parada ante cualquier entrada

acepta
x ux acepta
concatena_u M
rechaza
rechaza

En el anterior esquema contamos con el módulo M que acepta cualquier cadena de L y garantiza
la parada dado que L es recursivo. También contamos con el módulo concatena u que procede a
concatenar a la cadena de entrada x, la cadena predefinida u. Este módulo se puede llevar a cabo
mediante una subrutina que añade al principio de la cadena de entrada la cadena u.
El funcionamiento del esquema es sencillo: Dada la cadena de entrada x, se le añade la cadena u
formando la cadena ux. Si el módulo M acepta ux, entonces se acepta la cadena de entrada ya
que pertenece a u−1 L. En caso contrario se rechaza la cadena de entrada ya que no pertenece a
u−1 L.
Dado que el anterior esquema garantiza siempre la parada y acepta u−1 L, podemos afirmar que
u−1 L es recursivo.
2. Sea P la siguiente operación sobre lenguajes: para cada cadena x del lenguaje, si x contiene un
número par de sı́mbolos b entonces cada sı́mbolo a de x pasa a ser aa; si la cadena x tiene un
número impar de sı́mbolos b entonces queda como estaba. Por ejemplo, si x = babaa entonces
P (x) = baabaaaa, si x = baa entonces P (x) = baa. Es la familia de los lenguajes regulares cerrada
respecto de la operación P ?
(1 punto)
Solución
Sea Lp = a∗ (ba∗ ba∗ )∗ el lenguaje sobre el alfabeto {a,b} formado por todas las cadenas que
contienen un número par de sı́mbolos b. Evidentemente es un lenguaje regular. Sea Li el comple-
mentario del lenguaje anterior, que también será regular. Podemos definir L = (L ∩ Lp ) ∪ (L ∩ Li ).
Por tanto, P (L) = h(L ∩ Lp ) ∪ (L ∩ Li ) donde h es un homomorfismo tal que h(a) = aa y h(b) = b.
Por propiedades de cierre de la familia de los lenguajes regulares, si L es un lenguaje regular
entonces P (L) también lo es ya que se ha formulado como la aplicación de un número finito de

1
operaciones sobre lenguajes regulares, operaciones que son de cierre en la familia de los lenguajes
regulares.
3. ¿Es el lenguaje L = {(ab)n x(ab)2n |x ∈ {a, b}, n > 0} regular?
(1.5 puntos)
Solución
Supongamos que L es regular, entonces L1 = L ∩ (ab)∗ a(ab)∗ = {(ab)n a(ab)2n |n > 0} también
será regular. Si L1 es regular, entonces L2 = h−1 (L1 ) = {(b + c)n a(b + c)2n |n > 0} con h un
homomorfismo tal que h(a) = a, h(b) = ab, h(c) = ab, también será regular. Si L2 es regular,
entonces L3 = L2 ∩ b∗ ac∗ = {bn ac2n |n > 0} también será regular. Si L3 es regular, entonces
L4 = g −1 (L3 ) = {bn acn |n > 0} con g un homomorfismo tal que g(a) = a, g(b) = b, g(c) = cc,
también será regular. Finalmente, si L4 es regular, entonces L5 = f (L4 ) = {an bn |n > 0} con f un
homomorfismo tal que f (a) = λ, f (b) = a, f (c) = b, también será regular, lo que, como ya se ha
demostrado sobradamente no es cierto. Por tanto, la hipótesis no es cierta, y L no es regular.

Si en lugar de aplicar las propiedades de cierre de la famı́lia de los lenguajes regulares como en
la demostración anterior, se quiere llevar a cabo una demostración utilizando el lema de bombeo,
deberı́amos tener en cuenta lo siguiente. Suponemos L regular, sea N la constante del lema de
bombeo. Tomamos la cadena z = (ab)N a(ab)2N que es de L y de longitud mayor o igual a N .
Siguiendo con el lema, z = uvw con |uv| ≤ N y |v| ≥ 1. Según estas restricciones, el segmento v
puede tomar los siguiente valores:
v = (ab)k a, k ≥ 0
v = (ab)k , k ≥ 0
v = b(ab)k , k ≥ 0
v = b(ab)k a, k ≥ 0
Por tanto, habrá que encontrar un valor de i tal que uv i w ∈
/ L para cada una de las anteriores
factorizaciones.
4. Se pide dar una gramática incontextual para el lenguaje L = {ai bi cj dj : i, j > 0}.
(1 punto)
Solución
Como se puede comprobar, el lenguaje L resulta de concatenar dos lenguajes incontextuales:
L1 = {ai bi : i > 0} y L2 = {cj dj : j > 0}. Una gramática incontextual para tal lenguaje es la
siguiente:
S → AB
A → aAb | ab
B → cBd | cd

(II) PROBLEMAS:
5. Realice un módulo en Mathematica que, dado un autómata finito no determinista A, devuelva
True si a todos los estados de A solo llegan arcos etiquetados con el mismo sı́mbolo (que puede ser
distinto para cada estado) y False en caso contrario.
(2 puntos)
Solución

prob5[aut ] := Module[{est,trans,i,j,aux,simb},
est= aut[[1]]; trans = aut[[3]];
For[i = 1, i ≤ Length[est], i++,
aux = Cases[trans, { , , est[[i]]}];
simb = {};

2
For[j = 1, j ≤ Length[aux], j++,
AppendTo[simb, aux[[j,2]]]
]; (*del For j*)
simb = Union[simb];
If[Length[simb]>1, Return[False]]
]; (*del For i*)
Return[True]
]

6. Sea la expresión regular r = (0∗ 1)+ , y sea A el autómata de la figura. Obtenga el autómata finito
determinista mı́nimo para L(r) ∪ L(A).

1
0
q q
0 1
1

(1.5 puntos)
Solución
Se tiene que (0∗ 1)+ = (0∗ 1)(0∗ 1)∗ , por lo que derivando:
q0 = (0∗ 1)(0∗ 1)∗
0−1 q0 = q0
1−1 q0 = (0∗ 1)∗ = q1 ∈ F
0−1 q1 = q0
1−1 q1 = q1
Se obtiene, por lo tanto el autómata de la siguiente figura

0 1
1
q q
0 1
0

Como hay que realizar la unión de lenguajes, el autómata A hay que completarlo, con lo que se
obtiene el autómata siguiente:

1 0,1
0
0
q q q
0 1 2
1

El autómata pedido es el siguiente. Se ha aplicado el algoritmo de minimización y se ha obtenido


el mismo autómata.

3
0
1
0
0 1
q q q
00 01 02 q
12
1 1 0
0

q
10

7. Dada la gramática G definida por las siguientes producciones se pide obtener una gramática sim-
plificada y en Forma Normal de Chomsky que genere L(G) − {λ}.
S → CB | CCBC C → AA
A → a | aA | BB | BBA | λ D → AA | BC | a
B → aBb | b
(1.5 puntos)
Solución
Vamos en primer lugar a simplificar la gramática, eliminando para ello los sı́mbolos inútiles. El
algoritmo de cálculo de sı́mbolos generativos nos devuelve el mismo conjunto de no terminales
generativos = {S, A, B, C, D}, por lo que la gramática queda como estaba.
El cálculo de sı́mbolos alcanzables desde el axioma nos devuelve el conjunto alcanzables =
{S, A, B, C, a, b}. Por lo que la gramática queda com sigue:
S → CB | CCBC
A → a | aA | BB | BBA | λ
B → aBb | b
C → AA
Calculamos ahora el conjunto de sı́mbolos anulables. Obtenemos anulables = {A, C}. Eliminamos
las reglas vacı́as y obtenemos:
S → CB | B | CCBC | CBC | CCB | BC
A → a | aA | BB | BBA
B → aBb | b
C → AA | A
Calculamos ahora para cada no terminal, el conjunto de sı́mbolos no terminales alcanzables a través
de reglas simples. Para este ejemplo: C(S) = {S, B}, C(A) = {A}, C(B) = {B}, C(C) = {C, A},
por lo que el conjunto de reglas queda como sigue tras eliminar las reglas simples:
S → CB | CCBC | CBC | CCB | BC | aBb | b
A → a | aA | BB | BBA
B → aBb | b
C → AA | a | aA | BB | BBA
La gramática anterior ya está totalmente simplificada ya que, como podemos comprobar, todos
sus sı́mbolos son útiles. Vamos ahora a pasar la gramática obtenida a forma normal de Chomsky.
El primer paso sustituye los terminales por no terminales adicionales en las partes derechas de
longitud superior a 1. Obtenemos:
S → CB | CCBC | CBC | CCB | BC | Ca BCb | b
A → a | Ca A | BB | BBA
B → Ca BCb | b
C → AA | a | Ca A | BB | BBA
Ca → a
Cb → b
Finalmente, aplicamos el segundo paso y obtenemos:

4
S → CB | CD1 | CD2 | CD3 | BC | Ca D4 | b
D1 → CD2
D2 → BC
D3 → CB
D4 → BCb
A → a | Ca A | BB | BD5
D5 → BA
B → Ca D 4 | b
C → AA | a | Ca A | BB | BD5
Ca → a
Cb → b

You might also like