Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. Introducción
Un símbolo es una entidad abstracta que no tiene definición. Por ejemplo, las letras del
alfabeto castellano y los dígitos son símbolos frecuentemente utilizados. Un alfabeto es un
conjunto finito no vacío de símbolos. Por ejemplo, el alfabeto castellano está formado por
27 símbolos. Otro ejemplo es el de todos los símbolos legales del lenguaje de
programación Pascal (los identificadores, palabras claves y reservadas y caracteres
especiales). Si es un alfabeto, entonces a denota que a es un símbolo del alfabeto .
Por ejemplo, si = {0,1,2,3,4,5,6,7,8,9}, entonces se puede decir que 0.
Un prefijo de un string es una sucesión finita de símbolos que forme parte del string
y esté ubicada delante de ese string y un sufijo es lo mismo pero atrás del string. Por
ejemplo, para el string cab sus prefijos son: , c, ca y cab. Sus sufijos son: , b, ab y cab.
Un prefijo o sufijo distinto del string mismo, se llama prefijo o sufijo propio.
1
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Los lenguajes pueden ser bastante grandes, los hay hasta de cardinalidad infinita,
como en el caso de todas las palabras en castellano “correctas” y el del lenguaje de los
palíndromes sobre el alfabeto {0,1}, el cual corresponde al conjunto {, 0, 1, 00, 11, 000,
010, 111,...} formado por todos los strings que se escriben igual al invertirlos.
Es necesario tener en cuenta el lenguaje compuesto por todas los strings sobre el
alfabeto , el que se conoce como cerradura de o lenguaje universal sobre al conjunto
*. Por ejemplo, si se tiene que = {1}, entonces:
Para cualquier alfabeto * es infinito (ya que los alfabetos son no vacíos).
|
----
|
----
2
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Figura 2: Digrafo
1) Existe un vértice, llamado raíz, que no tiene predecesores y desde el cual hay un
camino a cada vértice.
1
2 4
13 5
1
Figura 3: Árbol 1
Una relación se dice de equivalencia si ella verifica las siguientes propiedades sobre
el conjunto S:
i) Si Sj =
3
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
i – j = pm y j – k = qm j = i – pm y j = k + qm
i – pm = k + qm i – k = (p+q)m
i k mod m.
P0 = {...,-3, 0, 3, 6, ...}
P1 = {...,-5,-2,1,4,7,...}
P2 = {...,-4,-1,2,5,8,...}
1.4 Inducción
4
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
b) (Principio de inducción) si se supone P(n) válida entonces se debe probar que P(n+1) es
válida también para n 1.
n
Ejemplo: Compruebe que: 2
k 0
k
2n 1 1
n 1 n
2 2
i 0
i
i 0
i
2n 1 2n 1 1 2n 1 2n 2 1
a) R1 = {(0,0),(1,1),(1,2),(2,2),(3,3),(4,4),(5,5)}
b) R2 = R1 {(2,1)}
c) R3 = R1 – {(1,2)}
d) R4 = R2 {(2,3),(1,3),(3,1),(3,2)}
w0 =
wn = w wn-1, para n > 0
Escriba una expresión para el tamaño del string wi+j en términos de i, j y |w|.
wI = w si w =
wI = uIa si w = au para a y para u*
en que * denota el lenguaje universal sobre y está formado por todos los strings posibles
de obtener a partir de los símbolos del alfabeto . Demuestre que (wu)I = uI wI.
L0 = {}
Ln = L·Ln-1, sí n > 0
5. Demuestre por inducción que la suma de los n primeros impares positivos, o sea 1 + 2
+... + (2n-1) es igual a n2.
5
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
2.1 Introducción
Otro ejemplo es el de una máquina que vende dulces (o bebidas) luego de recibir
monedas de distintas denominaciones. El problema es controlar que la máquina reciba la
cantidad exacta (o mayor) de monedas para luego satisfacer el requerimiento.
a0 a1 a3 . . . .
qi
6
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
1) ’(q,) = q
2) w*, a ’(q,wa) = (’(q,w),a)
La primera condición asegura que sin leer un símbolo en el input el AFD no cambie de
estado, y la segunda indica como hallar el estado después de leer un string no vacío. Se
observa que:
Ejemplos de AFD
Q = F = {q0} 0,1
(q0,0) = q0 0,1
q0
(q0,1) = q0
2) Un AFD que reconozca cero o más unos, seguido de un cero y de cualquier cantidad de
unos y ceros.
Q = {q0, q1} 1
F = {q1} q0
(q0,0) = q1
(q0,1) = q0 0
(q1,0) = q1 q1
(q1,1) = q1
0,1
Q = {q0, q1}
F = {q0}
(q0,0) = q0
7
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
(q0,1) = q1
(q1,0) = q1
(q1,1) = q0
q0
1 1
q1
Ejemplo 1: Sea el autómata finito que acepta todos los strings que contengan dos ceros
consecutivos o dos unos consecutivos.
0,1 1
q0 0 q3 0 q4
1
q1
1
q2 0
8
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Inputs
Estados 0 1
q0 {q0,q3} {q0,q1}
q1 {q2}
q2 {q2}
q3 {q4}
q4 {q4}
1) ’(q,) = {q}
2) ’(q,wa) = (’(q,w),a)
3) (P,w) = (q, w)
qP
y como q4 es estado final se verifica que el string 01001 es aceptado por este autómata.
Asimismo, se observa que los strings 0, 01 y 010 no son aceptados y que el string 0100 si
lo es.
9
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Dado que cada AFD es un AFND en que existe una única transición desde cada
estado para cada símbolo, queda por analizar si los AFND pueden ser equivalentes a un
AFD, en el sentido que reconozcan el mismo lenguaje. La prueba de esta aseveración está
en el hecho que un AFD puede simular a un AFND sobre el string que se esté analizando
siguiendo los estados del AFD correspondientes a conjuntos de estados del AFND. El
teorema que asegura este resultado es el siguiente.
Sea L un lenguaje aceptado por un AFND. Entonces existe un AFD que reconoce
L.
- q0’ = [q0]
’(q0’, ) = q0’ = [q0] y por otro lado (q0, ) = {q0}, luego se verifica la relación.
Parte inductiva: se supone válida la hipótesis para strings de longitud n o menor. Sea x de
longitud n y analicemos el valor de la función de transición sobre el string xa, con a.
’(q0’,xa) = ’(’(q0’,x),a)
10
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
’(q0’,xa) = [p1,p2,...,pj] ssi (q0,xa) = {p1,p2,...,pj}, por lo que se observa que ’(q0’,xa)
existe ssi (q0,xa) existe y verifican la relación planteada, lo que establece el resultado a
probar.
0
q0 1 q1
1 0 1
1 q2
1 0
[q0] [q1,q2] [q1] 0
0 1 0
1 [q2] 1
0,1
Ejemplo 1: Sea el AFND- siguiente, que permite reconocer strings con cualquier cantidad
de ceros, seguido de cualquier cantidad de unos, seguido de cualquier cantidad de dos.
Luego, el lenguaje aceptado es 0*1*2*.
11
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
0 1 2
q0 q1 q2
0 1 2
q0 {q0} {q1}
q1 {q1} {q2}
q2 {q2}
Para ver que el string 002 es aceptado se observa que hay un camino desde el
estado inicial q0 al final q2, que es: q0, q0, q0, q1, q2, q2 el cual está rotulado por los arcos 0,
0, , , 2.
Extendiendo a la función ’ entre Qx* y (Q), se desea que ’(q,w) sean todos los
estados p tales que se puede ir desde q a p a lo largo de un camino rotulado w, incluyendo
arcos rotulados en el camino. Al construir ’ es importante considerar el cálculo de los
estados alcanzables desde un estado dado q usando sólo transiciones vacías, lo cual es
equivalente a determinar qué vértices pueden ser alcanzados desde un vértice dado (fuente)
en un digrafo. El vértice fuente es el vértice del estado q en el diagrama de transición, y el
digrafo consiste de todos los arcos rotulados . Se llamará a este conjunto -CLOSURE(q).
-CLOSURE(P) = -CLOSURE(q).
qP
1) ’(q,) = -CLOSURE(q)
Se observa que (q,a) y ’(q,a) no coinciden en símbolos del alfabeto, ya que en el caso
de ’ se deben considerar los estados agregados por el conjunto -CLOSURE(q). Por lo
anterior será necesario distinguir de ’ cuando nos referimos a un AFND-.
Ejemplo 4. En el autómata del ej. 1 se ve que: (q0,0) = {q0} y que ’(q0,0) = {q0, q1, q2}.
12
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
3) (P,a) = (q,a)
qP
4) ’(P,w) = ’(q,w)
qP
Se probará por inducción sobre el largo del string x que se verifica que `(q0,x) =
’(q0,x). Esta igualdad no es necesariamente cierta para x = pues `(q0,) = {q0}, mientras
que `(q0,) es el conjunto -CLOSURE(q0).
Base: Para strings x de largo 1, o sea x = a se verifica la proposición por la definición dada
anteriormente, o sea: `(q,a) = ’(q,a).
Parte inductiva: Sea válida la proposición para strings de largo mayor a cero. Sea x = wa
con a. Entonces:
`(q0,wa) = `(`(q0,w),a)
= `(’(q0,w),a) por hipótesis de inducción
= `(q,a) en que P = ’(q0,w)
q P
Finalmente se debe probar que L(M’) = L(M). Para ello se debe comprobar que:
`(q0,x) contiene un estado de F’ ssi (q0,x) contiene un estado de F, para x*. Si x =
esta proposición es directa a partir de la definición de F’, pues `(q0,) = {q0} y q0F’
cuando (q0,) contiene un estado final de F (aunque no sea q0). Si x no es el string vacío
entonces si (q0,x) contiene un estado de F, entonces `(q0,x) contiene el mismo estado en
F’. Inversamente, si `(q0,x) contiene un estado de F’ distinto de q0, entonces (q0,x)
contiene un estado de F. Si `(q0,x) contiene a q0 y q0F, entonces como ’(q0,x) = -
CLOSURE((`(q0,w),a)), el estado en -CLOSURE(q0) y en F debe estar en ’(q0,x).
13
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
` 0 1 2
q0 {q0, q1, q2} {q1, q2} {q2}
q1 {q1, q2} {q2}
q2 {q2}
Esta tabla coincide con la de la función de transición ` del AFND- construida por
el Teorema. Como el estado q2 está en F y en la -CLOSURE(q0) entonces F’ = {q0, q2}. El
diagrama de transiciones del AFND M’ sin transiciones vacías es entonces:
0,1 1,2
0 q0 q1 q2 2
0,1,2 1
Los lenguajes aceptados por los autómatas finitos son fácilmente descritos por
expresiones simples llamadas expresiones regulares, las que se definen como sigue.
a) es un lenguaje regular.
b) {} es un lenguaje regular.
c) a, {a} es un lenguaje regular.
d) Si R y S son lenguajes regulares, entonces RS, RS y R* son lenguajes regulares.
e) Ningún otro lenguaje sobre es lenguaje regular.
Ejemplo 1. Dado = {a,b} se tienen los siguientes lenguajes regulares: , {}, {a}, {b},
{a} {b} = {a,b}, {aa, ab, ba, bb}, etc.
14
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Ejemplo 2. Sea el alfabeto = {a,b}. Entonces se tienen las siguientes e.r.: a+b que
representa al lenguaje regular {a, b}; ab que representa al lenguaje regular {ab}; a* que
representa al lenguaje regular {a}* = {ai / i 0} visto en el ejemplo 1; y la expresión a* b*
que representa al conjunto {ai bj / i,j 0}.
Si r es una e.r., se dirá que el lenguaje regular representado por r será L(r). Si r y s
son e.r. sobre y si L(r) = L(s), entonces se dice que las e.r. r y s son equivalentes y se
anota que r = s.
1) (r*)* = r*
2) * =
3) r r* = r* r = r+ (se llama clausura positiva)
4) r* = r++ = r*r* = ( + r)* = r* (r + ) = (r + ) r*
5) r + r = r
6) r + = + r = r
7) r = r =
8) r + s = s + r
9) r + (s + t) = (r + s) + t
10) r(s + t) = rs + rt
11) (r + s)t = rt + st
12) (r + s)* = (r* + s*)* = (r* s*)* = r* (s r*)* = (r* s)* r*
13) r(s r)* = (r s)* r
w = u (s0r0)(s1r1)...(snrn) = (us0)(r0s1)(r1s2)...(rn-1sn) rn
Definición. Dada una expresión regular s, que describe al lenguaje regular S, se define el
reverso de s como aquella expresión regular que describe el reverso de los strings de S, o
sea al lenguaje Sr, y que se define como sigue:
15
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
4) Sí s = w* entonces sr = wr *.
Entonces, si se desea construir la e.r. del reverso de un lenguaje regular, es necesario tan
solo invertir el orden de las subexpresiones unidas por la operación concatenación.
Ejemplo 4.
Otra utilidad práctica del reverso de una expresión regular es que permite demostrar
algunas de las equivalencias dadas anteriormente.
Se conoce que: (r + s)* = r* (sr*)*. Luego, tomando el reverso de las e.r. de esta
equivalencia se tendrá:
Se verá que los lenguajes aceptados por autómatas finitos son precisamente los
lenguajes denotados por las expresiones regulares. Esta equivalencia es el motivo para
llamar lenguajes (o conjuntos) regulares a los lenguajes aceptados por los autómatas
finitos. Los teoremas que se analizarán permiten obtener la siguiente relación entre los
tipos de autómatas estudiados y las expresiones regulares:
AFND
AFD AFND-
e.r.
Base. Supongamos una e.r. con cero operadores. Esta expresión sólo puede ser , , o un
símbolo a. Los AFND’s que reconocen estas e.r. son:
16
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
1) r =
q0 qf
2) r =
q0
3) r = a a
q0 qf
Parte inductiva. Suponemos ahora que el teorema es válido para e.r. con menos de i
operadores. Sea r una e.r. con i operadores (en que i 1). Entonces hay tres casos que
dependen de la forma de la e.r. r considerada.
en que L(M1) = L(r1) y L(M2) = L(r2). Como se pueden renumerar los estados de un
autómata, se supondrá que los conjuntos Q1 y Q2 son disjuntos. Sea q0 un nuevo estado
inicial y f0 un nuevo estado final. Sea el AFND- M = (Q1Q2{q0,f0},12,,q0,{f0}).
La función de transición se define como sigue:
i) (q0,) = {q1,q2}
ii) (q,a) = 1(q,a) , qQ1-{f1}, a1{}
iii) (q,a) = 2(q,a) , qQ2-{f2}, a2{}
iv) (f1,) = (f2,) = {f0}
q1 M1 f1
q0 f0
q2 M2 f2
Se observa que cualquier camino rotulado por un string x en M entre q0 y f0, o bien
va por M1 o por M2, y luego, habrá un camino rotulado x en M1, entre q1 y f1, o en M2,
entre q2 y f2, por lo que el lenguaje aceptado por M es L(M) = L(M1) L(M2).
M = (Q1Q2,12,,q1,{f2})
17
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
q1 M1 f1 q2 M2 f2
M = (Q1{q0,f0},1, ,q0,{f0})
q0 q1 M1 f1 f0
Cualquier camino desde q0 a f0 consiste, o bien de un camino entre estos estados
rotulado (se reconoce el string vacío) o bien de un camino entre q0 y q1 sobre , seguido
de una cierta cantidad (posiblemente cero) de caminos entre q1 y f1, en los que se reconoce
un string de L(M1), seguido de un retorno a q1 por una transición vacía, para terminar en la
transición vacía que une el estado f1 con f0. Luego, si xL(M), entonces, o bien x = o
bien x = x1x2...xj, con j > 0, tal que cada xiL(M1). Luego se verifica que L(M) = L(M1)*.
Para r2 = 1: 1
q1 q2
Para r3 = 0: 0
q3 q4
18
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Para r5 = 1. q5 q6
1
*
Para r4 = 1 : q7 q5 q6 q8
Para r1 = 01*:
q3 q4 q7 q5 q6 q8
0 1
M = ({q1,q2,...,qn}, , , q1, F)
Sea Rkij el conjunto de todos los strings x tales que (qi,x) = qj y si se tiene que
(qi,y) = qm, para cualquier y que sea prefijo de x (con y x e y ) entonces m k, o sea
que este conjunto contiene todos los strings que permiten ir desde el estado qi al qj sin
pasar por estados numerados mayores que qk. Si se puede dar que i o j sean mayores que k.
Además, como no existe un estado numerado mayor que qn, entonces Rnij contiene todos
los strings que unen qi con qj. Recursivamente este conjunto se define como:
Rkij = {strings que unen qi con qj pasando por qk o estados numerados menores}
{strings que unen qi con qj sin pasar por qk}
19
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Rk-1ik = {strings que unen qi con qk pasando por estados numerados menores a qk}
Rk-1kk = {strings que unen qk consigo mismo pasando por estados numerados
menores a qk}
Rk-1kj = {strings que unen qk con qj sin pasar por estados numerados menores que
qk}
Primero se mostrará, usando inducción sobre k, que i,j,k existe una expresión
regular rkij cuyo lenguaje regular asociado representa al conjunto Rkij.
Base. Sea k = 0. El conjunto R0ij está formado por las expresiones regulares básicas, ya sea
, {} o por conjuntos de símbolos del alfabeto . Entonces las expresiones regulares
asociadas son:
Parte inductiva. Sea k > 0. Como la fórmula recursiva dada anteriormente para el
conjunto Rkij solo considera operadores presentes entre expresiones regulares, o sea
clausura, concatenaciones y unión de conjuntos, y asumiendo por la hipótesis de inducción
que para el conjunto Rk-1lm existe la expresión regular rk-1lm que la representa, l,m,
entonces se obtiene la siguiente expresión regular para Rkij:
L(M) =
q j F
Rn1j
En esta igualdad Rn1j denota a todos los strings que unen el estado inicial q1 con el
estado final qj, j 1. Luego, el lenguaje L(M) está representado por la expresión regular:
r=
q j F
rn1j
20
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Ejemplo 7. Sea M el AFD siguiente que representa a los strings de 0 y 1 con una cantidad
positiva de ceros:
1 1 1
0 0
q1 q2 q3
0
El estado final son F = {q3} y la función de transición es:
0 1
q1 q2 Q1
q2 q3 Q2
q3 q2 Q3
rkij \ k 0 1 2
rk11 1+ 1* 1*
rk12 0 1*0 1*01*
rk13 1*01*0
rk21
rk22 1+ 1 + 1*
rk23 0 0 1*0
rk31
rk32 0 0 01*
rk33 1+ 1+ 01 0 + 1 +
*
21
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Lo descrito antes permite determinar si un prefijo del archivo calza con una expresión
regular r dada. Para ello se reemplaza r por la expresión s = *r, en que es el alfabeto. Se
puede determinar la primera ocurrencia del string x = a1a2...an en r encontrando el prefijo
más corto de x que esté en el lenguaje dado por s. Esto se hace construyendo un AFND-
que reconozca el conjunto denotado por s y luego aplicando un algoritmo para reconocer la
secuencia de estados Qi en que el AFND- puede estar luego de analizar a1a2...ai, con 1 i
n. Si Qj contiene un estado final, se deduce que a1a2...aj tiene un sufijo akak+1...aj que está
en el lenguaje denotado por r, con 1 k j. Se definen:
Q0 = -CLOSURE(q0)
Qi = -CLOSURE((Qi-1,ai)), 1 i n
for(i = 0; i n; i++)
{ if(i == 0)
Q0 {q0};
else
Qi (Qi-1,ai);
<marcar qQi como “considerado”>;
<marcar qQ-Qi como “no considerado”>;
COLA Qi;
while(COLA )
{ <hallar q, primer elemento de COLA>;
<borrar q de COLA>;
for(cada p(q,))
if(p es “no considerado”)
{ <marcar p como “considerado”>;
<agregar p a COLA y a Qi>;
}
}
}
Ejemplo 8. Sea la e.r. r = ab* + c. El AFND- asociado, según Teorema 2.3, es:
q1 a q2 q3 q4 b q5 q6
q0
q7 c q8 q9
Q0 = {q0,q1,q7}
Q1 = {q2,q3,q4,q6,q9}
22
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Q2 = {q4,q5,q6,q9}
Una limitación de los autómatas finitos, tal como se han definido, es que su output
está limitado a una señal binaria: “aceptado” o “no aceptado”. Los modelos que se
considerarán ahora eligen su output de otro alfabeto por lo que pueden emitir una salida
diferente para un string de entrada dado. Estudiaremos dos tipos de autómatas distintos
según si su output está asociado con el estado o con la transición. Más adelante se verá que
ambos modelos son equivalentes entre sí.
Entonces basta con diseñar un autómata de Moore con tres estados q0, q1 y q2, tales que
qj es alcanzado ssi el string de entrada tiene residuo j. Se define entonces: (qj) = j, con j =
0,1,2. El autómata tendrá las siguientes transiciones:
0 1
q0 q0 q1
q1 q2 q0
q2 q1 q2
0 1 2
q0 1 q1 0 q2
1 0
0 1
23
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Ejemplo 2. Se desea simular la aceptación de los strings del lenguaje representado por la
expresión regular (0 + 1)*(00 + 11), o sea de todos los strings binarios cuyos dos últimos
símbolos sean iguales. Un AFD que reconozca este lenguaje no puede tener menos de
cinco estados. Sin embargo, mediante un autómata de Mealy es posible reconocer estos
strings con tres estados, que usa cada estado para recordar cuál fue el último símbolo leído
e informa con un output “s” si el símbolo actual coincide con el previo, y una “n” si no es
así. Para ello se define M = ({q0,q1,q2},{0,1},{s,n},,,q0), el autómata de Mealy en que
sus transiciones son:
0 1
q0 q1 q2
q1 q1 q2
q2 q1 q2
0 1
q0 n n
q1 s n
q2 n s
En la representación gráfica se usa un arco rotulado a/b sobre un arco del estado p
al q para indicar que (p,a) = q y (p,a) = b.
0/s
0/n q1
q0 1/n 0/n
1/n q2 1/s
Se observa que el output para el string 01100 es nnsns, con la secuencia de estados
q0q1q2q2q1q1.
24
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
respuesta del autómata de Moore al string vacío y decir que ambos autómatas son
equivalentes sí: w* se verifica que bTM(w) = TM’(w), en que b es (q0) en Moore.
Entonces se tienen los siguientes resultados:
’ 0 1
q0 0 1
q1 2 0
q2 1 2
Ejemplo 4. Para el autómata de Mealy M1 del ejemplo 2 se tendrá que los estados de Qx
del autómata de Moore equivalente M2 son:
Qx = {[q0,s],[q0,n],[q1,s],[q1,n],[q2,s],[q2,n]}
25
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
n 1 n n
[q0,n] 0 [q1,n] 1 [q2,n]
0 1
0 0
[q1,s] [q2,s] 1
s s
0 1
Para ver que esta solución es única se desarrolla recursivamente como sigue:
X = EX + T = E(EX + T) + T = EEX + ET + T
= E2(EX + T) + ET + T = E2EX + E2T + ET + T
= E3(EX + T) + E2T + ET + T
... = Ei+1X + EiT +... + E2T + ET + T, con i 0
Luego:
X = ( + E + E2 +...+Ei)T + Ei+1X (1)
() Sea wX con |w| = k. Para i = k, reemplazando en la ecuación (1) se tendrá que:
X = ( + E + E2 +...+Ek)T + Ek+1X
Como E, w no puede estar en Ek+1X (la longitud del string más corto en este
conjunto es, al menos, k+1), entonces el string w debe estar en ( + E + E2 +...+Ek)T, y
26
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
() Sea ahora wE*T. Entonces existe k tal que wEkT. Luego se tendrá que w( + E +
E2 +...+Ek)T, de donde se deduce que wX (por la proposición (2)). Luego se verifica que:
E*T X.
n
Xi = Ti Eij Xj, i = 1,2,...,n (2)
j 1
Base. Si w = , y como Eij por hipótesis, entonces se deduce del sistema (2) que: Xi
ssi Ti ssi Yi para 1 i n, con lo cual Xi = Yi en este caso.
Parte inductiva. Sea w* con |w| > 0, y supongamos que wXi. Entonces por el sistema
(2) se tiene:
n
wTi Eij Xj
j 1
n
Si wTi entonces wTi Eij Yj = Yi. En caso contrario, para algún j entre 1 y
j 1
n, wEijXj. Entonces existen t1Eij y t2Xj tales que w = t1t2. Por hipótesis Eij, luego se
cumple que |t1| > 0, por lo que se verifica que |t2| < |w|, y, debido a la hipótesis de
inducción, t2Yj. Entonces:
n
w = t1t2 Eij Yj Ti Eij Yj = Yi
j 1
Como en ambos casos wYi, se verifica que Xi Yi. Inversamente, los mismos
pasos permiten verificar que Yi Xi. Luego se verifica que Xi = Yi, para i = 1,...,n.
27
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Base. Sea n = 1. Entonces se tiene una ecuación a resolver que es: X1 = T1 E11 X1, cuya
solución por el Lema de Arden (teorema 2.7) es X1 = E*11T1. Luego, si E11 y T1 son
lenguajes regulares, la solución para X1 también lo es.
Parte Inductiva. Sea n > 1 y sea el sistema de ecuaciones con n-1 ecuaciones siguiente:
n -1
Xi = Ti’ Eij’ Xj 1 i n-1 (3)
j 1
Por la hipótesis de inducción, el sistema (3) tiene una solución Xi, 1 i n-1. Sea
ahora:
n -1
Xn = E*nn (Tn Enj Xj) (6)
j 1
n -1 n -1
Xi = Ti’ Eij’ Xj = (Ti Ein E*nn Tn) (Eij Ein E*nn Enj) Xj
j 1 j 1
n -1 n -1 n
Xi = Ti Enj Xj Ein E*nn (Tn Eij Xj) = Ti Eij Xj.
j 1 j 1 j 1
n -1 n -1
Xn = E*nn (Tn Enj Xj) = ({} Enn E*nn) (Tn Enj Xj)
j 1 j 1
n -1 n -1 n
Xn = Tn Enj Xj Enn E*nn (Tn Enj Xj) = Tn Enj Xj.
j 1 j 1 j 1
Si Eij y Ti son lenguajes regulares, entonces de (4) y (5) se tiene que Eij’ y Ti’
también lo son. Por la hipótesis de inducción el sistema (3) tiene una solución Xi, 1 i n,
que está constituida por lenguajes regulares (subconjuntos de *). Por (6) Xn es también un
lenguaje regular. Luego se verifica el resultado.
X1 = 0X2 + 1X3
X2 = 0X2 + 1X3
28
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
X3 = + (0+1)X3
X3 = (0+1)*
X2 = 0X2 + 1(0+1)* X2 = 0*1(0+1)*
X1 = 00*1(0+1)* + 1(0+1)* X1 = 0*1(0+1)*.
n
Xi = Ti Eij Xj, i = 1,2,...,n (7)
j 1
En que:
Xi = {w* / (qi,w)F}
Eij = {a / (qi,a) = qj}
Ti = si qiF
Ti = si no
0
0
q1 q2
1 1 1
q3
El sistema es entonces:
X1 = 0X2 + 1X3
X2 = 0X2 + 1X3
X3 = + 0X3 + 1X1
Su solución es:
X3 = 0*( + 1X1)
X2 = 0X2 + 10*( + 1X1) = 0*10*( + 1X1)
X1 = 00*10*( + 1X1) + 10*( + 1X1) = 00*10* + 10* + (00*10*1 + 10*1)X1
X1 = 0*10* + (0*10*1)X1
29
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Sea M’ = (Q’, ,’,[q0],F’) tal que [q] es la clase de equivalencia de q por R y se tiene:
b) Pruebe por inducción sobre el largo del string w que ’([q],w) = [(q,w)].
c) Verifique que L(M) = L(M’), o sea que M y M’ son autómatas equivalentes.
4. Escriba AFD’s sobre = {0,1} que acepten los lenguajes formados por los strings tales
que:
6. Escriba un AFD que reconozca números reales con signo, parte entera no vacía y
decimal posiblemente vacía, separadas por un punto, y con notación científica.
Números válidos son: 3.1415, -2.8, 1.5E-10, etc.
30
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
a)
0 1
q0 {q0} {q2} {q1}
q1 {q3} {q1}
q2 {q0} {q2} {q3}
q3 {q3} {q1}
b)
0 1
q0 {q1}
q1 {q4} {q4} {q2}
q2 {q2,q5} {q3}
q3
q4
q5 {q4} {q3,q4}
c)
0 1
Q0 {q1} {q1}
Q1 {q3} {q2,q3} {q2}
Q2 {q3}
q3 {q2}
12. Suponga que a los operadores de expresión regular visto en clases se le agregan los
siguientes operadores:
- Si r es una e.r. entonces r? también es una e.r. que representa cero o una vez r.
- Si r es una e.r. entonces r% también es una e.r. que representa una o más veces r.
a) Demuestre que r? y r% pueden ser reconocidos cada uno por un AFND- M tal que
L(r?) = L(M) y L(r%) = L(M) respectivamente (como indicación siga el teorema
visto en clases).
31
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
b) Considere la e.r. siguiente que representa a los números reales con signo, que
empiezan con un dígito y tienen parte exponencial optativa como sigue, en que d
representa un dígito entre 0 y 9 y s al signo + o -:
r = s? d% (. d%)? (E s? d d)?
Construya el AFND- que reconoce a r.
13. Construir un AFND M que acepte el conjunto de todos los strings sobre el alfabeto
binario en que exista un substring de unos y ceros o de ceros y unos intercalados. A
partir del autómata obtenido describa una expresión regular r tal que L( r ) = L(M).
14. Sean = = {0,1,2}. Construya un autómata de Mealy de tres estados que implemente
la suma de enteros módulo 3, o sea: s(i,j) = (i + j) mod 3, 0 i,j 2. Suponga que el
output asociado al string de entrada w corresponde a la suma de los símbolos de w,
cuyo valor se entrega en el último símbolo del output.
15. Describa un autómata de Moore, en que los alfabetos de input y output sean {0,1}, y
que verifique las siguientes condiciones:
16. Describa un autómata de Mealy tal que acepte L = {0m10n / m,n 0, m par y n impar}.
Input: 0 1 0 1 1 1 1 1 0 0 0 1
Output: s s n n n s n n s s n s n
19. Para todos los autómatas con output anteriores (problemas 14 a 18) determine el
autómata con output equivalente.
20. Para los AFD obtenidos en el problema 8 determine los sistemas de ecuaciones
regulares lineales y resuélvalos para obtener el lenguaje regular asociado. Compare los
resultados con los del Teorema 2.4 y verifique las equivalencias cuando corresponda.
X1 = + 0X2 + 1X1
X2 = 1X2 + 1X3
X3 = 1X1 + 0X2 + 1X3
32
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
3.1 Introducción
Sea L un lenguaje regular. Entonces existe una constante n 0 tal que si zL, con |z| n,
se puede describir z como la concatenación de los strings uvw de modo que se verifique
que |uv| n, |v| 1, y i 0 se verifica que uviwL. Además, n no es mayor que el
número de estados del más pequeño AFD que reconozca el lenguaje L.
aj+1...ak
q0 a1...aj qj = qk ak+1...am qm
También es posible recorrer el nudo más de una vez, con lo que el string
a1...aj(aj+1...ak)iak+1...am pertenece también a L(M), i 0, lo cual se deduce de:
(q0,a1a2...aj(aj+1...ak)iak+1...am) = ((q0,a1a2...aj),(aj+1...ak)iak+1...am)
= (qj,( aj+1...ak)iak+1...am) = ((qj,aj+1...ak),( aj+1...ak)i-1 aj+1...am) = (qk,(aj+1...ak)i-1 aj+1...am)
= (qj,(aj+1...ak)i-1 aj+1...am) =...= qm
Se ha probado entonces, que dado cualquier string suficientemente largo, que sea
aceptado por un AFD, siempre es posible hallar un substring que puede ser “bombeado”, o
sea repetido tantas veces como se quiera y el string resultante será aceptado por el AFD.
33
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Ejemplo 1. Sea el lenguaje regular L dado por la expresión regular 0*1(0+1)*, aceptada por
el AFD siguiente:
1
q0 q1
0 0,1
Por lo tanto, para comprobar que un conjunto no es regular bastará con proponer
que lo es, imponer las condiciones del Lema y llegar a la contradicción de que existe un
valor de i 0 para el que uviwL, lo cual contradice la hipótesis de que el lenguaje era
regular.
i2
Ejemplo 3. Sea el conjunto L = { 0 / i 1}, o sea el conjunto de strings de ceros
concatenados, cuya longitud es un cuadrado perfecto. Probaremos que L no es regular.
Suponiendo que lo es, sean n 1 la constante del Lema y z = uvw el string considerado, tal
que |z| = n2. Entonces para i = 2 se verifica: n2 < |uv2w| n2 + n < (n+1)2, por lo que el
largo del string uv2w no es un cuadrado perfecto, así que no pertenece a L, por lo que L no
es regular.
Hay muchas operaciones sobre lenguajes que preservan los conjuntos regulares, en
el sentido que estas operaciones aplicadas a lenguajes regulares entregan como resultado
lenguajes regulares. Si una clase de lenguaje es cerrada bajo una operación, se llama a ésta
propiedad de clausura de esa clase de lenguaje.
Teorema 3.1 La clase de lenguajes regulares son cerrados bajo la unión, concatenación y
clausura de conjuntos.
34
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Ejemplo 5. Sea el lenguaje L dado por r = a*b(a + b)* y cuyo autómata sobre 1 = {a,b}
es:
a q b p a,b
a q b p a,b
c c
q’
a,b,c
3.4.1 Sustituciones
35
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
4) f(L*) = f(L)*
5) f(L1L2) = f(L1)f(L2)
Ejemplo 6. Sea = {0,1} y la sustitución: f(0) = a y f(1) = b*. Entonces para el string 010
se tiene f(010) = f(0)f(1)f(0) = ab*a, y para el lenguaje L = 0*(0 + 1)1* se verifica que la
sustitución f(L) = a*(a + b*)(b*)* = a*b*.
3.4.2 Homomorfismos
h-1(L) = {x / h(x)L}
Ejemplo 7. Sea el homomorfismo sobre = {0,1} definido por: h(0) = aa y h(1) = aba.
Entonces: h(010) = aaabaaa. Para lenguajes L1 = (01)*, L2 = (ab + ba)*a y L3 = a(b* + aa)a*,
se verifica que:
h(L1) = (aaaba)*
h-1(L2) = 1
h-1(L3) = (1 + 0)0*
Por último, se observa que h(h-1(L2)) = {aba} L2. Se deduce que h(h-1(L)) L, y
análogamente, que L h-1(h(L)), para cualquier lenguaje regular L.
36
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Base: Para w = se tiene: ’(q0,) = q0 por extensión. Además, (q0,h()) = (q0,) = q0.
Luego se verifica que:
’(q0,) = (q0,h()) = q0
Inducción. Por hipótesis para strings w tales que 0 < |w| n, se verifica la proposición, o
sea:
’(q0,w) = (q0,h(w))
h1(a) = a h2(a) = 0
h1(b) = ba h2(b) = 1
h1(c) = a h2(c) = 1
Entonces:
El conjunto h1-1({anban / n 1}) está formado por los strings en (a+c)+b(a+c)* tales
que el número de símbolos que preceden a b es uno mayor que la cantidad de símbolos que
siguen a b. Luego:
37
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Ejemplo 9. Sean los lenguajes L1 = 0*10*, L2 = 10*1 y L3 = 0*1. Entonces se verifica que
L1/L2 = , pues no hay strings que puedan cumplir la condición. En cambio L2/L1 = 10*.
Además L1/L3 = 0* y L2/L3 = 10*.
Teorema 3.6 La clase de conjuntos regulares es cerrada bajo el cuociente con conjuntos
cualesquiera.
El objetivo de esta parte es establecer algoritmos para decidir si: ¿Es un lenguaje
regular dado vacío, finito o infinito?, ¿Es un conjunto regular equivalente a otro?, ¿Existe
un número mínimo de estados para un AFD?, y otras consultas similares. Para el propósito
de responder a estas consultas se supondrá que los lenguajes regulares se representan por
AFD.
Demostración.
1) () Es obvio que si el AFD M acepta un string su lenguaje es no vacío.
() Supongamos que el AFD acepta un conjunto no vacío L. Sea z el string más corto
aceptado. Si |z| < n estamos listos. Si no es así, por el Lema Pumping existe un string z tal
que |z| n, y tal que z = uvw, con |v| 1. Entonces i 0, uviwL. Pero entonces, para el
caso i = 0 se tendrá que uwL y este string es tal que |uw| < |z|, lo que contradice el que z
era el string más corto que pertenecía a L con largo mayor a n. Luego debe existir un string
de largo menor que n.
2) () Si zL(M) y n |z| < 2n, entonces por el Lema Pumping, L(M) es infinito, pues
existe una descomposición z = uvw, con |v| 1 y tal que i 0 uviwL(M).
() Si L(M) es infinito, existe zL(M) tal que |z| n. Si |z| < 2n estamos listos. Si no
es así para ningún string de L(M), sea z el string más corto de largo mayor o igual a 2n.
Por el Lema Pumping, z = uvw, con 1 |v| n y tal que i 0, uviwL, luego
38
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
uwL(M). Ahora bien, o z no es el string más corto de largo mayor o igual a 2n (sería
uw) o bien n |uw| < 2n, y en ambos casos hay una contradicción.
Teorema 3.8 Equivalencia entre Lenguajes Regulares
(L KC) (LC K) = L = K
Por los teoremas 3.1, 3.2 y 3.3, sabemos que el conjunto (L KC) (LC K) es
un lenguaje regular. Por teorema 3.7, se ve que existe un algoritmo para saber si este
lenguaje es vacío, con lo cual se comprueba que existe un algoritmo para comprobar si L y
K son equivalentes.
b) Si xRLy entonces, si w* se debe probar que xwRLyw. Pero, por definición de RL se
tiene que v* xvL ssi yvL. Si v = wz se obtiene que: xwzL ssi ywzL, con lo
cual se prueba que xwRLyw.
Demostración.
Probamos que (a) (b).
39
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
L= {x / (q0,x)F}
x *
Inducción. Sea válido el resultado para strings w con 0 < |w| n. Se prueba para strings
wa, con a.
Luego se verifica.
Por último: wL(M’) ssi ’(q0’,w)F’ ssi [w]F’ ssi wL, con lo que L(M’) = L,
o sea este AFD acepta los strings de L por lo que L(M’) es equivalente a L.
0
q0 q1
0
1 1
q2 q3
0
0 1 1
q4 1 q5 0,1
40
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
[q0] = (00)*
[q1] = (00)*0
[q2] = (00)*1
[q3] = (00)*01
[q4] = 0*100*
[q5] = 0*10*1(0 + 1)*
Luego L = [q2] [q3] [q4] = 0*10*. Ahora bien, la relación RL tiene tres clases
de equivalencia posibles para este lenguaje:
En este caso el lenguaje L consiste de una sola de estas clases, la cual es C2. La
relación entre las clases de RM y RL, a partir de la cual se observa que RM es un
refinamiento de RL, se obtiene a partir de:
’ 0 1
[] [] [1]
[1] [1] [11]
[11] [11] [11]
0 0 0,1
1 1
[] [1] [11]
El AFD con la menor cantidad de estados que acepta un conjunto regular L es único
y está dado por el AFD M’ de la demostración del Teorema 3.9.
Demostración. En la demostración del Teorema 3.9 se vió que cualquier AFD M que
acepta el lenguaje L define una relación de equivalencia que es un refinamiento de RL.
Luego, la cantidad de estados de M es mayor o igual a la cantidad de estados de M’. Si esta
cantidad es igual, entonces cada estado de M se identifica con alguno de los estados de M’.
O sea, si qQ, debe existir x* tal que (q0,x) = q (sino q puede ser removido de Q y
habría un AFD con menos estados). Se identifica q con ’(q0’,x)Q’. Si (q0,x) = (q0,y) =
q entonces xRLy, luego ’(q0’,x) = ’(q0’,y).
41
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
begin
for(pF y qQ-F)
marcar (p,q);
for((p,q)FF o (p,q)(Q-F)(Q-F), p q)
if(a tal que ((p,a),(q,a)) está marcado)
begin
marcar (p,q);
marcar recursivamente todos los pares no marcados sobre la lista
para (p,q) y de las listas de otros pares que se marcan en este paso;
end
else /* ningún par ((p,a),(q,a)) es marcado */
for(a)
ubicar (p,q) en la lista para ((p,a),(q,a)) salvo que (p,a) = (q,a);
end
El AFD construido a partir del algoritmo anterior, habiendo removido los estados
inaccesibles, es el AFD con mínima cantidad de estados que reconoce el lenguaje.
La función de transición ’ está bien definida puesto que p q ssi (p,a) (q,a).
Por inducción sobre |w| se muestra que ’[q0],w) = [(q0,w)] así como que L(M’) = L(M)
(ver Ejercicio 2 Capítulo anterior). Por último, es fácil comprobar, usando contradicción,
que la cantidad de estados de M’ es igual al índice de R L, por lo que M’ es el AFD de
menor cantidad de estados que acepta a L.
q1
q2 X X
q3 X X
42
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
q4 X X
q5 X X X X X
q0 q1 q2 q3 q4
Se observa entonces que los pares de estados (q0,q1), (q2,q3), (q2,q4) y (q3,q4) no son
marcados en la tabla, por lo que se obtiene que son equivalentes: q0 q1 y q2 q3 q4.
Luego el AFD de mínima cantidad de estados es el siguiente, en que Q’ = {[q0,q1],
[q2,q3,q4], [q5]}, el estado inicial es q0’ = [q0,q1] y los estados finales son F’ = {[q2,q3,q4]}:
0 0 0,1
1 1
[q0,q1] [q2,q3,q4] [q5]
1. Demuestre, usando el Lema de Bombeo, que los siguientes conjuntos no son regulares:
a) Para L = 01* + 100* determine: L0, L1, L10, L00, L01 y L11.
b) Demuestre que los conjuntos regulares son cerrados para la operación derivada.
h(a) = a k(a) = 0
h(b) = b k(b) = 0
h(c) = a k(c) = 1
Demuestre que el conjunto L = {ambnam+n / m,n > 0} no es regular, haciendo uso de los
homomorfismos anteriores y las relaciones entre conjuntos regulares conocidas por Ud.
4. Para los siguientes AFD’s asociados a los lenguajes L1 y L2 determinen el AFD de los
lenguajes: L1 L2, L1 – L2 y del complemento de L2 – L1, describiendo gráficamente
los autómatas intermedios.
1 0 1
q0 q1 q0
q1 q1 q2
q2 q2 q1
2 0 1
43
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
q0 q0 q1
q1 q1 q2
q2 q2 q2
5. Para el siguiente AFD, con F = {b,e}, estado inicial a y función de transición siguiente,
minimice el número de estados del autómata, informando de la tabla de estados
distinguibles y equivalentes y del autómata equivalente resultante:
0 1
a b d
b c e
c c b
d e a
e f e
f c e
0 1
a b c
b f d
c d e
d d i
e d h
f g d
g i d
h d i
i d i
8. Usando el Lema de Bombeo demuestre que los siguientes conjuntos no son regulares:
a) L1 = {0m / m = n! , n > 0}
b) L2 = {xyxr / x,y (0+1)+}
c) L3 = {anb2kan / n,k 0}
10. Sea = {a,b}. Demuestre que L = {x*/ x = xr} no es un conjunto regular usando el
Lema Pumping.
12. Construya los AFD asociados a las expresiones regulares a*b y b*a. A partir de estos
AFD construya los AFD de * - a*b y * - b*a. Luego construya el AFD de la unión de
los dos autómatas anteriores y deduzca el AFD del lenguaje a*b b*a.
44
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
4.1 Introducción
Se estudiarán en este Capítulo las gramáticas libres del contexto, las cuales son uno de
los cuatro tipos posibles de gramáticas. En lo que sigue se define una gramática y se
revisan los distintos tipos existentes, para luego centrarnos en la caracterización de las
gramáticas de libre contexto, hasta alcanzar una normalización en la presentación de sus
producciones.
Si 1, 2,..., n es una sucesión de formas sentenciales, tales que 1 2 ... n,
se dice que n es derivable desde 1, e indicamos esta relación por 1 n. La sucesión
1, 2,..., n se llama una derivación de n desde 1 de acuerdo a la gramática G.
El lenguaje generado por una gramática formal G = (N,T,P,), denotado por L(G), es el
conjunto de strings de símbolos terminales derivables desde , definido formalmente como
sigue:
L(G) = {T* / }
45
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Ejemplo 1. Para las siguientes gramáticas determine el lenguaje aceptado y una derivación
de los strings más cortos de éstos.
A abC abc
A aABC aabCBC aabBCC aabbCC aabbcC aabbcc
A
A aABC | abC
CB BC
bB bb
bC b
A abC ab
A aABC aabCBC aabBCC aabbCC aabbC aabb
ab
ab aabb
ab aabb aaabbb
ab aabb ...(n-1 veces)... ak-1bk-1 ak bk
Son aquellas que producen formas sentenciales más cortas en su longitud, es decir,
si wi wi+1 entonces |wi+1| < |wi|. Tales producciones se conocen como “producciones
contractantes”. Toda gramática que contiene al menos una producción contractante se dice
que es gramática contractante. Sólo las gramáticas tipo 0 pueden ser contractantes. Se
46
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
verifica que en una producción del tipo A w, w puede ser o sea el string vacío.
El ejemplo 1 b) muestra una gramática tipo 0.
Son aquellas en que las producciones son del tipo A w en que w . La
gramática puede contener la producción . Si G es una gramática tipo 1, entonces
L(G) es un lenguaje tipo 1 o de contexto sensitivo. En este caso, si w1 w2 ... wn
entonces |w1| |w2| ... |wn|, luego se dice que sus producciones son no contractantes. El
ejemplo 1 a) muestra una gramática tipo 1.
Es una subclase de las gramáticas tipo 2, en las que el lado derecho de una producción
puede contener a lo más un único símbolo no terminal y exactamente un símbolo terminal.
Su definición formal es: G = (N,T,P,), en que si AN{}, BN y aT, entonces:
Estas gramáticas se llaman regulares, luego el lenguaje asociado L(G) se dice regular o
de tipo 3.
1B | 1
B 0A
A 1B | 1
B1 | 1
B A0
A B1 | 1
Se prueba que L(G1) = (10)*1 y que L(G2) = 1(01)*, luego son gramáticas
equivalentes.
47
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Ejercicios Propuestos
1. Para las siguientes gramáticas describa los lenguajes aceptados L(Gi), indique todas las
inclusiones posibles entre estos lenguajes, y describa una derivación de un string de
largo al menos cuatro usando las producciones y un árbol de derivación.
a) G1 dado por:
|S
S SS | c
b) G2 dado por:
|S
S cSd | cd
c) G3 dado por:
|S
S Sd | cS | c | d
d) G4 dado por:
cS
S cS | Td | d
T Td | d
e) G5 dado por:
| S | ScS
Sc
4. Se dice que una gramática es ambigua si ella genera algún string por dos o más
derivaciones distintas. Verifique que las siguientes gramáticas, que permiten definir
expresiones aritméticas, son ambiguas:
a) G1 dado por:
S
S SAS | a | b
A+|-
b) G2 dado por:
S+S|S–S
S a|b
c) G3 dado por:
if E then else | if E then | c
48
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Usando las convenciones anteriores, podemos deducir las variables y terminales de una
gramática, solo examinando sus producciones. Entonces se presentará una gramática
listando sus producciones (ver ejemplo 1 c) anterior y los ejercicios propuestos).
Hay varias maneras de restringir el formato de las producciones sin reducir el poder
generativo de las g.l.c. Si L es un l.l.c. no vacío, entonces este lenguaje puede generarse
por una g.l.c. que tenga las siguientes propiedades:
49
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Sin embargo, estas dos condiciones no son suficientes para garantizar que X es útil, ya
que podría ocurrir que X aparezca en formas sentenciales que, tal vez, contengan alguna
otra variable inútil, con lo que X pasa a ser inútil.
Lema 4.1 Dada una g.l.c. G = (N,T,P,) , tal que L(G) , se puede determinar una g.l.c.
equivalente G’ = (N’,T,P’,) tal que AN’ exista algún T* tal que A * .
Demostración. Cada variable AN tal que A , claramente está en N’. Si se tiene la
producción A X1X2...Xn, en que cada Xi es, o una variable de N’ o un símbolo terminal,
entonces se puede derivar un string terminal desde A y luego AN’. P’ es el conjunto de
todas las producciones cuyos símbolos están en N’T. Para determinar N’ se usa el
siguiente algoritmo iterativo:
begin
OLDN = ;
NEWN = {A / A para algún T*};
while OLDN NEWN do
{ OLDN = NEWN;
NEWN = OLDN {A / A para algún (T OLDN)*};
}
N’ = NEWN;
end
Lema 4.2 Dada una g.l.c. G = (N,T,P,), se puede determinar una g.l.c. G’ = (N’,T’,P’,)
equivalente tal que se verifique que X(N’T’) existan , en (N’T’) tal que se tenga
* X.
50
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Observación: para eliminar los símbolos inútiles de una gramática se deben aplicar los
Lemas 4.1 y 4.2 en ese orden. Si se altera el orden se puede fallar en eliminar todos los
símbolos inútiles como en el siguiente ejemplo:
AC | BC | a | b
A Aa | a
B Bb | b
C AC | BC
Por Lema 4.2 se tiene que N’ = {, A, B, C} y T’ = {a, b}. Luego, al aplicar Lema 4.1
se tiene que N’ = {, A, B} y T’ = {a, b}. Luego, las producciones son:
AC | BC | a | b
A Aa | a
B Bb | b
Por lo que quedan dos variables inútiles que son A y B. Inversamente, al aplicar
primero Lema 4.1 se obtiene: N’ = {, A, B} y T’ = {a, b}. Luego, al aplicar Lema 4.2 se
obtiene que N’ = {} y T’ = {a, b}, quedando las producciones: a | b, que es la g.l.c.
sin símbolos inútiles equivalente.
Teorema 4.1 Todo l.l.c. no vacío es generado por una g.l.c. sin símbolos inútiles.
Demostración. Sea L = L(G) un l.l.c. no vacío. Sea G1 el resultado de aplicar el Lema 4.1
a G y sea G2 el resultado de aplicar el Lema 4.2 a G1. Supongamos que G2 tiene un
símbolo inútil X. Por Lema 4.2 existe en G2 una derivación * X. Dado que todos
los símbolos de G2 son símbolos de G1, se sigue del Lema 4.1 que * X * w, para
wT*. Además, ningún símbolo en la derivación en G1 dada por X * w es eliminado
por Lema 4.2. Luego, X deriva un string terminal en G2 lo que contradice la suposición de
que X era un símbolo inútil.
Teorema 4.2 Si L = L(G) para alguna g.l.c. G = (N,T,P,) entonces L – {} = L(G’) para
alguna g.l.c. G’ con ningún símbolo inútil o producción vacía.
51
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
ABC
Af
B DEF
C GH
Da|
Eb|
Fc|
Gd
He
ABC | AC
Af
B DEF | DE | DF | EF | D | E | F
C GH
Da
Eb
Fc
Gd
He
Las producciones unitarias son del tipo A B, en que el lado derecho consiste de una sola
variable. Las producciones del tipo A a, A , u otras distintas, no son unitarias.
52
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Teorema 4.3 Todo l.l.c. que no incluya al string vacío está definido por una g.l.c. sin
símbolos inútiles, producciones vacías y producciones unitarias.
Demostración. Si la g.l.c. contiene una producción unitaria del tipo A B, y se tiene que
las producciones de B son del tipo B * 1|2|...|k (con |i| > 1) entonces se reemplaza la
producción A B por las producciones A 1|2|...|k. Finalmente se aplican los
Teoremas 4.1 y 4.2 para determinar la g.l.c. sin símbolos inútiles ni producciones vacías
equivalente.
Observación. Al simplificar una g.l.c. se deben ejecutar los siguientes pasos en el orden
dado:
i) Quitar las producciones vacías (si las hay).
ii) Quitar las producciones unitarias (si las hay).
iii) Quitar los símbolos inútiles (si los hay) usando los Lemas 4.1 y 4.2 en ese orden.
A|B
A B | C | aB | b
BC
C B | Aa
aB | b | Aa
A aB | b | Aa
B Aa
C Aa
Finalmente, aplicando los Lemas 4.1 y 4.2 se deduce que C es un símbolo inútil por lo
que es eliminado y la g.l.c. sin producciones unitarias ni símbolos inútiles es:
aB | b | Aa
A aB | b | Aa
B Aa
Se trata de modificar las producciones de una gramática de libre contexto de modo que
queden todas normalizadas según A BC | a. Las g.l.c. que verifiquen estas condiciones
se dirán en FNC (Forma Normal de Chomsky).
Cualquier l.l.c. que no contenga el string vacío se puede generar por una gramática en
que todas sus producciones son de la forma A BC | a.
53
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Demostración. Sea G una g.l.c. que genere un l.l.c. que no contenga al string vacío. Por el
Teorema 4.3 siempre es posible hallar una g.l.c. equivalente G1 = (N,T,P,), tal que P no
contenga producciones unitarias ni producciones vacías. Luego, si una producción tiene en
su lado derecho un símbolo, éste debe ser terminal, por lo que esa producción cumple con
la condición solicitada.
Se ha probado entonces que cualquier l.l.c. puede ser generado por una g.l.c. en la que
toda producción es, o de la forma A a o de la forma A B1B2...Bm para m 2. Sea esa
g.l.c. G2 = (N’,T,P’,). Se modifica esta gramática agregando algunos símbolos no
terminales adicionales a N’ y reemplazando algunas producciones de P’. Para cada
producción A B1B2...Bm en P’, en que m 3, se crean las variables D1, D2,...,Dm-2 y se
reemplaza la producción anterior por el conjunto de producciones:
A B1D1
D1 B2D2
D2 B3D3
.
.
Dm-3 Bm-2Dm-2
Dm-2 Bm-1Bm
bA | aB
A bAA | a | a
B aBB | b | b
54
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
bA se reemplaza por Cb A.
aB se reemplaza por Ca B.
A a se reemplaza por A Ca .
A bAA se reemplaza por A Cb AA.
B b se reemplaza por B Cb .
B aBB se reemplaza por B Ca BB.
Cb A | Ca B
A Ca | Cb D1 | a
B Cb | Ca D2 | b
D1 AA
D2 BB
Ca a
Cb b
Se trata de modificar las producciones de una gramática de libre contexto de modo que
queden todas normalizadas según A a. Las g.l.c. que verifiquen estas condiciones se
dirán en FNG (Forma Normal de Greibach). Para ello se estudiarán dos Lemas que
permiten modificar las producciones de una g.l.c. para luego llevarlas a la FNG.
Lema 4.3 Se define una A-producción como toda producción cuya variable a su izquierda
sea A. Sea la g.l.c. G = (N,T,P,) y sea A 1B2 una A-producción en P y sean las B-
producciones B 1|2|...|r. Entonces, se puede construir la g.l.c. G1 = (N,T,P’,) a partir
de G eliminando la producción A 1B2 de P y agregando las producciones A 11
2 | 12 2 |...| 1r 2 a P se tiene que G y G1 son equivalentes, o sea L(G) = L(G1).
Demostración. Es fácil ver que L(G1) L(G), ya que si A 1i 2 se usa en alguna
derivación en G1 entonces A 1B 2 1i 2 en G y los strings derivados son los
mismos en ambas gramáticas. Para mostrar que L(G) L(G1) se observa que A 1B 2
es la única producción en G que no está en G1. Cuando esta producción se usa en una
derivación de G, el símbolo B debe ser reescrito en algún paso posterior usando una
producción de la forma B i. Estos dos pasos se reemplazan por el paso A 1i 2.
Luego L(G) L(G1), y por lo tanto L(G) = L(G1).
Lema 4.4 Sea la g.l.c. G = (N,T,P,). Sea A A1| A2|...|Ar el conjunto de todas las
A-producciones para las que A es el símbolo más a la izquierda del lado derecho (son
recursivas a la izquierda). Sean A 1|2|...|s las A-producciones que no son recursivas a
la izquierda. Sea G1 = (N{B},T,P1,) la g.l.c. formada al agregar la variable B a N y
reemplazar todas las A-producciones por las A-producciones no recursivas a la izquierda
siguientes: A i|iB con 1 i s, y B j|jB con 1 j r. Entonces G y G1 son
equivalentes, o sea L(G) = L(G1).
55
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
En G1 se obtiene ahora:
La transformación inversa también es válida, luego es fácil comprobar que los strings
derivados en G y G1 son los mismos, o sea L(G) = L(G1).
Todo l.l.c. que no contenga al string vacío puede ser generado por una g.l.c. para la
que cada producción sea de la forma A a.
Demostración. Sea G = (N,T,P,) una g.l.c. en FNC que genere el l.l.c. y supongamos que
N = {A1, A2,..., Am}. El primer paso para transformar las producciones de P a FNG es
modificar éstas de modo que si Ai Aj está en P entonces se tenga j > i. Partiendo con
A1 y procediendo hasta Am, se siguen los siguientes pasos. Supondremos que las
producciones se han modificado para 1 i < k, tal que Ai Aj es una producción de P
solo si j > i. Entonces se revisan las Ak-producciones.
{
for (k = 1, k m, k++)
{
for (j = 1, j k-1, j++)
{ for (cada producción de la forma Ak Al)
{
for (todas las producciones Aj )
{
agregar producción Ak ;
remover producción Ak Aj;
}
} }
for (cada producción de la forma Ak Ak)
{
agregar producciones Bk |Bk;
remover producción Ak Ak;
}
for (cada producción Ak , en que no empieza con Ak)
{
agregar producción Ak Bk;
}
}
56
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Repitiendo el proceso anterior para cada variable original se tendrá solo producciones
de la forma:
Se observa que toda Am-producción debe tener como símbolo de más a la izquierda un
símbolo terminal. Para una Am-1-producción debe tener como símbolo de más a la
izquierda o a Am o a un símbolo terminal. Si se aplica el Lema 4.3 para estas producciones,
y luego se reitera para las siguientes, entre Am-1 y A1, todas quedan en FNG (o sea su lado
derecho tiene un símbolo terminal como símbolo de más a la izquierda).
Finalmente se examinan las producciones para las nuevas variables B1, B2,..., Bm. Ya
que comenzamos con una g.l.c. en FNC, es fácil probar por inducción sobre la cantidad de
aplicaciones de los Lemas 4.3 y 4.4 que el lado derecho de cada Ai-producción, 1 i m,
empieza con un símbolo terminal o con AjAk para algún j y k (propuesto como ejercicio).
Luego ninguna Bj-producción puede empezar con otra Bj. Además todas las Bi-
producciones tienen sus lados derechos empezando con símbolos terminales o con algún
símbolo Ai y aplicando una vez más el Lema 4.3 para cada Bi-producción se completa la
demostración.
Ejemplo 8. Normalice según Greibach la g.l.c. G = ({A1, A2, A3}, {a,b}, P, A1), en que sus
producciones son:
A1 A2A3
A2 A3A1 | b
A3 A1A2 | a
A3 bA3A2B3 | aB3
B3 A1A3A2 | A1A3A2B3
A1 A2A3
A2 A3A1 | b
A3 bA3A2B3 | aB3 | bA3A2 | a
B3 A1A3A2 | A1A3A2B3
57
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
c) AC | A d) WC | C | aX
A BA | X Xab | ab
B aB | b W a
C Ca | Cb C Bab | Daa
B BdW | DWD | bb
D DDb | Wba | XaX
2. Demuestre que cualquier lenguaje de libre contexto L, sin incluir a , puede ser
generado por una g.l.c. G = (N,T,P,) cuyas producciones son todas de la forma A a
| aB | aBC, en que A,B y C son símbolos no terminales (de N) y aT.
3. Sea G la g.l.c. dada por: aa | bb | | a | b. Demuestre por inducción sobre el
largo del string derivado que L(G) = {x / x es palíndrome en (a+b)*}.
4. Escriba una g.l.c. que genere el conjunto de todos los strings sobre el alfabeto {a,b}
con exactamente el doble de b’s que a’s.
AB | CA
Aa
B BC | AB
C aB | b
6. Determine la g.l.c. en FNC equivalente a la g.l.c. que genera fórmulas del cálculo
proposicional con predicados p y q, dada por | | | ( ) | p | q.
58
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
AA | 0
A | 1
AB
A BB | C | 1 |
B 0A1 | 0
C BB
10. Para la g.l.c. siguiente obtenga una gramática equivalente en FNG, compruebe si es
ambigua y determine el lenguaje aceptado:
AC | A
A BA |
B aB | b
C Ca | Cb
5. Autómatas Pushdown
5.1 Introducción
Así como las expresiones regulares tienen un autómata equivalente (el AFD), las g.l.c.
tienen su contraparte: el autómata pushdown (APD). En este caso se considerará que el
APD es no determinístico, pues la versión determinística de este autómata solo acepta un
subconjunto de todos los l.l.c., aunque en este subconjunto están incluidos la mayoría de
los lenguajes de programación.
Este tipo de autómata comprende una cinta de entrada y un control finito (como en los
autómatas finitos) más una pila, formada por un string de símbolos de un alfabeto. El
símbolo de más a la izquierda de la pila se considera el que está al tope de la pila. Como el
autómata es no determinístico, habrá un número finito de elecciones de movimientos en
cada situación.
Los movimientos a considerar serán de dos tipos: en el primer caso se lee un símbolo
del input y dependiendo de éste, del símbolo al tope de la pila y del estado del control
finito, se tendrá una cierta cantidad de elecciones de movimientos posibles. Cada elección
consiste de un próximo estado para el control finito y de un string de símbolos (que puede
ser vacío) para reemplazar el símbolo al tope del stack. Además, la lectora del input avanza
al siguiente símbolo. En el segundo tipo de movimiento (llamado movimiento-) también
se accede a alguna cantidad de elecciones de movimientos pero sin considerar el símbolo a
la entrada y la lectora del input no avanza sobre éste. Con este tipo de movimiento el APD
puede manejar la pila (vaciarla por ejemplo) sin leer símbolos del input.
59
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Por convención se usarán las primeras letras minúsculas (a, b, c, d, e) para denotar a
símbolos del input, las últimas letras minúsculas (u, v, w, x, y, z) para denotar strings de
símbolos del input, letras mayúsculas para representar a símbolos de la pila y letras griegas
para representar strings de símbolos de la pila. Los dos movimientos antes mencionados y
que son definidos por la función de transición son entonces:
a) (q, a, Z) = {(p1, 1), (p2, 2),...,(pm,m)}, en que q y pi son estados de Q, aS, Z y
i* (1 i m), indica que estando en el estado q, leyendo a en el input y con Z en la
pila, el APD puede entrar al estado pi, reemplazar Z por el string i y avanzar la lectora
del input un símbolo. Por convención, el símbolo de más a la izquierda de i será el
ubicado más alto en la pila y su símbolo de más a la derecha será el menor en el stack.
Nótese que no se puede elegir un estado pi y un string j para algún j i en un
movimiento.
Para definir el lenguaje aceptado por el APD tenemos dos maneras. La primera es
definirlo como el conjunto de todos los inputs para los que alguna secuencia de
movimientos cause que el APD vacíe su pila, el cual se llama lenguaje aceptado por pila
vacía. La segunda manera es aceptar un input al alcanzar un estado final por alguna
sucesión de movimientos (manera que es similar a la usada por los autómatas finitos) y se
llama lenguaje aceptado por estado final. Más adelante se verá que ambas maneras de
definir el lenguaje aceptado por un APD son equivalentes.
Entonces, para el APD M = (Q, S, , , q0, Z0, F) se define el lenguaje aceptado por
pila vacía como el conjunto:
60
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Ejemplo 1. Sea el APD M = ({q1, q2}, {0, 1, c}, {R, B, G}, , q1, R, ) que reconoce por
pila vacía el conjunto de strings N(M) = {wcwr / w(0 + 1)*}. Los movimientos de este
APD, que es determinístico, son:
(q1, 01c10, R) (q1, 1c10, BR) (q1, c10, GBR) (q2, 10, GBR) (q2, 0, BR)
(q2, , R) (q2, , ) (aceptación)
Ejemplo 2. El APD M = ({q1, q2}, {0, 1}, {R, B, G}, , q1, R, ) acepta por pila vacía el
conjunto N(M) = {wwr / w(0 + 1)*}. Es no determinístico y sus movimientos son:
En este caso el APD primero almacena en la pila la información del input que está
leyendo (movimientos primero al sexto). En el tercer y sexto movimientos M puede decidir
que ya ha leído la mitad del string y pasa al estado q2 para chequear si el resto del input
61
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
coincide con el reverso del input ya analizado. Si esto ocurre entonces M vacía su pila y
acepta el input. Si no es así el input es rechazado. Por ejemplo, para el input w = 001100 se
tiene la siguiente secuencia de DI (se recuerda que el APD acepta el string si en alguno de
los caminos posibles alcanza la condición de aceptación, en este caso vacía su pila):
Se estudiará en este capítulo la relación existente entre los APD y los lenguajes de
libre contexto (l.l.c.) asociados a una gramática de libre contexto (g.l.c.), observando
primeramente que las dos definiciones dadas de lenguajes aceptados por un APD son
equivalentes. Luego se verá que los lenguajes aceptados por pila vacía son exactamente los
LLC.
Teorema 5.1 Si L = L(M2) para algún APD M2 entonces L = N(M1) para algún APD M1.
Demostración. Sea M2 = (Q, S, , , q0, Z0, F) un APD tal que L = L(M2). Se define
entonces M1 = (Q{qe,q0´} , S, {X0}, `, q0`, X0, ), en que la función de transición `
se define como:
62
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Para terminar se prueba que ambos APD son equivalentes. Sea xL(M2). Entonces
qF tal que (q0, x, Z0) * (q, , ) en M2. Sea M1 con el mismo input x. Por regla (1)
anterior (q0´, x, X0) * (q0, x, Z0X0). Por regla (2) cada movimiento de M2 es un
movimiento legal para M1, luego: (q0, x, Z0) * (q, , ), luego en M1:
Por las reglas (3) y (4) se obtiene entonces: (q0´, x, X0) * (qe, , ) y luego M1 acepta
a x por pila vacía, o sea xN(M1). Inversamente, si M1 acepta a x por pila vacía, se ve
fácilmente que la secuencia de movimientos debe ser: una vez la regla (1), luego la
secuencia dada por la regla (2) en que M1 simula a M2, seguida del vaciado de la pila de
M1 por reglas (3) y (4). Luego x debe estar en L(M2).
Teorema 5.2 Si L = N(M1) para algún APD M1 entonces L = L(M2) para algún APD M2.
Demostración. Sea M1 = (Q, S, , , q0, Z0, ) una APD tal que L = N(M1). Se define
entonces M2 = (Q{q0´, qf}, S, {X0}, ´, q0´, X0, {qf}), en que la función de transición
´ se define como:
1) ´(q0´, , X0) = {(q0, Z0X0)}: M2 ingresa a la DI inicial de M1, excepto que mantiene
marcado el fondo de la pila con su símbolo inicial X0.
3) (qf, ) ´(q, , X0), qQ: Al aparecer X0 en la pila permite acceder al estado final qf.
63
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Ejemplo 3. Sea la g.l.c. G = ({, X1, X2, X3), {a, b, c}, P, ) en que P tiene las
producciones:
aX1X2
X1 aX3 | b
X2 aX3 | c
X3 a
M = ({q}, {a, b, c}, {, X1, X2, X3}, , q, , ) en que la función de transición es la
siguiente:
(q, a, ) = {(q, X1X2)}
(q, a,X1) = {(q, X3)}
(q, b,X1) = {(q, )}
(q, a,X2) = {(q, X3)}
(q, c,X2) = {(q, )}
(q, a,X3) = {(q, )}
Para este ejemplo se puede comprobar que w = aaac es aceptado por G pues:
(q, aaac, ) (q, aac, X1X2) (q, ac, X3X2) (q, c, X2) (q, , )
Demostración. Sea el APD M = (Q, S, , , q0, Z0, ). Sea G = (N, S, P, ) una g.l.c. en
que N es el conjunto de objetos de la forma [q, A, p], con q y p en Q y A en , además del
nuevo símbolo . P es el conjunto de producciones siguiente:
2) [q, A, qm+1] a[q1, B1, q2][q2, B2, q3]...[qm, Bm, qm+1] para cada q, q1,...,qm+1 en Q y
cada aS{} y cada A, B1, B2,...,Bm en , tal que (q1, B1B2...Bm)(q, a, A). Si m = 0
la producción es [q, A, q1] a.
La intención es que [q, A, p] derive el string x ssi x causa que M borre una A de su pila
por alguna secuencia de movimientos que comienzan en q y terminan en p. Para probar que
L(G) = N(M), primero se comprueba por inducción sobre el número de pasos en la
derivación de G (o el número de movimientos en M) (propuesto) que:
Ejemplo 4. Sea M = ({q0, q1}, {0, 1}, {X, Z0}, , q0, Z0, ) en que es:
64
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
N = {, [q0, X, q0], [q0, X, q1], [q1, X, q0], [q1, X, q1], [q0, Z0, q0], [q0, Z0, q1], [q1, Z0,
q0], [q1, Z0, q1]}
T = {0, 1}
Se agregan producciones para [q0, Z0, q0] y [q0, Z0, q1] que están asociadas al
movimiento (q0, XZ0)(q0, 0, Z0):
[q0, Z0, q0] 0[q0, X, q0][q0, Z0, q0] | 0[q0, X, q1][q1, Z0, q0]
[q0, Z0, q1] 0[q0, X, q0][q0, Z0, q1] | 0[q0, X, q1][q1, Z0, q1]
Análogamente, para los restantes movimientos del APD se obtienen las siguientes
producciones. Para (q0, 0, X) = {(q0, XX)}:
Se eliminan todas las variables inútiles y las producciones asociadas, aplicando los
Lemas 4.1 y 4.2. Por ejemplo, las variables [q1, X, q0] y [q1, Z0, q0] no tienen producciones
asociadas. Asimismo, no es posible derivar strings de terminales a partir de las variables
[q0, X, q0] y [q0, Z0, q0]. Eliminando estas producciones queda:
0[q0, X, q1]
[q0, X, q1] 0[q0, X, q1][q1, X, q1] | 1
[q1, X, q1] 1
65
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
1. Sea L = {0n 12n 0m / n,m > 0}. Escriba un APD M que acepte L por stack vacío.
3. Para la g.l.c. en FNC siguiente normalice sus producciones según Greibach y determine
el APD equivalente:
A1 A2 A3
A2 A4 A3
A3 A1 A4 | a
A4 b
bAB | aBC
A aBA | a
B bCC | b
C aAB | a
5. Para el APD M = ({q0}, {a, b}, {A, B, C}, , q0, A, ) determine la g.l.c. en FNG sin
símbolos inútiles equivalente y el lenguaje aceptado:
d) L = {an bn / n 0}
i) L = {0n 1m / n m 3n}
66
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
6. Máquinas de Turing
6.1 Introducción
El modelo básico de una MT posee un control finito, una cinta de entrada que está
dividida en celdas, y una cabeza lectora que “lee” una celda de la cinta a la vez. La cinta
tiene una celda de más a la izquierda pero es infinita a la derecha, y cada una de sus celdas
puede contener exactamente uno de un número finito de símbolos del alfabeto de la cinta.
Inicialmente, las n celdas de más a la izquierda, para un n 0 finito, contendrán el input a
analizar, el cual es un string de símbolos elegidos de un alfabeto asociado a la entrada de
datos. Las restantes celdas contienen un símbolo blanco, que es un símbolo especial de la
cinta y no pertenece al alfabeto del input.
Control
Finito
En un movimiento la MT, dependiendo solo del símbolo “leído” por la cabeza lectora
y del estado del control finito, puede:
1) cambiar de estado;
2) imprimir un símbolo sobre la celda leída, reemplazando el que estaba allí, y
3) mover su cabeza lectora, a la izquierda o a la derecha, una celda.
67
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
1) Si (q, Xi) = (p, Y, L), en que si i = n+1 entonces Xi es B. Si i = 1 entonces no hay una
próxima DI, pues la lectora de cinta no puede salirse de ella. Si i > 1 se tiene:
X1X2 ... Xi-1 q Xi Xi+1 ... Xn M X1X2 ... Xi-2 p Xi-1 Y Xi+1 ... Xn
Si cualquier sufijo del string Xi-1 Y Xi+1 ... Xn es blanco (o concatenación de blancos)
este sufijo no se considera en la expresión anterior.
X1X2 ... Xi-1 q Xi Xi+1 ... Xn M X1X2 ... Xi-1 Y p Xi+1 ... Xn
L(M) = {w / pF, 1,2* tal que w* y se verifica que: q0w* 1 p 2}
Dada una MT que reconozca el lenguaje L, se supone, sin pérdida de generalidad que
la MT se detiene, es decir no tiene movimiento, cuando el input es aceptado. Sin embargo,
para strings no aceptados podría ocurrir que la MT no se detenga nunca.
Ejemplo 1. Sea L = {0n1n / n > 0}. La MT que reconoce este lenguaje es la siguiente.
Inicialmente en la cinta está el input 0n1n seguido de infinitos blancos. Repetidamente M
reemplaza el 0 de más a la izquierda por el símbolo X, avanza a la derecha hasta el 1 más a
la derecha, lo reemplaza por el símbolo Y, y retrocede a la izquierda hasta hallar el X más
a la derecha. Entonces avanza una celda a la derecha hasta el 0 de más a la izquierda y
repite el ciclo mencionado. Si ocurre que al buscar el 1 M encuentra un blanco entonces M
68
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
se detiene sin aceptar. Si luego de cambiar un 1 por una Y no se encuentran más ceros a la
izquierda, entonces se chequea que no haya más unos y se detiene aceptando si esto ocurre.
La MT es la siguiente: Q = {q0, q1, q2, q3, q4, q5}, = {0, 1}, F = {q4}, = {0, 1, X, Y, B}.
0 1 X Y B
q0 (q1, X, R) - - (q3, Y, R) -
q1 (q1, 0, R) (q2, Y, L) - (q1, Y, R) -
q2 (q2, 0, L) - (q0, X, R) (q2, Y, L) -
q3 - - - (q3, Y, R) (q4, B, R)
q4 - - - - -
Además de dedicarse a aceptar lenguajes (se observa que reconoce todos los lenguajes
que ya hemos estudiado, o sea los regulares y los de libre contexto), la MT puede usarse
para evaluar funciones enteras (o sea funciones matemáticas con argumentos enteros). En
este caso, el entero i 0 se representa por el string 0i. Si una función tiene k argumentos, o
sea i1, i2,..., ik, entonces estos enteros se ubican inicialmente en la cinta separados por
unos, o sea se ingresa el input 0i110i21...10ik al comienzo de la cinta. Si la MT se detiene
(independiente del estado en que lo haga) y en la cinta se tiene el valor 0m para m 0,
entonces se informa que f(i1, i2,..., ik) = m, en que f es la función de k argumentos enteros
calculada por esta MT.
Si esta función está definida para todos los argumentos posibles se dice que ella es una
función recursiva total, y son calculadas por MT que siempre se detienen y retornan un
resultado. Todas las funciones aritméticas comunes son recursivas totales. Por ejemplo: la
suma, resta propia, multiplicación, división, factorial de un entero positivo, potencia de
dos, etc.
69
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
0 1 B
q0 (q1, B, R) (q5, B, R) -
q1 (q1, 0, R) (q2, 1, R) -
q2 (q3, 1, L) (q2, 1, R) (q4, B, L)
q3 (q3, 0, L) (q3, 1, L) (q0, B, R)
q4 (q4, 0, L) (q4, B, L) (q6, 0, R)
q5 (q5, B, R) (q5, B, R) (q6, B,R)
El control finito puede usarse para mantener una cantidad finita de información. Para
lograr esto, el estado se redefine como un par de elementos pertenecientes al producto
cartesiano Qk, uno que ejerce el control y el otro para almacenar de uno a k símbolos de
cinta. Se aclara que esta definición es teórica y no significa realizar ninguna modificación a
la definición de la MT.
0 1 B
[q0, B] ([q1, 0], 0, R) ([q1, 1], 1, R) -
[q0, 0] - - -
[q0, 1] - - -
[q1, B] - - -
[q1, 0] - ([q1, 0], 1, R) ([q1, B], 0, L)
[q1, 1] ([q1, 1], 0, R) - ([q1, B], 1, L)
70
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Como ejemplo se analizan las transiciones realizadas sobre el string válido bcb. Estas
son:
6.4.3 Subrutinas
71
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
La idea es escribir parte del programa de la MT para servir como subrutina. Este
tendrá un estado inicial y uno de retorno definidos. Este último no tendrá movimientos
temporalmente y sólo será usado para efectuar un retorno desde la subrutina llamada. Para
diseñar una MT que “llame” a una subrutina, se establece un nuevo conjunto de estados
exclusivos de ella y se especifica un movimiento desde el estado de retorno. El llamado se
realiza accesando el estado inicial de la subrutina y el retorno es a través del movimiento
desde el estado de retorno. Como ejemplo se verá la operación de multiplicación de dos
enteros positivos no nulos.
0 1 B
q0 (q6, B, R) - -
q6 (q6, 0, R) (q14, 1, R) -
q14 (q14, 0, R) (q15, 1, L) (q15, 1, L)
q15 (q15, 0, L) (q1, 1, R) -
0 1 2 B
q1 (q2, 2, R) (q4, 1, L) - -
q2 (q2, 0, R) (q2, 1, R) - (q3, 0, L)
q3 (q3, 0, L) (q3, 1, L) (q1, 2, R) -
q4 - (q5, 1, R) (q4, 0, L) -
hayan borrado. Si esto no ocurre aún se llama a COPIA otra vez y si ya ocurrió se borra el
prefijo 10n1 y se termina el cálculo del producto en el estado q12. Estas transiciones son:
0 1 B
q5 (q7, 0, L) - -
q7 - (q8, 1, L) -
q8 (q9, 0, L) - (q10, B, R)
q9 (q9, 0, L) - (q0, B, R)
q10 - (q11, B, R) -
q11 (q11, B, R) (q12, B, R) -
72
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Toda función entera que se puede calcular a través de una MT se llama función
recursiva parcial. La suposición de que la noción intuitiva de “función computable” puede
ser identificada con la clase de funciones recursivas parciales se conoce como Hipótesis de
Church, o Tesis de Church-Turing. No ha sido posible probarla esta hipótesis, pero mucha
evidencia de que ella es cierta.
Teorema. Una MT puede simular una RAM, bajo la condición que las instrucciones RAM
elementales puedan, ellas mismas, ser simuladas por una MT.
1. Escriba una MT que reconozca strings sobre el alfabeto {0, 1} tales que la cantidad de
ceros sea igual a la de unos.
73
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Apéndice
Se presentan en este Apéndice distintos Controles que han sido parte del curso:
“Teoría de Autómatas y Lenguajes Formales” en los últimos Semestres, y cuya pauta es
conocida por los alumnos de dicha asignatura.
Controles 1
Versión 1
Input 0 1 0 1 1 1 1 1 0 0 0 1
Output s s n n n s n n s s n s n
2. Escriba un AFND- que reconozca la expresión regular dada por (10* + 101*)*. Use el
algoritmo de búsqueda de strings para determinar los conjuntos Qi asociados al string
1101. ¿Es aceptado este string por el autómata?
Versión 2
0 1
q0 {q1} {q2} {q1}
q1 {q0} {q3} {q0}
q2 {q3} {q0} {q3}
q3 {q2} {q1}
74
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
1. Demostrar la siguiente equivalencia, usando las que se vieron en clases (indicando las
usadas en cada paso):
a) El AFND equivalente
b) Con un sistema de ecuaciones adecuado mostrar que la e.r. asociada es 0*1.
0 1
q0 {q1}
q1 {q4} {q4} {q2}
q2 {q2} {q3}
q3
q4
q5 {q4} {q3, q4}
4. Sea M = (Q, , , q0, F) un AFD que reconoce el lenguaje L. Sea el AFD M’ definido
por M’ = (Q Q, , ’, q0, F) en que:
Demuestre por inducción sobre n par que ’(q, a2a1a4a3...anan-1) = (q, a1a2...an).
Versión 4
1. Diseñar un AFD que exprese la aceptación de los strings que representan a números
reales y enteros usando notación decimal. Por ejemplo, valores válidos son: 3.14159,
6457, etc.
2. Para el siguiente AFD, con F = {b, e, h}, estado inicial a y la función de transición
dada:
0 1 2
a b d g
b c b h
c c b i
d e a g
e f e h
f c e i
g h d g
h i e h
75
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
i f h i
3. Sea M un autómata finito de Mealy con estado inicial q0 y alfabeto {0, 1}. Sea el
output z1z2...zn producido por M en respuesta al input x1x2...xn. Se define el conjunto
SM como el de todos los strings w tales que w = z1x1z2x2...znxn, para cualesquier input
en la clausura del alfabeto. Demuestre que SM es un conjunto regular.
Ind. Construya un AFN que reconozca los strings del conjunto. Dése un ejemplo para
aclarar su trabajo.
Controles 2
Versión 1
2. Para el AFD dado por la siguiente tabla de transiciones y con estados finales q2 y q4:
0 1
q0 q1 q2
q1 q1 q3
q2 q0 q1
q3 q1 q4
q4 q3 q1
b) Determine el AFD de menor cantidad de estados (en que los estados corresponden a las
clases de equivalencia de: xRLy z* xzL ssi yzL). Puede hacer uso del
algoritmo visto en clases.
3. Escriba una gramática libre del contexto que reconozca los strings del lenguaje sobre el
alfabeto {a,b} dado por (abab + baba)*. Escriba un árbol de derivación para el string
babaabab.
Versión 2
1. Sea L un conjunto regular. Se define INIT(L) = {x / y* tal que xyL}. Demuestre
que INIT(L) es también un conjunto regular.
2. Escriba una gramática de libre contexto que reconozca los strings sobre el alfabeto
{a,b} tales que la cantidad de a’s es exactamente el doble que la de b’s. Escriba un
árbol de derivación para el string abaaab.
76
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Versión 3
Demuestre que el conjunto L = {ambnam+n / m,n > 0} no es regular, haciendo uso de los
homomorfismos dados.
S AC | A
A BA |
B aB | b
C Ca | Cb
Versión 4
a) Para L = 01* + 100* determine: L0, L1, L10,, L00, L01 y L11.
b) Pruebe que los conjuntos regulares son cerrados para la operación derivada.
S AbC | BaC | AB | CS
A aB | Cb |
B bB | Ca |
C ab | AB
a) Elimine las producciones vacías, unitarias y los símbolos inútiles (si los hay).
b) Compruebe si esta gramática es ambigua.
77
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Controles 3
Versión 1
1. Escribir un APD que reconozca por stack vacío los strings del lenguaje:
2. Escriba una Máquina de Turing que calcule n/2, o sea la función que retorna el piso
de la mitad de n (el mayor entero menor o igual a n/2), considerando n > 0. Su input es
el string 0n y su output debe ser 0n/2.
Indicación: Una vez iniciado el proceso escriba una subrutina que ejecute los
siguientes pasos:
B2i-1 q 0n-2i+1 1 0i-1 * B2i+1 q 0n-2i-1 1 0i
3. Para el APD siguiente, que acepta por stack vacío, determine el lenguaje aceptado y la
gramática de libre contexto equivalente en Forma Normal de Greibach sin
producciones vacías ni unitarias ni símbolos inútiles:
(q0,,Z0) = {(q1,SZ0)}
(q1,,S) = {(q1,ASA), (q1,BSB),(q1,C)}
(q1,a,A) = {(q1,)}
(q1,b,B) = {(q1,)}
(q1,c,C) = {(q1,)}
(q1,,Z0) = {(q1,)}
Versión 2
1. Escriba un APD que reconozca strings del siguiente conjunto usando stack vacío:
2. En la demostración del Teorema que permite asegurar que un lenguaje aceptado por
una g.l.c. también es aceptado por un APD, se propone que si la g.l.c. G = (N,T,P,)
está en FNG, y tal que L(G), entonces el APD equivalente es M =
({q},T,N,,q,,), en que si Aa entonces (q,)(q,a,A). Se pide que demuestre
por inducción sobre el número de pasos en la derivación la siguiente proposición,
que es previa a la demostración de que G y M son equivalentes: para xT+ y N* se
tiene:
3. Escriba una MT que calcule la división de dos números enteros positivos m y n, tal que
m n, informando de su resultado y el resto de la división. Su input debe ser 0m10n y
su output debe ser 0r10d, en que r es el resto de dividir m por n y d es el resultado de la
división.
78
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
Versión 3
2. En la demostración del Teorema que permite asegurar que un lenguaje aceptado por
una g.l.c. también es aceptado por un APD, se tiene que si la g.l.c. G = (N,T,P,) está
en FNG, tal que L(G), entonces el APD equivalente es M = ({q},T,N,,q,,), en
que si Aa entonces (q,)(q,a,A). Se pide que demuestre por inducción sobre el
número de pasos en la derivación la siguiente proposición, que es previa a la prueba de
que G y M son equivalentes:
Exámenes
Versión 1
1. Escribir un APD que reconozca por stack vacío los strings del lenguaje:
a b
q0 q2 q1
q1 q5 q5
q2 q3 q6
q3 q3 q4
q4 q5 q5
q5 q5 q5
79
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
q6 q5 q6
Versión 2
a) L = {anbm/ n + m > 0}
b) L’ = {an w an / w (a + b)*, n > 0}
Indicación: Una vez iniciado el proceso debe escribir una subrutina que realice los
siguientes pasos:
i 1
Bi-1 q 0n-i+1 1 02 * Bi q 0n – i 1 02
i
Versión 3
a) Cada cero es seguido de otro cero o bien de al menos dos unos consecutivos.
b) La cantidad de ceros es par o un uno va seguido de un cero.
Describa:
2. Para la siguiente gramática, que genera expresiones aritméticas con sumas, productos y
paréntesis, determine la g.l.c. en FNG equivalente y el APD equivalente a ésta:
80
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
G = ({E, E’, T, T’, F}, {+, *, (, ), id}, P, E), en que P son las producciones:
E T E’
E’ + T E’ |
T F T’
T’ * F T’ |
F ( E ) | id
Versión 4
Determine los AFN sin transiciones vacías asociadas a cada uno de estos conjuntos.
2. Usando el Lema Pumping verifique que el conjunto L = {0m 1n 0mn / m > 0, n > 0} no
es un conjunto regular.
3. Construya una máquina de Turing que reconozca los strings del conjunto:
81