Solución del examen del 02-12-2005

Anuncio
UNIVERSIDAD DE SEVILLA – E. T. S. I. INFORMÁTICA
AMPLIACIÓN DE LENGUAJES FORMALES Y AUTÓMATAS
EXAMEN DE DICIEMBRE– CURSO 2004/2005
Apellidos: ___________________________________________________________________________
Nombre: ___________________________________________________________________________
TEST (3 puntos)
Responda si los siguientes enunciados - precedidos por una letra - son verdaderos o falsos utilizando las
tablas que figuran al final. Al rellenar la tabla, coloque una cruz en la fila V si considera que el enunciado
de la correspondiente columna es verdadero. De forma excluyente, coloque una cruz en la fila F cuando
considere que es falso. Las respuestas correctas sumarán 0.2 puntos, las incorrectas restarán 0.2 puntos y
las respuestas en blanco no serán evaluadas. Manifieste nítidamente qué tabla considera su respuesta
final, tachando completamente las demás tablas utilizadas.
•
Sea una GIC G=({a}, VN, S, P).
A. El axioma es generativo si y sólo si S⇒*a
B. El símbolo a es generativo si y sólo si S⇒*αaβ⇒*a con α,β ∈ V*
C. Para limpiar una gramática GIC: primero se deben eliminar las reglas que incluyen símbolos no
generativos y después las que incluyen símbolos inaccesibles
D. Para limpiar una gramática GIC: primero se deben eliminar las reglas que incluyen símbolos
inaccesibles y después las que incluyen símbolos no generativos
E. Para limpiar una gramática GIC se debe eliminar las reglas que incluyen símbolos inaccesibles y
no generativos en el orden que se desee.
Sea un AFP M=({a},{q1,q2},π ,{A(a)}) donde A(a) es la matriz unidad.
F. Si π=(1/2 1/2), el umbral es θ=1/2 y F={q1,q2} entonces L(M)=a*
G. Si π=(1/2 1/2), el umbral es θ=1/2 y F={q1} entonces L(M)=a*
H. Si π=(1/2 1/2), el umbral es θ=1/2 y F={q2} entonces L(M)=a*
I. Si π=(1 0), el umbral es θ=1/2 y F={q1} entonces L(M)= ∅
J. Si π=(0 1), el umbral es θ=1/2 y F={q2} entonces L(M)= ∅
Respecto a la transformación de una GIC G=({a},VN,S,P) en un AP M=({a},{q},q,∅,V,S,δ)
equivalente:
K. Si A →BC∈P entonces δ(q,λ,A)={(q,BC}}
L. Si δ(q, λ ,A)={(q,BC}} entonces A →BC∈P
M. Se verifica que δ(q,a, λ)={(q, λ)}
N. Se verifica que δ(q,a, λ)={(q, a)}
O. Se verifica que δ(q,a, a)={(q, λ)}
•
•
V
F
A
B
X
X
A
B
A
B
C
X
D
E
F
X
G
X
X
X
C
D
E
F
G
C
D
E
F
G
H
X
I
J
K
X
X
X
H
I
J
K
H
I
J
K
L
X
M
N
O
X
X
X
L
M
N
O
L
M
N
O
V
F
V
F
UNIVERSIDAD DE SEVILLA – E. T. S. I. INFORMÁTICA
AMPLIACIÓN DE LENGUAJES FORMALES Y AUTÓMATAS
EXAMEN DE DICIEMBRE– CURSO 2004/2005
Apellidos: ___________________________________________________________________________
Nombre: ___________________________________________________________________________
PROBLEMA 1 (2 puntos)
Dada la siguiente gramática independiente del contexto G=({a,b,c},{S,X,Y},S,P) donde P se define:
S → XY
X → cX | c
Y → aY | bY | bX | a | b
Justifique aplicando el método CYK si la cadena cabaa pertenece a L(G). Nota: Incluya la tabla de
análisis completa utilizada en dicho razonamiento),
La gramática de partida no está en Forma Normal de Chomsky. Para conseguirlo basta con lexicalizarla,
lo que nos conduce a la siguiente gramática:
S → XY
X → CX | c
Y → AY | BY |BX | a | b
A→a
B→b
C→c
Ahora sí podemos aplicar el método CYK sobre cabaa, lo que nos conduce a la siguiente tabla:
S
S
Y
S
Y
Y
S
Y
Y
Y
X,C
A,Y
B,Y
A,Y
A,Y
c
a
b
a
a
Puesto que el axioma pertenece a T[1,5], se verifica que cabaa es una cadena del lenguaje L(G).
Obtenga la expresión regular simplificada asociada para H(L(G)) considerando que h(a)=h(b)=1 y h(c)=0
La expresión que nos piden es 00*1(10*)*
Nota:
El lenguaje de la gramática es el siguiente L(G)= cc*(a+b)*(a+bc*)
Al aplicar el homomorfismo obtenemos H(L(G))= 00*(1+1)*(1+10*)
Al simplificar H(L(G)) obtenemos la expresión que nos piden 00*1*10*
UNIVERSIDAD DE SEVILLA – E. T. S. I. INFORMÁTICA
AMPLIACIÓN DE LENGUAJES FORMALES Y AUTÓMATAS
EXAMEN DE DICIEMBRE– CURSO 2004/2005
Apellidos: ___________________________________________________________________________
Nombre: ___________________________________________________________________________
PROBLEMA 2 (2 puntos)
Obtenga, utilizando el método de Kleene, la expresión regular simplificada que representa al lenguaje
reconocido por el siguiente AF:
M
→q0
q1
*q2
0
q1
q1
q2
1
q2
q0
q2
NOTA: Dibuje la tabla completa y especifique claramente cuál es la expresión regular que representa al
lenguaje reconocido por M.
k=0
k=1
k=2
k=3
R
λ
λ
λ + 0(0 + 10) ∗ 1
λ + 0(0 + 10) ∗ 1
R
0
0
0(0 + 10) ∗
0(0 + 10) ∗
R
1
1
1 + 0(0 + 10) ∗ 11
(1 + 0(0 + 10) ∗ 11)(0 + 1) ∗
1
1
(0 + 10) ∗ 1
(0 + 10) ∗ 1
λ+0
λ + 0 + 10
(0 + 10) ∗
(0 + 10) ∗
θ
11
(0 + 10) ∗ 11
(0 + 10) ∗ 11(0 + 1) ∗
R31k
θ
θ
θ
θ
R32k
θ
θ
θ
θ
R33k
λ + 0 +1
λ + 0 +1
λ + 0 +1
(0 + 1) ∗
k
11
k
12
k
13
R21k
R
R
k
22
k
23
El lenguajes es L(M)=R313 es decir L(M)=(1+0(0+10)*11)(0+1)*
UNIVERSIDAD DE SEVILLA – E. T. S. I. INFORMÁTICA
AMPLIACIÓN DE LENGUAJES FORMALES Y AUTÓMATAS
EXAMEN DE DICIEMBRE– CURSO 2004/2005
Apellidos: ___________________________________________________________________________
Nombre: ___________________________________________________________________________
PROBLEMA 3 (3 puntos)
El ADN está formado por pares de 4 tipos de moléculas denominadas bases (adenina, timina, guanina y
citosina). La adenina se empareja con la timina mientras que la citosina se empareja con la guanina. Las
bases de ARN se ordenan de la misma forma aunque en lugar de timina, existe el uracilo. En un
laboratorio que analiza estos componentes, se genera un fichero donde se registran los fragmentos de
pares de bases consecutivos hallados en diferentes secuencias de ADN o ARN. Un ejemplo sería:
Sec0 = <[(G;C)(A;T)][(A;T)(C;G)]>
Sec123 = <[(A;U)(C;G)(U;A)]>
Sec55= <[(A;T) (A;T) (C;G) (T;A)][ (C;G) (G;C)]>
NOTA: A=adenina, T=Timina, G=Guanina y C=Citosina.
Diseñe y atribuya una gramática en bison para reconocer y almacenar los datos descartando los pares de
bases no permitidos y almacenando por separado las secuencias de ADN y ARN. Para la atribución sólo
se podrá usar las funciones incluidas en la siguiente biblioteca
Lista *Agrega_Enlace_a_Lista(Lista *l, Enlace *e);
Secuencia *Agrega_Lista_a_Secuencia(Secuencia *s, Lista *l);
int Comprueba_Tipo_Secuencia(Secuencia *s); //1=ADN,2=ARN
Conjunto *Crea_Conjunto();
Enlace *Crea_Enlace(char *base1, char *base2);
Secuencia *Crea_Secuencia();
int Es_Valido_Enlace(Enlace *e);
void Guarda_Secuencia_ADN(char *id, Secuencia *s);
void Guarda_Secuencia_ARN(char *id, Secuencia *s);
entrada
secuencia
lista_conj
conj_pares
: entrada secuencia
|
;
: ID '=' '<' lista_conj '>'
{if (Comprueba_Tipo_Secuencia($4) == 1)
Guarda_Secuencia_ADN($1, $4);
else
Guarda_Secuencia_ARN($1, $4);}
;
: lista_conj conj_pares
{$$=Agrega_Lista_a_Secuencia($1,$2);}
|
{$$=Crea_Secuencia();}
;
: '[' lista_pares ']'
{$$= $2;}
;
lista_pares : lista_pares par
{if (Es_Valido_Enlace($2))
$$=Agrega_Enlace_a_Lista($1,$2);
else
$$=$1;}
|
{$$= Crea_lista();}
;
par : '(' ID ';' ID ')'
{$$=Crea_Enlace($2,$4);}
Descargar