Teor´ıa de Aut´ omatas y Lenguajes Formales / Aut´ omatas y Lenguajes Formales

Anuncio
U .R.J .C. –
Ingenierı́a Técnica en Informática de Sistemas
Ingenierı́a Informática
Teorı́a de Autómatas y Lenguajes Formales /
Autómatas y Lenguajes Formales
Septiembre 2007
Final
Normas :
La duración de esta parte del examen es de 2 horas y 30 minutos.
Todos los ejercicios se entregarán en hojas separadas.
El examen tipo test cuenta hasta 2 puntos sobre la nota total.
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.3 puntos entre las dos últimas.
1. (a) (0.8 puntos) Sea el siguiente lenguaje:
L = {x | siendo x ∈ {a, b}∗ y |x| > 0 y na (x) 6= 2}
donde na (x) representa el número total de a’s (no necesariamente consecutivas)
en la palabra x.
Obtén una gramática regular, lineal por la derecha, que genere el lenguaje
L.
Solución:
Una posible solución serı́a la siguiente gramática:
G = ({S, A, B, C}, {a, b}, S, P )
con
P ={ S
A
B
C
::=
::=
::=
::=
aA
aB
aC
aC
| bS | a | b,
| bA | b,
| bB | a,
| bC | a | b}
(b) (0.8 puntos) Sea L el lenguaje compuesto por las palabras x que cumplan las
siguientes condiciones:
x ∈ {a, b}∗
|x| > 0
si x contiene b’s, el numero de b’s consecutivas siempre es 1 o mayor que 2
(pero no 2).
Página 1 de 7
Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.)
Ejemplos de palabras que pertenecen a L: abab, abbba, bbbb, ababbbbaaabbb,...
Ejemplos de palabras que no pertenecen a L: bb, abba, ababb, ababbaaabbb ...
Obtén una gramática regular, lineal por la derecha, que genere el lenguaje
L.
Solución:
Una posible solución serı́a la siguiente gramática:
G = ({S, A, B, C, D}, {a, b}, S, P )
con
P ={ S
A
B
C
::= aS | bA | a | b,
::= aS | bB | a,
::= bC | b,
::= aS | bC | a | b}
2. (1.6 puntos) Dada la expresión regular r = (1 + 01)∗ (0 + λ), diseña un autómata
finito determinista que reconozca L(r). El autómata no podrá tener más de 3
estados.
Solución:
Un posible autómata finito no determinista equivalente a la expresión regular, es
el siguiente:
f
→q0
q1
q2
*q3
0
{q1 }
1
{q2 }
{q2 }
{q3 }
λ
{q2 }
{q0 , q3 }
Para convertir este autómata finito no determinista en un determinista equivalente, primero hallaremos la clausura lambda de su estado inicial:
clausuraλ (q0 ) = {q0 , q2 , q3 }
Esta clausura será el estado inicial de nuestro nuevo autómata finito determinista:
′
fAF
0
1
D
→*{q0 , q2 , q3 } {q1 , q3 } {q0 , q2 , q3 }
*{q1 , q3 }
{}
{q0 , q2 , q3 }
{}
{}
{}
Renombrando queda:
Página 2 de 7
Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.)
′
fAF
0 1
D
→*A B A
*B C A
C C C
Intentaremos ver si existe algún autómata equivalente más pequeño. Para ello,
minimizamos.
Primero eliminamos los estados inaccesibles (en este caso no hay ninguno). Después, pasamos a calcular el conjunto cociente Q/E:
Q/E0 = {{A, B}, {C}}
Q/E1 = {{A}, {B}, {C}}
Q/E2 = {{A}, {B}, {C}}
Q/E2 = Q/E1
por lo tanto Q/E1 = Q/E
Este es el autómata mı́nimo que reconoce el lenguaje L(r). Por lo tanto, no existe
ninguna otra solución a este problema a excepción de los autómatas isomorfos
correspondientes.
3. (1.6 puntos) Consideremos el alfabeto finito Σ := {0, 1}, y sea L ⊆ Σ∗ el lenguaje
definido por la siguiente igualdad :
L := {w0n | n ∈ N , n0 (w) = (n mod 4)} .
¿Es L un lenguaje regular?. Razona la respuesta.
Solución:
El lenguaje es regular. Un autómata finito que evalua dicho lenguaje es el siguiente :
Página 3 de 7
Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.)
1
1
q0
0
q1
λ
q7
1
0
λ
q6
0
1
q2
0
λ
0
q5
q3
λ
0
q4
0
q8
0
0
q9
0
q10
(a) (0.6 puntos) Diseña una gramática independiente de contexto que genere el
siguiente lenguaje:
L = {w | w ∈ {a, b, c, (, ), {, }, [, ], <, >}∗ y en w las parejas de paréntesis, corchetes, llaves y ángulos están bien formados}
Ejemplos:
w = ab(a) ∈ L; x = (bc)a[b] ∈ L; y = ((a[a]{b})) ∈ L; z = (a{)b} ∈
/L
(b) (0.2 puntos) Genera las palabras w = ab(a); x = (bc)a[b]; y = ((a[a]{b})) con la
gramática obtenida en el apartado a) de este ejercicio.
(c) (0.6 puntos) Transforma la gramática independiente de contexto L (obtenida
en el apartado a) de este ejercicio) en un autómata de pila. Utiliza el algoritmo
visto en el temario del curso.
(d) (0.2 puntos) Describe la secuencia de descripciones instantáneas del autómata
de pila para el reconocimiento de las palabras
w = ab(a); x = (bc)a[b]; y = ((a[a]{b})).
Solución:
Solución 1: Gramática en FNG
Página 4 de 7
Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.)
1. Se diseña una gramática en forma normal de Greibach G.
La gramática G = (V, T, S, P ) siendo V = {S, A, B, C, D} T = {a, b, c, (, ), {, }, [, ], <
, >} y P como sigue:
S ::= λ|aS|bS|cS|(SA|{SB|[SC| < SD
A ::=)S
B ::=}S
C ::=]S
D ::=> S
2.
w : S → aS → abS → ab(SA → ab(aSA → ab(aA → ab(a)S → ab(a)
x : S → (SA → (bSA → (bcSA → (bcA → (bc)S → (bc)aS →
(bc)a[SC → (bc)a[bSC → (bc)a[bC → (bc)a[b]S → (bc)a[b]
y : S → (SA → ((SAA → ((aSAA → ((a[SCAA → ((a[aSCAA →
((a[aCAA → ((a[a]SAA → ((a[a]{SBAA → ((a[a]{bSBAA → ((a[a]{bBAA →
((a[a]{b}SAA → ((a[a]{b}AA → ((a[a]{b})SA → ((a[a]{b})A → ((a[a]{b}))S →
((a[a]{b}))
3. Siendo la gramática en FNG, se convierte en un autómata de pila:
AP P = ({a, b, c, (, ), {, }, [, ], <, >}, {S, B}, {q}, q, S, P, ∅), siendo P
f (q, λ, S) = {(q, λ)}
f (q, a, S) = {(q, S)}
f (q, b, S) = {(q, S)}
f (q, c, S) = {(q, S)}
f (q, (, S) = {(q, SA)}
f (q, {, S) = {(q, SB)}
f (q, [, S) = {(q, SC)}
f (q, <, S) = {(q, SD)}
f (q, ), A) = {(q, S)}
f (q, }, B) = {(q, S)}
f (q, ], C) = {(q, S)}
f (q, >, D) = {(q, S)}
4.
w : (q, ab(a), S) ⊢ (q, b(a), S) ⊢ (q, (a), S) ⊢ (q, a), SA) ⊢ (q, ), SA) ⊢
(q, ), A) ⊢ (q, λ, S) ⊢ (q, λ, λ)
x : (q, (bc)a[b], S) ⊢ (q, bc)a[b], SA) ⊢ (q, c)a[b], SA) ⊢ (q, )a[b], SA) ⊢
(q, )a[b], A) ⊢ (q, a[b], S) ⊢ (q, [b], S) ⊢ (q, b], SC) ⊢ (q, ], SC) ⊢ (q, ], C)
⊢ (q, λ, S) ⊢ (q, λ, λ)
y : (q, ((a[a]{b})), S) ⊢ (q, (a[a]{b})), SA) ⊢ (q, a[a]{b})), SAA) ⊢ (q, [a]{b})), SAA)
⊢ (q, a]{b})), SCAA) ⊢ (q, ]{b})), SCAA) ⊢ (q, ]{b})), CAA) ⊢ (q, {b})), SAA)
⊢ (q, b})), SBAA) ⊢ (q, })), SBAA) ⊢ (q, })), BAA) ⊢ (q, )), SAA)
⊢ (q, )), AA) ⊢ (q, ), SA) ⊢ (q, ), A) ⊢ (q, λ, S) ⊢ (q, λ, λ)
Página 5 de 7
Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.)
Solución 2: Gramática sin restricciones
1. La gramática G = (V, T, S, P ) siendo V = {S, B} T = {a, b, c} y P como
sigue:
S ::= λ|B|SS|aS|bS|cS
B ::= (S)|[S]| < S > |{S}
2.
w : S → aS → abS → ab(S) → ab(aS) → ab(a)
x : S → SS → (S)S → (bS)S → (bcS)S → (bc)S → (bc)aS →
(bc)a[S] → (bc)a[bS] → (bc)a[b]
y : S → (S) → ((S)) → ((aS)) → ((aSS)) → ((a[S]S)) → ((a[aS]S)) →
((a[a]S)) → ((a[a]{S})) → ((a[a]{bS})) → ((a[a]{b}))
3. AP P = ({a, b, c, (, ), {, }, [, ], <, >}, {S, B}, {q}, q, S, P, ∅), siendo P
f (q, λ, S) = {(q, λ), (q, B), (a, SS), (q, aS), (q, bS), (q, cS), (q, SS)}
f (q, λ, B) = {(q, (S)), (q, [S]), (q, < S >), (q, [S]), (q, {S}))}
f (q, x, x) = {(q, λ)}, siendo x ∈ {a, b, c, (, ), {, }, [, ], <, >}
4.
w : (q, ab(a), S) ⊢ (q, ab(a), aS) ⊢ (q, b(a), S) ⊢ (q, b(a), bS) ⊢ ⊢
(q, (a), (S)) ⊢ (q, a), S)) ⊢ (q, a), aS)) ⊢ (q, ), S)) ⊢ (q, ), )) ⊢ (q, λ, λ)
x : (q, (bc)a[b], S) ⊢ (q, (bc)a[b], SS) ⊢ (q, (bc)a[b], (S)S) ⊢ (q, bc)a[b], S)S) ⊢
(q, bc)a[b], bS)S) ⊢ (q, c)a[b], S)S) ⊢ (q, c)a[b], cS)S) ⊢ (q, )a[b], S)S) ⊢
(q, )a[b], )S) ⊢ (q, a[b], S) ⊢ (q, a[b], aS) ⊢ (q, [b], S) ⊢ (q, [b], [S]) ⊢
(q, b], S]) ⊢ (q, b], bS]) ⊢ (q, ], S]) ⊢ (q, ], ]) ⊢ (q, λ, λ)
y : (q, ((a[a]{b})), S) ⊢ (q, ((a[a]{b})), (S)) ⊢ (q, (a[a]{b})), S)) ⊢ (q, (a[a]{b})), (S)))
⊢ (q, a[a]{b})), S))) ⊢ (q, a[a]{b})), SS))) ⊢ (q, a[a]{b})), aSS))) ⊢ (q, [a]{b})), SS)))
⊢ (q, [a]{b})), [S]S))) ⊢ (q, a]{b})), aS]S))) ⊢ (q, ]{b})), S]S))) ⊢ (q, ]{b})), ]S)))
⊢ (q, {b})), S))) ⊢ (q, {b})), {S}))) ⊢ (q, b})), S}))) ⊢ (q, b})), bS})))
⊢ (q, })), S}))) ⊢ (q, })), }))) ⊢ (q, )), ))) ⊢ (q, ), )) ⊢ (q, λ, λ)
4. (1.6 puntos) Dados dos números naturales x, y ∈ N, se define la operación módulo
como el resto de la división entera de x entre y; se denota como x mod y, y cumple
que 0 ≤ (x mod y) < y. Diseña una máquina de Turing que calcule dicha función.
f :N×N→ N
f (x, y) = x mod y
∀x, y ∈ N e y > 0
Explica su funcionamiento y el algoritmo que has utilizado para resolver la
función.
Se deberán tener en cuenta los siguientes aspectos:
Página 6 de 7
Examen Teorı́a de Autómatas y Lenguajes Formales - FINAL (cont.)
La codificación a utilizar, para todos los números, será una codificación natural (es decir, cada número estará representado por tantos unos como su valor
natural). Ası́, la codificación del número 3 será: 111, la del 4: 1111, etcétera.
En la cinta tendremos como entrada el dividendo x, un asterisco y el divisor y.
Tanto el dividendo como el divisor serán siempre mayores o iguales a 1. En caso
de que el resto de la división sea cero la cadena debe quedar vacı́a.
Al finalizar el cómputo en la cinta sólo quedará la solución y, además, el cabezal
de la máquina de Turing deberá apuntar al primer carácter de la misma.
•q0 111111 ∗ 1111•
•q0 11111 ∗ 11•
•q0 111 ∗ 111•
•q0 111 ∗ 1111•
⊢∗
⊢∗
⊢∗
⊢∗
•qf 11•
•qf 1•
•qf • •
•qf 111•
Solución:
M = ({1, ∗, x, •}, {1, ∗}, •, {q0, q1 . . . q9 }, q0 , f, {q9 })
Donde la función de transición f , se define de la siguiente manera:
(1, 1, R)
(∗, ∗, R)
q0
(1, 1, L)
(∗, ∗, L)
(•, •, L)
q1
(1, x, L)
q2
(1, •, R)
(•, •, R)
q3
(∗, •, R)
q4
(x, x, L)
(•, •, L)
(∗, ∗, R)
(1, •, R)
(1, 1, R)
(∗, ∗, R)
q6
q5
(x, •, R)
(x, 1, R)
q9
(•, •, R)
q8
(•, •, R)
(1, 1, L)
Página 7 de 7
q7
(x, 1, R)
Descargar