You are on page 1of 6

SOLUCIONES

TEORA DE AUTMATAS Y LENGUAJES FORMALES


Segundo curso de Ingeniera Tcnica en Informtica de Sistemas
Escuela Politcnica Superior
Universidad de Crdoba
Examen de la convocatoria de junio: 21 de junio de 2004

1.- Lenguajes formales y la propiedad de interseccin


Indica y explica qu clases de lenguajes formales son cerradas respecto de la
propiedad de interseccin.
Indica y explica qu clases de lenguajes formales no son cerradas respecto de la
propiedad de interseccin.
2 puntos

Respuesta: se puede consultar en los temas 8, 11,13,14 y 15

2.- Dado el autmata finito determinista A

a b
a b
q1 a b q4
q0 q2 q3

Utiliza las ecuaciones caractersticas para construir la expresin regular


equivalente al autmata finito determinista A.

Respuesta:

Ecuaciones caractersticas:
x0 = a x1
x1 = a x2
x2 = a x1 + b x3
x3 = b x 4
x4 = b x3 +

Transformaciones
x3 = b x 4
= b (b x3 + ) Se sustituye x4 en x3
= b b x3 + b Se aplica la regla de inferencia
= (bb)* b

x1 = a x2 Se sustituye x2 en x1
= a (a x1 + b x3) Se sustituye x3 en x1
= a (a x1 + b (bb)* b) Se aplica la propiedad distributiva
= a a x1 + a b (bb)* b Se aplica la regla de inferencia
= (a a)* a b (bb)* b

x0 = a x1 Se sustituye x1 en x0
= a (a a)* a b (bb)* b
= a a (aa)* bb (bb)*

Expresin regular equivalente: aa (a a)* bb (bb)*

Transforma el autmata A para que reconozca el lenguaje complementario de


L(A).

Respuesta:

a b
a b
q1 a b q4
q0 q2 q3

b a
b
a

q5 a,b

25 puntos

3.- Disea una gramtica de contexto libre que permita generar las siguientes declaraciones
del lenguaje C:
float x, y[3][3];
int a[5];

Respuesta:

Reglas de produccin de una de las posibles gramticas:

1) S Declaracin ; S
2) S
3) Declaracin Tipo Variable Lista_variables
4) Tipo float
5) Tipo int
6) Variable identificador Dimensiones
7) Lista_variables , Variable Lista_variables
8) Lista_variables
9) Dimensiones [nmero] Dimensiones
10) Dimensiones

Si es necesario, elimina la recursividad por la izquierda y factoriza por la


izquierda la gramtica diseada.

Respuesta:

La gramtica diseada no es recursiva por la izquierda y ya est factorizada


por la izquierda

Construye la tabla predictiva.

La regla 1) S Declaracin ; S
se aplica a S y a los elementos de
primero(Declaracin ; S )= primero(Declaracin)
= primero(Tipo Variable Lista_variables)
= primero(Tipo)=
= primero(float) primero(int)
={float} { int}
= {float,int}

La regla 2) S
se aplica a S y a los elementos de
siguiente (S )= {$}

La regla 3) Declaracin Tipo Variable Lista_variables


se aplica a Declaracin y a los elementos de
primero(Tipo Variable Lista_variables)
= primero(Tipo)
= primero(float) primero(int)
={float} { int}
= {float,int}

La regla 4) Tipo float


se aplica a Tipo y a los elementos de
primero(float) = {float}

La regla 5) Tipo int


se aplica a Tipo y a los elementos de
primero(int) = {int}

La regla 6) Variable identificador Dimensiones


se aplica a Variable y a los elementos de
primero(identificador Dimensiones )=primero(identificador)
={ identificador}

La regla 7) Lista_variables , Variable Lista_variables

se aplica a Lista_variables y a los elementos de


primero(, Variable Lista_variables )= primero(,)={,}

La regla 8) Lista_variables
se aplica a Lista_variables y a los elementos de
siguiente(Lista_variables )= siguiente(Declaracin)={ ; }

La regla 9) Dimensiones [nmero] Dimensiones


se aplica a Dimensiones y a los elementos de
primero([nmero] Dimensiones)= primero([)= { [ }

La regla 10) Dimensiones


se aplica a Dimensiones y a los elementos de
siguiente(Dimensiones)= siguiente(Variable)
= primero (Lista_variables)
siguiente (lista_variables)
= {, }
siguiente (Declaracin)
= {, } {;} = {,, ;}

; float int identificador , [ nmero ] $


S 1 1 2
Declaraciones 3 3
Tipo 4 5
Variable 6
Lista_variables 8 7
Dimensiones 10 10 9

Utiliza la tabla predictiva para analizar conjuntamente las declaraciones citadas


como ejemplos.

Respuesta:

Se utilizan las siguientes abreviaturas: identificador = id, nmero = n


Pila Entrada Accin
$S float id, id [n][n];int id[n];$ Regla 1)
S Declaracin ; S
$S ; Declaracin float id, id [n][n];int id[n];$ Regla 3)
Declaracin Tipo
Variable Lista_variables
$S ; Lista_variables float id, id [n][n];int id[n];$ Regla 4) Tipo float
Variable Tipo

$S ; Lista_variables float id, id [n][n];int id[n];$ Emparejar


Variable float

$S ; Lista_variables id, id [n][n];int id[n];$ Etc.


Variable

3 puntos

4.- Considera el lenguaje L = {a i b 2i| i>0}:


Construye una mquina de Turing que reconozca a L.

Respuesta:
Estrategia:
1. Se marca una a con A y se avanza hacia la derecha hasta que se
marquen dos b con B.
2. Se retrocede hasta que se encuentra la primera A por la derecha ,
se da un paso a la derecha y se repite el proceso.
3. Si al principio se encuentra una B entonces se comprueba que
slo hay B.

a/a,D
B/B,D
B/B,I
a/A,D b/B,D b/B,I a/a,I
q0 q1 q2 q3

B/D,D A/a,D

#/#,P
q4 q5

B/B,D
Transforma la mquina de Turing anterior para que compute la funcin
caracterstica de L.
Respuesta:
Estrategia:
1. Si la palabra es reconocida, se retrocede hasta el principio, se
borran todos los smbolos y se escribe un 1.
2. Si la palabra no es reconocida, se introducen las transiciones no
definidas previamente, las cuales permiten ir al principio de la
cadena, borrarla y escribir un 0.

B/B,I
a/a,I b/b,I
a/a,D A/A,I B/B,I A/A,I a/a,I
B/B,D #/#,P a/a,I #/#,P A/A,I
B/B,I A/A,I b/b,I
a/A,D b/B,D b/B,I a/a,I #/#,P B/B,I
q1 q6
q0 q2 q3

a/a,I
B/D,D A/a,D b/B,I
#/#,D A/A,I
#/#,P
b/b,I
#/#,I #/1,P
q4 q5 q8 q7
#,/0,P a/#,D
B/#,I A/#,D
B/B,D A/#,I b/#,D
B/#,D

Aplica la segunda mquina de Turing a la cadena aabbbb.

Respuesta:
(q0,aabbbb) |- (q1,Aabbbb) |- (q1,Aabbbbb) |- (q2,AaBbbb) |- (q3,AaBBbb)
|-*(q3,AaBBbb) |- (q0,AaBBb) |- (q1,AABBbb) |-* (q1,AABBbb)
|- (q2, AABBBb) |- (q3,AABBBB) |-* (q3,AABBbb) |- (q0,AABBBB)
|- (q4,AABBBB) |-* (q4,AABBBB#) |- (q5,AABBBB#)
|-* (q5,#######) |-* (q8,1######)

25 puntos

You might also like