Final

Transcripción

Final
Autómatas y Lenguajes Formales
3o Ingenierı́a Informática
Final
Mayo 2010
Normas :
La duración de esta parte del examen es de 2h30m.
Todos los ejercicios se entregarán en hojas separadas.
El examen tipo test cuenta hasta 2 puntos sobre la nota global.
Además de obtener un mı́nimo de 5 puntos en el global del examen, para poder aprobar es necesario obtener un mı́nimo de 1,3 puntos entre las dos primeras preguntas
y un mı́nimo de 1,4 puntos entre las dos últimas.
1. (1.6 puntos) Obtén, aplicando métodos y algoritmos vistos en clase, un autómata finito determinista que, con el menor número de estados posible, reconozca el lenguaje definido por la gramática siguiente:
G = ({S, A, B, C, D}, {a, b}, S, P)
P={ S
A
B
C
D
}
::=
::=
::=
::=
::=
aA | bD | λ
aA | bB | b | λ
aC | bD
aD | bA | a
aC
Solución:
En primer lugar, obtendremos un autómata finito no determinista equivalente a
partir de la gramática. Este autómata puede ser el siguiente:
Agr = ({a, b}, {qS , qA , qB , qC , qD , qF }, fgr , qS , {qF })
fgr
→ qS
qA
qB
qC
qD
*qF
a
{qA }
{qA }
{qC }
{qD ,qF }
{qC }
b
{qD }
{qB ,qF }
{qD }
{qA }
λ
{qF }
{qF }
Posteriormente, lo convertiremos en un autómata finito determinista equivalente:
Página 1 de 7
Examen Final – Mayo 2010 (cont.)
fgrf d
→*{qS ,qF }
*{qA ,qF }
{qD }
*{qB ,qF }
{qC }
{}
*{qD ,qF }
a
{qA ,qF }
{qA ,qF }
{qC }
{qC }
{qD ,qF }
{}
{qC }
b
{qD }
{qB ,qF }
{}
{qD }
{qA ,qF }
{}
{}
Si renombramos, nos queda:
Agrf d = ({a, b}, {A, B, C, D, E, F, G}, fgrf d , A, {A, B, D, G})
ferf d
→*A
*B
C
*D
E
F
*G
a
B
B
E
E
G
F
E
b
C
D
F
C
G
F
F
El autómata obtenido ya es conexo debido al algoritmo de conversión aplicado,por
lo tanto, lo único que falta es minimizarlo para asegurarnos de que tiene el menor
número de estados posible.
Q/E0 = {{A, B, D, B}, {C, E, F }}
Q/E1 = {{A}, {B}, {D, G}, {C, F }, {E}}
Q/E2 = {{A}, {B}, {D, G}, {C}, {F }, {E}}
Q/E3 = {{A}, {B}, {D}, {G}, {C}, {F }, {E}}
Q/E4 = {{A}, {B}, {D}, {G}, {C}, {F }, {E}} = Q/E3 = Q/E
Por lo tanto, el autómata obtenido es el finito determinista equivalente a la
gramática del enunciado que tiene el mı́nimo número de estados.
2. (1.6 puntos) Obtén una gramática formal que reconozca el lenguaje siguiente:
L = {an b3n c2n | n ≥ 0}
Página 2 de 7
Examen Final – Mayo 2010 (cont.)
Solución:
G1 = ({S, A, B, C, X, F }, {a, b, c}, S, P})
P = {S ::= ABC,
A ::= aAX | F,
XB ::= bbbBX,
Xb ::= bX,
Xc ::= cX,
XC ::= ccC,
F b ::= bF,
F B ::= F,
F c ::= cF,
F C ::= λ
3. (1.6 puntos) Sea L el lenguaje siguiente:
L := {hM1 , M2 i | L(M1 ) ∩ L(M2 ) 6= ∅} ⊆ {0, 1}∗ .
¿Es L un lenguaje recursivamente enumerable?. ¿Es recursivo?. Razona la respuesta.
Solución:
Para reconocer el lenguaje L (y por tanto demostrar que L es recursivamente
enumerable) vamos a diseñar una máquina de Turing M que realiza las siguientes
acciones:
La máquina de Turing M toma como input una palabra x ∈ {1, 0}∗ .
En un primer paso, descomponemos x como la concatenación de código de
dos máquinas de Turing x = hM1 , M2 i.
A continuación, la máquina M construye indeterminı́sticamente mediante
un guessing una palabra y. Esta palabra será la candidata a pertenecer a
la intersección L(M1 ) ∩ L(M2 ).
Usando la máquina universal U, comprobamos si y es aceptado por M1 .
En caso afirmativo, y de igual modo, comprobamos a continuación si y es
aceptado por M2 .
En caso de que la palabra y esté en ambos lenguajes L(M1 ) y L(M2 ), la
máquina de Turing M acepta la palabra x.
Página 3 de 7
Examen Final – Mayo 2010 (cont.)
Con este esquema, es fácil ver que L(M ) = L, y por tanto nuestro lenguaje L es
un lenguaje recursivamente enumerable.
Veamos ahora que L no es un lenguaje recursivo. Para ello, vamos a construir
una reducción desde el problema de parada HP a L. Como sabemos que HP no
es recursivo, concluiremos que L no es recursivo.
Para ello, a partir de una palabra hM, wi, contruiremos algorı́tmicamente (esto
es, mediante una reducción) hM ′ , M ′′ i de la siguiente forma:
M ′ será el código de una máquina de Turing tal que acepta todas sus entradas, esto es, L(M ′ ) = {0, 1}∗ .
M ′′ será el código de una máquina de Turing que realiza los siguientes pasos:
• La máquina de Turing M ′′ ignora su input, y simula, usando la máquina
universal U, el comportamiento de M con el input w.
• En caso de que la máquina universal acepte dicha entrada, la máquina
de Turing M ′′ aceptará.
Comprobemos que ésto es una reducción:
Si hM, wi ∈ HP , entonces L(M ′ ) = L(M ′′ ) = {0, 1}∗ y por tanto se sigue
que L(M ′ ) ∩ L(M ′′ ) 6= ∅ y hM ′ , M ′′ i ∈ L.
Si hM, wi 6∈ HP , entonces L(M ′ ) = {0, 1}∗ y L(M ′′ ) = ∅ y por tanto
L(M ′ ) ∩ L(M ′′ ) = ∅, y consecuentemente hM ′ , M ′′ i 6∈ L.
Con lo cual podemos concluir que
hM, wi ∈ HP ⇔ hM ′ , M ′′ i ∈ L,
y por tanto L no es un lenguaje recursivo.
4. (1.6 puntos) Sea L el lenguaje siguiente:
L := {x ∈ {a, b}∗ | 2na (x) = 3nb (x)} ⊆ {a, b}∗ .
¿Es L un lenguaje independiente del contexto?. Razona la respuesta.
Solución:
Este lenguaje es un lenguaje independiente del contexto. El autómata a pila
(por vaciado de pila) que reconoce el lenguaje L viene dado por la siguiente
Página 4 de 7
Examen Final – Mayo 2010 (cont.)
representación gráfica:
(a, A, AA)
(a, B, λ)
(a, S, AS)
(λ, S, λ)
S
q0
(b, S, BS)
(b, A, λ)
(b, B, BB)
q1
(a, S, S)
(a, A, A)
(a, B, B)
(b, S, S) (b, S, BS)
(b, A, A)
(b, A, λ)
(b, B, B) (b, B, BB)
q3
(a, S, S)
(a, A, A)
(a, B, B)
(a, S, S)
(a, A, A)
(a, B, B)
q2
(b, S, S) (b, S, BS)
(b, A, A)
(b, A, λ)
(b, B, B) (b, B, BB)
q4
(a, S, S)
(a, A, A)
(a, B, B)
(b, S, S)
(b, A, A)
(b, B, B)
q5
(a, A, AA)
(a, B, λ)
(a, S, AS)
5. (1.6 puntos) Sea L el lenguaje siguiente:
L := an b2n+m cm(n mod 2) | n ≥ 1, m ≥ 0 ⊆ {a, b, c}∗ .
Diseña (explicando el algoritmo subyacente) una máquina de Turing M tal que
L(M ) = L.
Solución:
M = ({a, b, c, A, B, •}, {a, b, c}, •, {q0 , q1 . . . q12 , qf }, q0 , f, {qf })
Donde la función de transición f , se define de la siguiente manera:
Página 5 de 7
Examen Final – Mayo 2010 (cont.)
(B, B, R)
(a, a, R)
q0
(a, A, R)
q1
q4
q2
(b, B, L)
q3
(a, a, L)
(B, B, L)
(A, A, R)
(B, B, L)
(A, A, L)
(b, B, R)
(•, •, R)
q5
(A, •, R)
q6
(A, •, R)
(B, •, R)
(B, •, R)
(b, •, R)
(B, •, R)
q7
q8
(•, •, R)
(•, •, R)
(b, •, R)
qf
(•, •, R)
q12
(B, •, R)
(b, b, R)
(c, c, R)
q9
(•, •, L)
(b, •, R)
(•, •, R)
q11
(c, •, L)
q10
(b, b, L)
(c, c, L)
En esta máquina de Turing nuestra labor es hacer que la máquina se detenga en
un estado final en caso de que la palabra que nos ofrezcan en la entrada pertenezca
al lenguaje indicado.
El funcionamiento del algoritmo implementado es el siguiente:
q0 . . . q3 : Por cada caracter “a” que hay en la entrada, deben encontrase dos
caracteres “b”. Por lo tanto, marcamos ambos elementos.
q4 . . . q6 : Una vez hemos comprobado que hay, por lo menos, el doble de
elementos “b” que de elementos “a”, tenemos que comprobar si el número
de elementos “a” es par ya que, si es impar, la palabra debe contener tantos
caracteres “c” como elementos “b” queden sin marcar (ya que sólo hemos
marcado los caracteres “b” correspondientes al doble de aes).
q5 , q7 , qf : Como el número de elementos “a” es par, la cadena (que puede
Página 6 de 7
Examen Final – Mayo 2010 (cont.)
contener algún elemento “b” todavı́a sin marcar) no puede contener elementos “c”.
q6 , q8 . . . q12 , qf : El número de elementos “a” es impar, por lo tanto, la cadena
debe tener tantos elementos “c” como elementos “b” hayan quedado sin
marcar.
Página 7 de 7

Documentos relacionados