Beruflich Dokumente
Kultur Dokumente
So
Por otra parte si tenemos 2 autmatas M1 y M2, podemos unirlos para formar un
AFND que acepte L(M1) L(M2). Se requiere un autmata que reconozca una
cadena de L(M1) y a continuacin una de L(M2). Esto se realiza pasando del
estado final de M1 al estado inicial de M2 a travs de una transicin .
Por ejemplo:
a
r s
b
t u
Aceptan los lenguajes {a} y {b} respectivamente. As, el autmata que acepta el
lenguaje {ab} es:
a
r s
b
t u
Es importante resaltar que el autmata resultante tendr como estado inicial, el
estado inicial de M
1
y como conjunto de estados finales, el conjunto de estados
finales de M
2
. Por lo tanto el AFND que acepta L(M
1
) L(M
2
) est dado por:
Q = Q
1
Q
2
So = So
1
F = F
2
=
1
2
(F
1
x {} x {So
2
})
La funcin de transicin resultante, incluir todas las transiciones presentes en
ambos autmatas junto con todas las ternas de la forma (q,,So
2
), donde q es un
estado de aceptacin de M
1
, es decir So
2
(q,) para todo q F
1
.
Por otra parte se puede deducir un procedimiento para construir un AFND que
acepte L(M)* para un AFND M = (Q, , So, F, ), como sigue:
Primero, se agrega un nuevo estado inicial s'; adems, este nuevo estado ser de
aceptacin, con el fin de que se acepte . Se agrega una transicin desde s' al
antiguo estado inicial de M, So. Se agregar, adems, una transicin desde
todos los estados de aceptacin de M hasta s'. El autmata resultante ser:
M' = (Q', , s', F', ')
donde:
Q' = Q {s'}
F' = {s'}
' = {(s',,So)} (F x {} x {s'})
Ejemplo: Sea el AFND M que acepta el lenguaje dado por ab*:
M:
a b
b
L(M)* se construye aplicando el procedimiento anterior:
M:
a b
b
S
L(M) : (ab*)*
Teorema: El conjunto de lenguajes aceptados por un autmata finito sobre el
alfabeto contiene el lenguaje y los lenguajes unitarios {a} para todo a .
Este conjunto es cerrado con respecto a la unin, concatenacin y cerradura de
estrella.
Este teorema implica que todo lenguaje regular es aceptado por un autmata
finito.
Sea el autmata finito M = (Q, ,So,F,) y supongamos que So = q
0
es el estado
incial. Se define:
A
i
= {w * e(q
i
,w) F }
A
i
es el conjunto de las cadenas sobre * que hacen que M pase desde q
i
hasta
un estado de aceptacin. Se dice que A
i
es el conjunto de las cadenas aceptadas
por el estado q
i
. Es importante notar que A
0
= L(M). Adems, es posible que A
i
= .
Si q
i
F, entonces Ai. Como ejemplo, considrese el siguiente AFND:
q
0
q
1
q
2
q
4
q
3
q
5
a
a
a
a,b
a,b
b
b
b
A
5
=
A
2
=
A
4
=
A
1
= b
A
3
= a
A
0
= ab ba
Del autmata anterior se deduce:
(q
0
,a) = {q
1
}, es decir q
1
(q
0
,a), por lo tanto A
0
contiene a: aA
1
. En general, si:
q
j
(q
i
,w) implica que A
i
contiene a wA
j
. De hecho se tiene que:
A
i
= {wA
j
q
j
(q
i
,w)}
Esto proporciona las tcnicas bsicas para obtener una expresin regular a partir
de un autmata finito. Consideremos el ejemplo anterior, tenemos:
A
0
= a A
1
b A
3
A
1
= b A
2
a A
5
A
2
= a A
5
b A
5
A
3
= a A
4
b A
5
A
4
= a A
5
b A
5
A
5
=
As, tenemos un sistema de ecuaciones que se cumplen para L(M). Sustituyendo
se obtiene:
L(M) = ab ba = A
0
Considrese ahora el siguiente autmata:
a
b
q
0
q
1
A
0
= a A
0
b A
1
; A
1
=
Resolviendo y sustituyendo resulta que A
0
= a A
0
b, y no es posible simplificarlo
ms. El siguiente lema muestra como resolver este problema:
Lema de Arden: Una ecuacin de la forma X = AX B, donde A tiene una
solucin nica X = A*B.
En el ejemplo anterior, al aplicar el lema de Arden queda A
0
= a*b, que es lo que
intuitivamente se deduce del diagrama.
Ejemplo: Considrese el siguiente autmata:
q
0
q
1
q
2
q
3
q
4
a b
b
b
a a a b
A
0
= aA
1
; A
1
= aA
2
bA
4
; A
2
= aA
3
bA
4
A
3
= aA
3
bA
4
; A
4
= bA
4
Sustituyendo y aplicando el lema de Arden, tenemos:
A
4
= bA
4
= bA
4
= b* = b* (por lema de Arden)
A
3
= aA
3
bb* = aA
3
b
+
= a*( b
+
) = a*b*
A
2
= aa*b* bb* = a
+
b
*
b
+
A
1
= a(a
+
b* b
+
) bb* = aa
+
b* ab
+
b
+
A
0
= aA
1
= a(aa
+
b* ab
+
b
+
)
A
0
= a
2
a
+
b* a
2
b
+
ab
+
Lema: Sea M un autmata finito. Entonces existe una expresin r para la cual:
L(r) = L(M)
Teorema de anlisis de Kleene: Si L es un lenguaje aceptado por un autmata
finito M entonces existe una expresin regular tal que L = L(M) = L().
Podemos suponer que el autmata finito M no tiene -transiciones (si las tuviera
ya sabemos que podemos encontrar autmata equivalente sin -transiciones). Sea
M = (Q, V,, q
0
, F). A partir de este autmata podemos obtener un sistema de
ecuaciones de expresiones regulares que llamaremos ecuaciones caractersticas
del autmata. Estas ecuaciones se obtienen a partir del diagrama de transicin del
autmata del siguiente modo:
A cada nodo qi le corresponde una ecuacin y cada estado se puede considerar
como una incgnita de la ecuacin.
La ecuacin para el estado qi tiene en el primer miembro el estado qi y el segundo
miembro de la ecuacin est formado por una suma de trminos, de forma que por
cada arco del diagrama de la forma q
i
a
q
j
tenemos un trmino aq
j
. Si el
estado q
i
es final, aadimos adems el termino al segundo miembro.
Cada incgnita qi del sistema de ecuaciones representa el conjunto de palabras
que nos llevan del nodo qi a un estado final, en el diagrama de transicin. Por
tanto, si resolvemos el sistema de las ecuaciones caractersticas del autmata
tendremos soluciones de la forma qi =
i
, donde
i
es una expresin regular sobre
el alfabeto V y como hemos dicho el lenguaje descrito por esta expresin regular
es:
L(i) = {w V | (qi,w) (qF , ) , qF F} (3.1)
El mtodo que se propone para obtener una expresin regular a partir de un AF
es el siguiente:
1. Obtener las ecuaciones caractersticas del autmata;
2. Resolver el sistema de ecuaciones;
3. solucin para el estado inicial;
Para comprobar que este mtodo es vlido tendramos que probar que se cumple
L(i) = {w V | (qi,w) (qF , ) , qF F} (3.1) para toda solucin qi = i del
sistema de ecuaciones, y en particular la solucin para el estado inicial es la
expresin regular correspondiente al autmata. Aunque no lo vamos a demostrar
formalmente, por la forma de obtener las ecuaciones caractersticas del autmata
y la validez del mtodo de resolucin de sistemas de ecuaciones de expresiones
regulares. En realidad, no es necesario resolver todas las incgnitas, slo
necesitamos despejar la incgnita correspondiente al estado inicial.
Ejemplo Consideremos de nuevo el autmata finito M
Las ecuaciones caractersticas correspondientes a este autmata son:
q0 = 0q0 + 1q1
q1 = 0q0 + 1q2 +
q2 = 1q1 + 0q2
Comenzando por la ltima ecuacin se tiene que q2 = 01q1 y sustituyendo en la
segunda ecuacin queda q1 = 0q0 + 101q1 +
de donde se obtiene que q1 = (101) (0q0 + ) y este valor se sustituye en la
primera ecuacin q0 = 0q0 + 1 (101) (0q0 + ) = 0q0 + 1 (101) 0q0 + 1
(101)
Esta ecuacin es fundamental y por el lema de Arden tiene como nica solucin
q0 = (0 + 1 (101) 0) 1 (101)
y por tanto (0 +1 (101) 0)1(101) es la expresin regular que describe el
lenguaje L(M).
Teorema de Sntesis de Kleene
Si L es un lenguaje asociado a una expresin regular entonces existe un
autmata finito M tal que L = L() = L(M).
Demostrar por induccin sobre el nmero de operadores de (+, , ) que existe
un AFND- M con un slo estado final sin transiciones y distinto del estado inicial,
de forma que L() = L(M).
Base.- (cero operadores) puede ser: , , a, donde a V. Los autmatas que
aceptan el lenguaje vaco, el lenguaje {} y el lenguaje {a}, son, por este orden, los
siguientes: (a), (b) y (c)
Induccin.- (uno o ms operadores en ). Supongamos que se cumple la hiptesis
para expresiones regulares de menos de n operadores. Sean las expresiones
regulares 1 y 2 donde op(1), op(2) < n. Entonces, por hiptesis existen dos
autmatas finitos M1 y M2 tal que L(M1) = L(1) y L(M2) = L(2),
donde M1 = (Q1, V1,1, q1, {f1}) yM2 = (Q2, V2, 2, q2, {f2})
y podemos suponer sin prdida de generalidad que Q1 Q2 = . Estos
autmatas podemos representarlos esquemticamente como:
Supongamos que tenemos una expresin regular con n operadores. Vamos a
construir un autmata M tal que L(M) = L() y para eso distinguimos tres casos
correspondientes a las tres formas posibles de expresar en funcin de otras
expresiones regulares con menos de n operadores.
= 1 + 2 tal que op(1), op(2) < n. Los autmatas correspondientes a 1 y 2
son respectivamente M1 y M2, como hemos dicho antes. A partir de M1 y M2
construimos otro autmata M = (Q1 Q2 {q0, f0} , V1 V2,, q0, {f0}) donde
se define como:
a) (q0, ) = {q1, q2}
b) (q, ) = 1(q, ), q Q1 {f1}, V1 {}
c) (q, ) = 2(q, ), q Q2 {f2}, V2 {}
d) (f1, ) = (f2, ) = {f0}
M se puede representar grficamente del siguiente modo:
Cualquier camino de q
0
a f
0
debe pasar forzosamente a travs del autmata M
1
o
del autmata M
2
. Si una cadena w es aceptada por M, entonces debe ser
aceptada tambin por M
1
o por M
2
.
Es decir, L(M) = L(M1) L(M2) =
= L(1) L(2), por hiptesis de induccin
= L(1 + 2), por definicin de lenguaje asociado a 1 + 2
= L(), como queramos demostrar.
2. = 1 2 tal que op(1), op(2) < n. A partir de M1 y M2 construimos otro
autmata
M = (Q1 Q2, V1 V2,, q1, {f2}) donde se define como:
a) (q, ) = 1(q, ), q Q1 {f1}, V1 {}
b) (f1, ) = {q2}
c) (q, ) = 2(q, ), q Q2, V2 {}
M se puede representar esquemticamente como:
Cualquier camino de q1 a f2 debe pasar forzosamente a travs del autmata M1 y
del autmata M2. Si una cadena w es aceptada por M, entonces esa cadena se
puede descomponer como w = w1.w2, de forma que w1 debe ser aceptada por M1
y w2 por M2. Segn esto, L(M) = L(M1) L(M2) =
= L(1) L(2), por hiptesis de induccin
= L(1 2), por definicin de lenguaje asociado a 1 2
= L(), como queramos demostrar.
3. = (1) tal que op(1) = n1. El autmata correspondiente a 1 es M1, a
partir del cual construimos otro autmata M = (Q1 {q0, f0} ,V1,, q0, {f0}) donde
se define como:
a) (q0, ) = (f1, ) = {q1, f0}
b) (q, ) = 1(q, ), q Q1 {f1}, V1 {}
M se puede representar del siguiente modo:
Este autmata acepta cadenas de la forma w = w1w2 . . . wj , donde j 0 y cada
subcadena wi es aceptada por M1. Por tanto,
, por hiptesis de induccin
= (L(1)) , por definicin de clausura de un lenguaje
= L(1), por definicin de lenguaje asociado a
= L(), como queramos demostrar.
Ejemplo Siguiendo el mtodo anterior, en la figura siguiente se ha construido un
autmata para la expresin regular 01* +1, donde M
1
representa el autmata para
la expresin regular 0, M
2
representa 1* y M
3
la expresin regular 1. En el
autmata final se han integrado simultneamente los autmatas para la
concatenacin (0 con 1*) y la suma de expresiones regulares 01*+1.
Este mtodo de construccin de AFs para expresiones regulares est pensado para ser
implementado de forma automtica mediante un programa. Se puede haber pensado en
el siguiente autmata:
LECCION 14. - PROPIEDADES DE LOS LENGUAJES REGULARES
11
n los AFN es posible aplicar mtodos modulares de diseo, que permiten
manejar mejor la complejidad de los problemas. Son estos mtodos
modulares.
AFN para la unin de lenguajes
Si ya contamos con dos AFN, sean M
1
y M
2
, es posible combinarlos para hacer un
nuevo AFN que acepte la unin de los lenguajes que ambos autmatas
aceptaban.
Sean M1 = (K1,1,1, s1, F1) y M2 = (K2, 2, 2, s2, F2) dos autmatas que aceptan
los lenguajes L1, L2. Podemos entonces construir un AFN M3 que acepte L1 L2 de
la siguiente manera: Sea q un nuevo estado que no est en K1 ni en K2. Entonces
11
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En:
http://lizt.mty.itesm.mx/~rbrena/AyL.html
E
hacemos un autmata M3 cuyo estado inicial es q, y que tiene transiciones vacas
de q a s1 y a s2. Esta simple idea permite escoger en forma no determinista entre ir
al autmata M1 o a M2, segn el que convenga: si la palabra de entrada w est en
L1, entonces se escoge ir a M1,,,,, y en contraposicin a M2 para L2.
Formalmente M3 = (K1 K2 {q}, 1 2, 1 2 {(q, , s1), (q, , s2)}, q, F1
F2).
En la figura siguiente se representa grficamente M3.
_Figura 14: AFN para la unin de dos lenguajes
Ejemplo.- Disear un autmata no determinista que acepte las palabras sobre {a,
b} que tengan un nmero par de a o que terminen en bb.
Solucin.- En la figura 15(a) se presenta un AFN que acepta las palabras que
contienen un nmero par de as, y en 15(b) otro que acepta las palabras que
terminan en bb. Finalmente, en 15(c) est el AFN que acepta el lenguaje dado.
Figura 15: Unin de dos lenguajes, Combinacin de AFN
AFN para la concatenacin de lenguajes
Similarmente al caso anterior, sean M
1
= (K
1
,
1
,
1
, s
1
, F
1
) y M
2
= (K
2
,
2
,
2
, s
2
, F
2
)
dos autmatas que aceptan los lenguajes L
1
, L
2
respectivamente. Podemos
entonces construir un AFN M
3
que acepte L
1
L
2
de la siguiente manera: Aadimos
unas transiciones vacas que van de cada uno de los estados finales de M1 al
estado inicial de M
2
; tambin se requiere que los estados finales de M1 dejen de
serlo.
Formalmente M
3
= (K
1
K
2
,
1
2
,
1
2
{(p, , s
2
) | p F
1
}, s1, F
2
)
El funcionamiento de M
3
es como sigue:
cuando se recibe una palabra w = w
1
w
2
, w
1
L
1
, w
2
L
2
, entonces se empieza
procesando w
1
exactamente como lo hara M
1
, hasta llegar hasta alguno de los
antiguos estados finales de M
1
; entonces se empieza procesando w
2
como lo hara
M
2
; forzosamente debe ser posible llegar a un estado final de M
2
, ya que por
hiptesis M
2
acepta w
2
. En la figura 16 se representa M
3
.
Figura 16: Concatanacin de dos lenguajes,Combinacin de AFNs
Ejemplo.- Construir un AFN que acepte el lenguaje en {a, b} donde las as vienen
en grupos de al menos dos seguidas, y los grupos de as que son repeticiones de
aaa estn a la derecha de los que son repeticiones de aa, como en baabaaa, aaa,
baab o baaaaa. Esta condicin no se cumple, por ejemplo, en bbaaabaa ni en
aaabaaaa.
Solucin.- Un AFN, ilustrado en la figura 17(a), acepta palabras que contienen bs
y grupos de aa en cualquier orden. Otro AFN figura 17(b) acepta un lenguaje
similar, pero con grupos de aaa. La solucin es su concatenacin, que se presenta
en la figura 17(c).
Figura 17: Concatenacin de dos AFN
LECCION 15. - EQUIVALENCIA DE AUTMATAS FINITOS DETERMINISTICOS
Y AUTMATAS FINITOS NO DETERMINSTICOS.
os autmatas finitos determinsticos (AFD) son un subconjunto propio de los no
determinsticos (AFN), lo que quiere decir que todo AFD es un AFN. Se puede
pensar entonces que los AFN son ms poderosos que los AFD, en el sentido de
que habra algunos lenguajes aceptados por algn AFN para los cuales no hay
ningn AFD que los acepte. Sin embargo, en realidad no sucede as.
Figura 18: AFN a transformar en AFD
Para todo AFN N, existe algn AFD D tal que L(N) = L(D).
Este resultado, sorprendente, pero muy til, puede probarse en forma constructiva,
proponiendo para un AFN cmo construir un AFD que sea equivalente.
El mtodo que se usa para pasar de un AFN a un AFD se basa en la idea de
considerar el conjunto de estados en los que podr encontrarse el AFN al haber
consumido una cierta entrada.
L
3.15.1. El mtodo de los conjuntos de estados
Dado un AFN M, consideremos la idea de mantener un conjunto de estados Q
i
en
los que sea posible estar en cada momento consumiendo las letras de una palabra
de entrada.
Por ejemplo, considrese el AFN de la figura 18. Se quiere analizar qu sucede
cuando este AFN recibe la palabra baaaaab. Para ello, se lleva el registro de los
conjuntos de estados en los que pueda encontrarse el AFN. Inicialmente, podr
encontrarse en el estado inicial q0, pero sin gastar ningn caracter puede estar
tambin en el estado q1, o sea que el proceso arranca con el conjunto de estados
Q0 = {q0, q1}. Al consumirse el primer caracter, b, se puede pasar de q0 a q0 o
bien a q1 (pasando por el ), mientras que del q1 slo se puede pasar a q1.
Entonces, el conjunto de estados en que se puede estar al consumir la b es Q1 =
{q0, q1}. Y as en adelante.
La tabla siguiente resume los conjuntos de estados por los que se va pasando
para este ejemplo:
Entrada Estados
{q0,q1}
b {q0,q1}
a {q2,q4}
a {q0,q1,q3}
a {q1,q2,q4}
a {q0,q1,q3,q4}
a {q1,q2,q3,q4}
b q1
Puesto que el ltimo conjunto de estados {q
1
} incluye a un estado final, se
concluye que la palabra de entrada puede ser aceptada. Otra conclusin es que si
se considera a los conjuntos de estados Q
i
como una especie de mega-estados
de cierto autmata, entonces se han estado siguiendo los pasos de ejecucin de
un AFD con mega-estados.
Una vez se comprenda lo anterior, se cocluye que, si en vez de considerar una
palabra en particular, como fue baaaaab, se considera cada posible caracter que
puede llegar a estar en un mega-estado, entonces se puede completar un AFD,
que ser equivalente al AFN dado. Para poder ser exhaustivos, se necesita
organizar las entradas posibles de manera sistemtica.
Ejemplo: Considrese el problema de transformar a AFD el AFN de la figura 18.
Se consideran el conjunto de estados del AFN en los que puede encontrarse ste
en cada momento. El conjunto inicial de estados estar formado por los estados
del AFN de la figura 18 en los que puede estar antes de consumir el primer
caracter, esto es, q
0
y q
1
. Dicho conjunto aparece en la figura 19(a).
A partir de ah, tras recibir un caracter a, el AFN puede encontrarse ya sea en q
2
o
en q
4
, los cuales se incluye un nuevo conjunto de estados, al que se llega con una
transicin con a, como se ilustra en la figura 19(b); similarmente, a partir del
conjunto inicial de estados {q
0
, q
1
} con la letra b se llega al mismo conjunto {q
0
, q
1
},
lo cual se representa con un lazo as mismo en la figura 19(b).
Con este mismo procedimiento se siguen formando los conjuntos de estados; por
ejemplo, a partir de {q
2
, q
4
}, con una a se pasa a {q
3
, q
0
, q
1
}. Continuando as, al
final se llega al diagrama de la figura 19(c).
Un detalle importante a observar en este procedimiento es que en ocasiones no
hay estados adonde ir; por ejemplo, a partir del conjunto de estados {q
2
, q
4
}, con b
no se llega a ningn estado. En casos como este, se considera que habr una
transicion con b a un nuevo conjunto de estados vacos, esto es {}, como se
aprecia en la figura 19(c). Por supuesto, este estado vaco tendr transiciones con
a y con b igualmente.
Figura 19: Transformacin de un AFN a un AFD
Si se ven los crculos como estados, se ha construido un AFD. Unicamente falta
determinar cuales de los nuevos estados son finales y cuales no. Obviamente, si
uno de los conjuntos de estados contiene un estado final del antiguo AFN, esto
muestra que es posible que en ese punto el AFN hubiera aceptado la palabra de
entrada, si sta se terminara. Por lo tanto, los estados finales del nuevo autmata
sern aquellos conjuntos de estados que contengan algn estado final. As, en el
AFD de la figura 19(d) se marcan los estados finales; adems se borran los
estados del antiguo AFN de cada uno de los crculos, y se bautizan cada conjunto
de estados como un estado.
3.15.2. Una transformacin inofensiva
Cuando se quiere aplicar el mtodo descrito en los prrafos precedentes, una
dificultad que puede presentarse es que algunas flechas del autmata tienen como
etiquetas palabras de varias letras, y desde luego no podemos tomar un pedazo
de una transicin. Esta situacin se aprecia en el AFN de la figura 20. En efecto, si
a partir del estado inicial se intenta consumir la entrada a, se observa que no hay
una transicin que permita hacerlo, an cuando hay una transicin (q0, aa, q1)
cuya etiqueta empieza con a.
Una solucin a esta dificultad es normalizar a 1 como mximo la longitud de las
palabras que aparecen en las flechas. Esto puede hacerse intercalando |w| 1
estados intermedios en cada flecha con etiqueta w. As, por ejemplo, de la
transicion (q
1
, aaa, q
1
) de la figura 20, se generan las transiciones siguientes: (q
1
,
a, q
2
), (q
2
, a, q
3
), (q
3
, a, q
1
), donde los estados q
2
y q
3
son estados nuevos
generados para hacer esta transformacin.
Con esta transformacin se puede pasar de un AFN cualquiera M a un AFN M
0
equivalente cuyas transiciones tienen como maximo un caracter. Esta
transformacin es inofensiva en el sentido de que no altera el lenguaje aceptado
por el AFN.
Por ejemplo, para el AFN de la figura 20 se tiene el AFN transformado de la figura
18.
Figura 20: AFN Con transicin de varias letras.
3.15.3. Formalizacin del algoritmo de conversin
Ahora se va a precisar el mtodo de conversin de AFN a AFD con suficiente
detalle como para que la programacin en computador sea relativamente sencilla.
Sin embargo, no se va a describir el algoritmo en trminos de ciclos, instrucciones
de asignacin, condicionales, etc., que son tpicos de los programas imperativos.
Se va a presentar un conjunto de definiciones que capturan los resultados
intermedios en el proceso de conversin de AFN a AFD. Estas definiciones
permiten programar en forma casi directa el algoritmo de conversin, si se utiliza
un lenguaje de programacin adecuado, preferentemente de tipo funcional, como
por ejemplo Scheme.
Este ejemplo se va a ir presentando con las definiciones partiendo de la ms
sencilla, hasta llegar a la ms compleja.
Primero introducimos una funcin transicion(q, ), que a partir de un estado q y un
caracter dado obtiene el conjunto de estados a los que se puede llegar desde q
directamente gastando el caracter . Por ejemplo, tomando el AFN de la figura 21,
tenemos que transicion(q
0
, b) = {q
0
, q
1
}. Similarmente, transicion(q
1
, b) = {q
1
}, y
transicion(q
3
, a) = {}.
Se puede definir matemticamente de la forma siguiente:
transicin(q, ) = {p | (q, , p) }
Sin embargo, esta definicin no toma en cuenta el hecho de que a veces es
posible tener transiciones que no gastan ningn caracter -aquellas marcadas con
. As, en la figura 18, se puede pasar de q
2
a q
0
y luego continuar de q
0
a q
1
, por
lo que en realidad se tiene que considerar a q
1
como uno de los estados a los que
se puede llegar desde {q
1
, q
2
} gastando una a. Por lo tanto, hay que modificar la
definicin anterior.
Se define una funcin auxiliar cerr-(q) que es el conjunto de estados a los que se
puede llegar desde el estado q pasando por transiciones vacas. Adems, si con
una transicin vaca se llega a otro estado que tambin tiene transiciones vacas,
hay que continuar aadiendo a cerr- (q) los estados a los que se llegue, hasta
que no sea posible aadir nuevos estados. Por ejemplo, en la figura 21, cerr - (q
1
)
= {q
1
, q
2
, q
4
}, cerr-(q
2
) = {q
2
, q
4
}, y cerr-(q
0
) = {q
0
}.
Figura 21: AFN con transiciones vacias
cerr - (q) se acostumbra llamar cerradura al vaco porque matemticamente es la
cerradura de q con la relacin {(x, y) | (x, , y) }.
La funcin cerr-(q) se puede definir como sigue:
La cerradura al vaco cerr-(q) de un estado q es el ms pequeo conjunto que
contiene:
1. Al estado q;
2. Todo estado r tal que existe una transicion (p, , r) , con p cerr - (q).
Es fcil extender la definicin de cerradura al vaco de un estado para definir la
cerradura al vaco de un conjunto de estados:
La cerradura al vaco de un conjunto de estados CERR- ({q
1
, ... , q
n
}) es
igual a cerr - (q
1
), ... , cerr- (q
n
).
Ejemplo. Sea el AFN de la figura 21. Entonces CERR-({q
1
, q
3
}) = {q
1
, q
2
, q
3
, q
4
}.
Con la funcin de cerradura al vaco ya estamos en condiciones de proponer una
versin de la funcin transicion que tome en cuenta las transiciones vacas.
Llamaremos a esta funcin transicion-, y la definimos de forma que transicion-
(q, ) sea el conjunto de estados a los que se puede llegar desde q gastando ,
inclusive pasando por transiciones vacas. El algoritmo es como sigue, para un
estado q y un caracter :
1. Calcular Q0 = cerr -(q)
2. Para cada estado de Q
0
, obtener transicion(q, ), y unir todos los conjuntos
obtenidos, dando por resultado un conjunto Q
1
.
3. transicion- (q, ) = CERR- (Q1).
Por ejemplo, tomando la figura 21, para calcular transicion-(q
1
, a), los pasos son
como sigue:
1. Q0 = {q
1
, q
2
, q
4
}
2. transicion(q
1
, a) = {q
1
}, transicion(q
2
, a) = {q
2
, q
3
}, y transicion(q
4
, a) = {}, por lo
que uniendo estos conjuntos, Q
1
= {q
1
, q
2
, q
3
}.
3. transicion-(q
1
, a) = CERR-({q
1
, q
2
, q
3
}) = {q
1
, q
2
, q
3
, q
4
}.
Como ltima definicin, es directo extender la funcin transicion-(q, ), que se
aplica a un estado y un caracter, a una funcin que se aplique a un conjunto de
estados y un caracter; llamamos a esta funcin TRANSICION-(Q, ), para un
conjunto de estados Q y un caracter . Simplemente aplicamos transicion-(q, )
para cada uno de los estados q Q, y juntamos los resultados en un solo
conjunto.
Por ejemplo, en la figura 21
TRANSICION- ({q0, q2}, a) = {q0, q2, q3, q4}.
Finalmente resumimos el proceso global de transformacin de un AFN a un AFD
en el siguiente algoritmo.
Algoritmo de transformacin AFN AFD:
Dado un AFN (K,,, s, F), un AFD equivalente se obtiene por los siguientes
pasos:
1. El conjunto de estados inicial es cerr -(s).
2. El alfabeto del AFD es el mismo del AFN.
3. Para cada conjunto de estados Q ya presente, hacer:
a) Aadir el conjunto de estados TRANSICION-(Q, ) para cada caracter del
alfabeto, si no ha sido creado an.
b) Aadir transiciones ((Q, ),Q
creado en el
paso anterior.
4. Los conjuntos de estados que contengan un estado en F sern finales.
Ms diseo de AFN: Interseccin de lenguajes
Los problemas de diseo de AFN en que se combinan dos condiciones que se
deben cumplir simultneamente son particularmente difciles de resolver. Un
ejemplo de estos problemas es: obtener un AFN que acepte las palabras que
contengan la cadena abb un nmero impar de veces y ba un nmero par de
veces.
Es mejor contar con un mtodo modular que permita combinar de una manera
sistemtica las soluciones parciales para cada una de las condiciones.Esto es
posible, si se considera la siguiente propiedad de la interseccin de conjuntos:
L
1
L
2
= (L
1
C
L
2
C
)
C
Esta frmula sugiere un procedimiento prctico para obtener un AFN que acepte la
interseccin de dos lenguajes dados. Esto se ilustra en el siguiente ejemplo.
Ejemplo.- Obtener un AF para el lenguaje en el alfabeto {a, b} en que las palabras
son de longitud par y adems contienen un nmero par de as. Este problema
parece bastante difcil, pero se vuelve fcil utilizando la frmula de interseccin de
lenguajes. En efecto, se inicia calculando los AFD para los lenguajes que cumplen
independientemente las dos condiciones.
El AFD M1 de la figura 22(a) acepta las palabras de longitud par, mientras que M2
de 2.32(b) acepta las palabras con un nmero par de as.
Ahora se obtienen los AFD que aceptan el complemento de los lenguajes de M1 y
M2, cambiando los estados finales por no finales y viceversa; sean M
1
C
M
2
C
Es muy importante notar que slo es posible complementar AFDs y no cualquier
AFN.
En efecto, si en un AFN simplemente se cambian estados finales por no finales y
viceversa, en general se llega a un resultado errneo (esto es, el autmata
resultante no es equivalente al original) Combinamos estos autmatas utilizando el
procedimiento para la unin de lenguajes, dando un AFN M3 (figura 22(c)), el cual
es convertido a un AFD M4. Finalmente, este AFD es simplificado y
complementado, dando M
4
c
(figura 22(d)), que es el autmata buscado.
Figura 22: Interseccin de dos AFN
ACTIVIDADES:
Ejercicios Propuestos:
1.- Obtener el lenguaje reconocido por el siguiente AFD:
A = ({a, b, c}, {q0, q1, q2, q3, q4}, f, q0, {q2})
f(q0, a) = q1 f(q0, b) = q4 f(q0, c) = q4
f(q1, a) = q4 f(q1, b) = q1 f(q1, c) = q2
f(q2, a) = q4 f(q2, b) = q4 f(q2, c) = q2
f(q3, a) = q4 f(q3, b) = q3 f(q3, c) = q2
f(q4, a) = q4 f(q4, b) = q4 f(q4, c) = q4
2.- Determinar el lenguaje que reconoce el siguiente AFD:
3.-Dado el autmata finito siguiente:
Definir la gramtica lineal izquierda que describe el mismo lenguaje reconocido por
el autmata.
4.-Decir cules de las siguientes palabras son reconocidas por el siguiente AFND:
110, 01, 100
AFND = ({0, 1}, {q0, q1, q2}, q0, {q1})
f(q0, 0) = f(q0, 1) = {q1, q2} f(q0, ) =
f(q1, 0) = {q0} f(q1, 1) = {q0, q1} f(q1, ) = {q0}
f(q2, 0) = {q2} f(q2, 1) = f(q2, ) = {q1}
5.- Determinar la pertenencia de las cadenas: aab, aba y ba, al lenguaje
reconocido por el siguiente AFND:
A = ({a,b}, {q1,q2,q3,q4}, f, q1, {q1}, {(q2,q4), (q3,q4), (q4,q3)})
f(q1,a) = {q2} f(q1,b) =
f(q2,a) = {q1,q3,q4} f(q2,b) = {q1,q3}
f(q3,a) = f(q3,b) = {q1,q4}
f(q4,a) = f(q4,b) = {q3}
MINIMIZACIN DE AUTMATAS FINITOS
6.-Obtener para cada uno de los siguientes autmatas finitos su autmata mnimo
Equivalente:
7.- Dada la gramtica lineal derecha: G = (T, N, S, P) T = {0, 1} .
N = {S, A} P = { S::= 1A | 1S, A::= 0A | 1A | 1 }
encontrar el autmata finito determinista (AFD) mnimo asociado.
8.-Dado el autmata finito:
(a) Construir el AFD mnimo equivalente
(b) Deducir el lenguaje que reconoce
9.- Encontrar el autmata mnimo equivalente al siguiente AFD:
10.- Construir el autmata finito determinista mnimo equivalente al siguiente:
11.- Encontrar el AFD mnimo equivalente al siguiente AFND:
Ejercicios Resueltos
12
:
Suponga que permitimos que los autmatas finitos cambien de un estado a otro
sin leer un smbolo de sus cintas de entrada. En un diagrama de transiciones, este
tipo de transiciones normalmente se representa como un arco con etiqueta en
vez de un smbolo del alfabeto; y se le conoce como transicin . Muestre que
cualquier diagrama de transiciones que tenga transiciones se puede modificar
para que ya no contenga este tipo de transiciones pero que a la vez acepte el
mismo lenguaje (el diagrama modificado puede ser no determinista).
12
Ingenieria Tcnica en Informatica de Sistemas y de Gestin de la UNED Espaa ASIGNATURA: TEORA DE UTMATAS
I Tutora del Centro Asociado de Plasencia en: URL http://dac.escet.urjc.es/lrincon/uned/ta1/ProblemasFinalCapitulo.pdf
Solucin: Pueden darse estos casos:
1.- La transicin conduce a un estado de cual salen otros arcos.
1.1 El estado al que conduce la transicin no es de aceptacin.
Esto significa que desde el estado 1, se puede pasar
a cualquiera de los estados E
1
, ..., E
j
, E
k
, leyendo
respectivamente x
1
, ..., x
j
, ...x
k
. Por lo cual podemos
eliminar el estado 2, sacando del 1 los mismos arcos
que salan del 2 (si los hubiera).
Resulta que ahora, el diagrama que
aparentemente era determinista, ya
no lo es. Hay dos arcos rotulados con la entrada x
k
.
1.2 El estado al que conduce la transicin es de aceptacin
Esto significa que desde el estado 1, se puede aceptar
la cadena sin leer ningn smbolo ms; o pasar a los
estados E
1
, ..., E
j
, E
k
, leyendo respectivamente x
1
, ...,
x
j
, ...x
k
.. En otras palabras, que el estado 1 es de
aceptacin. Por lo cual podemos eliminar el estado 2,
hacer de aceptacin el 1; y sacar del 1 los mismos
arcos que salan del 2.
2.- La transicin conduce a un estado de cual no salen otros arcos.
2.1 El estado al que conduce la transicin no es de aceptacin.
Esto significa que sea cual sea la entrada en el estado 1, se puede pasar a un
callejn sin salida. Y esta posibilidad podemos representarla sacando un arco
con cada entrada posible hacia el callejn sin salida.
x1
Es curioso, pero tiene su justificacin. Al fin y al cabo; si vamos a caer en ese
callejn sin salida (sin llegar a un estado de aceptacin), para los efectos del
anlisis de la cadena, da igual que leamos otra entrada ms (sea cual sea) o que
no la leamos.
2.2 El estado al que conduce la transicin es de aceptacin. El tratamiento es
igual que en 1.2
Esto significa que desde el estado 1, se puede aceptar la cadena sin leer ningn
smbolo ms. En otras palabras, que el estado 1 es de aceptacin. Por lo cual
podemos eliminar el estado 2 y hacer de aceptacin el 1.
Muestre que el lenguaje del alfabeto {x, y} que consiste en aquellas cadenas con
el mismo nmero de x e y es independiente del contexto determinista:
Solucin:
Comentarios: El estado inicial es de aceptacin,
para permitir cadenas con cero xs y cero ys.
Durante el estado X, el nmero de xs es mayor que
el de ys. Se introduce una x cada vez que se lee
una x; y se saca una x cada vez que se lee una y.
Si en algn momento se iguala este nmero
(smbolo # en la cima), se vuelve al estado F
Durante el estado Y, el nmero de ys es mayor que
el de xs. Se introduce una y cada vez que se lee una y; y se saca una y cada vez
que se lee una x. Si en algn momento se iguala este nmero (smbolo # en la
cima), se vuelve al estado F
Si durante el estado F se recibe FDC, la cadena queda aceptada.
Muestre que si L es un lenguaje independiente del contexto, entonces el lenguaje
que consiste en las cadenas de L escritas a la inversa tambin es independiente
del contexto.
Solucin:
Un lenguaje independiente del contexto se puede caracterizar mediante una
gramtica independiente del contexto que casi tiene la forma normal de
Chomsky. Las reglas de dicha gramtica pueden tener estas formas:
S (Nuevo smbolo inicial en el lado izquierdo y en el derecho para permitir
las cadenas vacas)
S x (Nuevo smbolo inicial en el lado izquierdo y un terminal en el lado derecho)
S AB (Nuevo smbolo inicial en el lado izquierdo y un par de no terminales en el
lado derecho)
S x (Antiguo smbolo inicial en el lado izquierdo y un terminal en el lado
derecho)
S AB (Antiguo smbolo inicial en el lado izquierdo y un par de no terminales en
el lado derecho)
Si en las reglas cuyo lado derecho son dos no terminales se invierte el orden de
dichos no terminales:
S
S x
S BA
S x
S BA
Resulta que las cadenas aceptadas son exactamente las inversas.
Ejercicios Resueltos.
13
Ejercicio 1- Define, de manera recursiva, el lenguaje L de las cadenas de
parntesis correctas.
(Es decir, (())() L, ()(() L)
SOLUCIN:
1. () L (aunque L, se puede considerar alternativamente que L para definir
con 2 y 3 las dems palabras).
2. Si x L, entonces (x) L .
3. Si x, y L, entonces x y L.
4. No hay ms palabras en L que las formadas por las reglas anteriores.
Ejercicio 2- Encuentra una expresin regular correspondiente al lenguaje de las
cadenas en {a, b}* que no empiezan por b y no contienen dos as consecutivas.
Construye un AFN- reconocedor de este lenguaje.
Una ER que describe el lenguaje es +a(b+ba)*. El AFN- se puede construir
directamente utilizando el Teorema de Kleene.
13
Ingeniera Superior en Informtica, Grupos A, B y C Teora de Autmatas y Lenguajes formales.
Examen Final-19 de Junio de 2003, Solucin Ejercicios
Ejercicio 3 (a) Define, mediante expresiones regulares, las clases de equivalencia
respecto a la relacin de distinguibilidad con respecto al lenguaje del ejercicio
anterior, utilizando para ello un conjunto distinguible mximo.
(b) Define completamente la operacin de concatenacin por la derecha de las
clases con las letras del alfabeto.
(c) Define a partir de (a) y (b) el AF mnimo.
SOLUCIN:
(a) Para encontrar un CDM, vamos estudiando las distintas palabras del lenguaje.
Empezamos comparando las palabras de longitud 1 con la palabra vaca y
entre s. Es fcil ver que {, a} es un conjunto distinguible (z = a). Tambin son
distinguibles {, b} (z = a) y {a, b} (z = b). Por tanto, {, a, b} es un conjunto
distinguible.
(b) En cuanto a las palabras de longitud 2, es fcil ver que aa es indistiguible de b,
que ba es indistinguible de b y que bb es indistinguible de b (son palabras que
no estn en el lenguaje y que, seguidas de cualquier cola, tampoco), mientras
que ab es distinguible de , a y b.
Con esto, es sencillo darse cuenta que si w es una palabra de longitud mayor o
igual que 3, resulta que:
(c) si w empieza por a, acaba por a y no contiene la subcadena aa, entonces es
indistinguible de a,
(d) si w empieza por a, acaba por b y no contiene la subcadena aa, entonces es
indistinguible de ab, y,
(e) si w empieza por b o contiene la subcadena aa, entonces es indistinguible de
b.
Por tanto, un CDM es {, a, b, ab}.
Las correspondientes clases de equivalencia vienen dadas por las siguientes ER:
[]
[a] a(b
+
a)*.
[ab] a(b
+
a)*b
+
[b] b(b + a)* + (b + a)*aa (b + a)*
Es sencillo ver que la unin de estas clases es {a, b}* y que la interseccin de
cada dos de ellas es vaca.
(b) La operacin de concatenacin a la derecha viene dada por
[]a = [a], []b = [b]
[a]a = [b], [a]b = [ab]
[b]a = [b], [b]b = [b]
[ab]a = [a], [ab]b = [ab]
(c) El AFD mnimo viene dado por la siguiente tabla (A-[], B-[a], C-[ab], D-[b]):
a b
*A B D
*B D C
*C B C
D D D
Ejercicio 4 Demostrar que el lenguaje L = {a
i
b
j
c
k
: j > i + k} no es regular,
utilizando el Lema de Bombeo.
SOLUCIN: Sea n la constante del Lema de Bombeo. Consideramos la palabra x
= a
n
b
2n+1
b
n
y consideramos todas las descomposiciones de x = uvw, con |uv| n y
|v| > 0. Por tanto, v est formado slo por as, y contiene al menos una. De esta
forma, uv
k
w L para todo k 2.
Ejercicio 5 Consideramos la siguiente tabla de transicin de un AFD:
a b
q1 q2 q1
q2 q2 q1
donde q1 es el estado inicial y q2 es el nico estado de aceptacin. Calcula una
expresin regular para el lenguaje reconocido por el autmata, utilizando el
mtodo de la demostracin del teorema de Kleene.
SOLUCIN: Utilizando la demostracin del Teorema de Kleene, basta calcular
R
(2)
1,2 = L(1, 2, 2). Aplicando R
(2)
1,2 = R
(1)
1,2 + R
(1)
1,2(R
(1)
2,2)*R
(1)
2,2, tenemos que
R
(0)
1,1 = + b, R
(0)
1,2 = a, R
(0)
2,1 = b, R
(0)
2,2 = + a
Por tanto, R
(1)
1,2 = a + (+ b)( + b)*a = b*a y R
(1)
2,2 = (+ a) + b(+ b)*a = + b*a.
Finalmente R = R
(2)
1,2 = b*a + (b*a)( + b*a)*( + b*a) = (b*a)
+
.
Ejercicio 6 Considera la gramtica incontextual G dada por: S SS | | ab
Demuestra que es ambigua. Encuentra una expresin regular que describa L(G) y
define una gramtica regular equivalente no ambigua.
SOLUCIN: Para ver que G es ambigua, mostramos dos derivaciones ms a la
izquierda para la palabra w = ab:
S SS abS ab
S ab
Una expresin regular que describe L(G) es (ab)*, y una gramtica incontextual
regular no ambigua que describe L(G) es S aB | ; B bS
(Es sencillo obtener esta gramtica a partir de un AFD que reconoce el lenguaje).
BIBLIOGRAFA DE LA UNIDAD
eBook Automatas y
Lenguajes:http://lizt.mty.itesm.mx/%7Erbrena/Libro/form2AyL.php de
ramon.brena@itesm.mx
IOST F. Hans, Teora de autmatas y lenguajes formales, CAPTULO 2, LENGUAJES
REGULARES Y AUTOMATAS FINITOS (2001) en:
http://iie.ufro.cl/~hansiost/automatas/Capitulo2.doc
INTRODUCCIN
Los lenguajes independientes del contexto que tambien se conocen con el nombre
de gramaticas de contexto libre son un mtodo recursivo sencillo de especificacin
de reglas gramaticales con las que se pueden generar cadenas de un lenguaje.
Es factible producir de esta manera todos los lenguajes regulares, ademas de que
existen ejemplos sencillos de gramaticas de contexto libre que generan lenguajes
no regulares.
Las reglas gramaticales de este tipo permiten que la sintaxis tenga variedad y
refinamientos mayores que los realizados con lenguajes regulares, en gran
medida sirven para especificar la sintaxis de lenguajes de alto nivel y otros
lenguajes formales.
OBJETIVO GENERAL
Conocer los modelos de computacin que corresponden a los lenguajes
independientes del contexto y su aplicacin.
OBJETIVOS ESPECIFICOS
Generalizar los conceptos de autmatas finitos y gramaticas regulares.
Reconocer el potencial de procesamiento del lenguaje del automata con los
autmatas de pila.
LECCION 16. GRAMATICAS REGULARES
asta ahora, se han visto dos formas de definir lenguajes: a travs de
autmatas finitos, y por medio de expresiones regulares. Ahora veremos otra
forma, usando el concepto de gramticas.
Sea el autmata:
Se puede pensar que este autmata es un generador de cadenas a partir de una
cadena vaca. As, las cadenas que puede generar el autmata son todas aquellas
que perteneces al lenguaje representado por el autmata L(M). Observando el
autmata podemos decir que todas las cadenas inician con una a, luego viene
una serie de as o bs y finalmente termina con una b.
Podemos utilizar la siguiente notacin para representar esto:
S a E : partiendo del estado inicial S, vendr una a y luego otra cadena
que denotamos genricamente con una E.
E A, EB : hay dos posibilidades para E, que venga una exp. tipo A o tipo B.
Luego, para expresiones tipo A y B tenemos:
A b, A aA
B b, B bB
Finalmente, tendremos el siguiente conjunto de expresiones (utilizamos para
representar o).
H
q
1 q
2
q
3
q
4
q
5
a
b
b
b
a
a(a
*
b
*
)b
a
b
a
S
b
a
b
b
a
1. S a E
2. E A B
3. A aA b
4. B bB b
Estas expresiones pueden ser consideradas como reglas de sustitucin y permiten
generar cualquier cadena o palabra vlida dada por el autmata del cual se
obtuvieron. Por ejemplo, sea la cadena a
3
b:
Una gramtica regular G es una cudrupla G = (, N, S, P), donde:
: alfabeto (no vaco) de smbolos terminales.
N : es un conjunto (no vaco) de smbolos no terminales.
S : es denominado el smbolo inicial y S N.
P : es una coleccin o conjunto de reglas de sustitucin llamadas producciones y
que son de la forma A w, donde A N y w es una cadena sobre N.
Adems, w debe satisfacer las siguientes condiciones:
1. w contiene un no terminal como mximo.
2. si w contiene un no terminal, entonces es el smbolo que est en el extremo
derecho de w.
Ejemplo: Dada la gramtica regular dada por:
S b A a B
A a b a S
B b a b S
Genera un lenguaje regular. Podemos obtener entonces el
autmata y la expresin regular correspondientes.
Autmata:
S a E a a A a a a A a a a b = a
3
b
3 3
2 3
,
Exp. Regular:
(baba abab)
*
Ejemplo: Obtener una gramtica regular para el lenguaje representado por:
a
*
b a
R: = {a, b}
N = {S}
P: S R a
R aR b
LECCION 17. - GRAMTICAS REGULARES Y LENGUAJES REGULARES
ea un lenguaje regular, se puede obtener una gramtica regular que
genere L a partir de un AFD M = (Q, , s
0
, F, ) para el cual L = L(M). Se
define esta gramtica G = (N, , S, P) de la siguiente manera:
N = Q
=
S = s
0
P = {q a p (q, a) = p} {q q F}
Por ejemplo, sea el AFD de la siguiente figura:
acepta el lenguaje a
*
b. La correspondiente gramtica regular ser:
Q
1
a Q
1
b Q
2
Q
2
a Q
3
b Q
3
Q
3
a Q
3
b Q
3
Es posible probar que cualquier palabra que sea aceptada por el AFD M, puede
ser generada por la gramtica regular G. Esto significa que L(G) = L(M).
Tambin es posible deducir un AFND a partir de una gramtica regular G.
Sea G = (N, , S
0
, P) una G.R., se define M = (Q, , S, F, ) como sigue:
S
b
a
S
a
R
b
a, b
Q
1
Q
2
Q
3
a, b
Q = N {}, donde es un nuevo smbolo.
S
0
= S
F = {}
y se construye a partir de las producciones de P, como se indica a continuacin:
1. Si A
1
n
B es una produccin de P, con A y B como no terminales,
entonces se agregan a Q los nuevos estados q
1
, q
2
, , q
n-1
y las transiciones
siguientes:
(A,
1
n
) = (q
1
,
1
n
) = = (q
n-1
,
n
) = B
2. Si A
1
n
es una produccin de P, entonces se aadirn a Q los nuevos
estados q
1
, q
2
, , q
n-1
y a , las transiciones siguientes:
(A,
1
n
) = (q
1
,
1
n
) = = (q
n-1
,
n
) =
Ejemplo: Sea la gramtica Regular dada por.
S aSbBb
B cC
C aS
Obtenemos el AFND correspondiente, utilizando el mtodo anterior:
Q = {S, B, C, }
S
0
= S
F = {}
i. S aS : (S,a) = S
ii. S bB : (S,b) = B
iii. S b : (S,b) =
iv. B cC : (B,c) = C
v. C aS : (C,a) = S
As, podemos construir el AFND siguiente:
a
S
b
B
C
c
S
b
B
c
a
b
Para el caso de una produccin de la forma: A abaS, tendremos las siguientes
transiciones y nuevos estados:
(A, a b a) = S, se descompone en :
(A, a) = q
1
; (q
1
, b) = q
2
; (q
2
, a) = S
donde q
1
y q
2
son nuevos estados que se agregan a Q.
LECCION 18. - GRAMTICAS INDEPENDIENTES DEL CONTEXTO.
uando se eliminan las restricciones impuestas al lado derecho de las
producciones de una gramtica, se pueden tener producciones como por
ejemplo:
S aBbA
A aaSbAA
B bbSaBB
o incluso:
S aSb
Es decir, no hay ninguna restriccin respecto de la cantidad y posicin de los
smbolos no terminales en el lado derecho de las producciones.
Una gramtica independiente del contexto (GIC) es una cudrupla G=(N, , S, P),
donde:
N: es una coleccin finita (no vaca) de smbolos no terminales.
: es un alfabeto.
S: es un no terminal llamado smbolo inicial.
P: un conjunto de producciones tal que P N (N )
*
.
Los lenguajes generados por una GIC son llamados Lenguajes Independientes
del Contexto (LIC).
Es posible probar que la gramtica independiente del contexto dada por:
S aSb
genera el lenguaje independiente del contexto {a
n
b
n
/ n 0} y se puede probar
que este no es un lenguaje regular. Esto indica que hay LIC que no son lenguajes
regulares; y por lo tanto el conjunto de los LIC contienen al conjunto de los
lenguajes regulares.
C
4.18.1. rboles de derivacin y ambigedad.
Al derivar una cadena a travs de una GIC, el smbolo inicial se sustituye por
alguna cadena. Los no terminales se van sustituyendo uno tras otro por otras
cadenas hasta que ya no quedan smbolos no terminales, queda una cadena con
slo smbolos terminales.
A veces es til realizar un grfico de la derivacin. Tales grficos tienen forma de
rbol y se llaman arbol de derivacin o rbol de anlisis.
Para una derivacin dada, el smbolo inical S etiqueta la raz del rbol. El nodo
raz tienen unos nodos hijos para cada smbolo que aparezca en el lado dereho de
la produccin, usada para reemplazar el smbolo inicial. De igual forma, cada
smbolo no terminal tienen unos nodos hijos etiquetados con smbolos del lado
derecho de la produccin usada para sustituir ese no terminal.
Ejemplo: Sea la GIC dada por
S AB
A aAa
B bBb
La cadena aabbb tienen la siguiente derivacin:
S => AB => AbB => AbbB => Abbb => aAbbb => aabbb
Con esto, el rbol de derivacin ser dado por:
Existen muchas derivaciones posibles para la cadena aabbb, por ejemplo:
S => AB => aAB => aaB => aabB => aabbB => aabbb
S => AB => aAB => aAbB => aAbbB => aAbbb => aabbb
Pero el rbol de derivacin ser siempre el mismo.Sin embargo, esto no siempre
se cumple.
S
a
b
b
b
A
B
B
B
a
A
Considrese la gramtica: S SbSScSa
la cadena abaca se puede derivar:
1. S => SbS => SbScS => SbSca => Sbaca => abaca.
2. S ScS SbScS abScS abacS abaca
S
a
b
c
S S
S
S
a
a
S
a
c
b
S
S
S
a
S
a
Derivacin 1 Derivacin 2
En este caso, para una misma cadena, se obtuvieron rboles de derivacin
distintos.
Entonces, diremos que una gramtica es ambiga cuando hay dos o ms
rboles de derivacin distintos para una misma cadena.
En algunos casos, si la gramtica es ambigua, se puede encontrar otra gramtica
equivalente pero que no sea ambiga. Por ejemplo:
S A B
A a
B a
... es ambigua porque tiene rboles de derivacin distintos para la cadena a. Una
gramtica equivalente que no es ambiga es:
S a
Si todas las GIC para un lenguaje son ambigas, se dice que el lenguaje es un
lenguaje independiente del contexto (LIC) inherentemente ambigo.
Ejemplo: Considere la gramtica G
1
dada por:
N = {S,A} ; = {a} ; S ; P: {S AA ; A aSa ; A a}
Se pueden obtener 2 rboles de derivacin para la cadena aaaaa:
S
a
S
A
A
a
A
a
A
a a
S
A A
a a
a
a
S
A
A
a
La gramtica G
1
no es una gramtica regular, pero es relativamente fcil mostrar
que L(G
1
) es el conjunto regular {a
2
,a
5
,a
8
,a
11
,a
14
, ...}. La ambigedad no es
inherente al lenguaje y puede definirse una gramtica libre de contexto mucho
ms simple:
G
2
= ({T}, {a}, T, {T aaaT, T aa})
Esta gramtica es claramente no ambiga. La ambigedad no es una
caracterstica deseable en una gramtica que describe un lenguaje, especialmente
en un lenguaje de programacin. No sera claro cul es el rbol de derivacin que
tendra que usarse para inferir el significado de una cadena. Para ilustrar lo
anterior, considere el siguiente ejemplo:
G: A I=E
I a b c
E E+E E*E (E) I
La cadena: a=b+c*a , es una cadena de este lenguaje y se pueden obtener 2
rboles de derivacin para ella:
A
I
=
+
I
E
E a
*
E
E E
I I b
c a
A
=
*
I
E
a
+
E
E E
I I
a
b c
E
I
Si se pretende obtener el valor del resultado de la expresin a la derecha del
operador de asignacin (=), se obtienen 2 resultados posibles, b+(c*a) o (b+c)*a
.En general, estos resultados no son iguales.
LECCION 19. - FORMAS CANNICAS PARA LAS GIC
a definicin de una gramtica independiente del contexto es demasiado amplia,
y por lo tanto, es deseable establecer una forma cannica que restrinja los
tipos de producciones que pueden utilizarse.
Una produccin A B en una GIC G = (N, , S, P) es til si esta es parte de una
derivacin comenzando con el smbolo incial y terminando con una cadena
terminal. Esto es, A B es til si hay una derivacin:
S * w
1
Aw
2
*w
1
Bw
2
* x, donde x *
Una produccin que no es til es llamada no usada.
Un noterminal que no aparece en ninguna produccin til es llamado no
usado.
Un no terminal que no est entre los terminales no usados, es llamdo til.
Ejemplo:
(1) S gAe aYB CY
(2) A bBY ooC
(3) B dd D
(4) C jVB gi
(5) D n
(6) U kW
1. Para el no terminal W, es imposible
encontrar una derivacin que iniciando
en S produzca una sentencia que
contenga W. Lo mismo ocurre con U.
2. No hay derivaciones que contengan
el no terminal Y y que puedan producir
L
(7) V baXXX oV
(8) W c
(9) X fV
(10) Y Yhm
una cadena terminal. Lo mismo ocurre
con X y V.
3. B se utiliza en conjunto con no
terminales no usados y por lo tanto es
no usado tambin. Con D ocurre lo
mismo.
Todo lenguaje independiente del contexto L (no vaco) puede ser generado por
una gramtica libre de contexto que contenga slo producciones tiles y no
terminales tiles.
Una produccin de la forma A B, donde A, B N (no terminales), es llamada
una produccin unitaria o produccin no generativa.
Ejemplo:
A B
B w
1
C
Se puede eliminar A B e incluir la produccin A w
1
C.
Utilizando todo lo anterior al ejemplo de la pgina anterior, tendremos como
resultado la gramtica:
S gAe
A ooC
C gi
Una gramtica independiente del contexto esta en la forma normal de Chomsky si
no contiene producciones (A ) y si todas las producciones son de la forma A
a, para a , o de la forma A BC, donde B, C son no terminales. Esto es, en
la forma normal de Chomsky, el lado derecho de cada produccin contiene un
nico smbolo terminal o un par de no terminales.
Cualquier lenguaje libre de contexto L puede ser generado por una gramtica libre
de contexto en la forma normal de Chomsky.
A partir de lo anterior se infiere que cualquier gramtica libre de contexto puede
ser transformada a la forma normal de Chomsky. La estrategia bsica ser
agregar nuevos smbolos no terminales a aquellas producciones no normalizadas
tales como por ejemplo A JKcb y reemplazarlas por un conjunto de
producciones equivalentes tales como:
A JY
1
, Y
1
KY
2
, Y
2
X
c
X
b
, X
c
c , X
b
b
Donde Y
1
, Y
2
, X
c
y X
b
son nuevos smbolos no terminales.
Ejemplo:
G
1
:
(1) S SABC
(2) S be
(3) S CBh
(4) A aaC
(5) B Sf
(6) B ggg
(7) C cA
(8) C d
G
2:
S SY
11
, Y
11
AY
12
, Y
12
BC
S X
b
X
e
S CY
31
, Y
31
BX
h
A X
a
Y
41
, Y
41
X
a
C
B SX
f
B X
g
Y
61
, Y
61
X
g
X
g
C X
c
A
C d
X
b
b , X
e
e , X
h
h , X
a
a , X
f
f , X
g
g
Gramticas Libres de Contexto
Figura 22: Arbol de Derivacin
4.19.1. Simplicacin De Las Gramticas Libres De Contexto
Para un mismo lenguaje de tipo 2 existen muchas gramticas libres de contexto
que lo generan. Estas ser n de formas muy diversas por lo que, en general se
hace muy difcil trabajar con ellas. Por este motivo interesa simplicarlas lo mas
posible y denir unas formas normales para las gramticas que las hagan mas
homogneas.
4.19.2. Eliminacin de Smbolos y Producciones Intiles
Un smbolo X (V T ) se dice til si y solo si existe una cadena de derivaciones
en G tal que S X w T
es decir si interviene en la derivacin de alguna palabra del lenguaje generado por
la gramtica. Una produccin se dice til si y solo si todos sus smbolos son tiles.
Esto es equivalente a que pueda usarse en la derivacin de alguna palabra del
lenguaje asociado a la gramtica. Esta claro que eliminando todos los smbolos y
producciones intiles el lenguaje generado por la gramtica no cambia.
El algoritmo para eliminar los smbolos y producciones intiles consta de dos
pasos fundamentales:
1. Eliminar las variables desde las que no se puede llegar a una palabra de T y las
producciones en las que aparezcan.
2. Eliminar aquellos smbolos que no sean alcanzables desde el estado inicial, S, y
las producciones en las que estos aparezcan.
El primer paso se realiza con el siguiente algoritmo (V es un conjunto de
variables):
1. V
= 0
2. Para cada produccin de la forma A w, A se introduce en V.
3. Mientras Vcambie
4. Para cada produccin B
5. Si todas las variables de pertenecen a V
,B se introduce en V
6. Eliminar las variables que esten en V y no en V
7. Eliminar todas las producciones donde aparezca una variable de las eliminadas
en el paso anterior
El segundo paso se realiza con el siguiente algoritmo:
Vy J son conjuntos de variables. J son las variables por analizar.
T
es un conjunto de smbolos terminales
1. J = {S} V
= {S} T= 0
2. Mientras J 0
3. Extraer un elemento de J : A, (J = J {A}).
4. Para cada produccion de la forma A
5.Para cada variable B en
6. Si B no est en V
aadir B a J y a V
7. Poner todos los simbolos terminales de en T
8. Eliminar todas las variables que no esten en V
y todos los simbolos terminales
que no esten en T
.
9. Eliminar todas las producciones donde aparezca un simbolo o variable de los
eliminados
Ejemplo: Es importante aplicar los algoritmos anteriores en el orden especicado
para que se garantice que se eliminan todos los smbolos y variables intiles.
Como ejemplo de lo anterior, supongamos que tenemos la gramtica dada por
S AB, S a, A a
En el primer algoritmo se elimina B y la produccin S AB.
Entonces en el segundo se elimina la variable A y la produccin A a.
Sin embargo, si aplicamos primero el segundo algoritmo, entonces no se elimina
nada. Al aplicar despues el primero de los algoritmos se elimina B y la produccin
S AB. En denitiva, nos queda la gramtica S a, A a donde todava nos
queda la variable intil A.
Ejemplo: Eliminar smbolos y producciones intiles de la gramtica
S gAe, S aY B, S cY,
A bBY, A ooC, B dd,
B D, C jV B, C gi,
D n, U kW, V baX X X ,
V oV, W c, X f V, Y Y hm
se aplica el primer algoritmo.
Inicialmente V
tiene las variables V = {B, D, C, W }.
En la siguiente iteracin aadimos a V las variables que se alcanzan desde estas:
A y W . V
queda igual a {B, D, C, W, A, U }.
En la siguiente V
= {B, D, C, W, A, U, S}.
En la siguiente V
= {B, D, C, W, A, U, S}.
Como V
no cambia ya se ha terminado el ciclo. Estas son las variables desde las
que se alcanza una cadena de smbolos terminales. El restos de las variables: X ,
Y, V, son intiles y se pueden eliminar. Tambin se eliminan las producciones
asociadas. La gramtica resultante es:
S gAe, A ooC,
B dd, B D, C gi,
D n, U kW, W c
A esta gramtica le aplicamos el segundo algoritmo
J = {S}, V
= {S}, T = 0
Tomando S de J y ejecutando las instrucciones del ciclo principal nos queda
J = {A}, V
= {S, A}, T = {g, e}
Tomando A de J, tenemos
J = {C}, V
= {S, A, C}, T = {g, e, o}
Sacando C de J, obtenemos
J = 0, V = {S, A, C}, T
= {g, e, o, i}
Como J = 0 se acaba el ciclo. Solo nos queda eliminar las variables intiles: B, D,
U, W, los smbolos terminales intiles: n, k, c, d, y las producciones donde estos
aparecen. La gramtica queda
S gAe, A ooC, C gi
En esta gramtica solo se puede generar una palabra: googige.
Si el lenguaje generado por una gramtica es vaco, esto se detecta en que la
variable S resulta intil en el primer algoritmo. En ese caso se pueden eliminar
directamente todas las producciones, pero no el smbolo S.
Ejemplo eliminar smbolos y producciones intiles de la gramtica
S aSb,S ab,S bcD,
S cSE,E aDb,F abc,E abF
4.19.3. Producciones Nulas
Las producciones nulas son las de la forma A . Vamos a tratar de eliminarlas
sin que cambie el lenguaje generado por la gramtica ni la estructura de los
rboles de derivacin. Evidentemente si L(G) L(G) no vamos a poder
eliminarlas todas sin que la palabra nula deje de generarse. As vamos a dar un
algoritmo que dada una gramtica G, construye una gramtica G
equivalente a la
anterior sin producciones nulas y tal que L(G)= L(G) { }. Es decir, si la palabra
nula era generada en la gramtica original entonces no puede generarse en la
nueva gramtica.
Primero se calcula el conjunto de las variables anulables:
H es el conjunto de las variables anulables
1. H = 0
2. Para cada produccion A , se hace H = H {A}
3. Mientras H cambie
4. Para cada produccion B A
1
A
2
...A
n
,
donde A
i
H para todo i = 1,...,n, se hace H = H {B}
Una vez calculado el conjunto, H, de las variables anulables, se hace lo siguiente:
1. Se eliminan todas las producciones nulas de la gramatica
2. Para cada produccion de la gramatica de la forma A
1
...
n
,
donde
i
V T
3. Se elimina la produccion A
1
...
n
4. Se aaden todas las producciones de la forma A 1... :n
5. donde
i
=
i
si
i
H
(
i
=
i
) (
i
= ) si H
y no todos los
i
puedan ser nulos al mismo tiempo
G
es la gramtica resultante despus de aplicar estos dos algoritmos.
Si G generaba inicialmente la palabra nula, entonces, a partir de G, podemos
construir una gramtica G
con una sola produccin nula y que genera el mismo
lenguaje que G. para ello se aade una nueva variable, S, que pasa a ser el
smbolo inicial de la nueva gramtica, G. Tambin se aaden dos producciones:
S
S, S
Ejemplo: Eliminar las producciones nulas de la siguiente gramtica:
S ABb, S ABC, C abC,
B bB, B , A aA,
A , C AB
Las variables anulables despues de ejecutar el paso 2 del primer algoritmo son B y
A. Al ejecutar el paso 3, resulta que C y S son tambin anulables, es decir H = {A,
B, C, S}. Al ser S anulable la palabra vaca puede generarse mediante esta
gramtica. En la gramtica que se construye con el segundo algoritmo esta
palabra ya no se podr generar. Al ejecutar los pasos 3 y 4 del segundo algoritmo
para las distintas producciones no nulas de la gramtica resulta
3. Se elimina la produccin S ABb
4. Se aade S ABb, S Ab, S Bb
3. Se elimina S ABC
4. Se aade S ABC, S AB, S AC,
S BC, S A, S B, S C
3. Se elimina C abC
4. Se aade C abC, C ab
3. Se elimina B bB
4. Se aade B bB, B b
3. Se elimina A aA
4. Se aade A aA, A a
3. Se elimina C AB
4. Se aade C AB, C A, C B
En denitiva, la gramtica resultante tiene las siguientes producciones:
S ABb, S Ab, S Bb, S ABC, S AB, S AC, S BC, S A, S B,
S C, C abC, C ab, B bB, B b, A aA,
A a, C AB, C A, C B
Ejemplo: Sea la gramtica
S aHb, H aHb, H
La nica variable anulable es H. Y la gramtica equivalente, que resulta de aplicar
el algoritmo 2 es:
S aHb, H aHb, S ab, H ab
4.19.4. Producciones Unitarias
Las producciones unitarias son las que tienen la forma
A B
donde A, B V . Veamos como se puede transformar una gramtica G, en la que
L(G), en otra gramtica equivalente en la que no existen producciones
unitarias. Para ello, hay que partir de una gramtica sin producciones nulas.
Entonces, se calcula el conjunto H de parejas (A, B) tales que B se puede derivar
a partir de
A: A B. Eso se hace con el siguiente algoritmo
1. H = 0
2. Para toda produccion de la forma A B, la pareja (A, B) se introduce en H.
3. Mientras H cambie
4. Para cada dos parejas (A, B), (B, C)
5. Si la pareja (A, C) no est en H
(A, C) se introduce en H
6. Se eliman las producciones unitarias
7. Para cada produccion A
8. Para cada pareja (B, A) H
9. Se aade una produccion B
Ejemplo: Consideremos la gramtica resultante de un ejemplo anterior
S ABb, S Ab, S Bb, S ABC, S AB, S AC, S BC, S A, S B,
S C, C abC, C ab, B bB, B b, A aA,
A a, C AB, C A, C B
El conjunto H est formado por las parejas {(S, A), (S, B), (S, C), (C, A), (C, B)}.
Entonces se eliminan las producciones S A, S B, S C, C A, C B
Se aaden a continuacion las producciones (no se consideran las repetidas)
S a, S aA, S bB, S b, S abC, S ab, C aA, C a, C bB, C b
Ejemplo: El lenguaje L = {a
n
b
n
: n 1} {a
n
ba
n
: n 1} viene generado por la
siguiente gramtica de tipo 2:
S A, S B, A ab, A aHb
H ab, H aHb, B aBa, B b
Las parejas resultantes en el conjunto H son {(S, A), (S, B)}. La gramtica sin
producciones unitarias equivalente es:
Aab, AaHb, Hab, HaHb, BaBa, Bb, Sab, SaHb, SaBa, Sb.
LECCION 20. - FORMAS NORMALES
4.20.1. Forma Normal de Chomsky
Una gramtica de tipo 2 se dice que est en forma normal de Chomsky si y solo si
todas las producciones tienen la forma
A BC, A a,
donde A,B,C V , a T .
Toda gramtica de tipo 2 que no acepte la palabra vaca se puede poner en forma
normal de Chomsky. Para ello lo primero que hay que hacer es suprimir las
producciones nulas y unitarias. A continuacin se puede ejecutar el siguiente
algoritmo:
1. Para cada produccion de la forma A
1
...
n
,
i
(V T ),n 2
2. Para cada
i
, si
i
es terminal:
i
=a T
3. Se aade la produccion Ca a
4. Se cambia
i
por Ca en A
1
...
n
5. Para cada produccion de la forma A B
1
,...B
m
, m 3
6. Se aaden (m 2)variables D
1
,D
2
,...,D
m2
(distintas para cada produccion)
7. La produccion A B
1
...B
m
se reemplaza por
A B
1
D
1
, D
1
B
2
D
2
, ..., D
m2
B
m1
B
m
Ejemplo Sea la Gramtica G =({S,A,B},{a,b},P,S) dada por las producciones
S bA | aB, A bAA | AS | a, B aBB | bS | b
Para pasarla a forma normal de Chomsky, en el ciclo asociado al paso 1 se
aaden las producciones
Ca a, Cb b
y las anteriores se transforman en
S CbA | CaB, A CbAA | AS | Ca, B CaBB | CbS | Cbb
Al aplicar el paso asociado al paso 5, la gramtica queda
S CbA | CbB, A CbD1 | AS | a, D1 AA,
B CaE1 | CbS | b, E1 B, Ca a, Cb b
Con esto la gramtica ya est en forma normal de Chomsky.
4.20.2. Forma Normal de Greibach
Una gramtica se dice que est en forma normal de Greibach si y solo si todas las
producciones tienen la forma A a donde a T , V*. Toda gramtica de
tipo 2 que no acepte la palabra vaca se puede poner en forma normal de
Greibach. Para ello hay que partir de una gramtica en forma normal de Chomsky
y aplicarle el siguiente algoritmo. En realidad no es necesario que la gramtica
est en forma normal de Chomsky. Basta que todas las producciones sean de uno
de los tipos siguientes:
A a, a T, V*
.
A , V*
.
Claro est, en una gramtica en forma normal de Chomsky, todas las
producciones son de alguno de estos dos tipos. En este algoritmo se supone que
el conjunto de variables inicial de la gramtica est numerado
V = {A
1
,...,A
m
}.
El algoritmo se basa en dos operaciones bsicas. La primera es eliminar una
produccin, A B de la gramtica G, donde A B. Esto se hace con los
siguientes pasos:
1. Eliminar A B
2. Para cada produccion B
3. Aadir A
La otra operacin bsica consiste en eliminar todas las producciones del tipo A
A donde V* . Esto se hace siguiendo los siguiente pasos:
1. Aadir una nueva variable B
A
2. Para cada produccion A A
3. Aadir B
A
y B
A
B
A
4. Eliminar A A
5. Para cada produccion A no empieza por A
6. Aadir A B
A
Llamemos ELIMINA
1
(A B) a la funcin que realiza el primer paso y
ELIMINA
2
(A) a la funcin que reliza el segundo paso. Si si llama a ELIMINA
2
(A
j
),
la variable que aadimos la notaremos como B
j
.
En estas condiciones vamos a realizar un algoritmo, al nal del cual todas las
producciones tengan una forma que corresponda a alguno de los patrones
siguientes:
A a, a T, V*
.
A
i
A
j
, j > i, V*
.
B
j
A
i
, V*
El algoritmo es como sigue:
1. Para cada k = 1,...,m
2. Para cada j = 1,...,k 1
3. Para cada produccion A
k
A
j
4. ELIMINA
1
(A
k
A
j
)
5. Si existe alguna produccion de la forma A
k
A
k
6. ELIMINA
2
(A
k
)
A continuacin se puede eliminar denitivamente la recursividad por la izquierda
con el siguiente algoritmo pasando a forma normal de Greibach
1. Para cada i = m 1,...,1
2. Para cada produccion de la forma A
i
A
j
, j > i
3. ELIMINA
1
(A
i
A
j
)
4. Para cada i = 1,2,...,m
5. Para cada produccion de la forma B
j
A
i
.
6. ELIMINA
1
(B
j
A
i
)
El resultado del segundo algoritmo es ya una gramtica en forma normal de
Greibach.
Ejemplo: Pasar a forma normal de Greibach la gramtica dada por las
producciones
A
1
A
2
A
3
, A
2
A
3
A
1
, A
2
b, A
3
A
1
A
2
, A
3
a
Aplicamos ELIMINA
1
a A
3
A
1
A
2
. Se elimina esta produccin y se aade:
A
3
A
2
A
3
A
2
Queda:
A
1
A
2
A
3
, A
2
A
3
A
1
, A
2
b, A
3
a, A
3
A
2
A
3
A
2
Aplicamos ELIMINA
1
a A
3
A
2
A
3
A
2
Se elimina esta produccin y se aaden: A
3
A
3
A
1
A
3
A
2
, A
3
bA
3
A
2
Queda:
A
1
A
2
A
3
, A
2
A
3
A
1
, A
2
b, A
3
a, A
3
A
3
A
1
A
3
A
2
, A
3
bA
3
A
2
Aplicamos ELIMINA
2
a A
3
Se aade B
3
y las producciones B
3
A
1
A
3
A
2
, B
3
A
1
A
3
A
2
B
3
Se elimina A
3
A
3
A
1
A
3
A
2
. Se aaden las producciones: A
3
aB
3
, A
3
bA
3
A
2
B
3
Queda:
A
1
A
2
A
3
, A
2
A
3
A
1
, A
2
b, A
3
a, A
3
bA
3
A
2
B
3
A
1
A
3
A
2
, B
3
A
1
A
3
A
2
B
3
A
3
aB
3
, A
3
bA
3
A
2
B
3
Se aplica ELIMINA
1
a A
2
A
3
A
1
.
Se elimina esta produccin y se aaden:
A
2
aA
1
, A
2
aB
3
A
1
, A
2
bA
3
A
2
B
3
A
1
, A
2
bA
3
A
2
A
1
Queda:
A
1
A
2
A
3
, A
2
b, A
2
aA
1
, A
2
aB
3
A
1
, A
2
bA
3
A
2
B
3
A
1
, A
2
bA
3
A
2
A
1
, A
3
a, A
3
bA
3
A
2
, B
3
A
1
A
3
A
2
, B
3
A
1
A
3
A
2
B
3
A
3
aB
3
, A
3
bA
3
A
2
B
3
Se aplica ELIMINA
1
a A
1
A
2
A
3
.
Se elimina esta produccin y se aaden:
A
1
bA
3
, A
1
aA
1
A
3
, A
1
aB
3
A
1
A
3
, A
1
bA
3
A
2
B
3
A
1
A
3
, A
1
bA
3
A
2
A
1
A
3
Queda:
Se aplica ELIMINA
1
a B
3
A
1
A
3
A
2
Se elimina esta produccin y se aaden:
Se aplica ELIMINA
1
a B
3
A
1
A
3
A
2
B
3
. Se elimina esta produccin y se aaden:
B
3
bA
3
A
3
A
2
B
3
, B
3
aA
1
A
3
A
3
A
2
B
3
, B
3
aB
3
A
1
A
3
A
3
A
2
B
3
, B
3
bA
3
A
2
B
3
A
1
A
3
A
3
A
2
B
3
,
B
3
aB
3
A
1
A
3
A
3
A
2
B
3
,
A
2
b, A
2
aA
1,
A
2
aB
3
A
1
,
A
2
bA
3
A
2
B
3
A
1
, A
2
bA
3
A
2
A
1
, A
3
a,
A
3
bA
3
A
2
, B
3
A
1
A
3
A
2
, B
3
A
1
A
3
A
2
B
3
,
A
3
aB
3
, A
3
bA
3
A
2
B
3
, A
1
bA
3
,
A
1
aA
1
A
3
, A
1
aB3A1A3, A
1
bA
3
A
2
B
3
A
1
A
3
,
A
1
bA
3
A
2
A
1
A
3
B
3
bA
3
A
3
A
2
, B
3
aA
1
A
3
A
3
A
2
, B
3
aB
3
A
1
A
3
A
3
A
2
,
B
3
bA
3
A
2
B
3
A
1
A
3
A
3
A
2
, B
3
aB
3
A
1
A
3
A
3
A
2
,
Queda:
A
2
b, A
2
aA
1
A
2
aB
3
A
1
,
A
2
bA
3
A
2
B
3
A
1
, A
2
bA
3
A
2
A
1
A
3
a,
A
3
bA
3
A
2
, B
3
A
1
A
3
A
2
B
3
, A
3
aB
3
,
A
3
bA
3
A
2
B
3
, A
1
bA
3
, A
1
aA
1
A
3
,
A
1
aB
3
A
1
A
3
, A
1
bA
3
A
2
B
3
A
1
A
3
, A
1
bA
3
A
2
A
1
A
3
B
3
bA
3
A
3
A
2
, B
3
aA
1
A
3
A
3
A
2
, B
3
aB
3
A
1
A
3
A
3
A
2
,
B
3
bA
3
A
2
B
3
A
1
A
3
A
3
A
2
, B
3
aB
3
A
1
A
3
A
3
A
2
,
Resultado:
A
2
b, A
2
aA
1
, A
2
aB
3
A
1
,
A
2
bA
3
A
2
B
3
A
1
, A
2
bA
3
A
2
A
1
A
3
a,
A
3
bA
3
A
2
, A
3
aB
3
, A
3
bA
3
A
2
B
3
,
A
1
bA
3
, A
1
aA
1
A
3
, A
1
aB
3
A
1
A
3
,
A
1
bA
3
A
2
B
3
A
1
A
3
, A
1
bA
3
A
2
A
1
A
3
, B
3
bA
3
A
3
A
2
,
B
3
aA
1
A
3
A
3
A
2
, B
3
aB
3
A
1
A
3
A
3
A
2
, B
3
bA
3
A
2
B
3
A
1
A
3
A
3
A
2
,
B
3
aB
3
A
1
A
3
A
3
A
2
, B
3
bA
3
A
3
A
2
B
3
, B
3
aA
1
A
3
A
3
A
2
B
3
,
B
3
aB
3
A
1
A
3
A
3
A
2
B
3
, B
3
bA
3
A
2
B
3
A
1
A
3
A
3
A
2
B
3
, B
3
aB
3
A
1
A
3
A
3
A
2
B
3
LECCION 21. - DEFINICIN DE AUTMATA CON PILA
14
or ejemplo el lenguaje de los parntesis bien balanceados, que se sabe es
propiamente un LLC (lenguaje Libre de contexto,Qu mquina se requiere
para distinguir las palabras de parntesis bien balanceados de las que tienen los
parntesis desbalanceados?
Una primera idea podra ser la de una mquina que tuviera un registro aritmtico
que le permitiera contar los parntesis; dicho registro sera controlado por el
control finito, quien le mandara smbolos I para incrementar en uno el contador y
D para decrementarlo en uno. A su vez, el registro mandara un smbolo Z para
indicar que est en cero, o bien N para indicar que no est en cero. Entonces para
analizar una palabra con parntesis lo que haramos sera llevar la cuenta de
cantos parntesis han sido abiertos pero no cerrados; en todo momento dicha
cuenta debe ser positiva o cero, y al final del clculo debe ser exactamente cero.
Por ejemplo, para la palabra (())() el registro tomara sucesivamente los valores 1,
2, 1, 0, 1, 0.
Como segundo ejemplo, considrese el lenguaje de los palndromos (palabras que
se leen igual al derecho y al revs, como ANITALAVALATINA). Aqu la mquina
contadora no va a funcionar, porque se necesita recordar toda la primera mitad de
la palabra para poder compararla con la segunda mitad. Ms bien pensaramos en
una mquina que tuviera la capacidad de
recordar cadenas de caracteres arbitrarias, no
nmeros. Siguiendo esta idea, podramos
pensar en aadir al AF un almacenamiento
auxiliar, que llamaremos pila, donde se
podran ir depositando caracter por caracter
cadenas arbitrariamente grandes, como se
aprecia en la Figura 23. A estos nuevos
autmatas con una pila auxiliar los
llamaremos autmatas de pila (AP)
Figura 23. Automata con Pila Auxiliar
14
MORAL CALLEJN Serafn Teora de autmatas y lenguajes formales, En
http://decsai.ugr.es/~smc/docencia/mci/automata.pdf
P
5.21.1. Funcionamiento de los Autmatas de Pila
15
La pila funciona de manera que el ultimo carcter que se almacena en ella es el
primero en salir (LIFO por las siglas en ingls), como si apilramos platos uno
encima de otro, y naturalmente el primero que quitaremos es el ltimo que hemos
colocado. Un aspecto crucial de la pila es que slo podemos modificar su tope,
que es el extremo por donde entran o salen los caracteres. Los caracteres a la
mitad de la pila no son accesibles sin quitar antes los que estn encima de ellos.
La pila tendr un alfabeto propio, que puede o no coincidir con el alfabeto de la
palabra de entrada. Esto se justifica porque puede ser necesario introducir en la
pila caracteres especiales usados como separadores, segn las necesidades de
diseo del autmata.
Al iniciar la operacin de un AP, la pila se encuentra vaca. Durante la operacin
del AP, la pila puede ir recibiendo (y almacenando) caracteres, segn lo indiquen
las transiciones ejecutadas. Al final de su operacin, para aceptar una palabra, la
pila debe estar nuevamente vaca.
En los AP las transiciones de un estado a otro indican, adems de los caracteres
que se consumen de la entrada, tambin lo que se saca del tope de la pila, as
como tambin lo que se mete a la pila.
Al igual que los AF, los AP tienen estados finales, que permiten distinguir cuando
una palabra de entrada es aceptada.
De hecho, para que una palabra de entrada sea aceptada en un AP se deben
cumplir todas las condiciones siguientes:
1. La palabra de entrada se debe haber agotado (consumido totalmente).
2. El AP se debe encontrar en un estado final.
3. La pila debe estar vaca.
los lenguajes generados por las gramticas libres de contexto tambin tienen un
autmata asociado que es capaz de reconocerlos. Estos autmatas son parecidos
a los autmatas nitos determinsticos, solo que ahora tendrn un dispositivo de
memoria de capacidad ilimitada: una pila. A continuacin daremos la denicin
formal de autmata con pila no determinstico (APND). Al contrario que en los
autmatas nitos, los autmatas con pila no determinsticos y determinsticos no
aceptan las mismas familias de lenguajes. Precisamente son los no determsticos
15
MARTN C. John (2004). Lenguajes Formales y teora de la computacin Tercera edicin
Mcgraw Hill Interamericana
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En:
http://lizt.mty.itesm.mx/~rbrena/AyL.html
los asociados con los lenguajes libres de contexto. Los determinsticos aceptan
una familia mas restringida de lenguajes.
Un autmata con pila no determinstico(APND) es una septupla (Q,A,B,,q
0
,Z
0
F)
en la que
Q es un conjunto nito de estados
A es un alfabeto de entrada
B es un alfabeto para la pila
es la funcin de transicin
: Q (A { } ) B Q B*)
q
0
es el estado inicial
Z
0
es el smbolo inicial de la pila
F es el conjunto de estados nales
La funcin de transicin aplica cada estado, cada smbolo de entrada (incluyendo
la cadena vaca) y cada smbolo tope de la pila en un conjunto de posibles
movimientos. Cada movimiento parte de un estado, un smbolo de la cinta de
entrada y un smbolo tope de la pila. El movimento en s consiste en un cambio de
estado, en la lectura del smbolo de entrada y en la subtitucin del smbolo tope de
la pila por una cadena de smbolos.
Ejemplo Sea el autmata M =({ q1, q2} , { 0, 1, c} , { R, B, G} , , q
1
, R, 0)donde
(q1, 0, R)={ (q1, BR)} (q1, 1, R)={ (q1, GR)}
(q1, 0, B)={ (q1, BB)} (q1, 1, B)={ (q1, GB)}
(q1, 0, G)={ (q1, BG)} (q1, 1, G)={ (q1, GG)}
(q1, c, R)={ (q2, R)} (q1, c, B)={ (q2, B)}
(q1, c, G)={ (q2, G)} (q2, 0, B)={ (q2, )}
(q2, 1, G)={ (q2, )} (q2, , R)={ (q2, )}
La interpretacin es que si el autmata est en el estado q
1
y lee un 0 entonces
permanece en el mismo estado y aade una B a la pila; si lo que lee es un 1,
entonces aade una G; si lee una c pasa a q
2
. En q
2
se saca una B por cada 0, y
una G por cada 1.
Se llama descripcin instantnea o conguracin de un autmata con pila a una
tripleta (q,u,) Q A*
B* en la que q es el estado en el se encuentra el
autmata, u es la parte de la cadena de entrada que queda por leer y el
contenido de la pila (el primer smbolo es el tope de la pila).
Definicin:Se dice que de la conguracin (q,au,Z) se puede llegar a la
conguracin (p,u,)y se escribe (q,au,Z) (p,u, ) si y solo si (p, ) (q,a,Z)
donde a puede ser cualquier smbolo de entrada o la cadena vaca.
Definicin:Si C
1
y C
2
son dos conguraciones, se dice que se puede llegar de C
1
a
C
2
mediante una sucesin de pasos de clculo y se escribe C
1
C
2
si y solo si
existe una sucesin de conguraciones T
1
,...,T
n
tales que C1 =T1 T Tn1
Tn =C2
Teorema: a) Si M es un APND entonces existe otro autmata M, tal que
N(M)=L(M)
b) Si M es un APND entonces existe otro autmata M, tal que L(M)=N(M).
Demostracin:
-a) Si M =(Q,A,B,,q
0
,Z
0
,F ), entonces el autmata M se construye a partir de M
siguiendo los siguientes pasos:
Se aaden dos estados nuevos, q
0
y q
f
. El estado inicial de M
ser q
0
y q
f
ser
estado nal de M
.
Se aade un nuevo smbolo a B: Z
o
. Este ser el nuevo smbolo inicial de la pila.
Se mantienen todas las transiciones de M, aadindose las siguientes:
(q
0
,,Z
0
)={(q
0
,Z
0
Z
0
)}
(q, , Z
0
)={(q
f
,Z
0
)}, q Q
b) Si M =(Q, A, B, , q
0
, Z
0
, F ), entonces el autmata M
se construye a partir de M
siguiendo los siguientes pasos:
Se aaden dos estados nuevos, q
0
y q
s
. El estado incial de M
ser q
0
.
Se aade un nuevo smbolo a B: Z
0
. Este ser el nuevo smbolo inicial de la
pila.
Se mantienen todas las transiciones de M, aadindose las siguientes:
(q
0
, , Z
0
)={(q
0
, Z
0
Z
0
)}
(q, , H)={(q
s
, H)}, q F, H B {Z
0
}
(qs, , H)={(qs, )}, H B {Z
0
}
LECCION 22. - DISEO DE AUTMATAS DE PILA
l problema de diseo de los AP consiste en obtener un AP M que acepte
exactamente un lenguaje L dado. Por exactamente queremos decir, como en
el caso de los autmatas finitos, que, por una parte, todas las palabras que acepta
E
efectivamente pertenecen a L, y por otra parte, que M es capaz de aceptar todas
las palabras de L.
Aunque en el caso de los AP no hay metodologas tan generalmente aplicables
como era el caso de los autmatas finitos, siguen siendo vlidas las ideas bsicas
del diseo sistemtico, en particular establecer claramente qu es lo que
recuerda cada estado del AP antes de ponerse a trazar transiciones a diestra y
siniestra. Para los AP, adicionalmente tenemos que establecer una estrategia
clara para el manejo de la pila.
En resumen, a la hora de disear un AP tenemos que repartir lo que requiere ser
recordado entre los estados y la pila. Distintos diseos para un mismo problema
pueden tomar decisiones diferentes en cuanto a que recuerda cada cual.
Ejemplo:.- Disear un AP que acepte exactamente el lenguaje con palabras de la
forma a
n
b
n
, para cualquier nmero natural n.
Una idea que surge inmediatamente es la de utilizar la pila como contador para
recordar la cantidad de as que se consumen, y luego confrontar con la cantidad
de bs. Una primera versin de este diseo utiliza un slo estado q, con
transiciones a//a y b/a/ de q a s mismo, como en la figura 24(a).
Figura 24:. Automata de pila para el lenguaje a
n
b
n
Para verificar el funcionamiento del autmata, podemos simular su ejecucin,
listando las situaciones sucesivas en que se encuentra, mediante una tabla que
llamaremos traza de ejecucin. Las columnas de una traza de ejecucin para un
AP son: el estado en que se encuentra el autmata, lo que falta por leer de la
palabra de entrada, y el contenido de la pila.
Por ejemplo, la traza de ejecucin del AP del ejemplo, para la palabra aabb, se
muestra a continuacin:
Estado Por leer Pila
q
q
q
q
q
aabb
abb
bb
b
a
aa
a
Conclumos que el AP efectivamente puede aceptar palabras como a
n
b
n
. Sin
embargo, hay un problema: el AP tambin acepta palabras como abab, que no
tienen la forma deseada (es fcil construir la traza de ejecucin correspondiente
para convencerse de ello). El problema viene porque no hemos recordado cuando
se terminan las a y comienzan las b, por eso ha sido posible mezclarlas en abab.
Una solucin es utilizar los estados para memorizar las situaciones de estar
consumiendo a o estar consumiendo b. El diagrama de estados correspondiente
se muestra en la figura 24(b).
Ejemplo:.- Proponer un AP que acepte el lenguaje de los palndromos con un
nmero par de smbolos, esto es, palabras que se leen igual de izquierda a
derecha y de derecha a izquierda, y que tienen por tanto la forma ww
R
, donde w
R
es el reverso de w (esto es, invertir el orden), en el alfabeto {a, b}. Por ejemplo, las
palabras abba, aa y bbbbbb pertenecen a este lenguaje, mientras que aab y
aabaa no.
Una estrategia de solucin para disear este AP sera almacenar en la pila la
primera mitad de la palabra, y luego irla comparando letra por letra contra la
segunda mitad. Tendramos dos estados s y f, para recordar que estamos en la
primera o segunda mitad de la palabra. En la figura 25 se detalla este AP.
Figura 25: Autmata de pila para el lenguaje { ww
R
}
Se puede apreciar en el AP de dicha figura la presencia de una transicin de s a f,
en que ni se consumen caracteres de la entrada, ni se manipula la pila. Esta
transicin parece muy peligrosa, porque se puede disparar en cualquier
momento, y si no lo hace exactamente cuando hemos recorrido ya la mitad de la
palabra, el AP podr llegar al final a un estado que no sea final, rechazando en
consecuencia la palabra de entrada. Entonces, cmo saber que estamos
exactamente a la mitad de la palabra?
Conviene en este punto recordar que en un autmata no determinista una palabra
es aceptada cuando existe un clculo que permite aceptarla, independientemente
de que un clculo en particular se vaya por un camino errneo. Lo importante es,
pues, que exista un clculo que acepte la palabra en cuestin. Por ejemplo, la
siguiente tabla muestra un clculo que permite aceptar la palabra w = abba:
Estado Falta leer Pila Transicin
s abba
s bba A 1
s ba ba 2
f ba ba 3
f a A 5
f 4
LECCION 23. - COMBINACIN MODULAR DE AUTMATAS DE PILA
n los AP tambin es posible aplicar mtodos de combinacin modular de
autmatas, como se hizo con los autmatas finitos. En particular, es posible
obtener AP que acepten la unin y concatenacin de los lenguajes aceptados por
dos AP dados.
En el caso de la unin, dados dos AP M1 y M2 que aceptan respectivamente los
lenguajes L1 y L2, podemos obtener un AP que acepte la unin L1 L2,
itroduciendo un nuevo estado inicial s0 con transiciones // a los dos antiguos
estados iniciales s1 y s2, como se ilustra en la figura 26.
Figura 26: Unin de Autmatas de Pila
Ejemplo:- Obtener un AP que acepte el lenguaje {a
n
b
m
|n m}. Claramente este
lenguaje es la unin de a
n
b
m
|n > m} con { a
n
b
m
|n < m}, por lo que basta obtener
E
los AP de cada uno de ellos, y combinarlos con el mtodo descrito.
Ejemplo.- Disear un AP que acepte el lenguaje L = {a
i
b
j
c
k
|(i = j = k)}. Nos damos
cuenta de que L es la unin de dos lenguajes, que son:
L = {a
i
b
j
c
k
| i j} [ {aibjck | j k}
Para cada uno de estos dos lenguajes es fcil obtener su AP. Para el primero de
ellos, el AP almacenara primero las as en la pila, para luego ir descontando una b
por cada a de la pila; las as deben acabarse antes de terminar con las bs o bien
deben sobrar as al terminar con las bs; las cs no modifican la pila y simplemente
se verifica que no haya a o b despus de la primera c.
Tambin es posible obtener modularmente un AP que acepte la concatenacin de
los lenguajes aceptados por dos AP dados.
Sin embargo, la construccin de un AP que acepte la concatenacin de dos
lenguajes a partir de sus respectivos AP M1 y M2, es ligeramente ms complicada
que para el caso de la unin. La idea bsica sera poner transiciones vacas que
vayan de los estados finales de M1 al estado inicial de M2. Sin embargo, existe el
problema que hay que garantizar que la pila se encuentre vaca al pasar de M1 a
M2, pues de otro modo podra resultar un AP incorrecto.
Para esto, es posible utilizar un caracter especial, por ejemplo @, que se mete a
la pila antes de iniciar la operacin de M1, el cual se saca de la pila antes de iniciar
la operacin M2.
LECCCION 24. - AUTMATAS CON PILA Y LENGUAJES LIBRES DE
CONTEXTO.
eorema Si un lenguaje es generado por una gramtica libre del contexto,
entonces es aceptado por un Autmata con Pila No-Determinstico.
Demostracin.-Supongamos que la gramtica no acepta la palabra vaca. En caso
de que acepte la palabra vaca se le eliminara y despues se podra transformar el
autmata para aadir la palabra vaca al lenguaje aceptado por el autmata.
Transformemos entonces la gramtica a forma normal de Greibach. El autmata
con pila correspondiente es M =({q}, T, V, , q, S, 0)donde la funcin de transicin
viene dada por
(q, )(q, a, A)A a P
Este autmata acepta por pila vaca el mismo lenguaje que genera la gramtica.
T
Ejemplo: Para la gramtica en forma normal de Greibach:
S aAA
A aS | bS | a
el autmata es M =({q}, {a, b}, {A, S}, , q, S, 0)
donde (q, a, S)={(q, AA)}
(q,a,A)={(q,S),(q,)}
(q,b,A)={(q,S)}
Teorema Si L =N(M)donde M es un APND, existe una gramtica libre del contexto
G, tal que L(G)=L.
Demostracin.-
Sea M =(Q,A,B, ,q
0
,Z
0
,0), tal que L =N(M). La gramtica G =(V,A,P,S)se
construye de la siguiente forma:
V ser el conjunto de los objetos de la forma [q,C, p], donde p,q Q y C B,
adems de la variable S que ser la variable inicial.
P ser el conjunto de las producciones de la forma
1. S [q
0
,Z,q]para cada q Q.
2. [q,C,q
m
] a[p,D
1
,q
1
][q
1
,D
2
,q
2
]...[q
m1
,D
m,qm
]
donde a A , y C,D
1
,...,D
m
B tales que
(p,D
1
D
2
...D
m
) (q,a,C)
(si m =0, entonces la produccin es [q,A, p] a).
Esta gramtica genera precisamente el lenguaje N(M). La idea de la demostracin
es que la generacin de una palabra en esta gramtica simula el funcionamiento
del autmata no determinstico. En particular, se verica que [q,C, p] genera la
palabra x si y solo si el autmata partiendo del estado q y llegando al estado p,
puede leer la palabra x eliminando el smbolo C de la pila.
Ejemplo Si partimos del autmata M =({q
0
,q
1
},{0,1},{X ,Z},,q
0
,Z
0
,0), donde
(q
0
,0,Z
0
)={(q
0
,X Z
0
)}, (q
1
,1,X )={(q
1
,)}
(q
0
,0,X )={(q
0
,X X )}, (q
1
, ,X )={(q
1
, )}
(q
0
,1,X )={(q
1
, )}, (q
1
, ,Z
0
)={(q
1
, )}
las producciones de la gramtica asociada son:
S [q
0
, Z
0
, q
0
]
S [q0, Z
0
, q
1
]
[q
0
, Z
0
, q
0
] 0[q
0
, X , q
0
][q
0
, Z
0
, q
0
]
[q
0
, Z
0
, q
1
] 0[q
0
, X , q
0
][q
0
, Z
0
, q
1
]
[q
0
, Z
0
, q
0
] 0[q
0
, X , q
1
][q
1
, Z
0
, q
0
]
[q
0
, Z
0
, q
1
] 0[q
0
, X , q
1
][q
1
, Z
0
, q
1
]
[q
0
, X , q
0
] 0[q
0
, X , q
0
][q
0
, X , q
0
]
[q
0
, X , q
1
] 0[q
0
, X , q
0
][q
0
, X , q
1
]
[q
0
, X , q
0
] 0[q
0
, X , q
1
][q
1
, X , q
0
]
[q
0
, X , q
1
] 0[q
0
, X , q1][q
1
, X , q
1
]
[q
0
, X , q
1
] 1
[q
1
, X , q
1
] 1
[q
1
, X , q1]
[q
1
, Z0, q
1
]
Elimando smbolos y producciones intiles queda
S [q
0
, Z
0
, q
1
]
[q
0
, Z
0
, q
1
] 0[q
0
, X , q
1
][q
1
, Z
0
, q
1
]
[q
0
, X , q
1
] 0[q
0
, X , q
1
][q
1
, X , q
1
]
[q
1
, X , q
1
] 1
[q
1
, X , q
1
]
[q
1
, Z0, q
1
]
LECCION 25. - RELACIN ENTRE LOS AUTMATAS DE PILA Y LENGUAJES
LIBRES DE CONTEXTO
hora vamos a establecer el resultado por el que iniciamos el estudio de los AP,
es decir, verificar si son efectivamente capaces de aceptar los LLC.
Teorema.- Los autmatas de pila aceptan exactamente los LLC.
Vamos a examinar la prueba de esta afirmacin, no solamente por el inters por la
rigurosidad matemtica, sino sobre todo porque provee un mtodo de utilidad
prctica para transformar una GLC en un AP. La prueba de este teorema se puede
dividir en dos partes:
1. Si M es un AP, entonces L(M) es un LLC
2. Si L es un LLC, entonces hay un AP M tal que L(M) = L
Vamos a presentar nicamente la prueba con la parte 2, que consideramos de
mayor relevancia prctica.
A
Sea una gramtica G = (V,,R, S). Entonces un Automata de Pila M que acepta
exactamente el lenguaje generado por G se define como sigue:
M = ({p, q},, V ,, p, {q})
donde contiene las siguientes transiciones:
1. Una transicin ((p, , ), (q, S))
2. Una transicin ((q, ,A), (q, x)) para cada A x R
3. Una transicin ((q, , ), (q, )) para cada 2
Ejemplo.- Obtener un AP que acepte el LLC generado por la gramtica con reglas:
1. S aSa
2. S bSb
3. S c
Las transiciones del AP correspondiente estn dadas en la tabla siguiente:
1 (p, ,) (q,S)
2 (q, ,S) (q,aSa)
3 (q, ,S) (q,bSb)
4 (q, ,S) (q,c)
5 (q,a, a) (q, )
6 (q,b, b) (q, )
7 (q,c, c) (q, )
El funcionamiento de este AP ante la palabra abcba aparece en la siguiente tabla:
Estado Falta leer Pila
P
Q
Q
q
q
q
q
q
q
q
abcba
abcba
abcba
bcba
bcba
cba
cba
ba
a
S
aSa
Sa
bSba
Sba
cba
ba
a
Se justifica intuitivamente el mtodo que se introdujo para obtener un AP
equivalente a una gramtica dada. Si se observa las transiciones del AP, veremos
que solamente tiene dos estados, p y q, y que el primero de ellos desaparece del
clculo en el primer paso; de esto conclumos que el AP no utiliza los estados para
recordar caractersticas de la entrada, y por lo tanto reposa exclusivamente en el
almacenamiento de caracteres en la pila. En efecto, podemos ver que las
transiciones del tipo 2, lo que hacen es reemplazar en la pila una variable por la
cadena que aparece en el lado derecho de la regla correspondiente. Dado que la
(nica) transicin de tipo 1 (transicin 1 del ejemplo) coloca el smbolo inicial en la
pila, a continuacin lo que hacen las reglas de tipo 2 es realmente efectuar toda la
derivacin dentro de la pila de la palabra de entrada, reemplazando un lado
izquierdo de una regla por su lado derecho. Una vez hecha la derivacin de la
palabra de entrada, la cual estara dentro de la pila, sin haber an gastado un
solo caracter de la entrada podemos compararla caracter por caracter con la
entrada, por medio de las transiciones de tipo 3.
Existe sin embargo un problema tcnico: si observamos la corrida para la palabra
abcba, nos daremos cuenta de que no estamos aplicando las reglas en el orden
descrito en el prrafo anterior, esto es, primero la transicin del grupo 1, luego las
del grupo 2 y finalmente las del grupo 3, sino que ms bien en la cuarta lnea de la
tabla se consume un caracter a (aplicacin de una transicin del grupo 3) seguida
de la aplicacin de una transicin del grupo 2. Esto no es casualidad; lo que ocurre
es que las variables no pueden ser reemplazadas por el lado derecho de una regla
si dichas variables no se encuentran en el tope de la pila. En efecto, recurdese
que los AP solo pueden accesar el caracter que se encuentra en el tope de la pila.
Por esto, se hace necesario, antes de reemplazar una variable por la cadena del
lado derecho de una regla, desenterrar dicha variable hasta que aparezca en el
tope de la pila, lo cual puede hacerse consumiendo caracteres de la pila (y de la
entrada, desde luego) mediante la aplicacin de transiciones del tipo 3.
LECCION 26. - LEMA DE BOMBEO
omenzamos esta seccin con un lema que nos da una condicin necesaria
que deben de cumplir todos los lenguajes libres de contexto. Nos sirve para
demostrar que un lenguaje dado no es libre de contexto, comprobando que no
cumple esta condicin necesaria.
Lema 2 (Lema de Bombeo para lenguajes libres de contexto) Sea L un
lenguaje libre de contexto. Entonces, existe una constante n, que depende solo de
L, tal que si z L y |z| n, z se puede escribir de la forma z = uvwxy de manera
que
1. |vx| 1
2. |vwx| n, y
3. i 0, uv
i
wx
i
y L
Demostracin.- Supongamos que la gramtica no tiene producciones nulas ni
unitarias (si existiesen siempre se podran eliminar). Supongamos un rbol de
derivacin de una palabra u generada por la gramtica. Es fcil ver que si la
longitud de u es sucientemente grande, en su rbol de derivacin debe existir un
camino de longitud mayor que el nmero de variables. Sea N un nmero que
garantice que se verica esta propiedad. En dicho camino, al menos debe de
haber una variable repetida. Supongamos que esta variable es A, y que la gura
6.1 representa el rbol de derivacin y dos apariciones consecutivas de A.
Figura 27: Arbol de Derivacin en el lema del Bombeo
Ejemplo Vamos a utilizar el lema de bombeo para probar que el lenguaje L =
{a
i
b
i
c|i 1} no es libre de contexto.
C
Supongamos que L fuese libre de contexto y sea n la constante especicada en el
Lema de Bombeo. Consideremos la palabra z = a
n
b
n
c
n
L, que tiene una longitud
mayor que n. Consideremos que z se puede descomponer de la forma z = uvxy,
vericando las condiciones del lema de bombeo.
Como |vwx| n, no es posible para vx tener smbolos a y c al mismo tiempo: entre
la ltima a y la primera c hay n smbolos. En estas condiciones se pueden dar los
siguientes casos:
|vx| contiene solamente smbolos a. En este caso para i = 0, uv
0
wx
0
y = uwy
debera pertenecer a L por el lema de bombeo. Pero uwy contiene n smbolos b, n
smbolos c, menos de n smbolos a, con lo que no podra pertenecer a L y se
obtiene una contradiccin.
|vx| contiene solamente smbolos b. Se llega a una contradiccin por un
procedimiento similar al anterior.
|vx| contiene solamente smbolos c. Se llega a una contradiccin por un
procedimiento similar.
|vx| contiene smbolos a y b. En este caso, uwy tendra ms smbolos c que a o
b, con lo que se llegara de nuevo a una contradiccin.
|vx| contiene smbolos b y c. En este caso, uwy tendra ms smbolos a que b o c,
con lo que se llegara tambin a una contradiccin.
En todo caso se llega a una contradiccin y el lema de bombeo no puede
cumplirse, con lo que L no puede ser libre de contexto.
Es importante sealar que el lema de bombeo no es una condicin suciente. Es
solo necesaria. As si un lenguaje verica la condicin del lema de bombeo no
podemos garantizar que sea libre de contexto.
Un ejemplo de uno de estos lenguajes es
L = {a
i
b
j
c
k
d
l
| (i = 0) ( j = k = l)}
Ejemplo Demostrar que el lenguaje L = {a
i
b
j
c
i
d
j
: i, j 0} no es libre de contexto.
Ejemplo Demostrar que el lenguaje L = {a
i
bc
k
: i j k 0} no es libre de contexto.
LECCION 27. - PROPIEDADES DE CLAUSURA DE LOS LENGUAJES LIBRES
DE CONTEXTO
eorema Los lenguajes libres de contexto son cerrados para las operaciones:
Unin
Concatenacin
Clausura
Demostracin
Sean G
1
=(V
1
, T
1
, P
1
, S
1
) y G
2
=(V
2
, T
2
, P
2
, S
2
) dos gramticas libres de contexto y
L
1
y L
2
los lenguajes que generan. Supongamos que los conjuntos de variables
son disjuntos. Demostraremos que los lenguajes L
1
L
2
, L
1
L
2
y L
1
* de tipo 2 que
los generen. son libres de contexto, encontrando gramticas
1
L
1
L
2
. Una gramtica que genera este lenguaje es G
3
=(V
1
V
2
{S
3
}, T
1
T
2
,
P
3
, S
3
), donde S
3
es una nueva variable, y P
3
=P
1
P
2
ms las producciones S
3
S
1
y S
3
S
2
.
L
1
L
2
. Una gramtica que genera este lenguaje es G
4
=(V
1
V
2
{S
4
}, T
1
T
2
,P
4
,S
4
),
donde S
4
es una nueva variable, y P
4
=P
1
P
2
ms la produccin S
4
S
1
S
2
.
L
1
* Una gramtica que genera este lenguaje es G
5
=(V
1
{S
5
}, T
1
P5,S
5
) donde
P
5
es P
1
ms las producciones S
5
S
1
S
5
y S
5
.
Algunas propiedades de clausura de los lenguajes regulares no se verican en la
clase de los lenguajes libres de contexto, como las que expresan el siguiente
teorema y corolario.
Teorema La clase de los lenguajes libres de contexto no es cerrada para la
interseccin.
Demostracin.-Sabemos que el lenguaje L ={ a
i
b
i
c
j
| i 1} no es libre de contexto.
Por otra parte los lenguajes L
2
={a
i
b
i
c
j
| i 1 y j 1} y L
3
={ a
i
b
j
c
j
| i 1 y j 1} si lo
son.
El primero de ellos es generado por la gramtica:
S AB
A aAb|ab
B cB|c
y el segundo, por la gramtica:
S CD
T
C aC|a
D bDc|bc
Como L
2
L
3
= L
1
, se deduce que la clase de lenguajes libres de contexto no es
cerrada para la interseccin
Corolario La clase de lenguajes libres de contexto no es cerrada para el
complementario.
Demostracin.-
Es inmediato, ya que como la clase es cerrada para la unin, si lo fuese para el
complementario, se podra demostrar, usando las leyes De Morgan que lo es
tambin para la interseccin.
LECCION 28. - ALGORITMOS DE DECISIN PARA LOS LENGUAJES LIBRES
DE CONTEXTO
xisten una serie de problemas interesantes que se pueden resolver en la clase
de los lenguajes libres de contexto. Por ejemplo, existen algoritmos que nos
dicen si un Lenguaje Libre de Contexto (dado por una gramtica de tipo 2 o un
autmata con pila no determinstico) es vaco, nito o innito. Sin embargo, en la
clase de lenguajes libres de contexto comienzan a aparecer algunas propiedades
indecidibles. A continuacin, veremos algoritmos para las propiedades decidibles y
mencionaremos algunas propiedades indecidibles importantes.
Teorema Existen algoritmos para determinar si un lenguaje libre de contexto es
a) vaco
b) nito
c) innito
Demostracin.
a) En la primera parte del algoritmo para eliminar smbolos y producciones intiles
de una gramtica, se determinaban las variables que podan generar una cadena
formada exclusivamente por smbolos terminales. El lenguaje generado es vaco si
y solo si la variable inicial S es eliminada: no puede generar una palabra de
smbolos terminales.
b) y c) Para determinar si el lenguaje generado por una gramtica de tipo 2 es
nito o innito pasamos la gramtica a forma normal de Chomsky, sin smbolos ni
producciones intiles. En estas condiciones todas las producciones son de la
forma:
E
A BC, A a
Se construye entonces un grafo dirigido en el que los vrtices son las variables y
en el que para cada produccin de la forma A BC se consideran dos arcos: uno
de A a B y otro de A a C. Se puede comprobar que el lenguaje generado es nito
si y solo si el grafo construido de esta forma no tiene ciclos dirigidos.
Ejemplo Consideremos la gramtica con producciones,
S AB
A BC|a
B CC|b
C a
El grafo asociado es el de la gura 28(a). No tiene ciclos y el lenguaje es nito. Si
aadimos la produccin C AB, el grafo tiene ciclos (gura 28(b)) y el lenguaje
generado es innito.
Figura 28: Grafo asociado a una gramatica de tipo 2 con lenguaje finito e Infinito
LECCION 29. - ALGORITMOS DE PERTENENCIA
stos algoritmos tratan de resolver el siguiente problema: dada una gramtica
de tipo 2, G =(V, T, P, S)y una palabra u T*, determinar si la palabra puede
ser generada por la gramtica. Esta propiedad es indecidible en la clase de
lenguajes recursivamente enumerables, pero es posible encontrar algoritmos para
la clase de lenguajes libres de contexto.
Un algoritmo simple, pero ineciente se aplica a gramticas en forma normal de
Greibach (si una gramtica no est en esta forma se pasa, teniendo en cuenta que
hemos podido dejar de aceptar la palabra vaca). La pertencencia de una palabra
no vaca se puede comprobar en esta forma normal de Greibach de la siguiente
forma: Como cada produccin aade un smbolo terminal a la palabra generada,
sabemos que una palabra, u, de longitud |u| ha de generarse en |u| pasos. El
algoritmo consistira en enumerar todas las generaciones por la izquierda de
longitud |u|, tales que los smbolos que se vayan generando coincidan con los de
la palabra u, y comprobar si alguna de ellas llega a generar la palabra u en su
totalidad. Este algoritmo para, ya que el nmero de derivaciones por la izquierda
de una longitud dada es nito. Sin embargo puede ser muy ineciente
E
(exponencial en la longitud de la palabra). Para comprobar la pertenencia de la
palabra vaca se puede seguir el siguiente procedimiento:
Si no hay producciones nulas, la palabra vaca no pertenece.
Si hay producciones nulas, la palabra vaca pertenece si y solo si al aplicar el
algoritmo que elimina las producciones nulas, en algn momento hay qhe eliminar
la produccin S .
6.29.1. - El Algoritmo De Cocke-Younger-Kasami
Existen algoritmos de pertenencia con una complejidad O(n
3
), donde n es la
longitud de la palabra de la que se quiere comprobar la pertenencia. Nosotros
vamos a ver el algoritmo de Cocke-Younger-Kasami (CYK). Este algoritmo se
aplica a palabras en forma normal de Chomsky. Este consta de los siguientes
pasos (n es la longitud de la palabra).
1. Para i = 1 hasta n
2. Calcular V
i1
= {A | A a es una produccion y el simbolo i-esimo de u es a}
3. Para j = 2 hasta n
4. Para i = 1 hasta n j + 1
5. V
ij
= 0
6. Para k = 1 hasta j 1
V
ij
= V
ij
{A | A BC es una produccion, B V
ik
y C V
i+k, jk
}
Este algoritmo calcula para todo i, j(i {1,...,n}, j n - j + 1), el conjunto de
variables V
ij
que generan u
ij
, donde u
ij
es la subcadena de u que comienza en el
smbolo que ocupa la posicin i y que contiene j smbolos. La palabra u ser
generada por la gramtica si la variable inicial S pertenece al conjunto V
1n
.
Los clculos se pueden organizar en una tabla como la de la siguiente gura (para
una palabra de longitud 5):
En ella, cada V
i, j
se coloca en una casilla de la tabla. En la parte superior se
ponen los smbolos de la palabra para la que queremos comprobar la pertenencia.
La ventaja es que es fcil localizar los emparejamientos de variables que hay que
comprobar para calcular cada conjunto V
ij
. Se comienza en la casilla que ocupa la
misma columna y est en la parte superior de la tabla, y la casilla que est en la
esquina superior derecha, emparejando todas las variables de estas dos casillas.
A continuacin elegimos como primera casilla la que est justo debajo de la
primera anterior, y como segunda casilla la que ocupa la esquina superior derecha
de la segunda anterior. Este proceso se contina hasta que se eligen como
primera casilla todas las que estn encima de la que se est calculando. La
siguiente gura ilustra el proceso que se sigue en las emparejamientos (para un
elemento de la cuarta la, en una palabra de longitud 5).
Ejemplo Consideremos la gramtica libre de contexto dada por las producciones
S AB|BC
A BA|a
B CC|b
C AB|a
Comprobar la pertenencia de las palabras baaba, aaaaa, aaaaaa al lenguaje
generado por la gramtica.
El algoritmo de Early es tambin de complejidad O(n
3
) en el caso general, pero es
lineal para gramticas LR(1), que son las que habitualmente se emplean para
especicar la sintaxis de las lenguajes de programacin.
Al contrario que el algoritmo de Cocke-Younger-Kasami que trata de obtener las
palabras de abajo hacia arriba (desde los smbolos terminales al smbolo inicial, el
algoritmo de Early comenzar en el smbolo inicial (funciona de arriba hacia
abajo).
Sea G una gramtica con smbolo inicial S y que no tenga producciones nulas ni
unitarias.
Supondremos que u[i.. j] es la subcadena de u que va de la posicin i a la posicin
j. El algoritmo producir registros de la forma (i, j, A, , ), donde i y j son enteros y
A es una produccin de la gramtica. La existencia de un registro indicar
un hecho y un objetivo. El hecho es que u[i +1.. j]es derivable a partir de y el
objetivo es encontrar todos los k tales que deriva a u[j +1..k]. Si encontramos
uno de estos k sabemos que A deriva u[i +1..k].
Para cada j, REGISTROS[j]contendr todos los registros existentes de la forma (i,
j, A, , ).
El algoritmo consta de los siguiente pasos:
P1 Inicializacin.-Sea
REGISTROS[0]={(0, 0, S, , ): S es una produccin}
REGISTROS[j]= 0 para j =1, . . . , n.
j =0
P2 Clausura.- Para cada registro (i, j, A, , B)en REGISTROS[j] y cada
produccin B , crear el registro (j, j, B, , )e insertarlo en REGISTROS[j].
Repetir la operacin recursivamente para los nuevos registros insertados.
P3 Avance.-Para cada registro (i, j, A, , c) en REGISTROS[j], donde c es un
smbolo terminal que aparece en la posicin j +1 de u, crear (i, j +1, A, , c) e
insertarlo en REGISTROS[j + 1].
Hacer j = j +1.
P4 Terminacin.-Para cada par de registros de la forma (i, j, A, , ) en
REGISTROS[j] y (h, i, B, A, ) en REGISTROS[i], crear el nuevo registro (h, j, B,
A, ) e insertarlo en REGISTROS[j].
P5 Si j < n ir a P2.
P6 Si en REGISTROS[n] hay un registro de la forma (0, n, S, , ), entonces u es
generada. En caso contrario no es generada.
Ejemplo Comprobar mediante el algoritmo de Early si la palabra baa es generada
por la gramtica con producciones:
S AB, S BC, A BA, A a,
B CC, B b, C AB, C a
Despus de aplicar el paso de inicializacin, el contenido de REGISTROS[0] es:
REGISTROS[0]:(0,0,S,,AB),(0,0,S,,BC),(0,0,A,,BA),(0,0,A,,a),(0,0,B,,CC),(0,0,
B,,b),(0,0,C,,AB),(0,0,C,,a)
REGISTROS[1] :(0, 1, B, b, ), (0, 1, S, B, C), (0, 1, A, B, A), (1, 1, C, , AB), (1, 1,
C, , a), (1, 1, A, , BA), (1, 1, A, , a), (1, 1, B, , CC), (1, 1, B, , b)
REGISTROS[2] :(1, 2, C, a, ), (1, 2, A, a, ), (0, 2, S, BC, ), (0, 2, A, BA, ), (1, 2,
C, A, B), (1, 2, B, C, C), (0, 2, S, A, B), (0, 2, C, A, B), (2, 2, B, , CC), (2, 2, B, ,
b), (2, 2, C, , AB), (2, 2, C, , a), (2, 2, A, , BA), (2, 2, A, , a)
REGISTROS[3] :(2, 3, C, a, ), (2, 3, A, a, ), (1, 3, B, CC, ), (2, 3, B, C, C) (2, 3,
C, A, B), (1, 3, A, B, A)
Como (0, 3, S, , ) no est en REGISTROS[3], la palabra baa no es generada
S T, S S + T, T F, T T * F, F a, F b, F (S)
Palabra: (a + b) * a
REGISTROS[0] :(0,0,S,,T ), (0,0,S,,S +T), (0,0,T,,F), (0,0,T,,T*F), (0,0,F,,a),
(0,0,F,,b),(
REGISTROS[1] :(0, 1, F, (, S)), (1, 1, S, , T ), (1, 1, S, , S + T ), (1, 1, T, , F),
(1, 1, T, , T * F), (1, 1, F, , a), (1, 1, F, , b), (1, 1, F, , (S)),
REGISTROS[2] :(1, 2, F, a, ), (1, 2, T, F, ), (1, 2, S, T, ), (0, 2, F, (S, )), (1, 2, S,
S, +T )
REGISTROS[3] :(1, 3, S, S+, T ), (3, 3, T, , F), (3, 3, T, , T *F), (3, 3, F, , a), (3,
3, F, , b), (3, 3, F, , (S))
REGISTROS[4] :(3, 4, F, b, ), (3, 4, T, F, ), (1, 4, S, S + T, ), (3, 4, T, T, * F), (0,
4, F, (S, )), (1, 4, S, S, +T )
REGISTROS[5] :(0, 5, F, (S), ), (0, 5, T, F, ), (0, 5, S, T, ), (0, 5, T, T, * F), (0, 5,
S, S, +T ),
REGISTROS[6] :(0, 6, T, T *, F), (6, 6, F, , a), (6, 6, F, , b), (6, 6, F, , (S)),
REGISTROS[7] :(6, 7, F, a, ), (0, 7, T, T * F, ), (0, 7, S, T, ), (0, 7, T, T, *F), (0,
7, S, S, +T ) Como tenemos (0, 7, S, T, ), entonces la palabra (a + b) * c es
generada.
LECCION 30. - PROBLEMAS INDECIDIBLES PARA LENGUAJES LIBRES DE
CONTEXTO
ara terminar el apartado de algoritmos de decisin para gramticas libres de
contexto daremos algunos problemas que son indecidibles, es decir, no hay
ningn algoritmo que los resuelva. En ellos se supone que G, G1 y G2 son
gramticas libres de contexto dadas y R es un lenguaje regular.
Saber si L(G
1
) L(G
2
) = 0.
Determinar si L(G) = T*, donde T es el conjunto de smbolos terminales.
Comprobar si L(G1) = L(G2).
Determinar si L(G1) L(G2).
Determinar si L(G1) = R.
Comprobar si L(G) es regular.
Determinar si G es ambigua.
Conocer si L(G) es inherentemente ambiguo.
Comprobar si L(G) puede ser aceptado por una autmata determinstico con
pila.
P
ACTIVIDADES:
Ejercicios Propuestos:
EJERCICIOS DE AUTOMATAS CON PILA
CONCEPTOS BSICOS
1.- Dado el siguiente autmata con pila, indicar:
(a) Qu lenguaje reconoce
(b) Cules de las siguientes palabras son aceptadas por el autmata:
aabbc, abbc, bbcc, aabbbcc (mostrando la sucesin de descripciones
instantaneas)
AP = ({a, b, c}, {A, B, S}, {q, r, s, t}, q, S, f, )
f(q, a, S) = {(r, S)} f(s, b, S) = {(s, BS)}
f(q, a, A) = {(r, A)} f(s, b, A) = {(s, )}
f(q, b, S) = {(s, BS)} f(s, b, B) = {(s, BB)}
f(q, b, A) = {(s, )} f(s, c, B) = {(t, )}
f(r, a, S) = {(q, AS)} f(t, c, B) = {(t, )}
f(r, a, A) = {(q, AA)} f(t, , S) = {(t, )}
2.- Definir formalmente el lenguaje reconocido por el siguiente autmata con pila:
A = ({a,b,c}, {S,A,B}, {q,r,s,p}, q, S, f, )
f(q, a, S) = {(r, S)} f(s, b, S) = {(s, BS)}
f(q, b, S) = {(s, BS)} f(s, b, A) = {(s, )}
f(q, a, A) = {(r, A)} f(s, b, B) = {(s, BB)}
f(q, b, A) = {(s, )} f(s, c, B) = {(p, )}
f(r, a, S) = {(q, AS)} f(p, c, B) = {(p, )}
f(r, a, A) = {(q, AA)} f(p, , S) = {(p, )}
3.- Dado el siguiente autmata con pila indicar:
(a) Qu lenguaje reconoce por vaciado de pila.
(b) Cules de las siguientes palabras son aceptadas por el AP: abba, abaaba.
AP = ({a,b}, {Z}, {q0, q1, q2, q3}, q0, Z, f, )
f(q0, a, Z) = {(q1, aZ)} f(q2, b, b) = {(q2, )}
f(q0, b, Z) = {(q1, bZ)} f(q2, a, a) = {(q2, )}
f(q1, a, a) = {(q1, aa), (q2, )} f(q2, , Z) = {(q2, )}
f(q1, a, b) = {(q1, ab)}
f(q1, b, a) = {(q1, ba)}
f(q1, b, b) = {(q1, bb), (q2, )}
CONSTRUCCIN DE AUTMATAS
4.- Construir un autmata con pila que reconozca cada uno de los siguientes
lenguajes:
(a) L = { a
n
b
2n
/ n > 0 }
(b) L = { a
n
b
m
c
n
/ n, m > 0 }
Ejercicios de Autmatas con Pila 2
(c) L = { x / x {0,1}+ & n 0s = n 1s }
(d) L = { a
i
b
j
c
i+j
/ i, j > 0 }
(e) L = { a
2i
b
3i
/ i >= 0 }
(f) L = { a
n
b
m
c
2m
a
n+2
, m > 0, n >= 0 }
(g) L = { xcy / x,y {a, b}+, n de subcadenas ab en x = n de subcadenas ba
en y }
(h) L = { 0
n
1
n
/ n > 0 } { 0
n
1
2n
/ n > 0 }
(i) L = {a
n
b
m
c
r
a
s
b
n
/ s = m + r, m,n > 0, r 0}
(j) L = {a
2n
b
m
0
i
b
2m
a
n
, i = 0 1, m, n > 0}
(l) L = {x
1n
2
m
x-1 / n, m = 0 1 y x {a, b}+}
(m) L = {a
n
b
m
c
p
/ n,m >= 0, p > n + m}
5.- Construir un autmata con pila que reconozca por vaciado de pila el lenguaje
que contiene las palabras formadas por los smbolos 0, 1 y 2 que tienen
tantas apariciones de las secuencia 01 como del smbolo 2.
6.- Construir un autmata con pila que reconozca por vaciado de pila las palabras
formadas por los smbolos a y b que tengan doble nmero de smbolos a que
de smbolos b (incluyendo ). Es decir, el autmata deber reconocer por
ejemplo las palabras aabbaa, abbaaa, bababaaaa, bbbaaaaaa, y no debe
reconocer palabras como abab, abbabab, a, b, aaa, bbb.
7.- Construir un autmata con pila que reconozca, por vaciado de pila, el lenguaje
formado por las cadenas que contienen smbolos de abrir y cerrar parntesis, es
decir ( y ), que cumple las siguientes condiciones:
- todo parntesis que se abre debe ser cerrado posteriormente
- todo parntesis que se cierra debe haber sido abierto anteriormente
- se permiten los parntesis anidados.
Tnganse en cuenta los siguientes ejemplos de cadenas reconocidas y no
reconocidas
por el autmata:
Cadenas reconocidas Cadenas no reconocidas
()()((()())()) ()())
((()))() )()(
((())(()))()()(()()) (((()
8.- Dado el siguiente lenguaje: L = { anbcmdmen / n, m > 0 }
(a)Construir un autmata con pila que reconozca dicho lenguaje por vaciado de
pila.
(b)Comprobar mediante el uso de descripciones instantneas que la cadena
aabccddee es aceptada por dicho autmata.
9.- Construir un autmata con pila que reconozca por vaciado de pila el lenguaje
siguiente:
L = { 0
n
1
n
/ n > 0 } { 0
n
1
2n
/ n > 0 }
10.- Dado el siguiente lenguaje:
L= {a
n
b
m
d
m
/ n, m > 0} {a
n
b
m
c
m
d
n
/ n, m > 0}
(a) Encontrar un autmata con pila que reconozca L por vaciado de pila.
(b) Comprobar mediante el uso de descripciones instantneas que la cadena
aacd es aceptada por dicho autmata.
Ejercicios Resueltos:
1. Cul es el lenguaje que acepta el autmata de pila cuyo diagrama de
transiciones es el siguiente?
Solucin:
Acepta la cadena vaca.
Segn la rama superior, toda x que se reciba, se registrar en la pila; y el estado
siguiente ser de aceptacin.
Segn la rama inferior, slo se aceptar la entrada y si se puede sacar una x de la
pila.
Conclusin:
Acepta cualquier cadena que (empezando a contar por la izquierda) contenga un
nmero de y menor o igual a que de x. Pueden estar intercaladas
Ejemplos: xyx, xxy, xxyxyx, etc.
2.- Modifique el diagrama de transiciones del ejercicio anterior para que el
autmata de pila acepte el mismo conjunto de cadenas, pero con su pila vaca.
Solucin:
3.- Muestre que toda cadena derivada por la izquierda de una gramtica
independiente del contexto puede derivarse tambin por la derecha.
Solucin:
El lado por donde se empieza a construir (por la derecha o por la izquierda) slo
tiene relevancia en las etapas intermedias de la construccin del rbol. Pero con la
construccin terminada, no es relevante el lado por donde se empez. La cadena
es la misma en ambos casos.
INTRODUCCIN
En las Unidades precendentes se han estudiado lo que se puede considerar las
mquinas abstractas que permiten solucionar ciertos tipos de algoritmos, los
algoritmos en los que no puede recordarse ms que una cantidad fija de
informacin y otros en los que la informacin desarrollada durante la ejecucin del
algoritmo puede recuperararse solo en concordancia con la regla lifo ultimos en
entrar primeros en salir, en esta unidad se describe una maquina abstracta,
llamada Mquina de turing , que es aceptada de manera amplia como modelo
general de computacin, aunque las operaciones bsicas de esta mquina son
comparables en su sencillez a las de las mquinas estudiadas en las unidades
anteriores, las nuevas maquinas pueden realizar una mplia varidad de
operaciones de computo. Ademas de aceptar lenguajes les es posible computar
funciones y de conformidad con la tesis de Church-Turing, ejecutar casi cualquier
procedemiento algoritmico concebible.
OBJETIVO GENERAL
Reconocer la importancia y el poder computacional de las maquinas de turing en
el contexto de la solucin de problemas computacionales de reconocimiento de
lenguajes.
OBJETIVOS ESPECIFICOS
Estudiar las Mquinas de Turing y sus propiedades bsicas
LECCION 31. - DEFINICIN
16
s como en secciones anteriores vimos cmo al aadir al autmata finito
bsico una pila de almacenamiento auxiliar, aumentando con ello su poder de
clculo, cabra ahora preguntarnos que es lo que habra que aadir a un autmata
de pila para que pudiera analizar lenguajes como {a
n
b
n
c
n
}. Partiendo del AP bsico
de la figura siguiente.
Figura (a)Automata de Pila (b) Maquina de Turing
Algunas ideas podran ser:
1. Aadir otra pila;
2. Poner varias cabezas lectoras de la entrada;
3. Permitir la escritura en la cinta, adems de la lectura de caracteres.
Vamos a enfocar nuestra atencin a una propuesta en particular que ha tenido un
gran impacto en el desarrollo terico de la computacin: la Mquina de Turing.
A. Turing propuso en los aos 30 un modelo de mquina abstracta, como una
extensin de los autmatas finitos, que result ser de una gran simplicidad y
podero a la vez. La mquina de Turing es particularmente importante porque es la
ms poderosa de todas las mquinas abstractas conocidas (A. Turing.- On
computable numbers with an application to the Entscheidungs-problem, Proc.
London Math. Soc., v.2, n.42, pp230-265.)
16
VAQUERO SNCHEZ, Antonio Ramon, Calculabilidad y maquinas de turing (2004)
En: http://www.fdi.ucm.es/profesor/vaquero/TALF-5-Turing.doc
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En:
http://lizt.mty.itesm.mx/~rbrena/AyL.html.
A
LECCION 32. - FUNCIONAMIENTO DE LA MQUINA DE TURING
a mquina de Turing (abreviado MT) tiene, como los autmatas que hemos
visto antes, un control finito, una cabeza lectora y una cinta donde puede haber
caracteres, y donde eventualmente viene la palabra de entrada. La cinta es de
longitud infinita hacia la derecha, hacia donde se extiende indefinidamente,
llenndose los espacios con el caracter blanco (que representaremos con t). La
cinta no es infinita hacia la izquierda, por lo que hay un cuadro de la cinta que es
el extremo izquierdo, como en la figura En la MT la cabeza lectora es de lectura y
escritura, por lo que la cinta puede ser modificada en curso de ejecucin. Adems,
en la MT la cabeza se mueve bidireccionalmente (izquierda y derecha), por lo que
puede pasar repetidas veces sobre un mismo segmento de la cinta.
La operacin de la MT consta de los siguientes pasos:
1. Lee un caracter en la cinta
2. Efectua una transicin de estado
3. Realiza una accin en la cinta
Las acciones que puede ejecutar en la cinta la MT pueden ser:
Escribe un smbolo en la cinta, o Mueve la cabeza a la izquierda o a la derecha
Estas dos acciones son excluyentes, es decir, se hace una o la otra, pero no
ambas a la vez.
La palabra de entrada en la MT est escrita inicialmente en la cinta, como es
habitual en nuestros autmatas, pero iniciando a partir de la segunda posicin de
la cinta, siendo el primer cuadro un caracter blanco. Como la cinta es infinita,
inicialmente toda la parte de la cinta a la derecha de la palabra de entrada est
llena del caracter blanco (t).
Figura.2: MT que acepta palabras que empiezan con a
L
Por definicin, al iniciar la operacin de la MT, la cabeza lectora est posicionada
en el caracter blanco a la izquierda de la palabra de entrada, el cual es el cuadro
ms a la izquierda de la cinta.
Decimos que en la MT se llega al final de un clculo cuando se alcanza un
estado especial llamado halt en el control finito, como resultado de una transicin.
Representaremos al halt por h. Al llegar al halt, se detiene la operacin de la MT,
y se acepta la palabra de entrada. As, en la MT no hay estados finales. En cierto
sentido el halt sera entonces el nico estado final, slo que adems detiene la
ejecucin.
Cuando queremos que una palabra no sea aceptada, desde luego debemos evitar
que la MT llegue al halt. Podemos asegurarnos de ello haciendo que la MT caiga
en un ciclo infinito El lenguaje aceptado por una MT es simplemente el conjunto de
palabras aceptadas por ella
Al disear una MT que acepte un cierto lenguaje, en realidad diseamos el
autmata finito que controla la cabeza y la cinta, el cual es un autmata con salida
As, podemos usar la notacin grfica utilizada para aquellos autmatas para
indicar su funcionamiento. En particular, cuando trazamos una flecha que va de un
estado p a un estado q con etiqueta /L, quiere decir que cuando la entrada al
control finito (esto es, el caracter ledo por la cabeza de la MT) es , la cabeza
lectora hace un movimiento a la izquierda, indicada por el caracter L (left, en
ingls); similarmente cuando se tiene una flecha con /R el movimiento es a la
derecha. Cuando la flecha tiene la etiqueta /, donde es un caracter, entonces
la accin al recibir el caracter consiste en escribir el caracter en la cinta. Con
estos recursos es suficiente para disear algunas MT, como en el siguiente
ejemplo.
Ejemplo.- Disear (el control finito de) una MT que acepte las palabras en {a, b}
que comiencen con a. La solucin se muestra en la figura 29. Si la primera letra es
una a, la palabra se acepta, y en caso contrario se hace que la MT caiga en un
ciclo infinito, leyendo y escribiendo b. Ntese que la accin inmediatamente
antes de caer en el halt es irrelevante; igual se poda haber puesto a/a o a/R
como etiqueta de la flecha.
Figura.29: MT que acepta palabras que empiezan con a
Ejemplo.- Disear una MT que acepte las palabras en {a, b} que terminen con a.
Aunque este ejemplo parece bastante similar al precedente, en realidad es ms
complicado, pues para ver cual es la ultima letra, hay que ir hasta el blanco a la
derecha de la palabra, luego regresar a la ultima letra y verificar si es una a. Una
solucin se muestra en la figura 3.
Figura 30: MT que acepta palabras que terminan con a
Ejemplo.- Probar que hay lenguajes que no son libres de contexto, pero que
pueden ser aceptados por una maquina de Turing. Proponemos el lenguaje
anbncn, que se sabe que no es LLC. Ahora construiremos una MT que lo acepte.
La estrategia para el funcionamiento de dicha MT consistira en ir haciendo
pasadas por la palabra, descontando en cada una de ellas una a, una b y una c;
para descontar esos caracteres simplemente los reemplazaremos por un caracter
*. Cuando ya no encontremos ninguna a, b o c en alguna pasada, si queda
alguna de las otras dos letras la palabra no es aceptada; en caso contrario se llega
a halt. Es til, antes de emprender el diseo de una MT, tener una idea muy clara
de cmo se quiere que funcione. Para eso se puede detallar el funcionamiento con
algn ejemplo representativo, como en la tabla siguiente, para la palabra aabbcc.
La posicin de la cabeza se indica por el smbolo .
Operatividad Formalmente: La mquina de Turing opera cclicamente. Al comienzo
de un ciclo se parte de una determinada configuracin. El smbolo contenido en la
celda explorada por la cabeza L/E ms el estado de la MT determinan las acciones a
realizar en un ciclo. Estas acciones son:
1) Sustituir un smbolo por otro (puede ser el mismo)
2) Desplazar la cabeza L/E: a la derecha (D), a la izquierda (I) o dejarla en la
misma casilla (N).
3) Pasar la UC a otro estado (el mismo como caso particular).
Una vez realizadas esas tres acciones, el ciclo ha terminado y puede comenzar otro
ciclo nuevo. En cada ciclo se realiza una instruccin. As pues, una instruccin viene
representada por una quntupla: a
i
s
k
a
j
m s
l
;
a
i
, a
j
; s
k
, s
l
S y m {D, I, N}
Los dos primeros smbolos de la quntupla son el carcter al que apunta la cabeza
L/E al comienzo del ciclo y el estado de la mquina en ese instante; los tres smbolos
finales son el carcter que sustituye al que haba en la casilla, el movimiento de la
cabeza L/E y el estado de la mquina al final del ciclo.
Consiguientemente una MT queda completamente definida por
, S , I , Q
: alfabeto, S: conjunto de estados, I: configuracin inicial, Q: conjunto de quntuplas
(repertorio de instrucciones).
Una instruccin importante es la de Parada, equivalente a una quntupla
a
i
s
j
a
i
N s
j
.
La mquina ha de ser no ambigua. Es decir, no debe haber, ante las mismas
condiciones iniciales, reacciones diferentes de la mquina. Ello implica que no debe
haber dos quntuplas distintas con los dos primeros smbolos iguales. S puede
haber, obviamente, dos quntuplas diferentes con los tres ltimos smbolos iguales.
LECCION 33. - DIFERENCIAS ENTRE LAS COMPUTADORAS Y LAS
MQUINAS DE TURING
parte de la capacidad de memoria, las diferencias entre una MT y una
computadora de estructura Von Neuman son:
En cuanto a estados: En una MT el n de estados depende del algoritmo. En una
computadora, un estado viene representado por el contenido de la memoria, y una
situacin por un estado y un puntero a una direccin (la que contiene a la instruccin
que va a ejecutarse). La ejecucin de la instruccin pasa a la mquina a otro estado
y la variable de enlace adopta otro argumento (la direccin siguiente si la instruccin
no era de bifurcacin y la mquina es secuencial natural).
En cuanto a memoria: En una MT la memoria es la cinta de E/S ms el "soporte
fsico" de los estados de la UC. Y ya sabemos cmo se pasa de una situacin a
otra: a
i
s
r
a
j
m s
l
. Programa en una MT es la secuencia de quntuplas que hay
que seguir para hacer el clculo. El mismo algoritmo, expresado en lenguaje-
mquina "tipo" para una computadora "tipo", o sea, programa en lenguaje
mquina, es algo distinto que la secuencia de quntuplas. Y se debe a la
marcada diferencia entre n-upla e instruccin. Para formalizar el concepto de
programa en lenguaje mquina no es, pues, buen modelo una MT.
En cuanto al orden de ejecucin de las instrucciones: En la estructura Von Neumann
el secuenciamiento lo marca el orden de colocacin de las instrucciones en la
memoria interna y viene asegurado por el contador de programa. En una MT el
orden de ejecucin lo marca en todo instante el estado de la mquina y el carcter
de la cinta apuntado, que son los dos datos que determinan la quntupla que ha de
ser ejecutada.
Estrategia de trabajo:
Desplazar el puntero hacia la derecha hasta que se encuentre un blanco, haciendo
los retoques necesarios para que queden tantos 1s como requiere el resultado
correcto.
A
En esta situacin son suficientes dos estados. En el estado inicial la mquina puede
permanecer desplazando la cabeza hacia la derecha hasta que encuentra un b. Esa
es la idea central para la construccin de la mquina. Paso a paso se ha de ir
definiendo cada instruccin necesaria para seguir la estrategia de trabajo. Y slo se
introducir un nuevo estado cuando se necesite. En este caso se llega a:
M s
o
s
1
0 1 D s
0
1/1D 1/bN
b/bI 1 1 D s
0
b N s
1
s
0
s
1
b b I s
1
b N s
1
= Parada
0/1D b/bN
Matriz de Turing
Diagrama de estados o Esquema funcional
Comprobacin: Se debe tener seguridad de la correccin de la mquina construida.
Para ello se debe probar el procesamiento a mano de ejemplos significativos. As:
Secuencia de descripciones instantneas:
s
0
... b 1 1 1 0 1 1 b b . . . configuracin inicial
s
0
... b 1 1 1 0 1 1 b b . . .
------------------------------
s
0
... b 1 1 1 0 1 1 b . . .
s
0
... b 1 1 1 1 1 1 b . . .
------------------------------
s
0
... b 1 1 1 1 1 1 b . . .
S1
b 1 1 1 1 1 1 b . . . pasa de s
0
a s
1
S1
b 1 1 1 1 1 b b . . . Configuracin final
Tambin hay que comprobar para el 1
er
sumando = 0 y/o 2 sumando = 0.
Hacindolo, se ve que se cumple en este ejemplo. Podemos confiar en la mquina
construida slo si ha salido airosa de las comprobaciones.
Es conveniente aplicar sistemticamente el mtodo de construccin seguido, que
consta de las siguientes etapas:
1.- Representacin de los objetos: Datos y resultados.
2.- Alfabeto de la cinta y codificacin de los objetos en el alfabeto. Y de ah la
configuracin inicial.
3.-Definicin del resultado para todos los ejemplares de entrada. Y de ah la
configuracin final, excepto el estado final y la celda apuntada en esa situacin.
4.-Estrategia de trabajo que ha de seguir la mquina para pasar de la configuracin
inicial a la final.
5.- Estados e instrucciones de la mquina.
6.- Comprobacin.
Siempre que la mquina no sea muy simple se debe seguir este mtodo.
Mquinas equivalentes
Veamos que puede haber diversas mquinas de Turing para resolver el mismo
problema.
Otra MT para el mismo problema del ejemplo 1: El retoque (borrar un 1) se hace al
principio. La mquina equivalente es:
Q = {0 s
0
0 D s
1
, 0 s
1
1 D s
1
,1 s
0
b D s
1
, 1 s
1
1 D s
1
, b s
1
b N s
1
}
Explicacin de la quntupla <0 s
0
0 D s
1
>: Es el caso de 1
er
sumando nulo. Como el
resultado ha de ser el 2 sumando, ste ha de quedar intacto, as como el separador.
Comprobacin:
Configuracin inicial: s
0
b b 1 1 . . 1 0 1 1 . . 1 b
s
1
b b b 1 . . 1 0 1 1 . . 1 b
s
1
. . . . . . . . . . . . . . . . . .
s
1
b b b 1 . . 1 0 1 1 . . 1 b
s
1
b b b 1 . . 1 1 1 1 . . 1 b
s
1
. . . . . . . . . . . . . . . .....
Configuracin final: s
1
b b b 1 . . 1 1 1 1 . . 1 b
Tambin hay que comprobar para 1
er
sumando = 0 y/o 2 sumando = 0.
Para una descripcin instantnea inicial distinta, la MT sera algo distinta. Por
ejemplo, si se partiese de la configuracin inicial s
0
... b b b ... b 1 1 ... 1 0 1 1 ... 1 b
b ...,
la MT correspondiente sera (borrando el 1
er
"1" del 1
er
n):
M
2
b 1 0
s
0
b D s
0
b D s
1
0 D s
1
s
1
b N s
1
1 D s
1
1 D s
1
Hay que hacer notar que si se partiese de la 1 MT (borrando el ltimo "1" del 2 n)
habra que introducir un estado ms, porque habra que distinguir 3 tipos de b: Los
que se recorren hacia la derecha al principio, el primero que se encuentra cuando ha
terminado de barrerse el 2 n y el b que se encuentra al volver a la izquierda (por
transformacin del ltimo "1" del 2 n).
Observacin sobre la Parada:
En el ejemplo 1 hay una casilla (0, s
1
) vaca. Si la mquina se encontrara en esa
situacin, quedara parada (bloqueada) por no existir instruccin para operar en ese
caso. Eso no debe suceder si la mquina est bien construida. No debe haber otras
instrucciones que lleven a la mquina a una tal situacin (situacin equivalente a una
mquina de Von Neuman en un estado tal que el contenido del "contador del
programa" apunta a una celda de memoria que no contiene ninguna instruccin).
Datos incorrectos:
Ahora bien en el caso de la MT puede llegarse a una situacin, estando bien
construida la mquina, de buena Parada aun cuando los datos estn
incorrectamente representados (con errores). P.ej. supongamos en el Ejemplo 1 que
queremos sumar 3 + 3 y nos hemos equivocado al escribir el 2 sumando:
Configuracin inicial: ... b b 1 1 1 0 1 0 1 b b ...
La mquina trabajara hasta llegar a la configuracin final ...b b 1 1 1 1 1 1 b ..., que
es la solucin. Sin embargo esta situacin no es deseable. Una elemental reflexin
nos lleva a la conclusin de que esta mquina no distingue un smbolo separador de
un error en un dato. Lo que podra hacerse en este caso es que la mquina
distinguiera entre un primer smbolo y otros ms, pues se supone que slo debe
haber uno. En la situacin de encontrarse con un segundo 0 debe llegarse a una
situacin de Parada, pero esta Parada es debida a la deteccin de un error por la
propia mquina. Es decir, todo programa debera contener una parte de
reconocimiento y validacin de la configuracin inicial. En el caso que estamos
tratando habran de crearse un estado ms y quntuplas nuevas, al mero efecto de
reconocimiento de un error en algn dato y consiguiente parada de aviso.
En s
0
, cuando se encuentra el primer 0, lo cambia a "1" y hay una transicin a s
1
, de
forma que, si se encuentra otro "0" en estado s
1
, pueda parar: s
1
0 0 N s
1
. Ver M
e
.
Entonces se necesita un nuevo estado s
2
, para encargarse de lo que antes se
encargaba a s
1
.
Por qu no hace bien el resultado M? Qu es lo que hace en realidad M?. M (igual
que M
1
y M
2
) calcula la funcin:
n
f(x
1
, x
2
,...,x
n
) = x
1
+ 1 + x
2
+ 1 + ... + x
n
- 1 = x
i
+ n - 2
i=1
Para n = 2, f (x
1
,x
2
) = x
1
+ x
2
M
e
1 0 b
s
0
1 D s
0
1 D s
1
s
1
1 D s
1
0 N s
1
b I s
2
s
2
b N s
2
b N s
2
parada parada
error buena
Consideraciones similares pueden hacerse sobre todas las posibles clases de
errores (b en los datos, p.e.). Las cosas pueden adquirir una complejidad grande en
funcin de las clases de errores que admitamos como posibles.
Mientras no digamos lo contrario supondremos que la configuracin inicial es
correcta. Pero debemos tener en cuenta que "un algoritmo solo debe hacer aquella
funcin para la que ha sido construido", y nada ms. En el caso del Ej. 1, la mquina
suma dos nmeros y, adems, hace otras cosas (considera que los 0, a partir del
1, son "1").
Relacin entre la cardinalidad del alfabeto y el n de estados:
Los datos se pueden codificar con uno u otro alfabeto, con ms o menos smbolos.
Las MT correspondientes son diferentes en uno u otro caso. Vemoslo con un
ejemplo:
Ejemplo : Sumar dos nmeros, con la misma representacin del ej. 1. = {b, 1}
Configuracin inicial: . . . b 1 1 1 b 1 1 b . . .
Necesitamos distinguir entre el b separador de los 2 nmeros y el b que sigue al 2
nmero. Las acciones a realizar, en cada uno de esos dos casos, son diferentes.
Con el mismo smbolo de entrada, la primera vez hay que sustituirlo por "1" y
continuar moviendo el cursor a la derecha, pero en el 2 caso hay que dejarlo todo tal
cual y desplazar el cursor a la izquierda. Teniendo en cuenta que no puede haber
dos quntuplas distintas con los mismos dos primeros smbolos y, adems, que el
smbolo de entrada (b) es el mismo en los dos casos, es preciso introducir otro
estado ms.
Tendremos entonces tres estados, caracterizados por:
s
0
: el carcter (1) que se lee es del 1
er
sumando.
s
1
: el carcter que se lee es del 2 sumando.
Cuando llega un b se ha terminado de explorar el 2 sumando.
s
2
: Se han terminado los sumandos.
Esquema funcional
s
0
s
1
s
2
b 1 D s
1
b I s
2
b N s
2
1 1 D s
0
1 D s
1
b N s
2
Vemos que, para el mismo problema, se necesita un estado ms. Y no es posible
hacerlo con menos estados. Es sta un regla general: "Cuanto menor es el n de
smbolos para representar la misma informacin, mayor es el n de estados de la
Mquina de Turing necesarios para resolver un problema dado".
LECCION 34. - LA MAQUINA UNIVERSAL DE TURING
asta aqu hemos considerado cada esquema funcional asociado a su MT propia.
Pero es posible concebir una M T capaz de ejecutar cualquier algoritmo; es decir
capaz de realizar los clculos que realizara cualquier otra MT, o sea, capaz de
simular (tener el mismo comportamiento) cualquier MT particular.
Esta mquina Universal no debe ser diseada para realizar un clculo especfico,
sino para procesar cualquier informacin (realizar cualquier clculo especfico -MT
particular- sobre cualquier configuracin inicial de entrada correcta para esa MT
particular). La MUT ha de tomar como informacin de entrada la MT particular ms la
C.I. . El algoritmo universal ha de ser un intrprete de esa informacin de entrada.
La cinta de entrada ha de tener una C.I. tal como: ... bb quntupla b quntupla b... C I
(MT) b b ...
El trabajo de interpretacin del esquema universal ha de consistir en:
1) s
k
= s
0
(Inicializacin: Suponer que la MT particular empieza estando en s
0
).
2) Acceder al carcter de la Configuracin apuntado por la Cabeza L/E de la MT
(a
i
).
3) Encontrar en la cinta una quntupla que empiece por a
i
s
k
(a
i
s
k
a
j
m s
1
).
4) Reemplazar a
i
por a
j
en la casilla donde se accedi a a
i
.
5) Realizar el desplazamiento m desde la casilla donde estaba a
i
. O sea, marcar la
nueva casilla a la que apunta la cabeza L/E de la MT particular.
6) s
k
= s
1
(actualizar el estado de la MT particular).
7) Volver a 2).
Observaciones sobre el esquema universal:
- La M U T parar cuando el clculo est terminado, o sea, cuando la quntupla a
aplicar sea del tipo a
i
s
k
a
i
s
k
N s
k
. As pues, en el ciclo que es el algoritmo universal,
H
hay que incluir dentro de la fase 3 una exploracin de la quntupla, una vez
encontrada, para decidir si hay que parar o continuar.
-Es complicado explicitar detalladamente las instrucciones que componen cada fase
del Algoritmo Universal, debido al carcter unidimensional de la cinta y a la
exploracin casilla a casilla.
- Es obligada una codificacin de la informacin. El n de alfabetos y de caracteres
distintos de todas las posibles M T particulares que puedan pensarse es
arbitrariamente grande y, sin embargo, la M U T slo puede disponer de un alfabeto
finito determinado. Esto obliga a definir procedimientos para codificar la informacin
de cualquier alfabeto finito al alfabeto que definamos para la M U T. Por el mismo
motivo ha de haber una normalizacin en la notacin de los estados (el estado inicial
de cualquier M T debe ser designado con el mismo smbolo, y as para los
sucesivos).
Una metodologa para la aplicacin de este concepto de normalizacin de la
informacin es la numeracin de Gdel, que se ve en Funciones Recursivas.
LECCION 35. - CODIFICACIN DE MTS:
a codificacin debe permitir a la MUT un reconocimiento preciso de cada
componente sintctico registrado en la cinta.
Para las letras del alfabeto:
c (b) = b (cdigo del carcter blanco)
c (a
i
) = 1
i+1
; a
i
(indeterminadamente grande); i = 0,1,2,
Para los estados:
c (h) = 1; h = estado de parada.
c( s
i
) = 1
i+1
; S
i
Q S (indeterminadamente grande).
Para los desplazamientos del cursor, m { N, I, D}:
c (N) = 1; c ( I) = 1 1; c (D) = 1 1 1.
El cdigo de una quntupla p a q d m est representado por una palabra {0, 1}*,
definida as: c(p) b c(a) b
c
(q)
b c(d) b c(m) b.
Una MT que tiene n quntuplas (el orden no importa): u
1
, u
2
, , u
n
tiene un cdigo:
c(q
j
) b
c(u
1
) b
c(u
2
) b .. b
c(u
n
) b, siendo q
j
: estado inicial de T.
L
Codificacin de palabras
Sean las letras del alfabeto Z
i
A y Z una palabra Z = Z
1
Z
2
Z
n
Z tiene un cdigo c(Z) = b b c ( Z
1
) b c (Z
2
) b b c (Z
n
)
b
Sobre el trabajo de la MUT (continuacin)
La entrada a la MUT est dada por una MT y una palabra Z. La entrada codificada
es: c(T) c(Z).
Obsrvese que entre el final del cdigo de la ltima quntupla y el comienzo del
cdigo de Z hay tres blancos.
Es fcil construir la MT que transforma T en c(T) y Z * en c(Z).
Para simular el trabajo de T con una entrada Z, la entrada a la MUT es c(T) c(Z). El
trabajo ha de ser:
a) Cuando la funcin parcial que calcula T est definida para Z, T se detiene y da s
como resultado. En este caso la MUT debe parar y dar c(s) como resultado.
z T s
c(T) c(Z) MUT c(T) c(s)
b) Cuando la funcin que calcula T no est definida para Z, T no se detiene y la MUT
tampoco debe parar. En este caso la MUT se mete en un ciclo infinito.
BIBLIOGRAFIA
M. Alfonseca, J. Sancho, M. Martnez Orga, (1990). Teora de Lenguajes,
Gramticas y Autmatas,Espaa,Ediciones Universidad y Cultura.
Brokshear J, Blend (1993), Teoria de la computacin, Lenguajes formales,
Autmatas y complejidad Mxico edicin, Addison-Wesley iberoamericana.
Dean Kelley, (1995), Teora de autmatas y lenguajes formales, Espaa Prentice -
Hall.
Pedro Isasi, Paola Martnez, Daniel. Borrajo (1997). Lenguajes, gramticas y
autmatas Un enfoque prctico Espaa, 2 edicin, Addison-Wesley
J.E. Hopcroft, R. Motwani, J.D. Ullman, (2002) Introduccin a la Teora de
Autmatas, Lenguajes y Computacin, Espaa 2 edicin, Addison-Wesley
iberoamericana.
Martn John, (2004), Lenguajes formales y teora de la computacin, Mxico, 3
Edicin, Mc Graw Hill.
SITIOS WEB
Pgina web de la asignatura universidad rey Juan carlos:
http://www.ia.escet.urjc.es/grupo/docencia/automatas
Foro: http://www.ia.escet.urjc.es/foros/automatas
http://luisguillermo.com/castellano/default.htm#supra
http://www.ing.puc.cl/jabaier/iic2222
aula virtual http://www.upseros.com/
Software
Software para el aprendizaje de lenguajes y autmatas: JFLAP
http://www.cs.duke.edu/%7Erodger/tools/jflap/ Excelente paquete en Java, por lo
que es multiplataforma. Incluye edicin grfica de autmatas, conversiones,
minimizacin, gramticas, mquinas de Turing, y mucho ms.
Chalchalero http://www.ucse.edu.ar/fma/sepa/chalchalero.htm Extenso paquete
hecho en Argentina para PC con Windows, incluye editor de autmatas,
conversiones, minimizacin, asi como numerosas herramientas para aprendizaje
de compiladores.
REFERENCIAS
MORAL CALLEJN Serafn Teora de autmatas y lenguajes formales, En
http://decsai.ugr.es/~smc/docencia/mci/automata.pdf
NAVARRETE SNCHEZ, Isabel y otros Teora de autmatas y lenguajes formales
En: http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf
MORAL CALLEJN, Serafn Modelos de Computacin I, Departamento de
ciencias de la computacin Universidad de Granada En:
http://decsai.ugr.es/%7Esmc/docencia/mci/automata.pdf.
NAVARRETE SNCHEZ, Isabel y otros Teora de autmatas y lenguajes formales
En: http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf.
Wikipedia, En http://es.wikipedia.org/wiki/Lenguaje_formal
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003)
ITESM, En: http://lizt.mty.itesm.mx/~rbrena/AyL.html.
MARIN MORALES, Roque y otros, Teora de autmatas y lenguajes formales En:
Univ. de Murcia http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf
IOST F. Hans, Teora de autmatas y lenguajes formales, CAPTULO 2,
LENGUAJES REGULARES Y AUTOMATAS FINITOS (2001) en:
http://iie.ufro.cl/~hansiost/automatas/Capitulo2.doc
Ingeniera Tcnica en Informtica de Sistemas y de Gestin de la UNED Espaa
TEORA DE AUTMATAS I Tutora del Centro Asociado de Plasencia en: URL
http://dac.escet.urjc.es/lrincon/uned/ta1/ProblemasFinalCapitulo.pdf.
Departamento de Ingeniera de Sistemas Facultad de Ingeniera Ciencias y
Administracin Universidad de La Frontera IIS340 TEORA DE AUTOMATAS Y
LENGUAJES FORMALES APUNTES DEL CURSO Temuco, 1999 2001
CUEVAS LOVALLE, Juan Manuel LENGUAJES, GRAMTICAS Y AUTMATAS.
Segunda Edicin, (Espaa), 2001.
Ingeniera Superior en Informtica, Grupos A, B y C Teora de Autmatas y
Lenguajes formales. Examen Final-19 de Junio de 2003, Solucin Ejercicios
AUTOEVALUACION
FORMATO EVALUACION ACTIVIDAD INDIVIDUAL
Cada tarea individual ser revisada y evaluada segn esta pauta de carcter
formativo, se considerarn los siguientes aspectos:
Actividad N _____ Nota : Formativa
Nombre: ________________________________________________________
Fecha: Aspectos considerados en la revisin
Fecha recepcin
Envo archivo
Presentacin de los contenidos
Respuesta a lo solicitado
Nivel de profundidad y/o anlisis
Observaciones
PAUTA EVALUACION PRESENTACIN FINAL PROYECTO
Fecha : Nombre de los integrantes en orden de presentacin:
1._____________________________________________________________________
2._____________________________________________________________________
3._____________________________________________________________________
4._____________________________________________________________________
5.
Puntaje por aspecto para cada integrante
(1 a 3 puntos y 1 a 2 puntos)
ASPECTOS A EVALUAR
1 2 3 4 5
Dominio del contenido de persona que expone
en representacin del grupo
1/ 2 / 3 1/ 2 / 3 1/ 2 / 3 1/ 2 / 3 1/ 2 / 3
Exposicin complementada con el uso del
recurso tecnolgico (presentacin en PPT)
1 / 2 / 3 1 / 2 / 3 1 / 2 / 3 1 / 2 / 3 1 / 2 / 3
Defensa del proyecto con calidad y precisin de
las respuestas del expositor y/o grupo
1 / 2 1 / 2 1 / 2 1 / 2 1 / 2
Habilidad para motivar y mantener la atencin de
la audiencia por parte del expositor.
1 / 2 1 / 2 1 / 2 1 / 2 1 / 2
Coordinacin grupal para antes, durante y
despus de la presentacin.
1 / 2 1 / 2 1 / 2 1 / 2 1 / 2
Exposicin dentro del tiempo estipulado (15
minutos por grupo).
1 / 2 1 / 2 1 / 2 1 / 2 1 / 2
Puntaje mximo 14 puntos
Nota 10%
Nombre del Tutor:
________________________________________________________
AUTOEVALUACION
Evaluacin individual de cada integrante del grupo
Nombre: _______________________________________ Fecha: _____________
A continuacin se presenta una serie de aspectos relacionadas con la participacin en el
desarrollo del curso acadmico
Para autoevaluar la participacin individual y grupal, asignar para cada aspecto un puntaje
de 1 a 5. Aquellos aspectos o afirmaciones aseveraciones que no pueda calificar, asignar
0 (cero) y justificar por escrito.
Puntaje y su descripcin:
1 2 3 4 5
Insuficiente Menos que regular Regular Bueno Muy Bueno
Aspectos o afirmaciones Puntaje
Estuve en permanente contacto con mi grupo colaborativo.
Me comuniqu con mi tutor frente a alguna emergencia, duda, etc.
Acus recibo de las comunicaciones realizadas por e-mail.
Realic las tareas que me compromet en forma oportuna
Colabor oportunamente en la fases del desarrollo de las guas didcticas
Tom en cuenta las observaciones y sugerencias hechas por el tutor en la
planificacin de las actividades.
Busqu otras fuentes de informacin (textos, URL, etc.) para el desarrollo del sitio
web.
Particip activamente en el desarrollo de los contenidos de la gua didctica
Particip activamente en las reuniones grupales para la realizacin de las
actividades.
Los aportes realizados a mi grupo de trabajo fueron oportunos.
Mantuve una interaccin respetuosa con mis compaeros de grupo y tutor.
Asist puntualmente a todas las reuniones fijadas por el grupo
Qu aspectos ha mejorado en sus procesos de aprendizaje
Justificacin para afirmaciones o aspectos no calificadas con puntaje de 1 a 5:
COEVALUACION
Evaluacin del coordinador a su grupo o de cada integrante del grupo a un compaero
Nombre del Evaluador:___________________________Fecha: ____________
El trabajo grupal colaborativo relacionado con la participacin y aporte de cada
integrante en las actividades grupales solicitadas, en aspectos como son la
discusin, anlisis y generacin conjunta de los contenidos requeridos en los
mismos, al igual que la participacin activa y colaborativa en el proceso de
aprendizaje.
Como Integrante del grupo de trabajo y coordinador, se le solicita evaluar el grado
de participacin de cada uno de los participantes, asignando un puntaje de 1 a 5
para cada una de los siguientes aspectos. Aunque esta evaluacin implica
apreciacin personal, la solicitud es que asigne el puntaje de manera objetiva.
Puntaje y su descripcin:
1 2 3 4 5
Insuficiente Menos que regular Regular Bueno Muy Bueno
NOMBRE DEL PARTICIPANTE
AFIRMACIONES aspectos
Asisti a las reuniones de trabajo de grupo.
Mantuvo permanente comunicacin con el resto
de los participantes del grupo.
Ayud a aclarar dudas o confusiones en torno a
los temas tratados en las actividades.
Intercambi informacin, datos, ideas, etc. con
sus compaeros de grupo durante el desarrollo
de las actividades.
Hizo algn aporte en el desarrollo de las
actividades.
Particip en la solucin de problemas durante el
trabajo grupal.
Ayud a organizar el trabajo grupal.
Fue responsable con las acciones asumidas
dentro del grupo de trabajo.
Fue puntual en las reuniones convocadas para el
trabajo grupal.
Mantuvo una interaccin respetuosa con todos
los integrantes del grupo.
Consider las ideas y aportes del resto del grupo
de trabajo.
Colabor en la bsqueda de informacin y
recursos para la fase del desarrollo de las
unidades didcticas.
En su rol de Coordinador del grupo de trabajo o de integrante se le solicita sealar cmo se sinti
respecto al trabajo en equipo, adems de las debilidades y fortalezas percibidas en su grupo de
trabajo.
_______________________________________________________________________________
_______________________________________________________________________________