Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ejemplo
Sea = {a, b} el alfabeto que consta de los dos smbolos a y b. Las
siguientes son cadenas sobre :
aba
ababaaa
aaaab.
Observese que aba = aab. El orden de los smbolos en una cadena es signicativo
ya que las cadenas se denen como sucesiones, es decir, conjuntos secuencialmente
ordenados.
Ejemplo
El alfabeto = {0, 1} se conoce como alfabeto binario. Las cadenas
sobre este alfabeto son secuencias nitas de ceros y unos, llamadas
secuencias binarias, tales como
001
1011
001000001.
Ejemplo
= {a, b, c, . . . , x, y, z}, el alfabeto del idioma castellano. Las pala-
bras ociales del castellano (las que aparecen en el diccionario DRA)
son cadenas sobre .
1
2 Teora de la Computacion Profesor: Rodrigo De Castro
Ejemplo
El alfabeto utilizado por muchos de los llamados lenguajes de progra-
macion (como Pascal o C) es el conjunto de caracteres ASCII (o un
subconjunto de el) que incluye, por lo general, las letras may usculas y min usculas,
los smbolos de puntuacion y los smbolos matematicos disponibles en los teclados
estandares.
El conjunto de todas las cadenas sobre un alfabeto , incluyendo la cadena
vaca, se denota por
.
Ejemplo Sea = {a, b, c}, entonces
= {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, abc, baa, . . .}.
En la siguiente tabla aparecen las convenciones de notacion corrientemente utili-
zadas en la teora de lenguajes formales. De ser necesario, se emplean subndices.
Notacion usada en la teora de lenguajes
, denotan alfabetos.
denota el conjunto de todas las cadenas que se pue-
den formar con los smbolos del alfabeto .
a, b, c, d, e,. . . denotan smbolos de un alfabeto.
u, v, w, x, y, z, . . .
, , , . . .
denotan cadenas, es decir, sucesiones nitas de
smbolos de un alfabeto.
denota la cadena vaca, es decir, la unica cadena
que no tiene smbolos.
A, B, C, . . . , L, M, N,. . . denotan lenguajes (denidos mas adelante).
Algunos autores denotan la cadena vaca con la letra griega . Preferimos
denotarla con porque tiende a confundirse con el smbolo usado
para la relacion de pertenencia.
Si bien un alfabeto es un conjunto nito,
es siempre un conjunto
innito (enumerable). En el caso mas simple, contiene solo un smbolo,
= {a}, y
, la concatenacion de u y v se
denota como u v o simplemente uv y se dene descriptivamente as:
1. Si v = , entonces u = u = u. Es decir, la concatenacion de cualquier
cadena u con la cadena vaca, a izquierda o a derecha, es igual a u.
2. Si u = a
1
a
2
a
n
, v = b
1
b
2
b
m
, entonces
u v = a
1
a
2
a
n
b
1
b
2
b
m
.
Es decir, u v es la cadena formada escribiendo los smbolos de u y a con-
tinuacion los smbolos de v.
La concatenacion de cadenas se puede denir inductiva o recursivamente de la
siguiente manera. Si u, v
, a , entonces
1. u = u = u.
2. u (va) = (u v)a.
Propiedad. La concatenacion de cadenas es una operacion asociativa. Es decir,
si u, v, w
, entonces
(uv)w = u(vw).
Demostracion: Se puede hacer escribiendo explcitamente las cadenas u, v, w
y usando la denicion descriptiva de concatenacion. Tambien se puede dar una
demostracion inductiva usando la denicion recursiva de concatenacion (ejercicio
opcional).
1.3. Potencias de una cadena
Dada u
y n N, se dene (descriptivamente) u
n
en la siguiente forma
u
0
= ,
u
n
= uu u
. .
n veces
.
, n, m N, demostrar que
|w
n+m
| = |w
n
| +|w
m
|
Soluci on:
Caso n, m 1. |w
n+m
| = | ww w
. .
n+m veces
| = (n + m)|w|. Por otro lado,
|w
n
| +|w
m
| = | ww w
. .
n veces
| +| ww w
. .
m veces
| = n|w| + m|w|.
Caso n = 0, m 1. |w
n+m
| = |w
0+m
| = |w
m
|. Por otro lado,
|w
n
| +|w
m
| = |w
0
| +|w
m
| = || +|w
m
| = 0 +|w
m
| = |w
m
|.
Caso m = 0, n 1. Similar al caso anterior.
Caso n = 0, m = 0. |w
n+m
| = |w
0+0
| = || = 0. Por otro lado,
|w
n
| +|w
m
| = |w
0
| +|w
0
| = || +|| = 0 + 0 = 0.
1.5. Reexion o inversa de una cadena
La reexion o inversa de una cadena u
se denota u
R
y se dene descrip-
tivamente as:
u
R
=
_
, si u = ,
a
n
a
2
a
1
, si u = a
1
a
2
a
n
.
De la denicion se observa claramente que la reexion de la reexion de una
cadena es la misma cadena, es decir,
(u
R
)
R
= u, para u
.
Ejercicio Dar una denici on recursiva de u
R
.
Ejercicio
Si u, v
.
Se dice que v es un prejo propio si v = u.
Similarmente, un sujo de u es una cadena v tal que u = wv para alguna
cadena w
b
bc
bcb
bcba
bcbaa
bcbaad
bcbaadb
Sujos de u :
b
db
adb
aadb
baadb
cbaadb
bcbaadb
1.7. Lenguajes
Un lenguaje L sobre un alfabeto es un subconjunto de
, es decir L
.
Casos extremos:
L = , lenguaje vaco.
L =
: u = 0 o 0 no es un prejo de u}.
Ejercicio
Denir el conjunto de los enteros Z = {. . . , 2, 1, 0, 1, 2, . . .} como
un lenguaje sobre un alfabeto adecuado.
Captulo 1 Alfabetos, cadenas y lenguajes 7
El concepto abstracto de lenguaje, tal como se ha denido, no es exac-
tamente la misma nocion utilizada en la expresion lenguaje de progra-
macion. Para precisar la relacion entre estos conceptos, consideremos el
alfabeto de los caracteres ASCII. Un programa en C o en Pascal, por
ejemplo, es simplemente una cadena de smbolos de y, por lo tanto, un
conjunto de programas es un lenguaje (en el sentido formal denido en
esta seccion).
1.8. Operaciones entre lenguajes
Puesto que los lenguajes sobre son subconjuntos de
A Complemento
Estas operaciones entre lenguajes se llaman operaciones conjuntistas o boolea-
nas para distinguirlas de las operaciones ling usticas (concatenacion, potencia,
inverso, clausura) que son extensiones a los lenguajes de las operaciones entre
cadenas.
1.9. Concatenacion de lenguajes
La concatenacion de dos lenguajes A y B sobre , notada A B o simplemente
AB se dene como
AB = {uv : u A, v B}.
En general AB = BA.
. Entonces
1. A = A = .
2. A {} = {} A = A.
3. Propiedad Asociativa.
A (B C) = (A B) C.
4. Distributividad de la concatenacion con respecto a la union.
A (B C) = A B A C.
(B C) A = B A C A.
5. Propiedad distributiva generalizada. Si {B
i
}
iI
es una familia cualquiera de
lenguajes sobre , entonces
A
iI
B
i
=
iI
(A B
i
),
iI
B
i
A =
iI
(B
i
A).
Demostracion:
1. A = {uv : u A, v } = .
2. A {} = {uv : u A, v {}} = {u : u A} = A.
3. Se sigue de la asociatividad de la concatenacion de cadenas.
4. Caso particular de la propiedad general, demostrada a continuacion.
5. Demostracion de la igualdad A
iI
B
i
=
iI
(A B
i
):
x A
iI
B
i
x = u v, con u A & v
iI
B
i
x = u v, con u A & v B
j
, para alg un j I
x A B
j
, para alg un j I
x
iI
(A B
i
).
La igualdad
iI
B
i
A =
iI
(B
i
A) se demuestra de forma similar.
Captulo 1 Alfabetos, cadenas y lenguajes 9
La propiedad asociativa permite escribir concatenaciones de tres o mas
lenguajes sin necesidad de usar parentesis.
En general, no se cumple que A(BC) = ABAC. Es decir, la conca-
tenacion no es distributiva con respecto a la interseccion. Contraejemplo:
A = {a, }, B = {}, C = {a}. Se tiene:
A (B C) = {a, } = .
Por otro lado,
A B A C = {a, } {} {a, } {a} = {a, } {a
2
, a} = {a}.
Ejercicio
Una de las dos contenencias siguientes es verdadera y la otra es
falsa. Demostrar o refutar, seg un sea el caso:
1. A (B C) A B A C.
2. A B A C A (B C).
1.10. Potencias de un lenguaje
Dado un lenguaje A sobre , (A
), y n N, se dene A
n
en la siguiente
forma
A
0
= {},
A
n
= AA A
. .
n veces
.
Esta denicion generaliza a lenguajes la denicion de potenciacion de cadenas.
.
(Descripcion 1) A
=
_
i0
A
i
= A
0
A
1
A
2
A
n
A
, la
cual se denota por A
+
.
A
+
=
_
i1
A
i
= A
1
A
2
A
n
A
+
se puede describir de la siguiente manera
A
+
= conjunto de todas las concatenaciones de cadenas de A,
= {u
1
u
n
: u
i
A, n 1}
Observese que A
= A
+
{} y que A
= A
+
si y solamente si A.
Propiedades de y +. Sea A un lenguaje sobre , es decir, A
.
1. A
+
= A
A = A A
.
2. A
= A
.
3. A
n
= A
, para todo n 1.
4. A
= A
.
5. A
+
A
+
A
+
.
6. A
+
= A
.
7. A
+
= A
.
8. A
+
+
= A
+
.
Demostracion:
A A
= A (A
0
A
1
A
2
) 1.
= A
1
A
2
A
3
= A
+
.
Similarmente se demuestra que A
A = A
+
.
2. Si x A
, entonces x = u v, con u A
, v A
. Entonces, x = u v,
con u = u
1
u
2
u
n
, u
i
A, n 0 y v = v
1
v
2
v
m
, v
i
A, m 0.
De donde
x = u v = u
1
u
2
u
n
v
1
v
2
v
m
.
con u
i
A, v
i
A, n 0. Por lo tanto, x es una concatenacion de n + m
cadenas de A. As que x A
.
Captulo 1 Alfabetos, cadenas y lenguajes 11
Recprocamente, si x A
, entonces x = x A
. Esto prueba la
igualdad de los conjuntos A
y A
.
3. Se sigue de la propiedad anterior.
_
A
=
_
A
_
0
_
A
_
1
_
A
_
2
4.
= {} A
= A
.
5. La demostracion de esta propiedad es similar a la de la propiedad 2, pero con
la restriccion m, n 1. En general, no se tiene la igualdad A
+
A
+
= A
+
; mas
adelante se mostrara un contraejemplo.
_
A
_
+
=
_
A
_
1
(A
_
2
(A
_
3
6.
= A
= A
.
_
A
+
_
=
_
A
+
_
0
_
A
+
_
1
_
A
+
_
2
7.
= {} A
+
A
+
A
+
= A
(conjuntos contenidos en A
+
)
= A
.
_
A
+
_
+
=
_
A
+
_
1
_
A
+
_
2
_
A
+
_
3
, 8.
= A
+
(conjuntos contenidos en A
+
)
= A
+
.
Contraejemplo de A
+
A
+
= A
+
. Sea = {a, b}, A = {a}. Se tiene
A
+
= A
1
A
2
= {a} {aa} {aaa} = {a
n
: n 1}.
Por otro lado,
A
+
A
+
= {a, a
2
, a
3
, . . . } {a, a
2
, a
3
, . . . } = {a
2
, a
3
, a
4
, . . . }
= {a
n
: n 2}.
Seg un las deniciones dadas,
. Demostrar que
(A B)
= (A
.
Ayuda: tener en cuenta tanto la descripcion 1 como la descripcion 2 presen-
tadas arriba.
1.12. Reexion o inverso de un lenguaje
Dado A un lenguaje sobre , se dene A
R
de la siguiente forma:
A
R
= {u
R
: u A}.
A
R
se denomina la reexion o el inverso de A.
Propiedades. Sean A y B lenguajes sobre (es decir, A, B
).
1. (A B)
R
= B
R
A
R
.
2. (A B)
R
= A
R
B
R
.
3. (A B)
R
= A
R
B
R
.
4. A
R
R
= A.
5. (A
)
R
= A
R
.
6. (A
+
)
R
= A
R
+
.
Demostracion:
x (A B)
R
x = u
R
, donde u A B 1.
x = u
R
, donde u = vw, v A, w B
x = (vw)
R
, donde v A, w B
x = w
R
v
R
, donde v A, w B
x B
R
A
R
.
2.
Ejercicio
3.
Ejercicio
Captulo 1 Alfabetos, cadenas y lenguajes 13
4.
Ejercicio
x (A
)
R
x = u
R
, donde u A
5.
x = (u
1
u
2
u
n
)
R
, donde los u
i
A, n 0
x = u
R
n
u
R
2
u
R
1
, donde los u
i
A, n 0
x (A
R
)
.
6.
Ejercicio
Ejercicio
Se pueden generalizar las propiedades 2 y 3 anteriores para uniones
e intersecciones arbitrarias, respectivamente?
1.13. Lenguajes regulares
Los lenguajes regulares sobre un alfabeto dado son todos los lenguajes que
se pueden formar a partir de los lenguajes basicos , {}, {a}, a , por medio
de las operaciones de union, concatenacion y estrella de Kleene.
Podemos dar una denicion recursiva de los lenguajes regulares. Sea un
alfabeto.
1. , {} y {a}, para cada a , son lenguajes regulares sobre . Estos son
los denominados lenguajes regulares basicos.
2. Si A y B son lenguajes regulares sobre , tambien lo son
A B (union)
A B (concatenacion)
A
(estrella de Kleene).
Observese que tanto como
Ejemplos Sea = {a, b}. Los siguientes son lenguajes regulares sobre :
1. El lenguaje A de todas las cadenas que tienen exactamente una a:
A = {b}
{a} {b}
.
2. El lenguaje B de todas las cadenas que comienzan con b:
B = {b} {a, b}
.
14 Teora de la Computacion Profesor: Rodrigo De Castro
3. El lenguaje C de todas las cadenas que contienen la cadena ba:
C = {a, b}
{ba} {a, b}
.
4. ({a} {b}
) {a}.
5.
__
{a}
{b}
{b}
.
Es importante observar que todo lenguaje nito L = {w
1
, w
2
, . . . , w
n
} es regular
ya que L es puede obtener con uniones y concatenaciones:
L = {w
1
} {w
2
} {w
n
},
y cada w
i
es la concatenacion de un n umero nito de smbolos, w
i
= a
1
a
2
a
k
;
por lo tanto, {w
i
} = {a
1
} {a
2
} {a
k
}.
1.14. Expresiones regulares
Las expresiones regulares representan lenguajes regulares y su proposito es sim-
plicar la escritura de los lenguajes regulares.
La siguiente es la denicion recursiva de las expresiones regulares sobre un
alfabeto dado.
1. Expresiones regulares basicas:
es una expresion regular que representa al lenguaje .
es una expresion regular que representa al lenguaje {}.
a es una expresion regular que representa al lenguaje {a}, a .
2. Si R y S son expresiones regulares sobre , tambien lo son:
(R)(S)
(R S)
(R)
) = L(R)
)a
(bc)
) {a}
{bc}
(a b)
(ba)
({a} {b})
{ba}
Ejemplos
Los tres primeros lenguajes de la seccion 1.13, podemos represen-
tarlos con expresiones regulares:
1. El lenguaje A de todas las cadenas que tienen exactamente una a:
A = b
ab
.
2. El lenguaje B de todas las cadenas que comienzan con b:
B = b(a b)
.
3. El lenguaje C de todas las cadenas que contienen la cadena ba:
C = (a b)
ba(a b)
.
16 Teora de la Computacion Profesor: Rodrigo De Castro
La representacion de lenguajes regulares por medio de expresiones regula-
res no es unica. Es posible que haya varias expresiones regulares diferentes
para el mismo lenguaje. Por ejemplo, b(a b)
y b(b a)
representan el
mismo lenguaje.
Otro ejemplo: las dos expresiones regulares (a b)
y (a
representan
el mismo lenguaje por la igualdad establecida en el ejercicio nal de la
seccion 1.11
Ejemplos
Encontrar expresiones regulares que representen los siguientes len-
guajes, denidos sobre el alfabeto = {a, b}:
1. Lenguaje de todas las cadenas que comienzan con b y terminan con a.
Solucion: b(a b)
a.
2. Lenguaje de todas las cadenas que tienen un n umero par de smbolos (ca-
denas de longitud par).
Solucion: (aa ab ba bb)
.
3. Lenguaje de todas las cadenas que tienen un n umero par de aes.
Soluciones:
b
(b
ab
ab
.
(ab
a b)
.
(b
ab
ab
.
Ejemplos
Encontrar expresiones regulares que representen los siguientes len-
guajes, denidos sobre el alfabeto = {0, 1}.
1. Lenguaje de todas las cadenas que tienen exactamente dos ceros.
Solucion: 1
01
01
.
2. Lenguaje de todas las cadenas cuyo pen ultimo smbolo, de izquierda a de-
recha, es un 0.
Solucion: (0 1)
0(0 1).
Ejemplo
Sea = {a, b, c}. Encontrar una expresion regular que represente el
lenguaje de todas las cadenas que no contienen la cadena bc.
Soluci on: Una b puede estar seguida solamente de otra b o de una a, mientras
que las aes y las ces pueden estar seguidas de cualquier smbolo. Esto se puede
visualizar por medio del siguiente diagrama:
Captulo 1 Alfabetos, cadenas y lenguajes 17
Teniendo en cuenta todas las restricciones y posibilidades, arribamos a la siguiente
expresion: (a c b
+
a)
(b ac
Ejercicios
Encontrar expresiones regulares para los lenguajes descritos a con-
tinuacion:
1. = {0, 1, 2}. Lenguaje de todas las cadenas que comienzan con 2 y termi-
nan con 1.
2. = {a, b, c}. Lenguaje de todas las cadenas que tienen un n umero par de
smbolos.
3. = {a, b}. Lenguaje de todas las cadenas que tienen un n umero impar de
smbolos.
4. = {a, b, c}. Lenguaje de todas las cadenas que tienen un n umero impar
de smbolos.
5. = {a, b}. Lenguaje de todas las cadenas que tienen un n umero impar de
aes.
6. = {0, 1}. Lenguaje de todas las cadenas que tienen por lo menos un 0 y
por lo menos un 1.
7. = {0, 1}. Lenguaje de todas las cadenas que tienen a lo sumo dos ceros
consecutivos.
8. = {0, 1}. Lenguaje de todas las cadenas cuyo quinto smbolo, de izquierda
a derecha, es un 1.
9. = {0, 1}. Lenguaje de todas las cadenas de longitud par 2 formadas
por ceros y unos alternados.
10. = {0, 1}. Lenguaje de todas las cadenas cuya longitud es 4.
18 Teora de la Computacion Profesor: Rodrigo De Castro
11. = {0, 1}. Lenguaje de todas las cadenas de longitud impar que tienen
unos unicamente en las posiciones impares.
12. = {a, b}. Lenguaje de todas las cadenas que tienen la cadena ab un
n umero par de veces.
13. = {a, b}. Lenguaje de todas las cadenas que tienen un n umero par de aes
o un n umero impar de bes.
14. = {0, 1}. Lenguaje de todas las cadenas cuya longitud es un m ultiplo de
tres.
15. = {0, 1, 2}. Lenguaje de todas las cadenas que no contienen dos unos
consecutivos.
No todos los lenguajes sobre un alfabeto dado son regulares. Mas
adelante se mostrara que el lenguaje
L = {, ab, aabb, aaabbb, . . . } = {a
n
b
n
: n 0}
sobre = {a, b} no se puede representar por medio de una expresion
regular, y por lo tanto, no es un lenguaje regular.
Captulo 2
Automatas nitos
2.1. Automatas nitos deterministas (AFD)
Los automatas nitos son maquinas abstractas que procesan cadenas, las cuales
son aceptadas o rechazadas:
El automata act ua leyendo los smbolos escritos sobre una cinta semi-innita,
dividida en celdas o casillas, sobre la cual se escribe una cadena de entrada u, un
smbolo por casilla. El automata posee una unidad de control que inicialmente
escanea o lee la casilla del extremo izquierdo de la cinta.
19
20 Teora de la Computacion Profesor: Rodrigo De Castro
La unidad de control (tambien llamada control nito o cabeza lectora) del
automata posee un cierto n umero (nito) de conguraciones internas, llamadas
estados del automata. Entre los estados de un automata se destacan el estado
inicial y los estados nales o estados de aceptacion.
Formalmente, un automata nito M esta denido por cinco parametros, M =
(, Q, q
0
, F, ), a saber:
1. Un alfabeto , llamado alfabeto de cinta. Todas las cadenas que procesa M
pertenecen a
.
2. Q = {q
0
, q
1
, . . . , q
n
}, conjunto de estados del automata.
3. q
0
Q, estado inicial.
4. F Q, conjunto de estados nales o de aceptacion. F = .
5. La funcion de transicion del automata
: Q Q
(q, a) (q, a)
Toda cadena de entrada es procesada completamente, hasta que la unidad de
control encuentra la primera casilla vaca.
Ejemplo
= {a, b}.
Q = {q
0
, q
1
, q
2
}.
q
0
: estado inicial.
F = {q
0
, q
2
}, estados de aceptacion.
Funcion de transicion :
a b
q
0
q
0
q
1
q
1
q
1
q
2
q
2
q
1
q
1
(q
0
, a) = q
0
(q
0
, b) = q
1
(q
1
, a) = q
1
(q
1
, b) = q
2
(q
2
, a) = q
1
(q
2
, b) = q
1
.
Ilustracion del procesamiento de dos cadenas de entrada:
1. u = aabab.
Captulo 2 Automatas nitos 21
Como q
2
es un estado de aceptacion, la cadena de entrada u es aceptada.
2. v = aababa.
Puesto que q
1
no es un estado de aceptacion, la cadena de entrada v es rechazada.
Caso especial: la cadena es la cadena de entrada.
Como q
0
es un estado de aceptacion, la cadena es aceptada.
En general se tiene lo siguiente: la cadena vaca es aceptada por un automata
M si y solamente si el estado inicial q
0
de M tambien es un estado de aceptacion.
Los automatas nitos descritos anteriormente se denominan automatas ni-
tos deterministas (AFD) ya que para cada estado q y para cada smbolo a ,
la funcion de transicion (q, a) siempre esta denida. Es decir, la funcion de tran-
sicion determina completa y unvocamente la accion que el automata realiza
cuando la unidad de control se encuentra en un estado q leyendo un smbolo a
sobre la cinta:
Dado un automata M, el lenguaje aceptado o reconocido por M se denota
L(M) y se dene por
L(M) := {u
= {, a, a
2
, a
3
, . . .}. AFD M tal que L(M) = L:
Version simplicada:
ab
ab
ab
a.
Captulo 2 Automatas nitos 25
5. = {0, 1}. L = (0 10)
.
6. = {0, 1}. L = (01 10)
.
7. = {0, 1}. Lenguaje de todas las cadenas que no contienen dos unos con-
secutivos.
8. = {a, b}. L = lenguaje de las cadenas sobre que contienen un n umero
par de aes y un n umero par de bes. Ayuda: utilizar 4 estados.
9. = {a, b}. Para cada combinacion de las condiciones par e impar y de
las conectivas o e y, dise nar un AFD que acepte el lenguaje L donde:
L = lenguaje de las cadenas con un n umero par/impar de aes
y/o un n umero par/impar de bes.
Ayuda: utilizar el automata de 4 estados dise nado en el ejercicio anterior,
modicando adecuadamente el conjunto de estados nales.
Ejercicios
Determinar los lenguajes aceptados por los siguientes AFD. Descri-
bir los lenguajes ya sea por medio de una propiedad caracterstica
o de una expresion regular.
1.
2.
3.
26 Teora de la Computacion Profesor: Rodrigo De Castro
4.
2.4. Automatas nitos no deterministas (AFN)
Los automatas nitos no-deterministas (AFN) se asemejan a los AFD, ex-
cepto por el hecho de que para cada estado q Q y cada a , la transicion
(q, a) puede consistir en mas de un estado o puede no estar denida. Concreta-
mente, un AFN esta denido por M = (, Q, q
0
, F, ) donde:
1. es el alfabeto de cinta.
2. Q es un conjunto (nito) de estados.
3. q
0
Q es el estado inicial.
4. = F Q es el conjunto de estados nales o estados de aceptacion.
5.
: Q
(Q)
(q, a) (q, a) = {q
i
1
, q
i
2
, . . . , q
i
k
}
donde
de varias maneras.
Sobre el diagrama de estados del automata, esto signica que pueden existir varias
trayectorias etiquetadas con los smbolos de u.
La siguiente es la nocion de aceptacion para automatas no deterministas:
L(M) = lenguaje aceptado o reconocido por M
= {u
b.
Ejemplo
Considerese el lenguaje L = ab
a
+
sobre el alfabeto = {a, b}. El
siguiente AFN M satisface L(M) = L.
Ejercicios
Dise nar automatas AFD o AFN que acepten los siguientes lengua-
jes:
1. = {a, b}. L = ab
+
a
.
2. = {a, b}. L = a(a ab)
.
3. = {a, b, c}. L = a
.
30 Teora de la Computacion Profesor: Rodrigo De Castro
4. = {0, 1, 2}. L = lenguaje de las cadenas sobre que comienzan con 0 y
terminan con 2.
5. = {0, 1}. Lenguaje de las cadenas de longitud par 2 formadas por ceros
y unos alternados.
6. = {0, 1}. Lenguaje de las cadenas que tienen a lo sumo dos ceros conse-
cutivos.
7. = {0, 1}. Lenguaje de las cadenas de longitud impar que tienen unos en
todas las posiciones impares y unicamente en las posiciones impares.
8. = {a, b, c}. L = lenguaje de las cadenas sobre que contienen la cadena
bc.
9. = {a, b, c}. L = lenguaje de las cadenas sobre que no contienen la
cadena bc. En el ultimo ejemplo de la seccion 1.14 se presentaron dos ex-
presiones regulares para L. Nota: se puede construir un AFD con solo dos
estados para aceptar este lenguaje!
2.5. Equivalencia computacional entre los AFD
y los AFN
En esta seccion se mostrara que los modelos AFD y AFN son computacionalmente
equivalentes. En primer lugar, es facil ver que un AFD M = (, Q, q
0
, F, ) puede
ser considerado como un AFN M
= (, Q, q
0
, F, ) deniendo (q, a) = {(q, a)}
para cada q Q y cada a . Para la armacion recproca tenemos el siguiente
teorema.
2.5.1 Teorema. Dado un AFN M = (, Q, q
0
, F, ) se puede construir un AFD
M
).
Este teorema, cuya demostracion se dara en detalle mas adelante, establece
que el no-determinismo se puede eliminar. Dicho de otra manera, los automatas
deterministas y los no deterministas aceptan los mismos lenguajes. La idea de la
demostracion consiste en considerar cada conjunto de estados {p
1
, . . . , p
j
}, que
aparezca en la tabla de la funcion del automata no-determinista, como un
unico estado del nuevo automata determinista. La tabla de se completa hasta
que no aparezcan nuevas combinaciones de estados. Los estados de aceptacion
del nuevo automata son los conjuntos de estados en los que aparece por lo menos
un estado de aceptacion del automata original. El siguiente ejemplo ilustra el
procedimiento.
Captulo 2 Automatas nitos 31
Ejemplo
Consideremos el AFN M, presentado en la seccion 2.4, que acepta
el lenguaje L(M) = ab
a
+
sobre = {a, b}:
a b
q
0
{q
1
, q
2
}
q
1
{q
1
}
q
2
{q
2
}
El nuevo AFD M
Q por medio de la
siguiente denicion recursiva:
(q, ) = q, q Q,
(q, wa) = (
.
Seg un esta denicion, para una cadena de entrada w
,
(q
0
, w) es el estado
en el que el automata termina el procesamiento de w. Por lo tanto, podemos
describir el lenguaje aceptado por M de la siguiente forma:
L(M) = {w
(q
0
, w) F}.
Notacion. Sin peligro de ambig uedad, la funcion extendida
qS
(q, a).
Luego se extiende a una funcion
: Q
(q, ) = {q}, q Q,
(q, wa) = (
(q, w), a) =
(q,w)
(p, a), q Q, a , w
.
Captulo 2 Automatas nitos 35
Seg un esta denicion, para una cadena de entrada w
,
(q
0
, w) es el conjunto
de los posibles estados en los que terminan los computos completos de w. Si el
computo se aborta durante el procesamiento de w, se tendra
(q
0
, w) = .
Usando la funcion extendida
, el lenguaje aceptado por M se puede describir
de la siguiente forma:
L(M) = {w
:
(q
0
, w) contiene un estado de aceptacion}.
Notacion. Sin peligro de ambig uedad, la funcion extendida
(q, w) se notara sim-
plemente (q, w).
Demostracion del Teorema 2.5.1:
Dado el AFN M = (, Q, q
0
, F, ), construimos el AFD M
as:
M
= (,
(Q), {q
0
}, F
, )
donde
:
(Q)
(Q)
(S, a) (S, a) := (S, a).
F
= {S
,
({q
0
}, w) = (q
0
, w). Esta igualdad se demostrara por induccion sobre w.
Para w = , claramente se tiene ({q
0
}, ) = (q
0
, ) = {q
0
}.
Para w = a, a , se tiene
({q
0
}, a) = ({q
0
}, a) = (q
0
, a).
Supongase (hipotesis de induccion) que ({q
0
}, w) = (q
0
, w), y que a .
({q
0
}, wa) = (({q
0
}, w), a) (denicion de la extension de )
= (({q
0
}, w), a) (hipotesis de induccion)
= (({q
0
}, w), a) (denicion de )
= ({q
0
}, wa) (denicion de la extension de )
= (q
0
, wa) (denicion de la extension de )
Esto demuestra el teorema.
36 Teora de la Computacion Profesor: Rodrigo De Castro
2.6. Automatas con transiciones (AFN-)
Un automata nito con transiciones (AFN-) es un automata no-determinista
M = (, Q, q
0
, F, ) en el que la funcion de transicion esta denida como:
: Q( {})
(Q).
La transicion (q, ) = {p
i
1
, . . . , p
in
}, llamada transicion o transicion nula,
tiene el siguiente signicado computacional: estando en el estado q, el automata
puede cambiar a uno cualquiera de los estados p
i
1
, . . . , p
in
, independientemente
del smbolo ledo y sin mover la unidad de control. Dicho de otra manera, las
transiciones permiten al automata cambiar internamente de estado sin procesar
o consumir el smbolo ledo sobre la cinta.
En el diagrama de estados, las transiciones dan lugar a arcos con etiquetas
. Una cadena de entrada w es aceptada por un AFN- si existe por lo menos
una trayectoria cuyas etiquetas son exactamente los smbolos de w, intercalados
con cero, uno o mas s.
El modelo AFN-, al igual que el AFN, permite m ultiples computos para una
misma cadena de entrada, as como computos abortados. Pero, a diferencia de
los AFD y los AFN, en los AFN- pueden existir computos innitos, es decir
computos que nunca terminan.
Ejemplo M:
Ejemplos de cadenas aceptadas por M:
u = aab
v = abaa
w = abbaa
Computos de aceptacion de u = aab y v = abaa:
Captulo 2 Automatas nitos 37
Los AFN- permiten a un mas libertad en el dise no de automatas, especialmente
cuando hay numerosas concatenaciones.
Ejemplo
= {a, b}. L = lenguaje de todas las cadenas sobre que tienen un
n umero par de aes o un n umero par de bes.
AFD que acepta el lenguaje de las cadenas con un n umero par de aes:
38 Teora de la Computacion Profesor: Rodrigo De Castro
AFD que acepta el lenguaje de las cadenas con un n umero par de bes:
AFN- que acepta el lenguaje de las cadenas con un n umero par de aes o un
n umero par de bes:
Ejercicios Dise nar AFN- que acepten los siguientes lenguajes:
1. (ab b)
ab
b
+
, sobre = {a, b, c}.
3. ab
ba
b(ab ba)
ba
b(ab ba)
(01 10)
(01 10)
1
+
, sobre = {0, 1}.
7. = {a, b}. L = lenguaje de todas las cadenas sobre que tienen un n umero
par de aes y un n umero par de bes.
Captulo 2 Automatas nitos 39
2.7. Equivalencia computacional entre los
AFN- y los AFN
En esta seccion se mostrara que el modelo AFN- es computacionalmente equi-
valente al modelo AFN. O dicho mas gracamente, las transiciones se pueden
eliminar, a nadiendo transiciones que las simulen, sin alterar el lenguaje aceptado.
En primer lugar, un AFN M = (, Q, q
0
, F, ) puede ser considerado como
un AFN- en el que, simplemente, hay cero transiciones . Para la armacion
recproca tenemos el siguiente teorema:
2.7.1 Teorema. Dado un AFN- M = (, Q, q
0
, F, ), se puede construir un
AFN M
).
Bosquejo de la demostracion. Para construir M
a partir de M se requiere la
nocion de -clausura de un estado. Para un estado q Q, la -clausura de q,
notada [q], es el conjunto de estados de M a los que se puede llegar desde q por
0, 1 o mas transiciones . Notese que, en general, [q] = (q, ). Por denicion,
q [q]. La -clausura de un conjunto de estados {q
1
, . . . , q
k
} se dene por:
[{q
1
, . . . , q
k
}] := [q
1
] [q
k
].
Adem as, [] := . Sea M
= (, Q, q
0
, F
) donde
: Q
(Q)
(q, a)
(q, a) :=
([q], a)
.
M
se dene como:
F
a partir de M es puramente
algortmica.
Ejemplo
Vamos a ilustrar el anterior algoritmo con el AFN- M, presentado
en el segundo ejemplo de la seccion 2.6.
40 Teora de la Computacion Profesor: Rodrigo De Castro
L(M) = a
: Q{a, b, c}
({q
0
, q
1
, q
2
}) es:
(q
0
, a) = [([q
0
], a)] = [({q
0
, q
1
, q
2
}, a)] = [{q
0
}] = {q
0
, q
1
, q
2
}.
(q
0
, b) = [([q
0
], b)] = [({q
0
, q
1
, q
2
}, b)] = [{q
1
}] = {q
1
, q
2
}.
(q
0
, c) = [([q
0
], c)] = [({q
0
, q
1
, q
2
}, c)] = [{q
2
}] = {q
2
}.
(q
1
, a) = [([q
1
], a)] = [({q
1
, q
2
}, a)] = [] = .
(q
1
, b) = [([q
1
], b)] = [({q
1
, q
2
}, b)] = [{q
1
}] = {q
1
, q
2
}.
(q
1
, c) = [([q
1
], c)] = [({q
1
, q
2
}, c)] = [{q
2
}] = {q
2
}.
(q
2
, a) = [([q
2
], a)] = [({q
2
}, a)] = [] = .
(q
2
, b) = [([q
2
], b)] = [({q
2
}, b)] = [] = .
(q
2
, c) = [([q
2
], c)] = [({q
2
}, c)] = [{q
2
}] = {q
2
}.
El automata M
as obtenido es el siguiente:
Ejercicios Construir AFN equivalentes a los siguientes AFN-:
1.
Captulo 2 Automatas nitos 41
2.
2.8. Teorema de Kleene. Parte I
En las secciones anteriores se ha mostrado la equivalencia computacional de los
modelos AFD, AFN y AFN-, lo cual puede ser descrito en la forma:
AFD AFN AFN-
Esto quiere decir que para cada automata de uno de estos tres modelos se pueden
construir automatas equivalentes en los otros modelos. Por lo tanto, los modelos
AFD, AFN y AFN- aceptan exactamente los mismos lenguajes. El teorema de
Kleene establece que tales lenguajes son precisamente los lenguajes regulares.
2.8.1. Teorema de Kleene. Un lenguaje es regular si y solo si es aceptado por
un aut omata nito (AFD o AFN o AFN-).
Para demostrar el teorema consideraremos las dos direcciones por separado. Pri-
mero demostraremos que para un lenguaje regular L dado existe un AFN- tal
que L(M) = L. En la seccion 2.11 demostraremos que, a partir de un AFD
M, se puede encontrar una expresion regular R tal que L(M) = R. En ambas
direcciones las demostraciones son constructivas.
Las construcciones de este captulo se pueden presentar as:
42 Teora de la Computacion Profesor: Rodrigo De Castro
Parte I. Dada una expresion regular R sobre un alfabeto , se puede construir
un AFN- M tal que el lenguaje aceptado por M sea exactamente el lenguaje
representado por R.
Expresion regular R
Procedimiento
algortmico
M
AFN- tal que L(M) = R.
Demostracion: Puesto que la denicion de las expresiones regulares se hace re-
cursivamente, la demostracion se lleva a cabo razonando por induccion sobre R.
Para las expresiones regulares basicas, podemos construir facilmente automatas
que acepten los lenguajes representados. As, el automata
acepta el lenguaje , es decir, el lenguaje representado por la expresion regular
R = .
El automata
acepta el lenguaje {}, es decir, el lenguaje representado por la expresion regular
R = .
El automata
acepta el lenguaje {a}, a , es decir, el lenguaje representado por la expresion
regular R = a.
Paso inductivo: supongase que para las expresiones regulares R y S existen
AFN- M
1
y M
2
tales que L(M
1
) = R y L(M
2
) = S. Esquematicamente vamos
a presentar los automatas M
1
y M
2
en la siguiente forma:
Captulo 2 Automatas nitos 43
Los estados nales o de aceptacion se dibujan a la derecha, pero cabe advertir
que el estado inicial puede ser tambien un estado de aceptacion. Obviando ese
detalle, podemos ahora obtener AFN- que acepten los lenguajes R S, RS y
R
.
Automata que acepta R S. Los automatas M
1
y M
2
se conectan en
paralelo y los estados nales del nuevo automata son los estados nales de
M
1
junto con los de M
2
:
Automata que acepta RS. Los automatas M
1
y M
2
se conectan en serie y
los estados nales del nuevo automata son unicamente los estados nales
de M
2
:
44 Teora de la Computacion Profesor: Rodrigo De Castro
Automata que acepta R
es:
Para simplicar las proximas construcciones utilizaremos, en su lugar, el automa-
ta:
Ejemplo
Vamos a utilizar el procedimiento del teorema para construir un
AFN- que acepte el lenguaje a
(ab ba)
a(b a
) sobre el
alfabeto {a, b}.
Captulo 2 Automatas nitos 45
Automata que acepta ab:
Automata que acepta ba:
Automata que acepta ab ba:
Automata que acepta (ab ba)
:
46 Teora de la Computacion Profesor: Rodrigo De Castro
Automata que acepta a
(ab ba)
:
Automata que acepta b a
:
Automata que acepta a(b a
):
Captulo 2 Automatas nitos 47
Automata que acepta a
(ab ba)
a(b a
):
Ejercicios
Dise nar automatas AFN- que acepte los siguientes lenguajes so-
bre = {a, b, c}:
1. a
(b ab
ab
a)c
(a b)(a ac)
.
2. c
a(a ba)
(abc)
(a cb
c).
3. (ac)
a(a ab
a) (abc)
(cba)
(c ab ba ca)
(ca cb)
.
2.10. Lema de Arden
Vamos a utilizar el siguiente resultado, conocido como lema de Arden, para
demostrar la segunda parte del teorema de Kleene.
2.10.1. Lema de Arden. Si A y B son lenguajes sobre un alfabeto y A,
entonces la ecuacion X = AX B tiene una unica solucion dada por X = A
B.
48 Teora de la Computacion Profesor: Rodrigo De Castro
Demostracion: Si X es una solucion de X = AXB, entonces B AXB = X.
Tambien se tiene AX X; a partir de esta contenencia y usando induccion sobre
n, se puede demostrar que A
n
X X para todo n N. Por lo tanto
A
n
B A
n
X X
para todo n N. As que
A
B =
n0
A
n
B =
n0
A
n
B X.
Esto muestra que toda solucion de X = AXB contiene a A
B y es facil vericar
que, de hecho, A
B es una solucion:
A(A
B) B = A
+
B B = (A
+
)B = A
B.
Para la unicidad, demostraremos que si A
B C, con C A
B = , es una
solucion de la ecuacion, entonces C = .
A
B C = A(A
B C) B
= A
+
B AC B
= (A
+
)B AC
= A
B AC.
Intersectando con C ambos lados de la anterior igualdad, se tiene:
(A
B C) C = (A
B C) (AC C),
C = AC C.
Por lo tanto, C AC. Si se tuviera C = , existira una cadena u C de
longitud mnima. Entonces u = vw, con v A, w C. Como A, v = ; por
consiguiente |w| < |u|. Esta contradiccion muestra que necesariamente C = ,
tal como se quera.
Ejemplo La ecuacion X = aX b
ab.
Ejemplo
La ecuacion X = a
2
X b
+
X ab se puede escribir en la forma
X = (a
2
b
+
)Xab. Por el lema de Arden la ecuacion tiene solucion
unica X = (a
2
b
+
)
ab.
Ejemplo
La ecuacion X = ab
2
X aX a
b b
b b
(a
b b
a).
Captulo 2 Automatas nitos 49
ab bX a
Ejercicio
Demostrar de si A, entonces Y es una solucion de la ecuacion
X = AX B si y solo si Y = A
(B D) para alg un D
.
2.11. Teorema de Kleene. Parte II
En esta seccion demostraremos que para todo AFN M = (, Q, q
0
, F, ) existe
una expresion regular R tal que L(M) = R.
Un automata tiene un unico estado inicial pero cambiando dicho estado surgen
nuevos automatas. Para cada q
i
Q, sea M
i
el automata que coincide con M
pero con estado inicial q
i
; mas precisamente, M
i
= (, Q, q
i
, F, ). Al lenguaje
aceptado por M
i
lo denotaremos A
i
; es decir, L(M
i
) = A
i
. En particular, A
0
=
L(M). Puesto que los estados de aceptacion no se han alterado, se tiene que
A
i
= {w
: (q
i
, w) F = }.
Cada A
i
se puede escribir como
(2.1) A
i
=
a
{aA
j
: q
j
(q
i
, a)}, si q
i
F,
a
{aA
j
: q
j
(q
i
, a)} . si q
i
F.
Si Q = {q
0
, q
1
, . . . , q
n
}, las igualdades de la forma (2.1) dan lugar a un sistema de
n + 1 ecuaciones con n + 1 incognitas (los A
i
):
A
0
= C
01
A
0
C
02
A
1
C
0n
A
n
()
A
1
= C
11
A
0
C
12
A
1
C
1n
A
n
()
.
.
.
.
.
.
.
.
.
A
n
= C
n1
A
0
C
n2
A
1
C
nn
A
n
()
donde cada coeciente C
ij
o es o es un smbolo de . El termino se a nade a
una ecuacion solamente si el estado correspondiente es un estado de aceptacion.
Utilizando sucesivas veces el lema de Arden, se puede mostrar que este sistema
de ecuaciones siempre se puede solucionar y su solucion es unica. En efecto,
50 Teora de la Computacion Profesor: Rodrigo De Castro
comenzando con la ultima ecuacion, se escribe A
n
en terminos de los demas
A
i
, para lo cual se usa el lema de Arden si es necesario. Este valor de A
n
se
reemplaza en las demas ecuaciones y el sistema se reduce a n ecuaciones con n
incognitas. Similarmente, A
n1
se escribe en terminos de los demas A
i
, usando el
lema de Arden si es necesario, y tal valor se reemplaza en las ecuaciones restantes.
Prosiguiendo de esta manera, el sistema original se reduce a una sola ecuacion
cuya incognita es precisamente A
0
. Esta ecuacion se soluciona recurriendo una
vez mas al lema de Arden. Puesto que los coecientes C
ij
diferentes de son
smbolos de , se obtiene una expresion regular R tal que L(M) = A
0
= R.
Ejercicio
Por que la anterior demostracion no es valida para automatas con
transiciones ?
2.12. Ejemplos de la parte II del Teorema de
Kleene
A continuacion ilustraremos el procedimiento de la seccion 2.11 para encontrar
L(M) a partir de un AFN M = (, Q, q
0
, F, ) dado.
Ejemplo Considerese el siguiente AFN M:
Por simple inspeccion sabemos que L(M) = (a b)
a
2
(a b)
, pero utilizaremos
el metodo descrito para encontrar explcitamente L(M).
El sistema de ecuaciones asociado con el automata M es:
(1) A
0
= aA
0
bA
0
aA
1
(2) A
1
= aA
2
(3) A
2
= aA
2
bA
2
.
La ecuacion (3) se puede escribir como
(4) A
2
= (a b)A
2
.
Aplicando el Lema de Arden en (4):
(5) A
2
= (a b)
= (a b)
.
Reemplazando (5) en (2):
Captulo 2 Automatas nitos 51
(6) A
1
= a(a b)
.
Reemplazando (6) en (1):
(7) A
0
= (a b)A
0
a
2
(a b)
.
Aplicando el Lema de Arden en (7) concluimos:
A
0
= (a b)
a
2
(a b)
Ejemplo
Encontrar una expresion regular para el lenguaje aceptado por el
siguiente AFN M:
El sistema de ecuaciones asociado con el automata M es:
(1) A
0
= aA
1
(2) A
1
= aA
2
(3) A
2
= bA
2
bA
3
(4) A
3
= aA
3
bA
4
(5) A
4
= aA
2
aA
3
Reemplazando (5) en (4):
(6) A
3
= aA
3
baA
2
baA
3
b = (a ba)A
3
baA
2
b.
Aplicando el Lema de Arden en (6):
(7) A
3
= (a ba)
(baA
2
b) = (a ba)
baA
2
(a ba)
b.
Reemplazando (7) en (3):
(8) A
2
= bA
2
b(a ba)
baA
2
b(a ba)
b .
El sistema original de cinco ecuaciones y cinco incognitas se reduce al sistema de
tres ecuaciones y tres incognitas formado por (1), (2) y (8).
La ecuacion (8) se puede escribir como
(9) A
2
=
b b(a ba)
ba
A
2
b(a ba)
.
Aplicando el Lema de Arden en (9):
52 Teora de la Computacion Profesor: Rodrigo De Castro
(10) A
2
= b b(a ba)
ba
b(a ba)
b .
Si se sustituye (10) en (2) y luego el valor de A
1
obtenido se sustituye en (1), se
obtiene nalmente:
A
0
= a
2
b b(a ba)
ba
b(a ba)
b
Ejemplo
Encontrar una expresion regular para el lenguaje L de todas las
cadenas sobre = {a, b} que tienen un n umero par de aes y un
n umero par de bes. El siguiente automata acepta el lenguaje L:
Este automata da lugar al siguiente sistema de ecuaciones:
(1) A
0
= aA
1
bA
2
(2) A
1
= aA
0
bA
3
(3) A
2
= aA
3
bA
0
(4) A
3
= aA
2
bA
1
Reemplazando (4) en (3):
(5) A
2
= a
2
A
2
abA
1
bA
0
.
Reemplazando (4) en (2):
(6) A
1
= aA
0
baA
2
b
2
A
1
.
El sistema original de cuatro ecuaciones y cuatro incognitas se reduce a un sistema
de tres ecuaciones y tres incognitas, a saber:
(1) A
0
= aA
1
bA
2
(6) A
1
= aA
0
baA
2
b
2
A
1
(5) A
2
= a
2
A
2
abA
1
bA
0
Aplicando el Lema de Arden en (5):
Captulo 2 Automatas nitos 53
(7) A
2
= (a
2
)
(abA
1
bA
0
) = (a
2
)
abA
1
(a
2
)
bA
0
.
Reemplazando (7) en (6):
(8) A
1
= aA
0
ba(a
2
)
abA
1
ba(a
2
)
bA
0
b
2
A
1
.
Reemplazando (7) en (1):
(9) A
0
= aA
1
b(a
2
)
abA
1
b(a
2
)
bA
0
.
El sistema se reduce ahora a dos ecuaciones:
(9) A
0
= aA
1
b(a
2
)
abA
1
b(a
2
)
bA
0
(8) A
1
= aA
0
ba(a
2
)
abA
1
ba(a
2
)
bA
0
b
2
A
1
=
ba(a
2
)
ab b
2
A
1
aA
0
ba(a
2
)
bA
0
.
Aplicando el Lema de Arden en (8):
A
1
=
ba(a
2
)
ab b
2
aA
0
ba(a
2
)
bA
0
ba(a
2
)
ab b
2
aA
0
ba(a
2
)ab b
2
ba(a
2
)
bA
0
.
(10)
Haciendo R =
ba(a
2
)
ab b
2
bA
0
.
Aplicando el Lema de Arden en (9):
A
0
=
b(a
2
)
aA
1
b(a
2
)
abA
1
b(a
2
)
aA
1
b(a
2
)
b(a
2
)
abA
1
b(a
2
)
.
(12)
Haciendo S =
b(a
2
)
abA
1
S.
Al sustituir (11) en (13), el sistema original se reduce a una sola ecuacion:
(14) A
0
= Sa
RaA
0
Rba(a
2
)
bA
0
Sb(a
2
)
ab
RaA
0
Rba(a
2
)
bA
0
S.
Agrupando los terminos en los que aparece A
0
y factorizando, se obtiene
(15) A
0
=
SaRa SaRba(a
2
)
b Sb(a
2
)
a
bRa Sb(a
2
)
abRba(a
2
)
A
0
S.
Aplicando Lema de Arden en (15):
(16) A
0
=
SaRa SaRba(a
2
)
b Sb(a
2
)
abRa Sb(a
2
)
abRba(a
2
)
S.
Si sustituimos R y S en (16) obtenemos una expresion regular para L.
54 Teora de la Computacion Profesor: Rodrigo De Castro
Ejercicios
Utilizando el lema de Arden, encontrar expresiones regulares para
los siguientes lenguajes sobre = {a, b}:
1. El lenguaje L de todas las cadenas que tienen un n umero par de aes y un
n umero impar de bes.
2. El lenguaje L de todas las cadenas que tienen un n umero par de aes o un
n umero impar de bes.
Ejercicios
Utilizando el lema de Arden, encontrar expresiones regulares para
los lenguajes aceptados por los siguientes AFN:
1.
2.
Captulo 2 Automatas nitos 55
3.
Captulo 3
Otras propiedades de los
lenguajes regulares
En los dos captulos anteriores hemos presentado las propiedades basicas de los
lenguajes regulares pero no hemos visto como se puede demostrar que un lenguaje
no es regular. El llamado lema de bombeo, expuesto en este captulo, sirve
para tal proposito. Tambien veremos que la regularidad es una propiedad que
se preserva por las operaciones booleanas usuales, por homomorsmos y por las
imagenes inversas de homomorsmos. Finalmente, analizaremos ciertos problemas
de decision referentes a automatas y a lenguajes regulares.
3.1. Lema de bombeo
El llamado lema de bombeo (pumping lemma, en ingles) es una propiedad de
los lenguajes regulares que es muy util para demostrar que ciertos lenguajes no
son regulares.
3.1.1. Lema de bombeo. Para todo lenguaje regular L (sobre un alfabeto dado
) existe una constante n N, llamada constante de bombeo para L, tal que toda
cadena w L, con |w| n, satisface la siguiente propiedad:
(B)
) de los lenguajes
regulares sobre un alfabeto es cerrada bajo todas las operaciones booleanas.
3.2.1 Teorema. Si L, L
1
y L
2
son lenguajes regulares sobre un alfabeto , tam-
bien lo son:
Captulo 3 Otras propiedades de los lenguajes regulares 60
(1) L
1
L
2
(union)
(2) L
1
L
2
(concatenacion)
(3) L
(estrella de Kleene)
(4) L
+
(clausura positiva)
(5) L =
L (complemento)
(6) L
1
L
2
(interseccion)
(7) L
1
L
2
(diferencia)
(8) L
1
L
2
(diferencia simetrica)
Demostracion:
(1), (2) y (3) se siguen de la denicion de los lenguajes regulares.
(4) Por (2), (3) y L
+
= L
L.
(5) Por el Teorema de Kleene y por los teoremas de equivalencia de los modelos
AFD, AFN y AFN-, existe un AFD M = (, Q, q
0
, F, ) tal que L(M) = L.
Para construir un AFD que acepte el complemento de L basta intercambiar
los estados nales con los no nales. Si M
es el automata (, Q, q
0
, QF, ),
entonces L(M
) = L.
(6) Se sigue de (1) y (5) teniendo en cuenta que L
1
L
2
= L
1
L
2
.
(7) Se sigue de (5) y (6) teniendo en cuenta que L
1
L
2
= L
1
L
2
.
(8) Puesto que
L
1
L
2
= (L
1
L
2
) (L
1
L
2
) = (L
1
L
2
) (L
2
L
1
)
el resultado se sigue de (1), (6), (7).
Recuerdese que un algebra booleana de conjuntos es una familia A
(X) cerrada bajo las operaciones de union, interseccion y complemento, tal que
A, X A.
3.2.2 Corolario. La coleccion R
son lenguajes
regulares sobre .
61 Teora de la Computacion Profesor: Rodrigo De Castro
Hemos visto que un lenguaje nito es regular y que la union nita de len-
guajes regulares es regular. Pero una union innita de lenguajes regulares
no necesariamente es regular; considerese, por ejemplo,
L = {a
n
b
n
: n 1} =
i1
{a
i
b
i
}.
Cada conjunto {a
i
b
i
} es regular (porque posee solo una cadena) pero L
no lo es.
Un sublenguaje (subconjunto) de un lenguaje regular no es necesaria-
mente regular, es decir, la familia de los lenguajes regulares no es cerra-
da para subconjuntos. Dicho de otra forma, un lenguaje regular puede
contener sublenguajes no-regulares. Por ejemplo, L = {a
n
b
n
: n 1} es
un sublenguaje del lenguaje regular a
L
tambien lo sera, pero a
L = {a
i
b
i
: i 0}.
Ejemplo
El lenguaje L = {wb
n
: w
pero
L a
= {a
n
b
n
: n 1}.
Ejercicios de la seccion 3.2
1. Demostrar que a
es regular, tambien lo es L.
(v) Si L es regular y N es un subconjunto nito de L, entonces L N es
regular.
Captulo 3 Otras propiedades de los lenguajes regulares 62
(vi) Un lenguaje regular L es innito si y solo si en cualquier expresion
regular de L aparece por lo menos una .
4. Utilizar las propiedades de clausura para concluir que los siguientes lengua-
jes no son regulares:
(i) L = {1
i
01
j
0 : i, j 1, i = j}, sobre = {0, 1}. Ayuda: utilizar el
ejercicio 1(v) de la seccion 3.1.
(ii) L = {uvu
R
: u, v {a, b}
+
}, sobre = {a, b}. Ayuda: utilizar el
ejercicio 1(ii) de la seccion 3.1.
(iii) L = {u : |u| es un cuadrado perfecto}, sobre = {a, b, c}. Ayuda:
utilizar el ultimo ejemplo de la seccion 3.1.
3.3. Propiedades de clausura para automatas
Las propiedades de clausura del teorema 3.2.1 se pueden enunciar como procedi-
mientos algortmicos para la construccion de automatas nitos.
3.3.1 Teorema. Sean M, M
1
y M
2
automatas nitos (ya sean AFD o AFN o
AFN-) y L(M) = L, L(M
1
) = L
1
, L(M
2
) = L
2
. Se pueden construir automatas
nitos que acepten los siguientes lenguajes:
(1) L
1
L
2
. (5) L =
L.
(2) L
1
L
2
. (6) L
1
L
2
.
(3) L
. (7) L
1
L
2
.
(4) L
+
. (8) L
1
L
2
.
Demostracion: La construccion de automatas para L
1
L
2
, L
1
L
2
, L
y L
+
se
presento en la demostracion de la parte I del Teorema de Kleene. En el numeral
(5) del teorema 3.2.1 se vio como se puede construir un AFD M
que acepte L a
partir de un AFD M que acepte L.
Los procedimientos de construccion de (1), (2), (3), (4) y (5) se pueden combi-
nar para obtener automatas que acepten los lenguajes L
1
L
2
, L
1
L
2
y L
1
L
2
.
Para dise nar un automata que acepte L
1
L
2
, seg un el argumento del teo-
rema 3.3.1, hay que usar la igualdad L
1
L
2
= L
1
L
2
y los procedimientos
para union, complemento, eliminacion de transiciones y eliminacion del no-
determinismo. El siguiente teorema muestra que existe una construccion mas
sencilla para el caso L
1
L
2
.
63 Teora de la Computacion Profesor: Rodrigo De Castro
3.3.2 Teorema. Sean M
1
= (, Q
1
, q
1
, F
1
,
1
) y M
2
= (, Q
2
, q
2
, F
2
,
2
) dos AFD.
Entonces el AFD
M = (, Q
1
Q
2
, (q
1
, q
2
), F
1
F
2
, )
donde
: (Q
1
Q
2
) Q
1
Q
2
((q
i
, q
j
), a) = (
1
(q
i
, a),
2
(q
j
, a))
satisface L(M) = L(M
1
) L(M
2
).
Demostracion: Sea w
y observando que:
w L(M) ((q
1
, q
2
), w) F
1
F
2
(
1
(q
1
, w),
2
(q
2
, w)) F
1
F
2
(q
1
, w) F
1
& (q
2
, w) F
2
w L(M
1
) & w L(M
2
)
w L(M
1
) L(M
2
).
Ejemplo
Utilizar el teorema teorema 3.3.2 para construir un AFD que acepte
el lenguaje L de todas las cadenas sobre = {a, b} que tienen un
n umero par de aes y un n umero par de bes.
AFD M
1
que acepta las cadenas con un n umero par de aes:
AFD M
2
que acepta las cadenas con un n umero par de bes:
Entonces L = L(M
1
)L(M
2
). El nuevo automata tiene 4 estados: (q
1
, q
2
), (q
1
, q
4
),
(q
3
, q
2
) y (q
3
, q
4
); el unico estado de aceptacion es (q
1
, q
2
). Su funcion de transicion
Captulo 3 Otras propiedades de los lenguajes regulares 64
es
((q
1
, q
2
), a) = (
1
(q
1
, a),
2
(q
2
, a)) = (q
3
, q
2
)
((q
1
, q
2
), b) = (
1
(q
1
, b),
2
(q
2
, b)) = (q
1
, q
4
)
((q
1
, q
4
), a) = (
1
(q
1
, a),
2
(q
4
, a)) = (q
3
, q
4
)
((q
1
, q
4
), b) = (
1
(q
1
, b),
2
(q
4
, b)) = (q
1
, q
2
)
((q
3
, q
2
), a) = (
1
(q
3
, a),
2
(q
2
, a)) = (q
1
, q
2
)
((q
3
, q
2
), b) = (
1
(q
3
, b),
2
(q
2
, b)) = (q
3
, q
4
)
((q
3
, q
4
), a) = (
1
(q
3
, a),
2
(q
4
, a)) = (q
1
, q
4
)
((q
3
, q
4
), b) = (
1
(q
3
, b),
2
(q
4
, b)) = (q
3
, q
2
)
El diagrama de estados del automata as obtenido es:
Ejercicios de la seccion 3.3
1. Utilizar el teorema 3.3.2 para construir AFD que acepten los siguientes
lenguajes sobre el alfabeto {a, b, c}:
(i) El lenguaje L de todas las cadenas que tienen longitud par y terminan
en a.
(ii) El lenguaje L de todas las cadenas de longitud par que tengan un
n umero impar de bes.
(iii) El lenguaje L de todas las cadenas de longitud impar que tengan un
n umero par de ces.
(iv) El lenguaje L de todas las cadenas de longitud impar que tengan
exactamente dos aes.
2. Utilizar el procedimiento del teorema 3.3.1 para construir un automata que
acepte el lenguaje L de todas las cadenas sobre = {a, b} que tienen
un n umero par de aes y un n umero par de bes. Comparese con el AFD
construido en el ultimo ejemplo de esta seccion.
65 Teora de la Computacion Profesor: Rodrigo De Castro
3.4. Homomorsmos
Un homomorsmo es una sustitucion h que reemplaza cada smbolo a de un
alfabeto de por una cadena h(a)
el homomorsmo
denido por h(a) = 0, h(b) = 1 y h(c) = 010. El homomorsmo h
convierte cadenas de
en cadenas de
) = 0
(010)
.
El siguiente teorema arma que los homomorsmos preservan lenguajes regu-
lares; dicho de otra manera, la imagen homomorfa de un lenguaje regular es un
lenguaje regular.
3.4.1 Teorema. Sea h :
un homomorsmo.
(1) Para cadenas u, v
y lenguajes A, B
se tiene
h(uv) = h(u)h(v),
h(A B) = h(A) h(B),
h(AB) = h(A)h(B),
h(A
) = [h(A)]
.
(2) Si L es un lenguaje regular sobre , entonces h(L) es un lenguaje regular
sobre .
Demostracion:
(1) Se sigue directamente de la denicion de homomorsmo; los detalles se dejan
al lector.
Captulo 3 Otras propiedades de los lenguajes regulares 66
(2) Por induccion sobre el n umero de operandos (uniones, concatenaciones y
estrellas) en la expresion regular que representa a L. La base de la induccion es
inmediata ya que h() = , para cada a , h(a) es una cadena determinada
en
y h() = .
La hipotesis de induccion arma que si L es regular tambien lo es h(L).
Para el paso inductivo se supone, en tres casos, que L = A B, L = AB
o L = A
y un lenguaje B
, la imagen inversa
de A por h es
h
1
(B) := {u
: h(u) B}.
67 Teora de la Computacion Profesor: Rodrigo De Castro
La regularidad es tambien preservada por imagenes inversas de homomorsmos,
tal como lo arma el siguiente teorema.
3.5.1 Teorema. Sea h :
un homomorsmo y B
un lenguaje
regular sobre . La imagen inversa h
1
(B) es un lenguaje regular sobre .
Demostracion: Comenzando con un AFD M = (, Q, q
0
, F, ) que acepte a B
podemos construir un AFD M
= (, Q, q
0
, F,
) que acepte h
1
(B). La funcion
de transicion
se dene mediante
(q
0
, w) = (q
0
, h(w)), para toda cadena w
coinciden, M
) h(w) L(M) = B w h
1
(B)
Esto quiere decir que L(M
) = h
1
(B).
Con la ayuda del teorema 3.5.1 y de las demas propiedades de clausura tambien
podemos concluir que ciertos lenguajes no son regulares.
Ejemplo
El lenguaje L = {0
n
10
n
: n 1} no es regular ya que si lo fuera,
tambien lo sera h
1
(L) donde h es el homomorsmo h(0) = h(1) =
0, h(2) = 1. Pero
h
1
(L) =
{0, 1}
n
2{0, 1}
n
: n 1
.
Entonces h
1
(L) 0
21
10
1.
2. L = {ww
R
: w
110
.
Captulo 3 Otras propiedades de los lenguajes regulares 68
3.6. Algoritmos de decision
Dada una propiedad P, referente a automatas sobre un alfabeto , un problema
de decision para P consiste en buscar un algoritmo
1
, aplicable a un automata
arbitrario M, que responda SI o NO a la pregunta: satisface M la propiedad P?
El siguiente diagrama ilustra la situacion.
Si existe un algoritmo de decision, se dice que el problema P es decidible o
resoluble; en caso contrario, el problema P es indecidible o irresoluble.
Es importante tener presente que, para que un problema P sea decidible, no
basta responder SI o NO a la pregunta satisface M la propiedad P? para uno o
varios automatas aislados M; es necesario exhibir un algoritmo aplicable a todos
los automatas. Es posible que en algunos casos concretos se pueda decidir arma-
tiva o negativamente sobre la satisfabilidad de una propiedad P y, sin embargo,
el problema P sea indecidible.
El primer problema de decision que consideraremos es el problema de decidir
si un automata acepta o no alguna cadena.
3.6.1 Teorema. Sea un alfabeto dado. Existe un algoritmo para el siguiente
problema de decision referente a automatas sobre :
Dado un automata (AFD o AFN o AFN-) M, Es L(M) = ? (es
decir, acepta M alguna cadena?).
Demostracion: Podemos dise nar un algoritmo sencillo para encontrar los estados
que son accesibles (o alcanzables) desde el estado inicial de M, es decir, los estados
para los cuales existen trayectorias desde el estado inicial. Si alg un estado de
aceptacion es alcanzable, se tendra L(M) = ; en caso contrario L(M) = . En
el siguiente recuadro aparece el algoritmo para encontrar el conjunto ALC de
estados alcanzables:
1
La nocion de algoritmo aqu considerada es la corriente: un algoritmo es un procedimiento
claro y preciso para efectuar una determinada operacion secuencialmente, en uno o mas pasos.
69 Teora de la Computacion Profesor: Rodrigo De Castro
INICIALIZAR:
ALC := {q
0
}, donde q
0
es el estado inicial de M.
REPETIR:
Para cada q ALC buscar los arcos que salen de q y
a nadir a ALC los estados p para los cuales haya un
arco de q a p con cualquier etiqueta (puede ser ).
HASTA:
No se a naden nuevos estados a ALC.
Claramente, el automata M acepta alguna cadena (o sea, L(M) = ) si y solo si
ALC contiene alg un estado de aceptacion.
3.6.2 Corolario. Sea un alfabeto dado. Existen algoritmos para los siguientes
problemas de decision referentes a automatas sobre :
(1) Dados dos automatas M
1
y M
2
(AFD o AFN o AFN-), L(M
1
) L(M
2
)?
(2) Dados dos automatas M
1
y M
2
(AFD o AFN o AFN-), L(M
1
) = L(M
2
)?
Demostracion:
(1) Sea L
1
= L(M
1
) y L
2
= L(M
2
). Se tiene
L
1
L
2
L
1
L
2
= .
Algoritmo: construir un AFD M
.
Hemos trabajado con problemas de decision referentes a automatas, pero tam-
bien podemos considerar problemas sobre lenguajes regulares. Dada una pro-
piedad P, referente a lenguajes regulares sobre un alfabeto , un problema de
decisi on para P consiste en buscar un algoritmo, aplicable a todo lenguaje regu-
lar L (es decir, a toda expresion regular R), que responda SI o NO a la pregunta:
satisface L la propiedad P? Puesto que conocemos algoritmos de conversion entre
la representacion por expresiones regulares y la representacion por automatas, los
problemas decidibles sobre automatas corresponden a problemas decidibles sobre
lenguajes regulares y viceversa. As por ejemplo, en razon del Corolario 3.6.4, el
siguiente problema es decidible: Dada una expresion regular R, es L(R) inni-
to?
Ejercicios de la seccion 3.6
1. Sea un alfabeto dado. Encontrar algoritmos para los siguientes problemas
de decision referentes a automatas sobre :
(i) Dado un automata M (AFD o AFN o AFN-), es L(M) =
?
(ii) Dado un automata M (AFD o AFN o AFN-), acepta M alguna
cadena de longitud 1250?
(iii) Dado un automata M (AFD o AFN o AFN-), acepta M alguna
cadena de longitud mayor que 1250?
(iv) Dado un automata M (AFD o AFN o AFN-), acepta M todas las
cadenas de longitud impar?
71 Teora de la Computacion Profesor: Rodrigo De Castro
(v) Dados dos automatas M
1
y M
2
(AFD o AFN o AFN-), existe alguna
cadena que no sea aceptada por ninguno de los automatas M
1
y M
2
?
(vi) Dado un automata M (AFD o AFN o AFN-), Es L(M) conito?
(Un conjunto es conito si su complemento es nito).
2. Encontrar algoritmos de decision, que no utilicen automatas, para resolver
los siguientes problemas:
(i) Dada una expresion regular R, es L(R) = ? Ayuda: puesto que las
expresiones regulares se denen recursivamente, el algoritmo requiere
descomponer la expresion R y utilizar criterios de vacuidad para la
union, la concatenacion y la estrella de Kleene.
(ii) Dada una expresion regular R, contiene L(R) por lo menos 150 ca-
denas?
Al considerar problemas de decision lo importante es la existencia o no
de algoritmos de decision, no la eciencia de los mismos.
En el Captulo 6 se mostrara que existen problemas indecidibles, es decir,
problemas para los cuales no hay algoritmos de decision.
Captulo 4
Lenguajes y gramaticas
independientes del contexto
Como se ha visto, los automatas son dispositivos que procesan cadenas de entrada. En
captulos posteriores consideraremos modelos de automatas con mayor poder computa-
cional que el de los modelos AFD-, AFN y AFD. En el presente captulo iniciaremos
el estudio de las gramaticas generativas, que son mecanismos para generar cadenas
a partir de un smbolo inicial (el estudio de gramaticas continuara en el Captulo 8).
Los automatas procesan cadenas
Las gramaticas generan cadenas
Las gramaticas generativas y, en particular, las gramaticas independientes del contex-
to (GIC), fueron introducidas por Noam Chomsky en 1956 como un modelo para la
descripcion de los lenguajes naturales (como el espa nol, el ingles, etc). En la decada
de los sesenta se comenzaron a usar GIC para presentar la sintaxis de lenguajes de
programacion y para el dise no de analizadores sintacticos en compiladores.
4.1. Gramaticas independientes del contexto
Una gramatica independiente del contexto (GIC), tambien llamada gramatica
contextual, es una cuadrupla, G = (V, , S, P) formada por:
1. Un alfabeto V cuyos elementos se llaman variables o smbolos no-terminales.
2. Un alfabeto cuyos elementos se llaman smbolos terminales. Se exige que
los alfabetos y V sean disyuntos.
3. Una variable especial S V , llamada smbolo inicial de la gramatica.
1
2 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4. Un conjunto nito P V (V )
= u
n
. La anterior sucesion de derivaciones
directas se representa como
u
1
u
2
u
3
u
n1
u
n
y se dice que es una derivacion o una generacion de u
n
a partir de u
1
. Para toda
cadena w se asume que w
= w; por lo tanto, u
= v signica que v se obtiene de
u utilizando cero, una o mas producciones de la gramatica. Analogamente, u
+
= v
signica que v se obtiene de u utilizando una o mas producciones.
El lenguaje generado por una gramatica G se denota por L(G) y se dene
como
L(G) := {w
: S
+
= w}.
Un lenguaje L sobre un alfabeto se dice que es un lenguaje independiente del
contexto (LIC) si existe una GIC G tal que L(G) = L. Dos GIC G
1
y G
2
son equi-
valentes si L(G
1
) = L(G
2
).
La denominacion independiente del contexto proviene del hecho de cada produc-
cion o regla de re-escritura A w se aplica a la variable A independientemente de los
caracteres que la rodean, es decir, independientemente del contexto en el que aparece
A.
Captulo 2 Lenguajes LIC y gramaticas GIC 3
.
De manera mas simple, podemos presentar una gramatica GIC listando sus pro-
ducciones y separando con el smbolo | las producciones de una misma variable. Se
supone siempre que las letras may usculas representan variables y las letras min uscu-
las representan smbolos terminales. As la gramatica del ejemplo anterior se presenta
simplemente como:
S aS | .
S aS | bA |
A bA | b |
Se tiene S . Todas las demas derivaciones en G comienzan ya sea con la produccion
S aS o con S bA. Por lo tanto, tenemos
S aS
= a aS a a.
S bA
= b bA b b.
S aS
= a aS a abA
= a ab bA a ab b.
Por consiguiente L(G) = a
.
Las siguientes gramaticas tambien generan el lenguaje a
S AB
A aA |
B bB |
S AB |
A aA | a |
B bB | b |
S aS | A
A bA |
4 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Ejemplo La gramatica
S aS | aA
A bA | b
genera el lenguaje a
+
b
+
. Otra gramatica equivalente es:
S AB
A aA | a
B bB | b
Ejemplo La gramatica
S 1A | 0
A 0A | 1A |
genera el lenguaje de los n umeros naturales en numeracion binaria. Notese que la unica
cadena que comienza con 0, generable con esta gramatica, es la cadena 0.
Ejemplo
Encontrar una GIC que genere el lenguaje 0
10
10
S A1A1A
A 0A |
Una gramatica equivalente es
S 0S | 1A
A 0A | 1B
B 0B |
Ejemplo
Encontrar una GIC que genere el lenguaje L = {a
i
b
i
: i 0} sobre
= {a, b}, el cual no es un lenguaje regular.
Soluci on:
S aSb | .
Ejemplo
Encontrar una GIC que genere el lenguaje de todos los palndromos sobre
= {a, b}, el cual no es lenguaje regular.
Soluci on:
S aSa | bSb | a | b | .
Ejemplo
Encontrar una GIC que genere el lenguaje de todas las cadenas sobre
= {a, b} que tienen un n umero par de smbolos.
Soluci on:
S aSa | bSb | aSb | bSa |
Captulo 2 Lenguajes LIC y gramaticas GIC 5
Dos gramaticas equivalentes son:
S AAS |
A a | b
Ejemplo
Encontrar una GIC que genere el lenguaje (ab ba)
sobre
= {a, b}.
Soluci on:
S abS | baS | .
b a.
6 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
(iv) a
b b
a.
(v) (ab
a)
.
(vi) {a
i
b
2i
: i 0}.
(vii) {ab
i
ab
i
: i 1}.
2. Encontrar GIC que generen los siguientes lenguajes sobre el alfabeto
{a, b, c, d}:
(i) {a
i
b
j
c
j
d
i
: i, j 1}.
(ii) {a
i
b
i
c
j
d
j
: i, j 1}.
(iii) {a
i
b
j
c
j
d
i
: i, j 1} {a
i
b
i
c
j
d
j
: i, j 1}.
3. Encontrar una GIC que genere el lenguaje {a
i
b
j
c
i+j
: i 0, j 1}, sobre {a, b, c}.
4. Sea = {0, 1}. Encontrar una GIC que genere el lenguaje de las cadenas que
tienen igual n umero de ceros que de unos.
5. Demostrar que la gramatica S SS | (S) | tambien genera el lenguaje de
todas las cadenas de parentesis anidados y equilibrados.
6. Encontrar una gramatica que genere el lenguaje de todas las cadenas de parentesis
circulares y/o angulares, anidados y equilibrados. Es decir cadenas como ([()]),
([])[()], [()([[()()]])], etc. Cadenas como ([)] o [([)]] tienen parentesis
equilibrados pero no anidados y, por lo tanto, no pertenecen a este lenguaje.
4.2.
Arbol de una derivacion
Un arbol con raz es un tipo muy particular de grafo no-dirigido; esta formado por
un conjunto de vertices o nodos conectados entre s por arcos o aristas, con la siguiente
propiedad: existe un nodo especial, llamado la raz del arbol, tal que hay una unica
trayectoria entre cualquier nodo y la raz. De esta manera, la raz se ramica en nodos,
llamados descendientes inmediatos, cada uno de los cuales puede tener, a su vez,
descendientes inmediatos, y as sucesivamente.
La propiedad que caracteriza a un arbol garantiza que un nodo puede tener 0, 1, o
mas descendientes inmediatos pero un unico antecesor inmediato. El unico nodo que
no tiene antecesores es la raz. Los nodos que tienen descendientes, excepto la raz,
se denominan nodos interiores. Los nodos que no tienen descendientes se llaman
hojas del arbol. En la terminologa usualmente utilizada, los descendientes de un nodo
tambien se denominan hijos y los antecesores padres o ancestros. El n umero de
vertices (y por lo tanto, el n umero de arcos) de un arbol puede ser innito.
Captulo 2 Lenguajes LIC y gramaticas GIC 7
,
el nodo A tiene k descendientes inmediatos: s
1
, s
2
,. . . , s
k
, escritos de izquierda a
derecha.
De esta forma, las hojas del arbol de derivacion de S
= w son precisamente los
smbolos de la cadena w, ledos de izquierda a derecha y, posiblemente, algunos .
La b usqueda de un arbol de derivacion para una cadena w
se denomina analisis
sintactico de w. Los arboles de derivacion tambien se suelen llamar arboles sintacticos
o arboles de analisis sintactico.
8 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
S AB | AaB
A aA | a
B bBa | b
El arbol de la derivacion
S AB AbBa abBa abba
es
El anterior es tambien el arbol de la derivacion
S AB aB abBa abba.
Esto muestra que dos derivaciones diferentes pueden tener el mismo arbol de derivacion
ya que en el arbol aparecen las producciones utilizadas pero no el orden en que han
sido aplicadas.
S BAa
A bBC | a
B bB | b |
C aB | aa
Captulo 2 Lenguajes LIC y gramaticas GIC 9
El arbol de la derivacion
S BAa bAa bbBCa bbbCa bbbaBa bbbaa
es
S aS | AaB
A aA | a
B bBbB | b
Encontrar una derivacion de la cadena aaaabbbb y hallar el arbol de tal derivacion.
2. Sea G la siguiente gramatica:
G :
S ABC | BaC | aB
A Aa | a
B BAB | bab
C cC |
Encontrar derivaciones de las cadenas w
1
= abab, w
2
= babacc, w
3
= ababababc y
hallar los arboles de tales derivaciones.
10 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.3. Gramaticas ambiguas
La nocion de ambig uedad se puede presentar en terminos de arboles sintacticos o en
terminos de ciertas derivaciones estandares: las llamadas derivaciones a izquierda.
4.3.1 Denicion. Una derivacion se llama derivacion a izquierda (o derivacion mas
a la izquierda) si en cada paso se aplica una produccion a la variable que esta mas a la
izquierda.
Una derivacion cualquiera se puede transformar siempre en una unica derivacion
a izquierda aplicando, en cada paso, producciones a la variable que este mas a la
izquierda.
4.3.2 Denicion. Una GIC G es ambigua si existe una cadena w
para la cual
hay dos derivaciones a izquierda diferentes. Equivalentemente, una GIC G es ambigua
si existe una cadena w
Ejemplo
Considerese el alfabeto =
0, 1, +, , (, )
. La siguiente gramatica G
sp
para generar n umeros naturales, sumas y productos, en numeracion bina-
ria, es ambigua:
S S +S | S S | (S) | 0S | 1S | 0 | 1
La cadena 1 + 1 0 tiene dos derivaciones a izquierda diferentes:
S S +S 1 +S 1 +S S 1 + 1 S 1 + 1 0.
S S S S +S S 1 +S S 1 + 1 S 1 + 1 0.
Los arboles de derivacion correspondientes a las anteriores derivaciones son:
En la gramatica G
sp
la ambig uedad se puede eliminar introduciendo parentesis:
S (S +S) | (S S) | (S) | 0S | 1S | 0 | 1
Captulo 2 Lenguajes LIC y gramaticas GIC 11
Aunque la introduccion de parentesis elimina la ambig uedad, las expresiones genera-
das tienen un excesivo n umero de parentesis lo que diculta el analisis sintactico (en
un compilador, por ejemplo). Lo mas corriente en estos casos es utilizar gramaticas
ambiguas como G
sp
siempre y cuando se establezca un orden de precedencia para los
operadores. Lo usual es establecer que tenga una mayor orden de precedencia que
+, es decir, por convencion act ua antes que +. Por ejemplo, la expresion 1 1 + 0
se interpreta como (1 1) + 0 y la expresion 10 + 11 110 + 1 se interpreta como
10 + (11 110) + 1.
S aSA |
A bA |
G es ambigua porque para la cadena aab hay dos derivaciones a izquierda diferentes.
S aSA aaSAA aaAA aaA aabA aab.
S aSA aaSAA aaAA aabAA aabA aab.
Los arboles de derivacion para estas dos derivaciones son:
El lenguaje generado por esta gramatica es a
+
b
S AB |
A aA | a
B bB |
12 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Para ver que la gramatica G
S AaSbB |
A aA | a
B bB |
G
2
:
S ASB | AB
A aA | a
B bB |
3. Encontrar una GIC no-ambigua que genere el lenguaje a
b(a b)
.
Captulo 2 Lenguajes LIC y gramaticas GIC 13
4.4. Gramaticas para lenguajes de
programacion
La sintaxis de los lenguajes de programacion, o al menos una gran porcion de esta,
se presenta usualmente por medio de gramaticas GIC. En tales casos se dice que el
lenguaje esta en la forma Backus-Naur o, simplemente, en la forma BNF. Los len-
guajes que estan en BNF ofrecen ventajas signicativas para el dise no de analizadores
sintacticos en compiladores.
Ejemplo
A continuacion se exhibe una gramatica para generar los n umeros reales
sin signo, similar a la utilizada en muchos lenguajes de programacion. Las
variables aparecen encerradas entre parentesis y real es la variable inicial de la
gramatica. El alfabeto de terminales es {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ., +, -, E}. En el contexto
de los lenguajes de programacion los terminales se denominan tambien componentes
lexicos, lexemas o tokens.
real dgitosdecimalexp
dgitos dgitosdgitos | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
decimal .dgitos |
exp Edgitos | E+dgitos | E-dgitos |
Esta gramatica genera expresiones como 47.236, 321.25E+35, 0.8E9 y 0.8E+9. Las
partes decimal y exponencial son opcionales debido a las producciones decimal
y exp , pero no se generan expresiones como .325, E125, 42.5E ni 0.1E+.
Ejemplo
Gramatica para generar los identicadores en lenguajes de programa-
cion, es decir, cadenas cuyo primer smbolo es una letra que va seguida de
letras y/o dgitos. Las variables aparecen encerradas entre parentesis e identicador
es la variable inicial de la gramatica. La variable lsds representa letras o dgitos.
Los terminales en esta gramatica son las letras, min usculas o may usculas, y los dgitos.
identicador letralsds
lsds letralsds | dgitolsds |
letra a | b | c| | x | y | z | A | B | C | | Y | Z
dgito 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Ejemplo La oracion
Juan mira a una persona con un telescopio
es ambigua. La ambig uedad surge porque las producciones permiten dos arboles de
derivacion:
16 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
A aB, a , B V.
A .
Los siguientes teoremas establecen la conexion entre los lenguajes regulares y las
gramaticas regulares.
4.6.2 Teorema. Dado un AFD M = (Q, , q
0
, F, ), existe una GIC regular G =
(V, , S, P) tal que L(M) = L(G).
Captulo 2 Lenguajes LIC y gramaticas GIC 17
Demostracion: Sea V = Q y S = q
0
. Las producciones de G estan dadas por
q ap si y solo si (q, a) = p.
q si y solo si q F.
Demostraremos primero que para toda w
. Entonces
p
, entonces
p ap
. Por lo tanto,
q
= wp wap
, w = y para
todo p, q Q se tiene
(2) Si q
= wp entonces (q, w) = p.
La demostracion de (2) se hace por induccion sobre la longitud de la derivacion q
=
wp, es decir, por el n umero de pasos o derivaciones directas que hay en q
= wp. Si
la derivacion tiene longitud 1, necesariamente q ap lo cual signica que (q, a) = p.
Para el paso inductivo, supongase que q
= wp tiene longitud n + 1, w = w
a y en el
ultimo paso se aplica la produccion p
ap. Entonces
q
= w
ap = wp.
Por hipotesis de induccion, (q, w
) = p
y por consiguiente
(q, w) = (q, w
a) = ((q, w
), a) = (p
, a) = p,
que era lo que se quera demostrar.
Como consecuencia de (1) y (2) se puede ahora demostrar que
(3) Para toda cadena w
, (q
0
, w) F si y solo si S
=
G
w,
lo cual arma que L(M) = L(G). En efecto, si w = , (q
0
, w) F si y solo si q
0
F.
Por lo tanto, q
0
es una produccion de G. As que S . Recprocamente, si
S
= , necesariamente S , q
0
F y (q
0
, ) F.
18 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Sea ahora w = . Si (q
0
, w) = p F, por (1) se tiene q
0
= w, o sea, S
= w.
Recprocamente, si S
=
G
w, entonces q
0
=
G
wp w donde p . Utilizando (2),
se tiene (q
0
, w) = p F.
Ejemplo
El siguiente AFD M, presentado en el ultimo ejemplo de la seccion 2.3,
acepta las cadenas que terminan en b:
M induce la gramatica regular
G :
q
0
aq
0
| bq
1
q
1
bq
1
| aq
0
|
que cumple L(M) = L(G). Las variables de G son q
0
y q
1
, siendo q
0
la variable inicial.
Ejemplo
Para el lenguaje regular 0
10
10
S A1A1A
A 0A |
Esta gramatica no es regular, pero por medio del AFD
y el Teorema 4.6.2 se puede obtener una GIC regular que genere 0
10
10
S 0S | 1A
A 0A | 1B
B 0B |
4.6.3 Teorema. Dada una GIC regular G = (V, , S, P), existe un AFN M = (Q, ,
q
0
, F, ) tal que L(M) = L(G).
Captulo 2 Lenguajes LIC y gramaticas GIC 19
Demostracion: Se construye M = (Q, , q
0
, F, ) haciendo Q = V , q
0
= S y
, w = ,
de donde L(M) = L(G). Los detalles se dejan como ejercicio.
4.6.4 Corolario.
1. Un lenguaje es regular si y solamente si es generado por una gramatica regular.
2. Todo lenguaje regular es un LIC (pero no viceversa).
Demostracion:
1. Se sigue del Teorema 4.6.2, el Teorema 4.6.3 y del Teorema de Kleene.
2. Se sigue de la parte 1. Por otro lado, {a
i
b
i
: i 0} es LIC pero no es regular.
4.6.5 Denicion. Una GIC se llama regular por la derecha si sus producciones
son de la forma
A wB, w
, B V,
A
4.6.6 Teorema. Las gramaticas regulares y las gramaticas regulares por la derecha
generan los mismos lenguajes, es decir, los lenguajes regulares. Dicho de otra manera,
la denicion de gramatica regular es equivalente a la denicion de gramatica regular
por la derecha.
Demostracion: Una gramatica regular es obviamente regular por la derecha. Recpro-
camente, en una gramatica regular por la derecha G = (V, , S, P), una producci on de
la forma
A a
1
a
2
a
n
B
donde los a
i
, n 2, B V , se puede simular con producciones de la forma
A aB y A . En efecto, se introducen n 1 variables nuevas A
1
, . . . , A
n1
cuyas
unicas producciones son:
A a
1
A
1
A
1
a
2
A
2
.
.
.
A
n1
a
n
B
20 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
De esta manera se puede construir una gramatica regular equivalente a G.
a.
(ii) (ab ba)
.
(iii) a
+
b b
+
a
b.
(iv) 0
(10
01
).
2. Una GIC se llama regular por la izquierda si sus producciones son de la forma:
A Bw, w
, B V
A
Demostrar que las gramaticas regulares y las gramaticas regulares por la izquierda
generan los mismos lenguajes.
3. Completar los detalles de la demostracion del Teorema 4.6.3.
4.7. Eliminacion de las variables in utiles
En una GIC puede haber dos tipos de variables in utiles: aquellas que nunca aparecen
en el curso de una derivacion y aquellas que no se pueden convertir en cadenas de
terminales. A continuacion se precisan estos conceptos.
4.7.1. Deniciones.
(i) Una variable A es alcanzable o accesible si existen u, v (V )
tales que
S
= uAv. La variable inicial S es alcanzable por denicion.
(ii) Una variable A es terminable si existe w
tal que A
= w. En particular,
si A es una produccion entonces A es terminable.
(iii) A es una variable in util si no es alcanzable o no es terminable.
Existen algoritmos para detectar todas las variables in utiles de una GIC que permiten
construir una gramatica G
.
TERM
i+1
:= TERM
i
A V : produccion A w, w ( TERM
i
)
.
Obtenemos una sucesion creciente de conjuntos de variables:
TERM
1
TERM
2
TERM
3
Como el conjunto de variables es nito, existe k tal que
TERM
k
= TERM
k+1
= TERM
k+2
=
El conjunto TERM de variables terminables es entonces
TERM :=
i1
TERM
i
El anterior algoritmo se puede presentar de la siguiente forma:
INICIALIZAR:
TERM:=
A V : produccion A w, w
REPETIR:
TERM:= TERM
A V : produccion A w, w ( TERM)
HASTA:
No se a naden nuevas variables a TERM
S ACD | bBd | ab
A aB | aA | C
B aDS | aB
C aCS | CB | CC
D bD | ba
E AB | aDb
Soluci on:
TERM
1
= {S, D}.
TERM
2
= {S, D} {B, E} = {S, D, B, E}.
TERM
3
= {S, D, B, E} {A} = {S, D, B, E, A}.
TERM
4
= {S, D, B, E, A} { } = {S, D, B, E, A}.
TERM = {S, A, B, D, E}.
Conjunto de variables no terminables: {C}.
22 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.7.3. Algoritmo para encontrar las variables alcanzables.
El siguiente algoritmo sirve para encontrar todas las variables alcanzables de una GIC.
ALC
1
:= {S}.
ALC
i+1
:= ALC
i
{A V : produc. B uAv, B ALC
i
u, v (V )
}.
Obtenemos una sucesion creciente de conjuntos de variables:
ALC
1
ALC
2
ALC
3
Como el conjunto de variables es nito, existe k tal que
ALC
k
= ALC
k+1
= ALC
k+2
=
El conjunto ALC de variables alcanzables es entonces
ALC =
i1
ALC
i
El anterior algoritmo se puede presentar de la siguiente forma:
INICIALIZAR:
ALC := {S}
REPETIR:
ALC := ALC
HASTA:
No se a naden nuevas variables a ALC
S aS | AaB | ACS
A aS | AaB | AC
B bB | DB | BB
C aDa | ABD | ab
D aD | DD | ab
E FF | aa
F aE | EF
Soluci on:
ALC
1
= {S}.
ALC
2
= {S} {A, B, C} = {S, A, B, C}.
ALC
3
= {S, A, B, C} {D} = {S, A, B, C, D}.
ALC
4
= {S, A, B, C, D} { } = {S, A, B, C, D}
ALC = {S, A, B, C, D}.
Captulo 2 Lenguajes LIC y gramaticas GIC 23
Conjunto de variables no alcanzables: {E, F}.
Dada una GIC G, los dos algoritmos anteriores (algoritmo 4.7.2 y algoritmo algo-
ritmo 4.7.3) se pueden llevar a cabo en dos ordenes diferentes:
(I) G
Algoritmo
Eliminar variables
no-terminables
G
1
Algoritmo
Eliminar variables
no-alcanzables
G
2
(II) G
Algoritmo
Eliminar variables
no-alcanzables
G
3
Algoritmo
Eliminar variables
no-terminables
G
4
Esto da lugar a las siguientes preguntas:
(1) Es G
2
= G
4
?
(2) G
2
tiene variables in utiles?
(3) G
4
tiene variables in utiles?
El siguiente ejemplo muestra que la respuesta a la pregunta (1) es no y que al realizar
los algoritmos en el orden (II) pueden permanecer en G
4
algunas variables in utiles.
S a | AB
A aA |
Aplicacion de los algoritmos en el orden (I):
Variables terminables de G: TERM= {S, A}.
G
1
:
S a
A aA |
Variables alcanzables de G
1
: ALC= {S}.
G
2
:
S a
Se tiene que L(G
2
) = {a}.
Aplicacion de los algoritmos en el orden (II):
Variables alcanzables de G: ALC={S, A, B}.
G
3
:
S a | AB
A aA |
Variables terminables de G
3
: TERM={S, A}.
24 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
G
4
:
S a
A aA |
Se observa que en G
4
, A no es alcanzable. Ademas, G
2
= G
4
.
No obstante, si los algoritmos se llevan a cabo en el orden (I) la gramatica G
2
ya
no tiene variables in utiles. Nos podemos convencer de eso observando que las variables
alcanzables obtenidas al nalizar el procedimiento siguen siendo terminables. Mas pre-
cisamente, si una variable A permanece al nalizar el procedimiento completo, sera es
alcanzable, y si la derivacion A
= w, con w
S SBS | BC | Bb
A AA | aA
B aBCa | b
C aC | ACC | abb
D aAB | ab
E aS | bAA
F aDb | aF
Soluci on: Ejecutamos los algoritmos en el orden (I):
TERM
1
= {B, C, D}.
TERM
2
= {B, C, D} {S, F}.
TERM
3
= {B, C, D, S, F} {E} = {B, C, D, S, F, E}.
TERM
4
= {B, C, D, S, F, E} { }.
La unica variable no-terminable de G es A. Por lo tanto, G es equivalente a la siguiente
gramatica G
1
:
G
1
:
S SBS | BC | Bb
B aBCa | b
C aC | abb
D ab
E aS
F aDb | aF
Variables alcanzables de G
1
:
ALC
1
= {S}.
ALC
2
= {S} {B, C}.
ALC
3
= {S, B, C} { }.
Captulo 2 Lenguajes LIC y gramaticas GIC 25
Las variables D, E, F son no alcanzables. Por lo tanto, G es equivalente a la siguiente
gramatica G
2
, que no tiene variables in utiles.
G
2
:
S SBS | BC | Bb
B aBCa | b
C aC | abb
S SS | SBB | CCE
A aE | bE
B bB | Db
C aC | bB
D aDb | ab |
E aA | bB
2. Eliminar las variables in utiles de la siguiente gramatica:
G :
S EA | SaBb | aEb
A DaD | bD
B bB | Ab |
C aC | bBC
D aEb | ab
E aA | bB |
F Fb | Fa | a
4.8. Eliminacion de las producciones
4.8.1. Deniciones.
(i) Una produccion de la forma A se llama produccion .
(ii) Una variable A se llama anulable si A
= .
26 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.8.2. Algoritmo para encontrar las variables anulables.
ANUL
1
:= {A V : A es una produccion}.
ANUL
i+1
:= ANUL
i
A V : produccion A w, w (ANUL
i
)
.
Obtenemos una sucesion creciente de conjuntos de variables:
ANUL
1
ANUL
2
ANUL
3
Como el conjunto de variables es nito, existe k N tal que
ANUL
k
= ANUL
k+1
= ANUL
k+2
=
El conjunto ANUL de variables anulables es entonces
ANUL :=
i1
ANUL
i
El anterior algoritmo se puede presentar de la siguiente forma:
INICIALIZAR:
ANUL := {A V : A es una produccion}
REPETIR:
ANUL := ANUL
A V : prod. A w, w (ANUL)
HASTA:
No se a naden nuevas variables a ANUL
4.8.3 Teorema. Dada una GIC G, se puede construir una GIC G
equivalente a G
sin producciones , excepto (posiblemente) S .
Demostracion: Una vez que haya sido determinado el conjunto ANUL de variables
anulables, por medio del algoritmo 4.8.2, las producciones de se pueden eliminar
(excepto S ) a nadiendo nuevas producciones que simulen el efecto de las produc-
ciones eliminadas. Mas concretamente, por cada produccion A u de G se a naden
las producciones de la forma A v obtenidas suprimiendo de la cadena u una, dos
o mas variables anulables presentes, de todas las formas posibles. La gramatica G
S AB | ACA | ab
A aAa | B | CD
B bB | bA
C cC |
D aDc | CC | ABb
Captulo 2 Lenguajes LIC y gramaticas GIC 27
Soluci on: Primero encontramos las variables anulables de G por medio del algoritmo
4.8.2:
ANUL
1
= {C}.
ANUL
2
= {C} {D} = {C, D}.
ANUL
3
= {C, D} {A} = {C, D, A}.
ANUL
4
= {C, D, A} {S} = {C, D, A, S}.
ANUL
5
= {C, D, A, S} { } = {C, D, A, S}.
Al eliminar de G la producciones (la unica es C ) se obtiene la siguiente gramatica
equivalente a G:
G
S AB | ACA | ab | B | CA | AA | AC | A | C |
A aAa | B | CD | aa | C | D
B bB | bA | b
C cC | c
D aDc | CC | ABb | ac | C | Bb
S BCB
A aA | ab
B bBa | A | DC
C aCb | D | b
D aB |
2. Eliminar las producciones de la siguiente gramatica:
G :
S EA | SaBb | aEb
A DaD | bD | BEB
B bB | Ab |
D aEb | ab
E aA | bB |
28 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.9. Eliminacion de las producciones unitarias
4.9.1. Deniciones.
(i) Una produccion de la forma A B donde A y B son variables, se llama pro-
duccion unitaria.
(ii) El conjunto unitario de una variable A (tambien llamado conjunto cadena
de A) se dene de la siguiente manera:
UNIT(A) := {X V : una derivacion A
= X
que usa unicamente producciones unitarias}.
Por denicion, A UNIT(A).
4.9.2. Algoritmo para encontrar las producciones unitarias.
El siguiente algoritmo sirve para encontrar el conjunto unitario UNIT(A) de una
variable A.
UNIT
1
(A) := {A}.
UNIT
i+1
(A) := UNIT
i
(A) {X V : produccion Y X, Y UNIT
i
(A)}.
Para el conjunto de producciones unitarias se tiene que:
UNIT
1
(A) UNIT
2
(A) UNIT
3
(A)
Puesto que el conjunto de variables es nito, la anterior es una sucesion nita y se tiene
UNIT(A) =
i1
UNIT
i
(A)
El anterior algoritmo se puede representar de la siguiente forma:
INICIALIZAR:
UNIT(A):={A}
REPETIR:
UNIT(A):= UNIT(A)
HASTA:
No se a naden nuevas variables UNIT(A)
4.9.3 Teorema. Dada una GIC G, se puede construir una GIC G
equivalente a G
sin producciones unitarias.
Captulo 2 Lenguajes LIC y gramaticas GIC 29
Demostracion: Las producciones unitarias de G se pueden eliminar a nadiendo para
cada variable A de G las producciones (no unitarias) de las variables contenidas en el
conjunto unitario UNIT(A). La gramatica G
S AS | AA | BA |
A aA | a
B bB | bC | C
C aA | bA | B | ab
Soluci on: Aplicando el algoritmo para cada una de las variables de G, se tiene que:
UNIT
1
(S) = {S}.
UNIT
2
(S) = {S} { } = {S}.
UNIT
1
(A) = {A}.
UNIT
2
(A) = {A} { } = {A}.
UNIT
1
(B) = {B}.
UNIT
2
(B) = {B} {C} = {B, C}.
UNIT
3
(B) = {B, C} {B} = {B, C}.
UNIT
1
(C) = {C}.
UNIT
2
(C) = {C} {B} = {C, B}.
UNIT
3
(C) = {C, B} {C} = {C, B}.
Eliminando las producciones unitarias se obtiene una gramatica G
equivalente:
G
S AS | AA | BA |
A aA | a
B bB | bC | aA | bA | ab
C aA | bA | ab | bB | bC
S ACA | CA | AA | A | C |
A aAa | aa | B | C
B cC | D | C
C bC
D aA |
30 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Soluci on: Realizando el algoritmo para cada una de las variables de G se obtiene:
UNIT(S) = {S, A, C, B, D}.
UNIT(A) = {A, B, C, D}.
UNIT(B) = {B, C, D}.
UNIT(C) = {C}.
UNIT(D) = {D}.
Eliminando las producciones unitarias se obtiene una gramatica G
equivalente:
G
S ACA | CA | AA | | aAa | aa | bC | cC | aA
A aAa | aa | cC | bC | aA |
B cC | bC | aA |
C bC
D aA |
S Ba | A |
A Aa | a
B bB | S
2. Eliminar las producciones unitarias de la siguiente gramatica:
G :
S BBa | A | B | ab |
A Aa | B | D | aC
B bB | aA | b
C ABb | A | aB
D cC | c
3. Eliminar las producciones unitarias de la siguiente gramatica:
G :
S ACA | ab | B | CA | A | C |
A aAa | B | CD | aa | D
B bB | bA | b
C cC | c
D ABb | ac | C | Bb
Captulo 2 Lenguajes LIC y gramaticas GIC 31
4.10. Forma Normal de Chomsky (FNC)
Una GIC G esta en Forma Normal de Chomsky (FNC) si satisface:
1. G no tiene variables in utiles.
2. G no tiene producciones (excepto posiblemente S ).
3. Todas las producciones son de la forma: A a (producciones simples) o A BC
(producciones binarias).
En particular, una gramatica en FNC no tiene producciones unitarias.
4.10.1 Teorema (Procedimiento de conversion a FNC). Toda GIC G es equi-
valente a una gramatica en Forma Normal de Chomsky.
Demostracion: Podemos transformar G en una gramatica en FNC, equivalente a G,
ejecutando los algoritmos de las secciones anteriores en el siguiente orden:
1. Eliminar las variables no terminales.
2. Eliminar las variables no alcanzables.
3. Eliminar las producciones (excepto, posiblemente, S ).
4. Eliminar las producciones unitarias.
5. Las producciones resultantes (diferentes de S ) son de la forma: A a
o A w, donde |w| 2. Estas ultimas se pueden simular con producciones de
la forma A BC o A a. Se introduce primero, para cada a , una variable
nueva T
a
cuya unica produccion es T
a
a. A continuacion, se introducen nuevas
variables, con producciones binarias, para simular las producciones deseadas.
La parte 5 del procedimiento anterior se ilustra en los dos siguientes ejemplos.
A T
a
T
b
BT
a
C
T
a
a
T
b
b
32 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Ahora introducimos nuevas variables T
1
, T
2
, T
3
y las producciones binarias necesarias.
Las unicas producciones de estas nuevas variables son las mostradas:
A T
a
T
1
T
1
T
b
T
2
T
2
BT
3
T
3
T
a
C
T
a
a
T
b
b
A BAT
a
CT
b
T
b
T
a
a
T
b
b
Ahora introducimos nuevas variables T
1
, T
2
, T
3
, T
4
y las producciones binarias necesa-
rias. Las unicas producciones de estas nuevas variables son las mostradas:
A BT
1
T
1
AT
2
T
2
T
a
T
3
T
3
CT
4
T
4
T
b
T
b
T
a
a
T
b
b
En los siguientes ejemplos se ilustra el procedimiento completo para convertir una
gramatica dada a la Forma Normal de Chomsky (FNC).
S AB | aBC | SBS
A aA | C
B bbB | b
C cC |
Captulo 2 Lenguajes LIC y gramaticas GIC 33
Soluci on: El conjunto de variables terminables es
TERM = {B, C, S, A},
y el conjunto de variables alcanzables es
ALC = {S, A, B, C}.
Es decir, la gramatica no tiene variables in utiles. El conjunto de variables anulables es
ANUL = {C, A}.
Al eliminar las producciones de G (la unica es C ) se obtiene la gramatica
equivalente G
1
:
G
1
:
S AB | aBC | SBS | B | aB
A aA | C | a
B bbB | b
C cC | c
A continuacion encontramos los conjuntos unitarios de todas las variables:
UNIT(S) = {S, B}.
UNIT(A) = {A, C}.
UNIT(B) = {B}.
UNIT(C) = {C}.
Al eliminar las producciones unitarias obtenemos la gramatica equivalente G
2
:
G
2
:
S AB | T
a
BC | SBS | T
a
B | T
b
T
b
B | b
A T
a
A | a | T
c
C | c
B T
b
T
b
B | b
C T
c
C | c
T
a
a
T
b
b
T
c
c
34 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Finalmente, se introducen nuevas variables, con producciones binarias, para simular
las producciones de la forma A w, donde |w| 2:
G
4
:
S AB | T
a
T
1
| ST
2
| T
a
B | T
b
T
3
| b
A T
a
A | T
C
C | a | c
B T
b
T
3
| b
C T
c
C | c
T
1
BC
T
2
BS
T
3
T
b
B
T
a
a
T
b
b
T
c
c
S aS | aA | D
A aAa | aAD |
B aB | BC
C aBb | CC |
D aB | bA | aa | A
Soluci on: TERM = {A, C, D, S}. Eliminando la variable no-terminable B obtenemos:
G
1
:
S aS | aA | D
A aAa | aAD |
C CC |
D bA | aa | A
El conjunto de las variables alcanzables de G
1
es ALC = {S, A, D}. Eliminando la
variable no-alcanzable C obtenemos:
G
2
:
S aS | aA | D
A aAa | aAD |
D bA | aa | A
El conjunto de variables anulables de G
2
es ANUL = {A, D, S}. Eliminando las pro-
ducciones obtenemos:
G
3
:
S aS | aA | D | a |
A aAa | aAD | aa | aA | aD | a
D bA | aa | A | b
Captulo 2 Lenguajes LIC y gramaticas GIC 35
A continuacion encontramos los conjuntos unitarios de todas las variables:
UNIT(S) = {S, D, A}.
UNIT(A) = {A}.
UNIT(D) = {D, A}.
Al eliminar las producciones unitarias obtenemos la gramatica equivalente G
4
:
G
4
:
S aS | aA | a | | aAa | aAD | aa | aD | bA | b
A aAa | aAD | aa | aA | aD | a
D bA | aa | b | aAa | aAD | aa | aA | aD | a
Finalmente, simulamos las producciones de G
4
con producciones unitarias y binarias:
G
5
:
S T
a
S | T
a
A | T
a
T
1
| T
a
T
2
| T
a
T
a
| T
a
D | T
b
A | a | b |
A T
a
T
1
| T
a
T
2
| T
a
T
a
| T
a
A | T
a
D | a
D T
b
A | T
a
T
a
| b | T
a
T
1
| T
a
T
2
| T
a
T
a
| T
a
A | T
a
D | a
T
1
AT
a
T
2
AD
T
a
a
T
b
b
En algunas aplicaciones de la FNC es necesario exigir que la variable inicial S no
aparezca en el cuerpo de ninguna produccion. Si S aparece en el lado derecho de
alguna produccion se dice que S es recursiva ya que esto da lugar a derivaciones de
la forma S
+
= uSv, con u, v (V )
=
(V
, , S
, P
de G
no aparezca
en lado derecho de las producciones de G
.
Demostracion: La nueva gramatica G
,
que act ua como la nueva variable inicial. Es decir, V
= V {S
}. El conjunto de
producciones P
= P {S
) y el
smbolo inicial S
es
unicamente iniciar las derivaciones.
36 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Ejemplo
Encontrar una GIC G
no sea recursiva.
G :
S ASB | BB
A aA | a
B bBS |
Soluci on: Seg un se indico en la demostracion del Teorema 4.10.2, la gramatica pedida
G
es
G
S
S ASB | BB
A aA | a
B bBS |
Notese que S sigue siendo recursiva pero ya no es la variable inicial de la gramatica.
Ejemplo
Encontrar una GIC en FNC equivalente a la gramatica G del ejemplo
anterior, de tal manera que su variable inicial no sea recursiva.
Soluci on: Comenzamos transformando G en G
S |
S ASB | BB | AB | AS | A
A aA | a
B bBS | bS | bB | b
Los conjuntos unitarios son:
UNIT(S
) = {S
ASB | BB | AB | AS | aA | a |
S ASB | BB | AB | AS | aA | a
A aA | a
B bBS | bS | bB | b
Simulando las producciones de G
2
con producciones unitarias y binarias se obtiene:
Captulo 2 Lenguajes LIC y gramaticas GIC 37
G
3
:
AT
1
| BB | AB | AS | T
a
A | a |
S AT
1
| BB | AB | AS | T
a
A | a
A T
a
A | a
B T
b
T
2
| T
b
S | T
b
B | b
T
a
a
T
b
b
T
1
SB
T
2
BS
S ABC | BaC | aB
A Aa | a
B BAB | bab
C cC | c
2. Encontrar una gramatica en FNC equivalente a la siguiente GIC:
G :
S aASb | BAb
A Aa | a |
B BAB | bAb
C cCS |
3. Para la gramatica del ejercicio 2 anterior encontrar una GIC equivalente en FNC,
de tal manera que su variable inicial no sea recursiva.
4.11. Forma Normal de Greibach (FNG)
Una GIC esta en Forma Normal de Greibach (FNG) si
1. La variable inicial no es recursiva.
2. G no tiene variables in utiles.
3. G no tiene producciones (excepto posiblemente S ).
38 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4. Todas las producciones son de la forma: A a (producciones simples) o A
aB
1
B
2
. . . B
k
, donde las B
i
son variables.
Las derivaciones en una gramatica que este en FNG tienen dos caractersticas notables:
en cada paso aparece un unico terminal y, en segundo lugar, la derivacion de una cadena
de longitud n (n 1) tiene exactamente n pasos.
Existe un procedimiento algortmico para transformar una GIC dada en una gra-
matica equivalente en FNG. Para presentar el procedimiento necesitamos algunos re-
sultados preliminares.
4.11.1 Denicion. Una variable se llama recursiva a la izquierda si tiene una
produccion de la forma:
A Aw, w (V )
.
La recursividad a izquierda se puede eliminar, como se muestra en el siguiente teorema.
4.11.2 Teorema (Eliminacion de la recursividad a la izquierda). Las produc-
ciones de una variable A cualquiera se pueden dividir en dos clases:
A A
1
| A
2
| | A
n
A
1
|
2
| |
m
donde
i
,
i
(V )
y el primer smbolo de
i
es diferente de A. Sin alterar el
lenguaje generado, las anteriores producciones se pueden simular, reemplazandolas por
las siguientes:
A
1
|
2
| |
m
|
1
Z |
2
Z | |
m
Z
Z
1
|
2
| |
n
|
1
Z |
2
Z | |
n
Z
donde Z es una variable completamente nueva.
Demostracion: Se puede observar que, tanto con las producciones originales como
las nuevas, A genera el lenguaje
{
1
,
2
, . . . ,
m
} {
1
,
2
, . . . ,
n
}
4.11.3 Lema. En una GIC cualquiera, una produccion A uBv se puede reemplazar
(simular) por
A uw
1
v | uw
2
v | | uw
n
v
siendo B w
1
| w
2
| | w
n
todas las producciones de B.
Captulo 2 Lenguajes LIC y gramaticas GIC 39
Demostracion: Inmediato.
4.11.4 Teorema (Procedimiento de conversion a FNG). Toda GIC G es equi-
valente a una gramatica en Forma Normal de Greibach.
Demostracion: Suponemos que la gramatica dada esta en FNC. Esto simplica el pro-
cedimiento, aunque este es valido (con modicaciones menores) para una gramatica
arbitraria si se eliminan primero las variables in utiles, las producciones y las produc-
ciones unitarias. La conversion a FNG se realiza ejecutando los siguientes pasos:
1. Enumerar las variables en un orden arbitrario pero jo durante el procedimiento.
S debe ser la variable con orden 1.
2. Para cada variable A de la gramatica original, siguiendo el orden elegido, modi-
car sus producciones de tal manera que el primer smbolo del cuerpo de cada
produccion (primer smbolo a la derecha de la echa) sea un terminal o una varia-
ble con orden mayor que el de A. Para lograrlo se usa el teorema de eliminacion
de la recursividad a la izquierda, Teorema 4.11.2, y el Lema 4.11.3, todas las
veces que sea necesario.
3. Utilizar el Lema 4.11.3 para modicar las producciones de las variables origina-
les de tal manera que el primer smbolo del cuerpo de cada produccion sea un
terminal. Esto se hace siguiendo el orden inverso de enumeracion de las variables:
ultima, pen ultima, etc.
4. Utilizar de nuevo el Lema 4.11.3, para modicar las producciones de las variables
nuevas de tal manera que el primer smbolo del cuerpo de cada produccion sea
un terminal.
Ejemplo
Encontrar una gramatica en FNG equivalente a la siguiente gramatica
(que esta en FNC):
G :
S AA | a
A AA | b
Paso 1: Aqu solamente hay un orden posible para variables: S, A.
Paso 2: En este paso solo hay que eliminar la recursividad a izquierda de la variable
A. Al hacerlo se obtiene la gramatica:
S AA | a
A b | bZ
Z A | AZ
40 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Paso 3:
S bA | bZA | a
A b | bZ
Z A | AZ
Paso 4:
S bA | bZA | a
A b | bZ
Z b | bZ | bZZ
Ejemplo
Encontrar una gramatica en FNG equivalente a la siguiente gramatica
(que esta en FNC):
S AB | BC
A AB | a
B AA | CB | a
C a | b
Paso 1: Orden de las variables: S, B, A, C. Este orden es muy adecuado porque el
cuerpo de las producciones de B comienza con A o C, que son variables de orden
mayor.
S AB | BC
B AA | CB | a
A AB | a
C a | b
Paso 2:
S AB | BC
B AA | CB | a
A a | aZ
C a | b
Z B | BZ
Paso 3:
S AB
A AB | CB | a
B AB | b
C AC | c
Paso 1: Orden de las variables: S, A, B, C.
Paso 2:
S AB
A CB | a | CBZ
1
| aZ
1
B CBB | aB | CBZ
1
B | aZ
1
B | b
C CBC | aC | CBZ
1
C | aZ
1
C | c
Z
1
B | BZ
1
Prosiguiendo con el paso 2, se elimina la recursividad a izquierda de la variable
C:
S AB
A CB | a | CBZ
1
| aZ
1
B CBB | aB | CBZ
1
B | aZ
1
B | b
C aC | aZ
1
C | c | aCZ
2
| aZ
1
CZ
2
| cZ
2
Z
1
B | BZ
1
Z
2
BC | BZ
1
C | BCZ
2
| BZ
1
CZ
2
42 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Paso 3:
S 14 producciones
A a | aZ
1
| 6 producciones | 6 producciones
B aB | aZ
1
B | b | 6 producciones | 6 producciones
C aC | aZ
1
C | c | aCZ
2
| aZ
1
CZ
2
| cZ
2
Z
1
B | BZ
1
Z
2
BC | BZ
1
C | BCZ
2
| BZ
1
CZ
2
Paso 4: El n umero de producciones de la nueva gramatica se incrementa drasticamen-
te:
S 14 producciones
A a | aZ
1
| 6 producciones | 6 producciones
B aB | aZ
1
B | b | 6 producciones | 6 producciones
C aC | aZ
1
C | c | aCZ
2
| aZ
1
CZ
2
| cZ
2
Z
1
15 producciones | 15 producciones
Z
2
15 producciones | 15 producciones | 15 producciones |
15 producciones
La gramatica original tena 8 producciones; la nueva gramatica en FNG tiene un
total de 139 producciones.
S CA | AC | a
A BA | AB | b
B AA | a | b
C AC | CC | a
2. Encontrar una gramatica en FNG equivalente a la siguiente GIC:
S BB | BC | b
A AC | CA | a
B BB | a
C BC | CA | a
Captulo 2 Lenguajes LIC y gramaticas GIC 43
3. Encontrar una gramatica en FNG equivalente a la siguiente GIC:
S SC | AA | a
A CA | AB | a
B AC | b
C CA | AS | b
Nota: hay que eliminar primero la recursividad de la variable S.
4.12. Lema de bombeo para LIC
Una de las consecuencias mas importantes de la Forma Normal de Chomsky es el lema
de bombeo para lenguajes independientes del contexto, el cual es util, entre muchas
aplicaciones, para demostrar que ciertos lenguajes no son LIC.
Nos referiremos a gramaticas en FNC con variable inicial no recursiva. Puesto que las
producciones son unitarias (A a) o binarias (A BC), en cada nodo el arbol de una
derivacion se ramica en dos nodos, a lo sumo. Tales arboles se denominan binarios.
Si la produccion S esta presente, su unico proposito es generar la cadena .
4.12.1 Teorema. Sea G = (V, , S, P) una gramatica en FNC y w
. Si la longitud
de la trayectoria mas larga en un arbol de derivacion de S
= w tiene k (o menos)
nodos, entonces |w| 2
k2
. Aqu k 2.
Demostracion: La siguiente tabla muestra las relaciones obtenidas entre k = n umero
de nodos de la trayectoria mas larga de S
= w y la longitud de w, en los casos k = 2,
k = 3, k = 4 y k = 5. En la tabla se muestran los casos extremos, es decir, los arboles
con el mayor n umero posible de nodos. Se observa que |w| 2
k2
. Una demostracion
rigurosa del caso general se hace por induccion sobre k.
44 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.12.2 Corolario. Sea G = (V, , S, P) una gramatica en FNC y w
.
(1) Si la longitud de la trayectoria mas larga en un arbol de derivacion de S
= w
tiene k + 2 (o menos) nodos, entonces |w| 2
k
. Aqu k 0.
(2) Si |w| > 2
k
(con k 0) entonces la longitud de la trayectoria mas larga en un
arbol de derivacion de S
= w tiene mas de k + 2 nodos.
Demostracion:
(1) Se sigue inmediatamente del Teorema 4.12.1.
(2) Es la armacion contra-recproca de la parte (1).
Captulo 2 Lenguajes LIC y gramaticas GIC 45
4.12.3. Lema de bombeo para LIC. Dado un LIC L, existe una constante n (lla-
mada constante de bombeo de L) tal que toda z L con |z| > n se puede descomponer
en la forma z = uvwxy donde:
(1) |vwx| n.
(2) uv
i
wx
i
y L para todo i 0.
(3) v = o x = .
Demostracion: Sea G = (V, , S, P) una gramatica en FNC, con variable inicial no
recursiva, tal que L(G) = L. Tal gramatica existe por el Teorema 4.10.1 y el Teorema
4.10.2. Sea k = |V | = n umero de variables de G y n = 2
k
. Sea z L con |z| >
n = 2
k
. Por la parte (2) del Corolario 4.12.2, la trayectoria mas larga en el arbol de
una derivacion S
= z tiene mas de k + 2 nodos. Consideremos los ultimos k + 2
nodos de tal trayectoria (siguiendo el orden que va desde la raz S hasta las hojas del
arbol). El ultimo nodo de esa trayectoria es un terminal a y los restantes k + 1
nodos son variables. Como hay solo k variables en la gramatica, entonces hay por lo
menos una variable A = S repetida en la trayectoria. Por lo tanto, existen cadenas
u, v, w, x, y
tales que
S
= uAy, A
= vAx, A
= w.
As que
S
= uAy
= uvAxy
= uvwxy = z.
La siguiente graca ilustra la situacion:
46 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Puesto que la trayectoria mas larga en el arbol de derivacion de A
= vAx
= vwx
tiene k + 2 nodos o menos, por la parte (1) del Corolario Corolario 4.12.2, podemos
concluir que |vwx| 2
k
= n. Ademas:
S
= uAy
= uvAxy
= uv
i
Ax
i
y
= uv
i
wx
i
y, para todo i 0.
Observese que el caso i = 0 corresponde a la derivacion S
= uAy
= uwy.
Finalmente, la derivacion A
= vAx se puede escribir como
A BC
= vAx
utilizando una produccion de la forma A BC como primer paso. Se deduce que
u y x no pueden ser ambas porque se tendra BC
= A, lo cual es imposible en
una gramatica en FNC (recuerdese que la unica produccion en la gramatica es,
posiblemente, S ; pero S no aparece en el cuerpo de ninguna produccion de G ya
que S no es recursiva). Se deduce entonces que v = o x = . Esto demuestra las
propiedades (1), (2) y (3) del lema de bombeo.
Ejemplo
Demostrar que el lenguaje L = {a
i
b
i
c
i
: i 0} sobre = {a, b, c} no es
un LIC.
Soluci on: Argumento por contradiccion. Si L fuera LIC, por el lema de bombeo, existira
una constante de bombeo n. Sea z = a
n
b
n
c
n
; se tiene que z L y |z| > n. Por lo tanto,
z se puede descomponer como z = a
n
b
n
c
n
= uvwxy con las propiedades (1), (2) y (3)
del lema de bombeo. Puesto que |vwx| n, en la cadena vwx no pueden aparecer
los tres terminales a, b y c simultaneamente (para que aparezcan los tres terminales
simultaneamente, una subcadena de a
n
b
n
c
n
debe tener longitud n +2). Como v =
o x = , se distinguen dos casos:
Caso 1. Alguna de las cadenas v o x contiene dos tipos de terminales. Entonces
en uv
2
wx
2
y aparecen algunas bes seguidas de aes o algunas ces seguidas de bes.
En cualquier caso, uv
2
wx
2
y / L.
Caso 2. Las cadenas v y x contienen un solo tipo de terminal cada una (o solo
aes o solo bes o solo ces). Como en vwx no aparecen los tres terminales a, b y c
simultaneamente, en la cadena bombeada uv
2
wx
2
y se altera el n umero de dos de
los terminales a, b, c, a lo sumo, pero no de los tres. Por lo tanto, uv
2
wx
2
y / L.
Pero el lema de bombeo arma que uv
2
wx
2
y L. Esta contradiccion muestra que L
no es un LIC.
Ejemplo
Demostrar que el lenguaje L = {a
i
: i es primo} sobre = {a} no es un
LIC.
Soluci on: Argumento por contradiccion. Si L fuera LIC, por el lema de bombeo, existira
una constante de bombeo n. Sea z = a
m
con m primo m > n y m > 2 (m existe porque
Captulo 2 Lenguajes LIC y gramaticas GIC 47
el conjunto de los n umeros primos es innito). Entonces z L y |z| > n. Por lo tanto,
z se puede descomponer como z = a
m
= uvwxy con las propiedades (1), (2) y (3) del
lema de bombeo.
Sea |u| + |w| + |y| = k; entonces |v| + |x| = m k 1. Por el lema de bombeo,
uv
i
wx
i
y L para todo i 0; es decir, |uv
i
wx
i
y| es primo para todo i 0. Pero
|uv
i
wx
i
y| = k +|v
i
| +|x
i
| = k +i|v| +i|x| = k +i(|v| +|x|) = k +i(mk).
(i) Si k = 0, tomando i = m se obtiene que k +i(mk) = 0 +i(m0) = im = mm
que no es primo, pues m > 2.
(ii) Si k = 1, tomando i = 0 se obtiene que k+i(mk) = 1+i(m1) = 1+0(m1) =
1 que no es un n umero primo.
(iii) Si k > 1, tomando i = k se obtiene que
|uv
k
wx
k
y| = k +k(mk) = k(1 +mk),
el cual no es un n umero primo pues k > 1 y como mk 1, entonces 1+mk
2.
Por (i), (ii) y (iii) se puede escoger i de tal manera que |uv
i
wx
i
y| no sea un n umero
primo, lo cual contradice que uv
i
wx
i
y L para todo i 0. Esta contradiccion muestra
que L no es un LIC.
}.
7. L = {a
i
: i es un cuadrado perfecto}, sobre = {a}.
48 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.13. Propiedades de clausura de los LIC
En la seccion 3.2 se vio que los lenguajes regulares son cerrados bajo la concatenacion,
la estrella de Kleene y todas las operaciones booleanas. Los LIC poseen propiedades
de clausura mucho mas restringidas: son cerrados para las operaciones de union, con-
catenacion y estrella de Kleene Teorema 4.13.1 pero, en general, no son cerrados para
interseccion, complementos ni diferencias (Teorema 4.13.2).
4.13.1 Teorema. La coleccion de los lenguajes independientes del contexto es cerrada
para las operaciones de union, concatenacion y estrella de Kleene. Es decir, dadas GIC
G
1
= (V
1
, , S
1
, P
1
) y G = (V
2
, , S
2
, P
2
) tales que L(G
1
) = L
1
y L(G
1
) = L
2
, se
pueden construir GIC que generen los lenguajes L
1
L
2
, L
1
L
2
y L
1
, respectivamente.
Demostracion: Para construir una GIC G que genere L
1
L
2
introducimos una
variable nueva S, la variable inicial de G, junto con las producciones S S
1
y S S
2
.
Las producciones de G
1
y G
2
se mantienen. Concretamente,
G = (V
1
V
2
{S}, , S, P
1
P
2
{S S
1
, S S
2
})
Esquematicamente, G tiene el siguiente aspecto:
S S
1
| S
2
S
1
.
.
.
.
.
.
producciones de G
1
S
2
.
.
.
.
.
.
producciones de G
2
Claramente, L(G) = L
1
L
2
.
Una GIC G que genere L
1
L
2
se construye similarmente, a nadiendo la produccion
S S
1
S
2
. Es decir,
G = (V
1
V
2
{S}, , S, P
1
P
2
{S S
1
S
2
})
Esquematicamente, G es la gramatica:
S S
1
S
2
S
1
.
.
.
.
.
.
producciones de G
1
S
2
.
.
.
.
.
.
producciones de G
2
Captulo 2 Lenguajes LIC y gramaticas GIC 49
Claramente, L(G) = L
1
L
2
.
Para generar L
1
basta denir G como
G = (V
1
, , S
1
, P
1
{S
1
S
1
S
1
, S
1
})
Esquematicamente, G es la gramatica:
S
1
S
1
S
1
| |
.
.
.
.
.
.
1
.
Ejemplo
Utilizar las construcciones del Teorema 4.13.1 para encontrar una GIC que
genere el lenguaje L
1
L
2
donde L
1
= (ab ba)
y L
2
= {a
i
b
i
: i 0}.
Soluci on: El lenguaje L
1
se puede generar con la gramatica
S
1
S
1
S
1
| ab | ba |
y el lenguaje L
2
se puede generar con
S
2
S
2
S
2
| aS
2
b | .
Finalmente, el lenguaje L
1
L
2
se puede generar con
S
3
S
1
S
2
S
1
S
1
S
1
| ab | ba |
S
2
S
2
S
2
| aS
2
b | .
4.13.2 Teorema. La coleccion de los lenguajes independientes del contexto no es cerra-
da (en general) para las siguientes operaciones:
(1) Interseccion.
(2) Complemento.
(3) Diferencia.
Demostracion:
(1) La interseccion de dos LIC puede ser un lenguaje que no es LIC. Considerense,
como ejemplo, los lenguajes
L
1
= {a
i
b
i
c
j
: i, j 1},
L
2
= {a
i
b
j
c
j
: i, j 1}.
50 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Tanto L
1
como L
2
son LIC porque son generados por las gramaticas G
1
y G
2
,
respectivamente:
G
1
:
S AB
A aAb | ab
B cC | c
G
2
:
S AB
A aA | a
B bBc | bc
Pero L
1
L
2
= {a
i
b
i
c
i
: i 1} no es un LIC, seg un se mostro, usando el lema de
bombeo, en la seccion 4.12.
(2) Razonamos por contradiccion: si el complemento de todo LIC fuera un LIC se
podra concluir que la interseccion de dos LIC L
1
y L
2
sera un LIC ya que L
1
L
2
=
L
1
L
2
. Esto estara en contradiccion con la parte (1) del presente teorema.
(3) Razonamos por contradiccion: si la diferencia de dos LIC cualesquiera fuera un
LIC se podra concluir que el complemento de un LIC L sera tambien un LIC
ya que L =
, se
puede transformar en una derivacion S
+
= h(w) en G
).
Para establecer la otra contenencia, es decir, L(G
Ejemplo
Utilizar homomorsmos para concluir que el lenguaje L = {0
i
1
i
2
i
3
i
: i
0}, sobre el alfabeto {0, 1, 2, 3} no es LIC.
Soluci on: La idea es convertir L en el lenguaje {a
i
b
i
c
i
: i 0}, que no es LIC, seg un
se mostro en el primer ejemplo de la seccion 4.12. Razonamos de la siguiente manera: si
L fuera un LIC, lo sera tambien h(L), donde h es el homomorsmo h : {0, 1, 2, 3}
{a, b, c}
(b
b).
(ii) (L
1
L
2
)L
3
, donde L
1
= ab
a, L
2
= a b
+
y L
3
= aa bb aba.
(iii) L
1
L
2
L
3
, donde L
1
= ab
a, L
2
= b
+
y L
3
= {a
i
ba
i
: i 0}.
2. (i) Mostrar que los dos lenguajes siguientes, sobre = {a, b, c, d}, son LIC:
L
1
= {a
i
b
i
c
j
d
j
: i, j 1},
L
2
= {a
i
b
j
c
j
d
k
: i, j, k 1}.
(ii) Demostrar que L
1
L
2
no es un LIC.
3. Utilizar homomorsmos para concluir que los siguientes lenguajes sobre el alfa-
beto {0, 1} no son LIC:
(i) L = {u : |u| es un n umero primo}.
(ii) L = {u : |u| es un cuadrado perfecto}.
4. Demostrar que los LIC son cerrados para la operacion de reexion. Concretamen-
te, demostrar que si L es un LIC, tambien lo es el lenguaje L
R
= {w
R
: w L}.
4.14. Algoritmos de decision para GIC
En esta seccion consideraremos problemas de decision para GIC, similares a los pro-
blemas para automatas presentados en la seccion 3.6. Dada una propiedad P, referente
a gramaticas independientes del contexto, un problema de decision para P consiste en
buscar un algoritmo, aplicable a una GIC arbitraria G, que responda SI o NO a la
pregunta: satisface G la propiedad P? Los algoritmos vistos en el presente captu-
lo (para encontrar las variables terminables, las alcanzables, las anulables, etc) son
frecuentemente utiles en el dise no de algoritmos de decision mas complejos.
Problema 1 (Problema de la vacuidad). Dada una gramatica G = (V, , S, P),
es L(G) = ?
Algoritmo de decision: ejecutar el algoritmo para determinar el conjunto TERM de
variables terminables. L(G) = si y solo si S TERM.
52 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Problema 2 (Problema de la pertenencia). Dada una gramatica G = (V, , S, P)
y una cadena w
, se tiene w L(G)?
Para resolver este problema primero convertimos G a la forma FNC, con variable inicial
no recursiva, siguiendo el procedimiento de la seccion 4.10.
A partir de una GIC G en FNC podemos dise nar un algoritmo bastante ineciente
para decidir si w L(G): se encuentran todas las posibles derivaciones a izquierda (o los
arboles de derivacion) que generen cadenas de longitud n = |w|. Mas especcamente,
las cadenas de longitud 1 se pueden derivar unicamente con producciones de la forma
S a. Las cadenas de longitud 2 solo tienen arboles de derivacion de la forma:
en los que aparecen exactamente 3 variables. Para derivar cadenas de longitud 3 solo
se puede proceder de dos formas:
S A
1
A
2
B
1
B
1
A
2
3
= a
1
a
2
a
3
,
o
S A
1
A
2
a
1
A
2
a
1
B
1
B
2
2
= a
1
a
2
a
3
.
Los arboles de estas derivaciones son:
Cada uno de estos arboles tiene exactamente 5 nodos etiquetados con variables. La
situaci on general es la siguiente: un arbol de derivacion de una cadena de longitud n
tiene exactamente 2n 1 nodos etiquetados con variables. Puesto que la raz del arbol
es S y S no es recursiva, en un arbol de derivacion de una cadena de longitud n hay
Captulo 2 Lenguajes LIC y gramaticas GIC 53
exactamente 2n2 nodos interiores etiquetados con variables. La demostracion general
puede hacerse por induccion sobre n y la dejamos como ejercicio para el lector.
Por consiguiente, para determinar si una cadena dada de longitud n es o no genera-
da por G, consideramos todos los posibles arboles de derivacion con 2n 2 variables
interiores. Este algoritmo es ineciente porque si G tiene k variables, hay que chequear
no menos de k
2n2
arboles (esto sin contar las posibilidades para las hojas). Por consi-
guiente, el procedimiento tiene complejidad exponencial con respecto al tama no de la
entrada.
Para resolver el problema de la pertenencia hay un algoritmo muy eciente (su com-
plejidad es polinomial) en el que se usa la llamada programacion dinamica o tabulacion
dinamica, tecnica para llenar tablas progresivamente, re-utilizando informacion previa-
mente obtenida. El algoritmo que presentaremos se denomina algoritmo CYK (nombre
que corresponde a las iniciales de los investigadores Cocke, Younger y Kasami). El al-
goritmo (exhibido en la pagina siguiente) tiene como entrada una GIC G en FNC y
una cadena de n terminales w = a
1
a
2
a
n
; se aplica llenando una tabla de n las (una
por cada terminal de la entrada w) y n columnas. X
ij
es el conjunto de variables de
las que se puede derivar la subcadena de w cuyo primer smbolo esta en la posicion i
y cuya longitud es j. O sea,
X
ij
= conjunto de variables A tales que A
+
= a
i
a
i+1
a
i+j1
.
Al determinar los conjuntos X
ij
se obtienen las posibles maneras de derivar subcadenas
de w que permitan construir una derivacion de la cadena completa w. La tabla se llena
por columnas, de arriba hacia abajo; la primera columna (j = 1) corresponde a las
subcadenas de longitud 1, la segunda columna (j = 2) corresponde a las subcadenas
de longitud 2, y as sucesivamente. La ultima columna (j = n) corresponde a la unica
subcadena de longitud n que tiene w, que es la propia cadena w. Se tendra que w L(G)
si y solo si S X
1n
.
S BA | AC
A CC | b
B AB | a
C BA | a
y a la cadena w = bbab. Se trata de determinar si w L(G) o no. La tabla obtenida al
hallar los X
ij
, 1 i, j 4, es la siguiente:
54 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Algoritmo CYK
Entrada:
Gramatica G en FNC y cadena de n terminales w = a
1
a
2
a
n
.
Inicializar:
j = 1. Para cada i, 1 i n,
X
ij
= X
i1
:= conjunto de variables A tales que A a
i
es una produccion de G.
Repetir:
j := j + 1. Para cada i, 1 i n j + 1,
X
ij
:= conjunto de variables A tales que A BC es
una produccion de G, con B X
ik
y C X
i+k,jk
,
considerando todos los k tales que 1 k < j 1.
Hasta: j = n.
Salida: w L(G) si y solo si S X
1n
.
j = 1 j = 2 j = 3 j = 4
b i = 1 {A} {B} {S, C}
b i = 2 {A} {B, S} {S, C}
a i = 3 {B, C} {S, C}
b i = 1 {A}
A continuacion se indica de manera detallada como se obtuvo la tabla anterior, columna
por columna:
j = 1. Se obtiene directamente de las producciones de G.
j = 2. Para X
12
se buscan cuerpos de producciones en X
11
X
21
=
{A}{A} = {A}. As que X
12
= { }.
Para X
22
se buscan cuerpos de producciones en X
21
X
31
=
{A}{B, C} = {AB, AC}. As que X
22
= {B, S}.
Para X
23
se buscan cuerpos de producciones en X
31
X
41
=
{B, C}{A} = {BA, CA}. As que X
23
= {S, C}.
Captulo 2 Lenguajes LIC y gramaticas GIC 55
j = 3. Para X
13
se buscan cuerpos de producciones en X
11
X
22
X
12
X
31
= {A}{B, S} { } = {AB, AS}. As que X
13
=
{B}.
Para X
23
se buscan cuerpos de producciones en X
21
X
32
X
22
X
41
= {A}{S, C} {B, S}{A} = {AS, AC}
{BA, SA}. As que X
23
= {S, C}.
j = 4. Para X
14
se buscan cuerpos de producciones en X
11
X
23
X
12
X
32
X
13
X
41
= {A}{S, C} { } {B}{A} =
{AS, AC} {BA}. As que X
14
= {S, C}.
Puesto que la variable S pertenece al conjunto X
14
, se concluye que la cadena w = bbab
es generada por G.
Consideremos ahora la entrada w = baaba, de longitud 5. Al hallar los X
ij
, 1
i, j 5, se obtiene la tabla siguiente. Como S X
15
, se concluye que w L(G).
j = 1 j = 2 j = 3 j = 4 j = 5
b i = 1 {A} {B, S} {S, B, C}
a i = 2 {B, C} {A} {A} {S, B, C}
a i = 3 {B, C} {S, C} {A}
b i = 4 {A} {B, S}
a i = 5 {B, C}
Al procesar la entrada w = aaba se obtiene la tabla siguiente. Como S no pertenece al
conjunto X
14
, se deduce que w no es generada por G.
j = 1 j = 2 j = 3 j = 4
a i = 1 {B, C} {A} {B}
a i = 2 {B, C}
b i = 3 {B}
a i = 4 {B, C}
Problema 3 (Problema de la innitud). Dada una gramatica G = (V, , S, P),
es L(G) innito?
El lema de bombeo sirve para establecer un criterio que permite resolver este pro-
blema (de manera analoga a lo que sucede en el caso de los lenguajes regulares). El
criterio aparece en el siguiente teorema.
56 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
4.14.1 Teorema. Sea G = (V, , S, P) una gramatica en FNC, con variable inicial no
recursiva, tal que L(G) = L, y sea k = |V | = n umero de variables de G. El lenguaje L
es innito si y solo si contiene una cadena z tal que 2
k
< |z| 2
k+1
.
Demostracion: Si z L y 2
k
< |z| 2
k+1
, entonces por la demostracion del lema de
bombeo, z se puede descomponer como z = uvwxy, donde |vwx| 2
k
, v = . L posee
innitas cadenas: uv
i
wx
i
y para todo i 0.
Recprocamente, si L es innito, existe z L con |z| 2
k
. Por la demostracion del
lema de bombeo, w = uvwxy donde |vwx| 2
k
; ademas, v = o x = . Si |z| 2
k+1
,
la demostracion termina. Si |z| > 2
k+1
= 2
k
+ 2
k
, puesto que |z| = |uy| + |vwx|, se
tendra
|uwy| |uy| = |z| |vwx| |z| 2
k
> 2
k
.
De nuevo, si |uwy| < 2
k+1
, la demostracion termina; en caso contrario, se prosigue de
esta forma hasta encontrar una cadena en L cuya longitud satisfaga 2
k
< 2
k+1
.
Utilizando el Teorema 4.14.1 podemos ahora presentar un algoritmo de decision para
el problema de la innitud:
1. Convertir la gramatica G dada a una gramatica equivalente G
en Forma Normal
de Chomsky.
2. Aplicar el algoritmo CYK a G
. L es innito si y
solo si alguna de las cadenas examinadas esta en L(G
).
Observese que este algoritmo tiene de complejidad exponencial ya que el n umero de
cadenas z tales que 2
k
< |z| 2
k+1
es m
2
k
, donde m es el n umero de terminales en la
gramatica dada.
Hay muchos problemas referentes a gramaticas que son indecidibles; para
estos problemas no existen algoritmos de decision. Entre ellos menciona-
mos:
1. Dada una gramatica G, es G ambigua?
2. Dada una gramatica G, genera G todas las cadenas de terminales?,
es decir, L(G) =
?
3. Dadas dos gramaticas G
1
y G
2
, generan G
1
y G
2
el mismo lengua-
je?, es decir, L(G
1
) = L(G
2
)?
Captulo 2 Lenguajes LIC y gramaticas GIC 57
?
3. Encontrar un algoritmo para el siguiente problema de decision: dado un lenguaje
nito L y una GIC G, se tiene L L(G)?
4. Sea G la gramatica
G :
S BA | AB
A CA | a
B BB | b
C BA | c
Ejecutar el algoritmo CYK para determinar si las siguientes cadenas w son o no
generadas por G:
(i) w = bca. (iii) w = cabb.
(ii) w = acbc. (iv) w = bbbaa.
Captulo 5
Automatas con Pila
En el presente captulo presentamos el modelo de automata requerido para aceptar los
lenguajes independientes del contexto: el automata con pila no-determinista. Existe
tambien la version determinista pero, a diferencia de lo que sucede con los modelos
AFD y AFN, los modelos de automata con pila determinista y no-determinista no
resultan ser computacionalmente equivalentes.
5.1. Automatas con Pila Deterministas (AFPD)
Un Automata Finito con Pila Determinista (AFPD) es una 7-upla,
M = (Q, q
0
, F, , , s
0
, ), con los siguientes componentes:
1. Q es el conjunto (nito) de estados.
2. q
0
Q es el estado inicial.
3. F es el conjunto de estados nales o de aceptacion, = F Q.
4. es el alfabeto de cinta.
5. es el alfabeto de pila.
6. s
0
es el smbolo inicial de pila.
7. es la funcion de transicion del automata:
: Q( ) (Q
).
Como en los modelos ya considerados (AFD, AFN y AFN-), un AFPD procesa
cadenas sobre una cinta de entrada semi-innita, pero hay una cinta adicional, llamada
pila, que es utilizada por el automata como lugar de almacenamiento. En un momento
1
2 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
determinado, la unidad de control del automata escanea un smbolo a sobre la cinta
de entrada y el smbolo s en el tope o cima de la pila, como lo muestra la siguiente
graca:
La transicion
(q, a, s) = (q
, )
representa un paso computacional: la unidad de control pasa al estado q
y se mueve
a la derecha; ademas, borra el smbolo s que esta en el tope de la pila, escribe la cadena
(cadena que pertenece a
, ).
Esta es una transicion o transicion espontanea: el smbolo
sobre la cinta de entrada no se procesa y la unidad de control no se mueve
a la derecha, pero el tope s de la pila es reemplazado por la cadena . Para
garantizar el determinismo, (q, a, s) y (q, , s), con a , no pueden estar
simultaneamente denidos (de lo contrario el automata tendra una opcion no-
determinista). Las transiciones en un AFPD permiten que el automata cambie
el contenido de la pila, sin procesar (o consumir) smbolos sobre la cinta de
entrada.
Conguracion o descripcion instantanea. Es una tripla (q, au, s) que representa
lo siguiente: el automata esta en el estado q, au es la parte no procesada de la cadena
de entrada, y la unidad de control esta escaneando el smbolo a. La cadena s es el
contenido total de la pila; siendo s el smbolo colocado en el tope.
La notacion (q, au, s) para conguraciones instantaneas es muy comoda: para re-
presentar el paso computacional de la gura que aparece arriba escribimos simplemente
(q, au, s) (p, u, ).
Aqu el automata utilizo la transicion (q, a, s) = (p, ).
La notacion
(q, u, )
(p, v, )
signica que el automata pasa de la conguracion instantanea (q, u, ) a la conguracion
instantanea (p, v, ) en cero, uno o mas pasos computacionales.
Conguracion inicial. Para una cadena de entrada w
, la conguracion inicial
es (q
0
, w, s
0
). Al comenzar el procesamiento de toda cadena de entrada, el contenido de
la pila es s
0
, que sirve como marcador de fondo.
Conguracion de aceptacion. La conguracion (p, , ), siendo p un estado nal
o de aceptacion, se llama conguracion de aceptacion. Esto signica que, para ser
aceptada, una cadena de entrada debe ser procesada completamente, con el control
nito en un estado de aceptacion. La cadena que queda en la pila puede ser cualquier
cadena de smbolos en
.
4 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Lenguaje aceptado por un AFPD. El lenguaje aceptado por un AFPD M se dene
como
L(M) := {w
: (q
0
, w, s
0
)
(p, , ), p F}.
O sea, una cadena es aceptada si se puede ir desde la conguracion inicial hasta una
conguracion de aceptacion, en cero, uno o mas pasos.
En el modelo AFPD se permite que la transicion (q, a, s) no este denida, pa-
ra algunos valores q Q, a , s . Esto implica que el computo de algunas
cadenas de entrada puede abortarse sin que se procesen completamente.
No se debe confundir la tripla que aparece en la funcion de transicion (q, a, s)
con la tripla (q, u, ) que representa una conguracion instantanea.
La denicion de la funcion de transicion requiere que haya por lo menos un
smbolo en la pila. No hay computos con pila vaca.
Para los automatas con pila se pueden hacer diagramas de estados, similares
a los ya conocidos, pero resultan de poca utilidad practica ya que el procesa-
miento completo de una cadena de entrada depende del contenido de la pila,
el cual puede cambiar en cada paso computacional.
Los analizadores sintacticos en compiladores se comportan generalmente como
automatas con pila deterministas.
Un AFPD puede simular un AFD simplemente ignorando la pila; de esto se deduce
que los lenguajes regulares son aceptados por automatas AFPD. El siguiente teorema
establece formalmente este resultado.
5.1.1 Teorema. Todo lenguaje regular L es aceptado por alg un AFPD.
Demostracion: Sea M = (Q, q
0
, F, , ) un AFD que acepta a L. El AFPD M
=
(Q, q
0
, F, , , s
0
, ) denido haciendo = {s
0
} y
(q, a, s
0
) = ((q, a), s
0
), para todo a , q Q,
satisface claramente L(M
) = L(M) = L.
Sin usar la pila un AFPD no puede hacer nada mas que un AFD, pero utilizando la
pila como lugar de almacenamiento, un AFPD puede aceptar lenguajes no regulares,
como se muestra en el siguiente ejemplo.
Captulo 2 Automatas con Pila 5
Ejemplo
Dise nar un AFPD que acepte el lenguaje L = {a
i
b
i
: i 1}, sobre el
alfabeto = {a, b}. Recordemos que L no es regular y no puede ser
aceptado por ning un automata normal (sin pila).
Soluci on: La idea es copiar las aes en la pila y borrar una a por cada b que sea leda
sobre la cinta. Una cadena sera aceptada si es procesada completamente y en la pila
solo queda el marcador de fondo s
0
. Concretamente, M = (Q, q
0
, F, , , s
0
, ), donde
= {a, b},
= {s
0
, A, B},
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = (q
0
, As
0
),
(q
0
, a, A) = (q
0
, AA),
(q
0
, b, A) = (q
1
, ),
(q
1
, b, A) = (q
1
, ),
(q
1
, , s
0
) = (q
2
, s
0
).
Podemos ilustrar el procesamiento de varias cadenas de entrada. Sea, inicialmente,
u = aaabbb.
(q
0
, aaabbb, s
0
) (q
0
, aabbb, As
0
) (q
0
, abbb, AAs
0
) (q
0
, bbb, AAAs
0
)
(q
1
, bb, AAs
0
) (q
1
, b, As
0
) (q
1
, , s
0
) (q
2
, , s
0
).
La ultima es una conguracion de aceptacion; por lo tanto la cadena u = aaabbb es
aceptada.
Para la cadena de entrada v = aabbb, se obtiene el siguiente procesamiento:
(q
0
, aabbb, s
0
) (q
0
, abbb, As
0
) (q
0
, bbb, AAs
0
) (q
1
, bb, As
0
)
(q
1
, b, s
0
) (q
2
, b, s
0
). [computo abortado]
Observese que el automata ha ingresado al estado de aceptacion q
2
pero la cadena de
entrada no es aceptada debido a que no se ha procesado completamente; (q
2
, b, s
0
) no
es una conguracion de aceptacion.
Para la cadena de entrada w = aaabb, se tiene:
(q
0
, aaabb, s
0
) (q
0
, aabb, As
0
) (q
0
, abb, AAs
0
) (q
0
, bb, AAAs
0
)
(q
1
, b, AAs
0
) (q
1
, , As
0
).
6 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
A pesar de que se ha procesado completamente la cadena de entrada w, la conguracion
(q
0
, , As
0
) no es de aceptacion. Por lo tanto, w = aaabb no es aceptada.
Ejemplo
Dise nar un AFPD que acepte el lenguaje de todas las cadenas sobre el
alfabeto = {a, b} (diferentes de ) que tienen igual n umero de aes que
de bes.
Soluci on: La idea es acumular las aes o bes consecutivas en la pila. Si en el tope de
la pila hay una A y el automata lee una b, se borra la A; similarmente, si en el tope
de la pila hay una B y el automata lee una a, se borra la B. La cadena de entrada
sera aceptada si es procesada completamente y en la pila solo queda el marcador de
fondo s
0
. Concretamente, M = (Q, q
0
, F, , , s
0
, ), donde
= {a, b},
= {s
0
, A, B},
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = (q
1
, As
0
),
(q
0
, b, s
0
) = (q
1
, Bs
0
),
(q
1
, a, s
0
) = (q
1
, As
0
),
(q
1
, b, s
0
) = (q
1
, Bs
0
),
(q
1
, a, A) = (q
1
, AA),
(q
1
, b, B) = (q
1
, BB),
(q
1
, a, B) = (q
1
, ),
(q
1
, b, A) = (q
1
, ),
(q
1
, , s
0
) = (q
2
, s
0
).
A continuacion procesamos algunas cadenas de entrada.
Cadena de entrada: aabababb (aceptada).
(q
0
, aabababb, s
0
) (q
1
, abababb, As
0
) (q
1
, bababb, AAs
0
)
(q
1
, ababb, As
0
) (q
1
, babb, AAs
0
) (q
1
, abb, As
0
)
(q
1
, bb, AAs
0
) (q
1
, b, As
0
) (q
1
, , s
0
) (q
2
, , s
0
).
Cadena de entrada: bbbaba (rechazada).
(q
0
, bbbaba, s
0
) (q
1
, bbaba, Bs
0
) (q
1
, baba, BBs
0
) (q
1
, aba, BBBs
0
)
(q
1
, ba, BBs
0
) (q
1
, a, BBBs
0
) (q
1
, , BBs
0
).
Captulo 2 Automatas con Pila 7
En este ultimo caso, la cadena de entrada bbbaba es procesada completamente pero la
conguracion nal no es de aceptacion.
wcw
R
: w {a, b}
.
sobre = {a, b, c}. Notese que las cadenas w y w
R
solo poseen aes y/o bes.
Soluci on: La idea es acumular los smbolos en la pila hasta que aparezca la c. Luego
comparar los smbolos ledos con los almacenados en la pila, borrando en cada paso el
tope de la pila. La cadena de entrada sera aceptada si es procesada completamente y en
la pila solo queda el marcador de fondo s
0
. Concretamente, M = (Q, q
0
, F, , , s
0
, ),
donde
= {a, b, c},
= {s
0
, A, B},
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = (q
0
, As
0
),
(q
0
, b, s
0
) = (q
0
, Bs
0
),
(q
0
, c, s
0
) = (q
2
, s
0
) (para aceptar la cadena c),
(q
0
, a, A) = (q
0
, AA),
(q
0
, a, B) = (q
0
, AB),
(q
0
, b, A) = (q
0
, BA),
(q
0
, b, B) = (q
0
, BB),
(q
0
, c, A) = (q
1
, A),
(q
0
, c, B) = (q
1
, B),
(q
1
, a, A) = (q
1
, ),
(q
1
, b, B) = (q
1
, ),
(q
1
, , s
0
) = (q
2
, s
0
).
Ejercicios
1. Dise nar AFPD que acepten los siguientes lenguajes sobre = {a, b}:
(i) L = {a
i
b
2i
: i 1}.
(ii) L = {a
2i
b
i
: i 1}.
8 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
(iii) L = {a
i
b
j
: i j 1}.
2. Dise nar AFPD que acepten los siguientes lenguajes sobre = {0, 1}:
(i) L = {0
i
1
j
0
i
: i, j 1}.
(ii) El lenguaje de las cadenas que tienen el doble n umero de ceros que de unos.
5.2. Automatas con pila no-deterministas (AFPN)
Un Automata Finito con Pila No-Determinista (AFPN) consta de los mismos
siete parametros de un AFPD, M = (Q, q
0
, F, , , s
0
, ), pero la funcion de transicion
es de la forma:
: Q( )
f
(Q
).
donde
f
(Q
. Para q Q,
a {} y s , (q, a, s) es de la forma
(q, a, s) = {(p
1
,
1
), (p
2
,
2
), . . . , (p
k
,
k
)}.
El signicado de esta transicion es: al leer el smbolo a sobre la cinta de entrada, la
unidad de control puede pasar (aleatoriamente) a uno de los estados p
i
y se mueve a la
derecha. Sobre la pila hace lo siguiente: borra el smbolo s que esta en el tope y escribe
la cadena
i
(cadena que pertenece a
).
A diferencia de lo que sucede con los AFPD, en el modelo AFPN las transiciones
, (q, , s), no tienen restriccion alguna.
El lenguaje aceptado por un AFPN M se dene como:
L(M) := {w
: existe un computo (q
0
, w, s
0
)
(p, , ), p F,
}.
O sea, una cadena w es aceptada si existe por lo menos un procesamiento de w desde
la conguracion inicial hasta una conguracion de aceptacion.
Ejemplo
Dise nar un AFPN que acepte el lenguaje {a
i
b
i
: i 0}, sobre el alfabeto
= {a, b}.
Soluci on: El lenguaje {a
i
b
i
: i 0} diere del lenguaje {a
i
b
i
: i 1}, utilizado en el
primer ejemplo de la seccion 5.1, por la presencia de la cadena vaca . Para aceptar
la cadena a nadimos una transicion mas al AFDP dise nado en dicho ejemplo, lo que
hace que el automata sea no-determinista. Concretamente, se dene el automata M
como M = (Q, q
0
, F, , , s
0
, ) donde
= {a, b},
= {s
0
, A, B},
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
Captulo 2 Automatas con Pila 9
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = {(q
0
, As
0
)},
(q
0
, , s
0
) = {(q
2
, s
0
)} (para aceptar ),
(q
0
, a, A) = {(q
0
, AA)},
(q
0
, b, A) = {(q
1
, )},
(q
1
, b, A) = {(q
1
, )},
(q
1
, , s
0
) = {(q
2
, s
0
)}.
En este automata el no-determinismo surge por la presencia simultanea de (q
0
, a, s
0
)
y (q
0
, , s
0
).
Ejemplo
Dise nar un AFPN que acepte el lenguaje de todas las cadenas sobre el
alfabeto = {a, b} que tienen igual n umero de aes que de bes.
Soluci on: Simplicamos el automata del segundo ejemplo de la seccion 5.1; solo se
requieren dos estados. Especcamente, M = (Q, q
0
, F, , , s
0
, ), donde
= {a, b},
= {s
0
, A, B},
Q = {q
0
, q
1
},
F = {q
1
},
y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = {(q
0
, As
0
)},
(q
0
, b, s
0
) = {(q
0
, Bs
0
)},
(q
0
, a, A) = {(q
0
, AA)},
(q
0
, b, B) = {(q
0
, BB)},
(q
0
, a, B) = {(q
0
, )},
(q
0
, b, A) = {(q
0
, )},
(q
0
, , s
0
) = {(q
1
, s
0
)}.
El no-determinismo se presenta unicamente por la presencia simultanea de (q
0
, a, s
0
)
y (q
0
, , s
0
).
En contraste con lo que sucede con los modelos AFD y AFN, los modelos de aut oma-
ta con pila determinista (AFPD) y no-determinista (AFPN) no resultan ser compu-
tacionalmente equivalentes: existen lenguajes aceptados por AFPD que no pueden ser
aceptados por ning un AFPD. Un ejemplo concreto es el lenguaje L = {ww
R
: w
Ejemplo
Dise nar un AFPN que acepte el lenguaje L = {ww
R
: w
}, donde
= {a, b}. No es difcil ver que L es el lenguaje de los palndromos de
longitud par.
Soluci on: En el ultimo ejemplo de la seccion 5.1 se construyo un AFPD que acepta el
lenguaje {wcw
R
: w {a, b}
Ejercicios
Dise nar APFN que acepten los siguientes lenguajes:
1. L = {a
i
b
j
c
i+j
: i, j 0}, sobre = {a, b, c}.
2. L = {a
2i
b
3i
: i, j 0}, sobre = {a, b}.
3. L = {0
i
1
j
: 0 i j 2i}, sobre = {0, 1}.
4. L = {0
i
1
j
: i, j 0, i = j}, sobre = {0, 1}.
5.3. Aceptacion por pila vaca
En todos los modelos de automatas que hemos considerado en este curso, la aceptacion
de cadenas esta determinada por los estados nales o de aceptacion. Para los aut oma-
tas con pila existe otra nocion de aceptacion: la aceptacion por pila vaca, denida a
continuacion. Cuando se usa esta nocion, los automatas no requieren un conjunto F
de estados nales, solamente los seis restantes componentes: (Q, q
0
, , , s
0
, ).
5.3.1 Denicion. Dado un automata con pila M = (Q, q
0
, , , s
0
, ), ya sea AFPD
o AFPN, el lenguaje aceptado por M por pila vaca se dene como
N(M) := {w
: existe un computo (q
0
, w, s
0
)
(p, , )}.
O sea, una cadena es aceptada por pila vaca si se puede ir, en cero, uno o mas pasos,
desde la conguracion inicial hasta una conguracion en la que la pila este completa-
mente desocupada
1
. Notese que, para ser aceptada, la cadena de entrada w debe ser
procesada completamente.
Para AFPN las nociones de aceptacion por pila vaca y por estados nales resul-
tan ser equivalentes, como se establece en los dos siguientes teoremas. Es importante
anotar que para automatas deterministas AFPD los dos tipos de aceptacion no son
equivalentes.
5.3.2 Teorema. Si L = L(M) para alg un automata con pila AFPN M, entonces
L = N(M
. Es decir, M
como
M
= (Q {p
0
, p}, p
0
, , {r
0
}, r
0
,
)
donde p
0
(estado inicial) y p son estados nuevos, y r
0
es el nuevo smbolo inicial de pila.
La funcion de transicion
se dene as:
1.
(p
0
, , r
0
) = {(q
0
, s
0
r
0
)}. Transicion mediante la cual el nuevo smbolo inicial
de pila se coloca en el fondo. Esto impedira que una cadena sea accidentalmente
aceptada si el automata original M vaca la pila.
2. (q, a, s)
vace completamente
la pila es ingresando al estado p, lo cual puede hacer unicamente desde un estado de
aceptacion de M.
Si w es aceptada por M, o sea si w L(M), M realiza un computo de la forma
(q
0
, w, s
0
)
(q, , )
donde q F y
. Entonces en M
(q, , r
0
) (p, , r
0
)
(p, , ).
Por lo tanto, w N(M
).
Un razonamiento similar muestra que w N(M
).
5.3.3 Teorema. Si L = N(M) para alg un automata con pila AFPN M, entonces
L = L(M
. Es decir, M
se
dise na a nadiendo un nuevo estado q
f
a M de tal manera que M
como
M
= (Q {p
0
, p
f
}, p
0
, {p
f
}, , {r
0
}, r
0
,
)
donde p
0
(estado inicial) y p
f
( unico estado de aceptacion) son estados nuevos, y r
0
es
el nuevo smbolo inicial de pila. La funcion de transicion
se dene as:
1.
(p
0
, , r
0
) = {(q
0
, s
0
r
0
)}. Transicion mediante la cual el nuevo smbolo inicial
de pila se coloca en el fondo. Cuando M
(q, , r
0
) para todo q Q. Mediante esta transicion , M
pasa al
estado de aceptacion p
f
cuando detecte el marcador de fondo r
0
. O sea, M
(q, , )
donde q Q. Entonces en M
(q, , r
0
) (p
f
, , r
0
).
Por lo tanto, w L(M
).
Un razonamiento similar muestra que w L(M
).
Ejercicios
1. Modicar los automatas de los tres ejemplos de la seccion 5.2 para que acepten
por pila vaca y no por estado nal.
2. Dise nar AFPN que acepten los siguientes lenguajes por pila vaca:
(i) L = {a
i
b
2i
: i 1}, sobre = {a, b}.
(ii) L = {a
2i
b
i
: i 1}, sobre = {a, b}.
14 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
(iii) L = {0
i
1
j
: 0 i j 2i}, sobre = {0, 1}.
(iv) L = {0
i
1
j
: i, j 0, i = j}, sobre = {0, 1}.
3. Completar los detalles faltantes en las demostraciones del Teorema 5.3.2 y el
Teorema 5.3.3. Por que estas demostraciones no son validas para automatas
deterministas?
5.4. Automatas con pila y LIC (Parte I)
Los lenguajes aceptados por los AFPN son exactamente los lenguajes independientes
del contexto.
Este es un resultado analogo al Teorema de Kleene para lenguajes re-
gulares, aunque en el caso de los automatas con pila, los modelos deterministas no
son computacionalmente equivalentes a los no-deterministas. En la presente seccion
consideraremos la primera parte de la correspondencia entre AFPN y LIC.
5.4.1 Teorema. Dada una GIC G, existe un AFPN M tal que L(G) = L(M).
Bosquejo de la demostracion. Para una gramatica G = (, V, S, P) dada, se construye
un AFPN que utiliza la pila para simular la derivacion de cadenas realizada por G. M
requiere solamente tres estados, independientemente del n umero de variables y produc-
ciones de G. Especcamente, el automata M se dene como M = (Q, q
0
, F, , , s
0
, ),
donde Q = {q
0
, q
1
, q
2
}, F = {q
2
} y = V {s
0
}. La funcion de transicion se
dene de la siguiente manera:
1. (q
0
, , s
0
) = {(q
1
, Ss
0
)}. Transicion mediante la cual M coloca el smbolo S
en el tope de la pila al iniciar el procesamiento de una cadena de entrada.
2. Para cada variable A V ,
(q
1
, , A) = {(q
1
, u) : A u es una produccion de la gramatica G}.
Mediante estas transiciones, M utiliza la pila para simular las derivaciones: si el
tope de la pila es A y en la derivacion se usa la produccion A u, el tope de la
pila A es substituido por u.
3. Para cada smbolo terminal a , (q
1
, a, a) = {(q
1
, )}. Mediante estas tran-
siciones, M borra los terminales del tope de la pila al consumirlos sobre la cinta
de entrada.
4. (q
1
, , s
0
) = {(q
2
, s
0
)}. M ingresa al estado de aceptacion q
2
cuando detecta el
marcador de fondo s
0
.
Captulo 2 Automatas con Pila 15
El aut omata M esta dise nado de tal forma que si S
= w es una derivacion a izquierda
en la gramatica G, entonces existe un procesamiento
(q
0
, w, s
0
) (q
0
, w, Ss
0
)
(q
2
, , s
0
)
que simula la derivacion.
Recprocamente, puede demostrarse que si (q
0
, w, s
0
)
(q
2
, , s
0
) entonces S
= w
en la gramatica G.
S aAbS | bBa |
A aA | a
B bB | b
Seg un la construccion del Teorema 5.4.1, el automata M esta dado por M = (Q, q
0
, F, , , s
0
, )
donde
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
= {a, b, S, A, B, s
0
}.
La funcion de transicion esta dada por:
(q
0
, , s
0
) = {(q
1
, Ss
0
)},
(q
1
, , S) = {(q
1
, aAbS), (q
1
, bBa), (q
1
, )},
(q
1
, , A) = {(q
1
, aA), (q
1
, a)},
(q
1
, , B) = {(q
1
, bB), (q
1
, b)},
(q
1
, a, a) = {(q
1
, )},
(q
1
, b, b) = {(q
1
, )},
(q
1
, , s
0
) = {(q
2
, s
0
)}.
Podemos ilustrar la correspondencia entre derivaciones en G y procesamientos en M
con la cadena aabbba, la cual tiene la siguiente derivacion a izquierda:
S = aAbS = aabS = aabbBa = aabbba.
El aut omata M simula esta derivacion de la cadena aabbba as:
(q
0
, aabbba, s
0
) (q
1
, aabbba, Ss
0
) (q
1
, aabbba, aAbSs
0
)
(q
1
, abbba, AbSs
0
) (q
1
, abbba, abSs
0
)
(q
1
, bbba, bSs
0
) (q
1
, bba, Ss
0
) (q
1
, bba, bBas
0
)
(q
1
, ba, Bas
0
) (q
1
, ba, bas
0
) (q
1
, a, as
0
)
(q
1
, , s
0
) (q
2
, , s
0
).
16 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Ejemplo
La siguiente gramatica genera los palndromos de longitud par, sobre =
{a, b}, es decir, el lenguaje L = {ww
R
: w
}:
S aSa | bSb | .
Siguiendo el procedimiento del Teorema 5.4.1 podemos construir un AFPN que acepta
a L; este automata es diferente del exhibido en el tercer ejemplo de la seccion 5.2.
M = (Q, q
0
, F, , , s
0
, ) donde
Q = {q
0
, q
1
, q
2
},
F = {q
2
},
= {a, b, S, s
0
}.
La funcion de transicion esta dada por:
(q
0
, , s
0
) = {(q
1
, Ss
0
)},
(q
1
, , S) = {(q
1
, aSa), (q
1
, bSb), (q
1
, )},
(q
1
, a, a) = {(q
1
, )},
(q
1
, b, b) = {(q
1
, )},
(q
1
, , s
0
) = {(q
2
, s
0
)}.
Ejercicios
1. Construir un AFPN M que acepte el lenguaje generado por la siguiente gramati-
ca:
G :
S Aba | AB |
A aAS | a
B bBA | .
Encontrar una derivacion a izquierda en G de la cadena w = aaababa y procesar
luego la cadena w con el automata M, simulando la derivacion.
2. Construir un AFPN M que acepte el lenguaje generado por la siguiente gramati-
ca:
G :
S ASA | AaA | aa
A AbA | .
Encontrar una derivacion a izquierda en G de la cadena w = bbaaa y procesar
luego la cadena w con el automata M, simulando la derivacion.
Captulo 2 Automatas con Pila 17
5.5. Automatas con pila y LIC (Parte II)
En la presente seccion consideraremos la segunda parte de la correspondencia entre
AFPN y LIC. Demostraremos que para todo AFPN que acepta por pila vaca existe
una GIC que genera el lenguaje aceptado por el automata. Las gramaticas obtenidas
son, en general, bastante complejas, con un gran n umero de variables y de producciones.
Hay que advertir tambien que el procedimiento puede dar lugar a variables in utiles (no-
terminables o no alcanzables).
5.5.1 Teorema. Dado un AFPN M = (Q, q
0
, , , s
0
, ) que acepta por pila vaca,
existe una GIC G = (, V, S, P) tal que L(G) = N(M).
Demostracion: En la gramatica G las variables (aparte de la variable inicial S) seran
tripletas de la forma [qXp] donde q, p Q y X . Las producciones de G se denen
de la siguiente manera:
1. Si (p, ) (q, a, X), se a nade la produccion [qXp] a.
2. Si (p, ) (q, , X), se a nade la produccion [qXp] .
3. Si (r, Y
1
Y
2
Y
k
) (q, a, X), donde a puede ser un smbolo del alfabeto
o a = y k 1, se a naden todas las producciones de la forma
[qXr
k
] a[rY
1
r
1
][r
1
Y
2
r
2
] [r
k1
Y
k
r
k
]
para todas las secuencias posibles r
1
, r
2
, . . . , r
k1
de estados de Q.
4. Para todo p Q se a nade la produccion S [q
0
s
0
p].
La gramatica G as denida pretende simular con derivaciones a izquierda los computos
de M; el signicado intuitivo de la variable [qXp] es: al extraer X del tope de la pila,
se pasa del estado q al estado p. La produccion
[qXr
k
] a[rY
1
r
1
][r
1
Y
2
r
2
] [r
k1
Y
k
r
k
]
del numeral 3 indica las posibles maneras en las que M puede extraer la cadena
Y
1
Y
2
Y
k
de la pila, una vez se haya sustituido el tope de la pila X por dicha ca-
dena, pasando del estado q al estado r y consumiendo el smbolo a.
Demostraremos primero la inclusion N(M) L(G). Para todo q, p Q, X y
w
, se demostrara la implicacion
(5.1) si (q, w, X)
+
(p, , ) entonces [qXp]
+
= w,
por induccion sobre el n umero de pasos del computo (q, w, X)
+
(p, , ). Cuan-
do hay un solo paso, el computo es de la forma (q, a, X) (p, , ) o de la for-
ma (q, , X) (p, , ). Si (q, a, X) (p, , ), entonces (p, ) (q, a, X); as que
18 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
[qXp] a es una produccion de G, y se obtendra la derivacion [qXp] = a. Si
(q, , X) (p, , ), entonces (p, ) (q, , X); as que [qXp] es una produccion
de G y se obtendra [qXp] = .
Para el razonamiento inductivo, supongase que (q, w, X)
n
(p, , ) donde n > 1.
Considerando el primer paso de este computo de n pasos, podemos escribir:
(5.2) (q, ax, X) (r
0
, x, Y
1
Y
2
Y
k
)
(p, , ),
donde a o a = . Cuando a , w = ax para alguna cadena x
; cuando a = ,
x = w. En el primer paso de 5.2 se ha aplicado la transicion (r
0
, Y
1
Y
2
Y
k
) (q, a, X)
de M. Por la denicion de la gramatica G,
[qXr
k
] a[r
0
Y
1
r
1
][r
1
Y
2
r
2
] [r
k1
Y
k
r
k
]
es una produccion, para todas las secuencias posibles r
1
, r
2
, . . . , r
k1
de estados de Q.
Seg un 5.2, desde la conguracion instantanea (r
0
, x, Y
1
Y
2
Y
k
) el automata llega
hasta la conguracion (p, , ), consumiendo completamente la cadena x y vaciando
la pila. La cadena x se puede escribir entonces como x = w
1
w
2
w
k
, siendo w
i
la
cadena consumida por el automata para extraer el smbolo Y
i
del tope de la pila. En
consecuencia, existe una secuencia de estados r
1
, r
2
,. . . , r
k1
, r
k
= p tales que
(r
0
, x, Y
1
Y
2
Y
k
) = (r
0
, w
1
w
2
w
k
, Y
1
Y
2
Y
k
)
+
(r
1
, w
2
w
k
, Y
2
Y
k
)
+
(r
2
, w
3
w
k
, Y
3
Y
k
)
+
(r
k1
, w
k
, Y
k
)
+
(r
k
, , ).
Para i = 1, 2, . . . , k se tiene as una secuencia de computos parciales
(r
i1
, w
i
, Y
i
)
+
(r
i
, , ),
donde r
k
= p. Por la hipotesis de induccion, [r
i1
Y
i
r
i
]
+
= w
i
para i = 1, 2, . . . , k. Por
consiguiente,
[qXp] = [qXr
k
] = a[r
0
Y
1
r
1
][r
1
Y
2
r
2
] [r
k1
Y
k
r
k
]
+
= aw
1
w
2
w
k
= w.
Esto demuestra la implicacion 5.1. Por lo tanto, si w es aceptada por M, siendo w = ,
se tendra (q
0
, w, s
0
)
+
(p, , ), y usando 5.1 se concluira que S = [q
0
s
0
p]
+
= w. Si
w = es aceptada por M, necesariamente (q
0
, , s
0
) (p, , ) para alg un estado p.
Esto signica que (q
0
, , s
0
) (p, , ), y se tendra S = [q
0
s
0
p] = . Esto demuestra
que N(M) L(G).
Para establecer la contenencia L(G) N(M) se demuestra la implicacion
(5.3) si [qXp]
+
= w, entonces (q, w, X)
+
(p, , ),
Captulo 2 Automatas con Pila 19
por induccion sobre el n umero de pasos en la derivacion [qXp]
+
= w. Este razona-
miento inductivo es similar al usado para probar la implicacion recproca 5.1, y se deja
como ejercicio para el lector interesado. Si en G se puede derivar la cadena w, es decir,
si S
= w, la primera produccion aplicada sera de la forma S [q
0
s
0
p]. De donde,
S = [q
0
s
0
p]
+
= w. Usando 5.3 se concluye (q
0
, w, s
0
)
+
(p, , ), o sea w N(M).
Ejemplo
Vamos a aplicar la construccion del Teorema 5.5.1 para encontrar una
gramatica G que genere el lenguaje de las cadenas sobre el alfabe-
to = {a, b} que tienen igual n umero de aes que de bes, a partir del AFPN
M = (Q, q
0
, F, , , s
0
, ) con los siguientes componentes. = {a, b}, = {s
0
, A, B},
Q = {q
0
, q
1
}, F = {q
1
} y la funcion de transicion esta dada por:
(q
0
, a, s
0
) = {(q
0
, As
0
)},
(q
0
, b, s
0
) = {(q
0
, Bs
0
)},
(q
0
, a, A) = {(q
0
, AA)},
(q
0
, b, B) = {(q
0
, BB)},
(q
0
, a, B) = {(q
0
, )},
(q
0
, b, A) = {(q
0
, )},
(q
0
, , s
0
) = {(q
1
, )}.
M es una modicacion del automata presentado en el segundo ejemplo de la seccion 5.2
(en ese ejemplo M aceptaba por estado nal; aqu M acepta por pila vaca).
Las variables de G son S y todas las tripletas de la forma [qXp] donde q, p Q y
X . Hay, por lo tanto, 13 variables, a saber:
S, [q
0
s
0
q
0
], [q
0
Aq
0
], [q
0
Bq
0
], [q
0
s
0
q
1
], [q
0
Aq
1
], [q
0
Bq
1
],
[q
1
s
0
q
0
], [q
1
Aq
0
], [q
1
Bq
0
], [q
1
s
0
q
1
], [q
1
Aq
1
], [q
1
Bq
1
].
A continuacion se presentan las producciones de G.
Produccion obtenida de (q
0
, , s
0
) = {(q
1
, )}:
[q
0
s
0
q
1
] .
Produccion obtenida de (q
0
, a, B) = {(q
0
, )}:
[q
0
Bq
0
] a.
Produccion obtenida de (q
0
, b, A) = {(q
0
, )}:
[q
0
Aq
0
] b.
20 Teora de la Computacion 2003-II Profesor: Rodrigo De Castro
Producciones obtenidas de (q
0
, a, s
0
) = {(q
0
, As
0
)}:
[q
0
s
0
q
0
] a[q
0
Aq
0
][q
0
s
0
q
0
] | a[q
0
Aq
1
][q
1
s
0
q
0
]
[q
0
s
0
q
1
] a[q
0
Aq
0
][q
0
s
0
q
1
] | a[q
0
Aq
1
][q
1
s
0
q
1
].
Producciones obtenidas de (q
0
, b, s
0
) = {(q
0
, Bs
0
)}:
[q
0
s
0
q
0
] b[q
0
Bq
0
][q
0
s
0
q
0
] | b[q
0
Bq
1
][q
1
s
0
q
0
]
[q
0
s
0
q
1
] b[q
0
Bq
0
][q
0
s
0
q
1
] | b[q
0
Bq
1
][q
1
s
0
q
1
].
Producciones obtenidas de (q
0
, a, A) = {(q
0
, AA)}:
[q
0
Aq
0
] a[q
0
Aq
0
][q
0
Aq
0
] | a[q
0
Aq
1
][q
1
Aq
0
]
[q
0
Aq
1
] a[q
0
Aq
0
][q
0
Aq
1
] | a[q
0
Aq
1
][q
1
Aq
1
].
Producciones obtenidas de (q
0
, b, B) = {(q
0
, BB)}:
[q
0
Bq
0
] b[q
0
Bq
0
][q
0
Bq
0
] | b[q
0
Bq
1
][q
1
Bq
0
]
[q
0
Bq
1
] b[q
0
Bq
0
][q
0
Bq
1
] | b[q
0
Bq
1
][q
1
Bq
1
].
Finalmente, las producciones de la variable inicial S son:
S [q
0
s
0
q
0
] | [q
0
s
0
q
1
].
Al examinar las producciones se puede observar que todas las variables de la forma
[q
1
Xq], con X y q Q, son in utiles ya que no tienen producciones. Con la
terminologa ya conocida, dichas variables son no-terminables y, por consiguiente, las
producciones en las que aparecen se pueden eliminar. Otra variable no terminable
es [q
0
s
0
q
0
]. Ademas, las variables [q
0
Aq
1
] y [q
0
Bq
1
] son inalcanzables, as que se pueden
eliminar, junto con todas sus producciones. Realizando estas simplicaciones se obtiene
la siguiente gramatica:
S [q
0
s
0
q
1
]
[q
0
s
0
q
1
] a[q
0
Aq
0
][q
0
s
0
q
1
] | b[q
0
Bq
0
][q
0
s
0
q
1
] |
[q
0
Aq
0
] a[q
0
Aq
0
][q
0
Aq
0
] | b
[q
0
Bq
0
] b[q
0
Bq
0
][q
0
Bq
0
] | a.
Como se indico en la demostracion, en las gramaticas construidas seg un el metodo del
Teorema 5.5.1, las derivaciones a izquierda corresponden a los computos en el automata
Captulo 2 Automatas con Pila 21
dado. Podemos ilustrar este punto, en el presente ejemplo, con la cadena de entrada
w = bbabaa. El siguiente es un computo de aceptacion de w en M:
(q
0
, bbabaa, s
0
) (q
0
, babaa, Bs
0
) (q
0
, abaa, BBs
0
) (q
0
, baa, Bs
0
)
(q
0
, aa, BBs
0
) (q
0
, a, Bs
0
) (q
0
, , s
0
) (q
1
, , ).
La derivacion a izquierda en G que corresponde a este computo es:
S = [q
0
s
0
q
1
] = b[q
0
Bq
0
][q
0
s
0
q
1
] = bb[q
0
Bq
0
][q
0
Bq
0
][q
0
s
0
q
1
]
= bba[q
0
Bq
0
][q
0
s
0
q
1
] = bbab[q
0
Bq
0
][q
0
Bq
0
][q
0
s
0
q
1
]
= bbaba[q
0
Bq
0
][q
0
s
0
q
1
] = bbabaa[q
0
s
0
q
1
] = bbabaa.
Observese que, en cada paso de la derivacion, el contenido actual de la pila se puede
leer examinando las segundas componentes de las tripletas.
Para hacer mas legibles las producciones de la gramatica G obtenida en este ejemplo,
cambiamos los nombres de las variables as: C = [q
0
s
0
q
1
], D = [q
0
Aq
0
] y E = [q
0
Bq
0
].
Con esta nomenclatura, la gramatica se puede escribir como:
G :
S C
C aDC | bEC |
D aDD | b
E bEE | a.
Puesto que la unica produccion de S es S C, las variables S y C se pueden identicar,
dando lugar a la siguiente gramatica simplicada equivalente:
S aDS | bES |
D aDD | b
E bEE | a.
Ejercicios
1. Con respecto al ejemplo de esta seccion, procesar con M la cadena de entrada w =
baabbbaa y luego derivar w en la gramatica G, simulando dicho procesamiento.
2. Modicar el AFPN presentado en el ultimo ejemplo de la seccion 5.2 para que
acepte por pila vaca el lenguaje L = {ww
R
: w {a, b}
ITULO 6. M
AQUINAS DE TURING
es una funcion parcial, es decir, puede no estar denida en algunos
elementos del dominio. La echa denota desplazamiento a izquierda
mientras que denota desplazamiento a la derecha. La transicion
(q, a) = (p, b, D)
signica: estando en el estado q, escaneando el smbolo a, la unidad
de control borra a, escribe b y se mueve en el estado p, ya sea a la
izquierda (si el desplazamiento D es ) o a la derecha (si D es ).
Una maquina de Turing M procesa cadenas de entrada w
colocadas
sobre una cinta innita en ambas direcciones. Para procesar una cadena de
entrada w, la unidad de control de M esta en el estado inicial q
0
escaneando
el primer smbolo de w. Las demas celdas o casillas de la cinta contienen el
smbolo blanco b.
Descripcion o conguracion instantanea. Es una expresion de la forma
a
1
a
2
a
i1
qa
i
a
n
donde los smbolos a
1
, . . . , a
n
pertenecen al alfabeto de cinta y q Q.
Esta expresion representa el estatus actual del computo:
a
1
a
2
a
i1
a
i
a
n
q
Es decir, la descripcion instantanea a
1
a
2
a
i1
qa
i
a
n
indica que la uni-
dad de control de M esta en el estado q escaneando el smbolo a
i
. Se supone
que las casillas en las que no aparecen aes contienen el smbolo blanco, b.
Ejemplos concretos de descripciones instantaneas son:
aabq
2
baaa
q
5
ababba
abbbaabq
0
bba
La conguracion o descripcion instantanea inicial, o simplemente congu-
raci on inicial, es
q
0
w
6.1. M
y p, q Q. Un ejemplo concreto es
abbaq
2
ba abbq
1
aca
en la cual la maquina utilizo la transicion (q
2
, b) = (q
1
, c, ).
La notacion
u
1
qu
2
v
1
pv
2
signica que M puede pasar de la descripcion instantanea u
1
qu
2
a la des-
cripcion instantanea v
1
pv
2
en cero, uno o mas pasos computacionales.
Computos especiales. Durante el computo o procesamiento de una ca-
dena de entrada hay dos situaciones especiales que se pueden presentar:
1. El computo termina porque en determinado momento no hay transi-
cion denida.
2. El computo no termina; esto es lo que se denomina un bucle innito.
Esta situacion se representa con la notacion
u
1
qu
2
la cual indica que el computo que se inicia en la descripcion ins-
tantanea u
1
qu
2
no se detiene nunca.
Un detalle para tener en cuenta es que las transiciones con smbolo b,
(q, b) = (p, s, D), no son las mismas transiciones usadas para automa-
tas en captulos anteriores. Una transicion en un automata tiene lugar
independientemente del smbolo ledo y la unidad de control permanece
estacionaria, mientras que una transicion (q, b) = (p, s, D) en una MT re-
quiere que el smbolo blanco b este escrito en la casilla escaneada; ademas,
la unidad de control sobre-escribe el blanco y realiza un desplazamiento D.
Lenguaje aceptado por una MT. Una cadena de entrada w es aceptada
por una MT M si el computo que se inicia en la conguracion inicial q
0
w
4 CAP
ITULO 6. M
AQUINAS DE TURING
termina en una conguracion instantanea w
1
pw
2
, p estado de aceptacion,
en la cual M se detiene completamente. El lenguaje L(M) aceptado por
una MT M se dene entonces como
L(M) := {w
: q
0
w
w
1
pw
2
, p F, w
1
, w
2
, M se detiene
en la congiguracion w
1
pw
2
}.
La nocion de aceptacion para maquinas de Turing es mas exible que para
automatas: una cadena de entrada no tiene que ser leda en su totalidad
para que sea aceptada; solo se requiere que la maquina se detenga comple-
tamente, en un momento determinado, en un estado de aceptacion.
Para simplicar los argumentos sobre maquinas de Turing, en el modelo
estandar se supone que la unidad de control siempre se detiene al ingresar
a en un estado de aceptaci on. Es decir, no se permiten transiciones (q, a)
cuando q F.
Las maquinas de Turing originan las siguientes clases de lenguajes:
1. L es un lenguaje recursivamente enumerable (RE) si existe una MT
M tal que L(M) = L.
2. L es un lenguaje recursivo si existe una MT M tal que L(M) = L y
M se detiene con todas las cadenas de entrada.
Las denominaciones lenguaje recursivamente enumerable y lenguaje re-
cursivo pueden parecer un tanto extra nas; esta terminologa es anterior a
la aparicion de las maquinas de Turing y se ha mantenido vigente hasta el
presente. En el Teorema 6.6.3 se justicara la denominacion recursivamen-
te enumerable (RE) al establecerse que para todo lenguaje RE se puede
construir una MT que enumere secuencialmente sus cadenas.
Obviamente, todo lenguaje recursivo es recursivamente enumerable, pero
la armacion recproca no es (en general) valida, como se demostrara en la
seccion 7.5.
Diagrama de estados o diagrama de ujo de una MT. La funcion de
transicion de una MT se puede presentar como un diagrama de estados
o diagrama de ujo. As, la transicion (q, a) = (p, b, ) se representa por
q p
a|b
6.1. M
y las transiciones:
(q, a) = (q
, b, ),
(q
Ejemplo
La siguiente MT acepta el lenguaje de las cadenas con un
n umero par de ceros sobre el alfabeto {0, 1}.
>
q
0
q
1
q
2
0|0
0|0
b|b
1|1
1|1
Ejemplo
En este ejemplo se construye una MT M que acepta el lenguaje
L = {a
i
b
i
c
i
: i 0} y que se detiene al procesar todas las
entradas. Por consiguiente, L es un lenguaje recursivo aunque no es LIC,
6 CAP
ITULO 6. M
AQUINAS DE TURING
como se demostro en la seccion 4.11; es decir, L no puede ser aceptado por
ning un automata con pila.
Sea M la MT con parametros
= {a, b, c},
= {a, b, c, X, Y, Z, b},
Q = {q
0
, q
1
, q
2
, q
3
, q
4
, q
5
},
F = {q
5
},
y cuya funcion de transicion esta representada por el siguiente diagrama:
>
q
0
q
1
q
2
q
3
q
5
q
4
a|X
b|Y c|Z
X|X
b
|
b
b|b
Y |Y
Y |Y
Z|Z
b|b
Z|Z
a|a
Y |Y
a|a
b|b
Y |Y
Z|Z
La idea utilizada para el dise no de esta MT se puede describir as: la uni-
dad de control cambia la primera a por X y se mueve a la derecha hasta
encontrar la primera b, la cual se sobre-escribe por una Y . Luego se mueve
hacia la derecha hasta encontrar la primera c, la cual se cambia por Z. El
control retrocede entonces hacia la izquierda en busca de la primera X que
encuentre en su camino; este retorno se hace en el estado q
3
. La maquina
avanza luego hacia la derecha, hasta la primera a que quede en la cinta, y
todo el proceso anterior se repite. Si la cadena de entrada tiene la forma
requerida, todas las aes seran reemplazadas por Xs, las bes por Y s y las
ces por Zs. Una vez terminada la transformacion, el control se mueve hacia
la derecha, en el estado q
4
, hasta encontrar la primera celda marcada con
el smbolo blanco b. La MT esta dise nada de tal forma que si la cadena
6.1. M
q
3
XaY bZc Xq
0
aY bZc XXq
1
Y bZc XXY q
1
bZc
XXY Y q
2
Zc XXY Zq
2
c XXY q
3
ZZ
Xq
3
XY ZZ
XXq
0
Y Y ZZ XXY q
4
Y ZZ
XXY Y ZZq
4
b
XXY Y ZZbq
5
b.
La cadena de entrada w = aaabbcc, que no esta en L, se procesa as:
q
0
aaabbcc Xq
1
aabbcc Xaaq
1
bbcc XaaY q
2
bcc XaaY bq
2
cc
XaaY bq
3
bZc
q
3
XaaY bZc Xq
0
aaY bZc XXaq
1
Y bZc
XXaY q
1
bZc XXaY Y q
2
Zc XXaY Zq
2
c XXaY q
3
ZZ
Xq
3
XaY ZZ XXq
0
aY Y ZZ XXXq
1
Y Y ZZ
XXXY Y q
1
ZZ (computo abortado).
Por otro lado, la cadena abbbcc, que tampoco esta en L, se procesara as:
q
0
abbcc Xq
1
bbcc XY q
2
bcc XY bq
2
cc XY q
3
bZc
q
3
XY bZc
Xq
0
Y bZc XY q
4
bZc (computo abortado).
: w = w
R
}. Alfabeto: = {0, 1}.
6. L = {ww
R
: w
ITULO 6. M
AQUINAS DE TURING
6.2. Subrutinas o macros
Hay procedimientos intermedios, como copiar o trasladar cadenas, que se
repiten frecuentemente en el dise no de maquinas de Turing. Es util identi-
car algunos de estos procedimientos, llamados subrutinas o macros, para
simplicar el dise no de maquinas mas complejas. Los macros se pueden
considerar como maquinas de Turing con estado inicial pero sin estados de
aceptacion.
Ejemplo
Macro TI, traslacion a la izquierda. Este macro toma una cadena
de entrada y la traslada una casilla hacia la izquierda. Si la
entrada es la cadena a
1
a
2
a
k
, la accion de TI se puede representar en la
forma
Entrada: b a
1
a
k1
a
k
b
Salida: a
1
a
2
a
k
b b
La echa indica que las casillas se naladas sobre la cinta coinciden. Los
smbolos subrayados en las dos cintas representan los smbolos ledos por
la unidad de control al iniciar y al terminar el macro, respectivamente.
La MT que aparece a continuacion sirve para implementar el macro TI
cuando el alfabeto de entrada es {a, b, c}:
>
q
0
q
1
q
a
q
b
q
c
b|b b|b
a|b b|a
c|b b|c
b|b
A continuacion denimos algunos otros macros utiles; se solicita al lector
dise nar MT que los implementen.
6.2. SUBRUTINAS O MACROS 9
Macro TD, traslacion a la derecha. Traslada la cadena de entrada una casilla
a la derecha:
Entrada: ba
1
a
2
a
k
b
Salida: b b a
1
a
k1
a
k
Macro BI, primer blanco a la izquierda. Busca el primer smbolo b a la iz-
quierda de una cadena w que no posee blancos:
Entrada: bwb
Salida: bwb
Macro BD, primer blanco a la derecha. Busca el primer smbolo b a la derecha
de una cadena w que no posee blancos:
Entrada: bwb
Salida: bwb
Macro NBI, primer smbolo no-blanco a la izquierda. Busca el primer smbolo
diferente de b a la izquierda de una cadena de blancos:
Entrada: abb bb
Salida: abb bb
Macro NBD, primer smbolo no-blanco a la derecha. Busca el primer smbolo
diferente de b a la derecha de una cadena de blancos:
Entrada: bb bba
Salida: bb bba
Macro COPD, copia a la derecha. Copia la cadena w a la derecha de si misma,
separando las dos w por un blanco b. La cadena w no posee blancos:
Entrada: bwb b
Salida: bwb w b
Macro COPI, copia a la izquierda. Copia la cadena w a la izquierda de si
misma, separando las dos w por un blanco b. La cadena w que no posee
10 CAP
ITULO 6. M
AQUINAS DE TURING
blancos:
Entrada: b bwb
Salida: b w bwb
Macro INT, intercambio. Intercambia las cadenas u y v (estas cadenas no
poseen blancos y no necesariamente son de la misma longitud):
Entrada: bubvb
Salida: bvbub
si
1. M comienza a operar con la cinta en blanco en el estado inicial q
0
.
2. Cada vez que M retorna al estado inicial q
0
, hay una cadena u per-
teneciente al lenguaje L escrita sobre la cinta.
3. Todas las cadenas de L son, eventualmente, generadas por M.
6.3. M
Ejemplo
La siguiente MT genera cadenas con un n umero par de aes
sobre el alfabeto = {a}, o sea, el lenguaje L = {a
2i
: i 1}.
>
q
0
q
1
b|a
b|a
Ejemplo
La siguiente MT genera todas cadenas de ceros y unos en el
orden lexicograco (las cadenas se ordenan por longitud y las
cadenas de la misma longitud se ordenan ortogracamente de izquierda a
derecha, considerando 0 < 1): 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100,
101, 110, 111, 0000, 0001, . . . .
>
q
0
q
1
q
2
q
3
0|1
b|b
b|0
b|b
b|b
0|0
1|1
0|0
1|1
0|0
1|0
en orden lexicograco.
Ayuda: no se necesitan mas estados.
3. Sea un alfabeto de n smbolos, = {a
1
, a
2
, . . . , a
n
}. Modicar
la MT del ultimo ejemplo de esta seccion para dise nar una MT que
genere
ITULO 6. M
AQUINAS DE TURING
6.4. Variaciones del modelo estandar de MT
El modelo estandar de MT es susceptible de varias modicaciones que no
alteran la clase de lenguajes aceptados. Las variaciones que estudiaremos
a naden recursos computacionales a las maquinas, individualmente consi-
deradas, pero la capacidad de computo no se incrementa en general: los
modelos son equivalentes al modelo estandar. Indicaremos como se pueden
simular los nuevos modelos por medio maquinas estandares.
Recuerdese que en el modelo estandar, una MT siempre se detiene cuan-
do la unidad de control ingresa en un estado de aceptacion. Es decir, no se
permiten transiciones (q, a) cuando q F.
6.4.1. Estado de aceptacion unico
Toda MT se puede convertir, sin alterar el lenguaje aceptado, en una maqui-
na con un unico estado de aceptacion. Esto se consigue facilmente a nadien-
do transiciones desde los estados de aceptacion originales hasta el unico
estado de aceptacion q
f
, el cual es un estado nuevo. Las transiciones nece-
sarias son de la forma:
(q, a) = (q
f
, a, ),
para todo q estado de aceptacion original y todo a . De esta manera,
se puede considerar que toda MT tiene un unico estado inicial y un unico
estado de aceptacion. Este es un hecho importante para la codicacion
binaria de maquinas de Turing (seccion 7.1).
6.4.2. Maquina de Turing con cinta dividida en pistas
En el modelo multi-pista, la cinta esta dividida en un n umero nito k de
pistas, como se muestra en la siguiente gura:
q
Pista 1
Pista 2
Pista k
a
1
a
2
a
k
.
.
.
.
.
.
.
.
.
.
.
.
La funcion de transicion adquiere la siguiente forma:
(q, (a
1
, a
2
, a
3
, . . . , a
k
)) = (p, (b
1
, b
2
, b
3
, . . . , b
k
), D)
6.4. VARIACIONES DEL MODELO EST
ANDAR DE MT 13
donde los a
i
y los b
i
son smbolos del alfabeto de cinta y D es , o .
En un paso computacional, la unidad de control cambia simultaneamente
el contenido de las k pistas de la celda escaneada y realiza luego uno de los
desplazamientos , o .
Simulacion. Las maquinas de Turing que act uan sobre una cinta dividida
en k pistas aceptan los mismos lenguajes que las MT estandares. Para
concluir tal armacion, basta considerar el modelo multi-pistas como una
MT normal en la que el alfabeto de cinta esta formado por el conjunto de
k-uplas (s
1
, s
2
, . . . , s
k
), donde los s
i
. Es decir, el nuevo alfabeto de cinta
es el producto cartesiano
k
= (k veces).
Ejemplo
Las pistas se usan por lo general para se nalar con marcas o
marcadores ciertas posiciones en la cinta. La MT dise nada
en el ejemplo de la seccion 6.1 para aceptar el lenguaje L = {a
i
b
i
c
i
: i 1}
utiliza implcitamente la idea de marcadores: reemplazar las as por Xs,
las bes por Y s y las ces por Zs no es otra cosa que colocar las marcas X,
Y y Z en las posiciones deseadas. Estas marcas se pueden colocar en una
pista diferente, sin necesidad de sobre-escribir los smbolos de la cadena de
entrada.
6.4.3. Maquina de Turing con m ultiples cintas
En el modelo multi-cintas hay k cintas diferentes, cada una dividida en
celdas o casillas, como se muestra en la gura que aparece en la parte
superior de la pagina siguiente.
Inicialmente, la cadena de entrada se coloca en la primera cinta y las
demas cintas estan llenas de blancos. En un paso computacional, la uni-
dad de control cambia el contenido de la casilla escaneada en cada cinta y
realiza luego uno de los desplazamientos , o . Esto se hace de ma-
nera independiente en cada cinta; el control tiene entonces k visores que
act uan independientemente en cada cinta. La funcion de transicion tiene la
siguiente forma:
(q, (a
1
, a
2
, a
3
, . . . , a
k
)) =
_
p, (b
1
, D
1
), (b
2
, D
2
), (b
3
, D
3
), . . . , (b
k
, D
k
)
_
,
donde los a
i
y los b
i
son smbolos del alfabeto de cinta , y cada D
i
es un
desplazamiento , o .
Simulacion. A pesar de que el modelo multi-cinta parece, a primera vista,
mas poderoso que el modelo estandar, resulta que una MT con m ultiples
cintas se puede simular con una MT multi-pista. A continuaci on bosqueja-
remos el procedimiento de simulacion.
14 CAP
ITULO 6. M
AQUINAS DE TURING
a
1
a
2
a
k
q
.
.
.
Cinta 1
Cinta 2
Cinta k
.
.
.
Una MT con k cintas se simula con una MT que act ua sobre una unica
cinta dividida en 2k + 1 pistas. Cada cinta de la maquina multi-cinta da
lugar a 2 pistas en la maquina simuladora: la pista superior simula la cinta
propiamente dicha y la inferior tiene todas sus celdas en blanco, excepto
una, marcada con un smbolo especial X, que indica la posicion actual del
visor de la maquina original en dicha cinta. La pista adicional de la maquina
simuladora se utiliza para marcar, con un smbolo especial Y , las posiciones
mas a la izquierda y mas a la derecha de la unidad de control en la maqui-
na original. Para simular un solo paso computacional, la nueva maquina
requiere hacer m ultiples recorridos a izquierda y a derecha, actualizando el
contenido de las pistas y la posicion de los marcadores X y Y .
Ejemplo
Dise nar una MT con dos cintas que acepte el lenguaje L =
{a
i
b
i
c
i
: i 0}.
Solucion: Una MT con dos cintas es mas facil de dise nar que la MT estandar
presentada en el segundo ejemplo de la seccion 6.1. La idea es copiar en la
segunda cinta una X por cada a leda y, al aparecer las bes, avanzar hacia la
derecha en la primera cinta y hacia la izquierda en la segunda. Al aparecer
las ces se avanza hacia la derecha en ambas cintas. Si la cadena de entrada
tiene la forma a
i
b
i
c
i
, se detectara simultaneamente el smbolo en blanco b
en ambas cintas.
6.4. VARIACIONES DEL MODELO EST
ANDAR DE MT 15
La funcion de transicion requerida para implementar esta idea es:
(q
0
, (a, b)) = (q
1
, (a, ), (X, )),
(q
1
, (a, b)) = (q
1
, (a, ), (X, )),
(q
1
, (b, b)) = (q
2
, (b, ), ( b, )),
(q
2
, (b, X)) = (q
2
, (b, ), (X, )),
(q
2
, (c, b)) = (q
3
, (c, ), ( b, )),
(q
3
, (c, X)) = (q
3
, (c, ), (X, )),
(q
3
, ( b, b)) = (q
4
, ( b, ), ( b, )),
(q
0
, ( b, b)) = (q
4
, ( b, ), ( b, )).
Se han utilizado cuatro estados, siendo q
4
el unico estado de aceptacion.
6.4.4. Maquinas de Turing no-deterministas (MTN)
En el modelo no-determinista se permite que, en un paso computacional, la
unidad de control escoja aleatoriamente entre varias transiciones posibles.
La funcion tiene la siguiente forma:
(q, a) = {(p
1
, b
1
, D
1
), (p
2
, b
2
, D
2
), . . . , (p
k
, b
k
, D
k
)}
donde los a
i
y los b
i
son smbolos del alfabeto de cinta , los p
i
son estados
y cada D
i
es un desplazamiento , o .
La nocion de aceptacion en una MTN es similar a la de los modelos no-
deterministas de automatas considerados antes: una cadena de entrada w
es aceptada si existe por lo menos un c omputo a partir de la conguracion
inicial q
0
w, y que termina en la conguracion u
1
pu
2
, con p F. Como
antes, los computos en los cuales la maquina se detiene en un estado de no
aceptacion, o en los cuales no se detiene, son irrelevantes para la aceptacion.
Simulacion. Una MTN no tiene mayor poder computacional que una MT
estandar, es decir, una MTN se puede simular con una MT, como lo expli-
caremos a continuacion. Sea M una MTN; se bosquejara la construccion
de una MT M
).
Sea n el n umero maximo de transiciones en los conjuntos (q, a), con-
siderando todo smbolo a y todo estado q Q. Para cada a y
q Q, las transiciones contenidas en (q, a) se pueden enumerar entre 1 y
n. Si hay menos de n transiciones en un (q, a) particular, se repite arbitra-
riamente una de de ellas hasta completar n. De esta manera, cada una de
16 CAP
ITULO 6. M
AQUINAS DE TURING
las transiciones (q, a) se puede considerar como un conjunto de n opciones
indexadas:
(q, a) =
_
(p
1
, b
1
, D
1
)
. .
1
, (p
2
, b
2
, D
2
)
. .
2
, . . . , (p
k
, b
k
, D
k
)
. .
n
_
ndice
En algunos (q, a) habra opciones repetidas, pero esta repeticion no altera
el lenguaje aceptado.
La MT M
copia la cadena
de entrada sobre la cinta 3 y simula la computacion de k pasos que hace
sobre ella la maquina original M, utilizando en el paso j la opcion con
ndice j en el (q, a) correspondiente. Si M
se detiene en un estado de
aceptacion, entonces tanto M como M
encontrara y
simulara tal computo.
ON DE AUT
AQUINAS DE TURING 17
6.5. Simulacion de automatas por medio de
maquinas de Turing
En esta seccion veremos que los automatas simples (AFD, AFN o AFN-)
y los automatas con pila (AFPD o AFPN) se pueden simular con maquinas
de Turing: dado un automata M se puede construir una MT que acepte
el mismo lenguaje que M. Usando estas simulaciones se podra concluir
que tanto los lenguajes regulares como los independientes del contexto son
recursivos.
6.5.1. Simulacion de automatas
Un automata (sin pila) se puede simular con una maquina de Turing: prime-
ro se convierte en un AFDM = (Q, q
0
, F, , ) equivalente, usando las tecni-
cas del Captulo 2. Luego se construye una MT M
)
a nadiendo un nuevo estado q
f
, que sera el unico estado de aceptacion de
M
= (Q
, q
0
, F
, , , b,
) donde
Q
= Q {q
f
}, q
f
es un estado nuevo,
= {b},
F
= {q
f
},
(q, b) = (q
f
, b, ), para todo q F.
Notese que la MT M
= (Q
, q
0
, F
, ,
, b, ) por
18 CAP
ITULO 6. M
AQUINAS DE TURING
medio de
Q
= Q {q
f
}, donde q
f
es un estado nuevo,
= {b},
F
= {q
f
}.
La MT M
).
Notese que la MT as construida no necesariamente se detiene con todas
las cadenas de entrada ya que el automata original M puede ingresar a un
bucle innito con transiciones que inserten y extraigan indenidamente
smbolos en la pila. Por consiguiente, para concluir que todo LIC es re-
cursivo es necesario restringir primero las transiciones del automata. En la
demostracion del siguiente teorema se indica como hacerlo.
6.5.2 Teorema. Todo LIC es un lenguaje recursivo.
6.5. SIMULACI
ON DE AUT
AQUINAS DE TURING 19
Demostraci on. Sabemos que un LIC L dado se puede generar con una
GIC G en FNC en la que la variable inicial no sea recursiva. En G no
hay transiciones , excepto posiblemente S . A partir de G podemos
construir un AFPN M tal que L(G) = L(M) = L usando el procedimiento
del Teorema 5.4.1, y luego una MT M
.
Recursivamente Enumerables
Recursivos
LIC
Regulares
Sabemos que hay lenguajes recursivos que no son LIC y lenguajes LIC que
no son regulares. En el proximo captulo se mostrara que existen lenguajes
RE que no son recursivos y lenguajes que no son RE. Por tal raz on, todas
las contenencias anteriores son estrictas.
En la siguiente tabla se muestra, a manera de resumen, la relacion entre
los lenguajes estudiados y las maquinas que los aceptan.
Lenguajes Maquinas aceptadoras
Regulares Automatas nitos (AFD AFN AFN-)
LIC Automatas con pila no-deterministas (AFPN)
RE Maquinas de Turing (MT)
Recursivos Maquinas de Turing que se detienen con toda entrada
20 CAP
ITULO 6. M
AQUINAS DE TURING
que acepte a
6.6. PROPIEDADES DE CLAUSURA 21
L, haciendo que los estados de aceptacion de M dejen de serlo en
M
) = L.
2. Sean L
1
y L
2
dos lenguajes recursivos aceptados por las MT M
1
y M
2
,
respectivamente. Construimos una MT M con dos cintas que simule a
M
1
en la primera cinta y a M
2
en la segunda. M procesa inicialmente
la entrada en la primera cinta; si M
1
acepta, M tambien aceptara. Si
M
1
se detiene en un estado de no-aceptacion, M procedera a procesar
la entrada en la segunda cinta, simulando a M
2
. Si M
2
acepta, M
tambien aceptara pero si M
2
se detiene en un estado de rechazo, M
tambien se detendra y no aceptara. Puesto que tanto M
1
como M
2
siempre se detienen, L(M) = L
1
L
2
.
3. El procedimiento del numeral anterior ya no sirve en este caso porque
es posible que M
1
o M
2
nunca se detengan al procesar una entrada
particular. En lugar de una simulacion consecutiva de las maquinas
dadas, se necesita que M simule simult aneamente a M
1
y a M
2
. Para
lograrlo utilizamos tambien dos cintas, la primera para simular a M
1
y la segunda para simular a M
2
. En cada paso computacional, M
simula un paso de M
1
y uno de M
2
.
Resulta muy instructivo presentar explcitamente una maquina M que
implemente la anterior idea intuitiva. Aparte de los estados especiales
q
e
y q
f
, denidos mas adelante, los estados de M son parejas de la
forma (p, q), donde p es un estado de M
1
y q un estado de M
2
. Cada
par de transiciones
1
(q
1
, s
1
) = (p
1
, r
1
, D
1
) de la MT M
1
,
2
(q
2
, s
2
) = (p
2
, r
2
, D
2
) de la MT M
2
,
da lugar a la siguiente transicion en la maquina M:
_
(q
1
, q
2
), (s
1
, s
2
)
_
=
_
(p
1
, p
2
), (r
1
, D
1
), (r
2
, D
2
)
_
.
Si alguno de los estados q
1
o q
2
es un estado de aceptacion de M
1
o M
2
, respectivamente, hacemos que M ingrese y se detenga en un
estado q
f
(estado nuevo), que sera el unico estado de aceptacion de
M. Esto se consigue con la transicion
_
(q
1
, q
2
), (s
1
, s
2
)
_
=
_
q
f
, (s
1
, ), (s
2
, )
_
.
22 CAP
ITULO 6. M
AQUINAS DE TURING
Tambien hay que permitir que M siga operando en una de las cintas
incluso si se ha detenido en la otra cinta en un estado de no aceptacion.
Por ejemplo, si
1
(q
1
, s
1
) no esta denida en M
1
, pero
2
(q
2
, s
2
) =
(p
2
, r
2
, D
2
) es una transicion de M
2
, denimos
_
(q
1
, q
2
), (s
1
, s
2
)
_
=
_
(q
e
, p
2
), (s
1
, ), (s
2
, D
2
)
_
,
donde q
e
es un estado especial (nuevo). Por medio de esta transicion,
cuando M ingrese en el estado q
e
en alguna de las cintas, se deten-
dra en dicha cinta pero contin ua la simulacion en la otra. Si M ingresa
al estado (q
e
, q
e
), se detendra sin aceptar.
El siguiente teorema establece una importantsima conexion entre las nocio-
nes de lenguaje recursivo y lenguaje RE, la cual se puede demostrar como
consecuencia del Teorema 6.6.1.
6.6.2 Teorema. Un lenguaje L es recursivo si y solo si L y su complemento
L son RE.
Demostraci on. En la direccion izquierda a derecha, la conclusion es directa:
si L es recursivo, obviamente es RE. L es tambien recursivo (parte 1 del
Teorema 6.6.1) y por lo tanto RE.
La parte esencial de este teorema es la otra direccion: si L y L son RE,
entonces L debe ser recursivo. Para verlo, partimos de dos maquinas M
1
y
M
2
que acepten a L y L, respectivamente. Construimos luego una MT M
que simule simultaneamente a M
1
y M
2
, tal como se hizo en la parte 3 del
Teorema 6.6.1. Puesto que para una entrada w solo hay dos posibilidades,
w L o w L, entonces la maquina M eventualmente se detendra en
la cinta 1 o en la cinta 2. En el primer caso, M acepta la entrada y en
el segundo caso la rechaza. Como M se detiene con toda entrada, L es
recursivo.
El siguiente teorema justica la denominacion recursivamente enume-
rable para los lenguajes aceptados por maquinas de Turing.
6.6.3 Teorema. Para todo lenguaje L aceptado por una MT M, se puede
construir una MT M
(o sea, ) y
simula en la cinta 3 un movimiento de la accion de M sobre .
Accion 2. M
y simula, en
la cinta 3, dos movimientos de la accion de M sobre dicha cadena,
as como un movimiento mas del procesamiento de la cadena .
Accion i, (i 1). M
y
simula, en la cinta 3, i movimientos de la accion de M sobre dicha
cadena, as como un movimiento mas del procesamiento de las i 1
cadenas previamente generadas en la cinta 2. Se incrementa luego,
en la cinta 2, el contador i de cadenas generadas (este es tambien
el contador del n umero de movimientos simulados para cada cadena
generada).
Al concluir la accion i se han generado en la segunda cinta las i primeras
cadenas de
no tenga que
procesarlas en los pasos subsiguientes.
Para acomodar las simulaciones, cada vez mas extensas, puede ser nece-
sario usar en la cinta 3 subrutinas de desplazamiento de cadenas, a izquier-
da o a derecha. En todo caso, al terminar la accion i, M ha utilizado una
porcion nita en cada una de las tres cintas.
ITULO 6. M
AQUINAS DE TURING
(i) Los lenguajes recursivos son cerrados para la concatenacion, es
decir, si L
1
y L
2
son recursivos, L
1
L
2
tambien es recursivo.
(ii) Los lenguajes RE son cerrados para la concatenacion.
(iii) Los lenguajes recursivos son cerrados para la estrella de Kleene,
es decir, si L es recursivo, L
tambien es recursivo.
(iv) Los lenguajes RE son cerrados para la estrella de Kleene.
3. Sea L un lenguaje recursivo pero no RE, demostrar que para toda
MT M que acepte a L hay innitas cadenas de entrada con las cuales
M no se detiene nunca.
6.7. Maquinas de Turing como calculadoras de
funciones
Como las maquinas de Turing pueden transformar las cadenas de entrada,
se pueden utilizar como mecanismos para calcular funciones. Formalmente,
una MT M = (Q, q
0
, q
f
, , , b, ) calcula una funcion f :
(total
o parcial) si para toda entrada w se tiene
q
0
w
q
f
v, donde v = f(w).
El modelo de MT aqu utilizado coincide con el estandar, pero no hay esta-
dos de aceptacion. El estado q
f
, llamado estado nal, se usa para terminar el
procesamiento de la entrada y producir la salida. No se permiten transicio-
nes desde el estado nal q
f
. Notese que M debe terminar el procesamiento
en la conguracion q
f
v, o sea, la unidad de control debe estar escaneando
el primer smbolo de la salida v.
Una MT que calcula una funcion puede utilizar cintas auxiliares, es decir,
se puede usar el modelo multi-cintas. En tal caso, la primera cinta se usa
como la cinta entrada-salida.
Ejemplo
Dise nar una MT M que calcule la funcion suma, en el sistema
de numeracion unitario. Con entrada 1
n
01
m
, M debe producir
como salida 1
n+m
. Aqu, el 0 se usa como separador entre 1
n
y 1
m
, que
representan los n umeros naturales n y m, respectivamente.
Solucion: M va a transformar 1
n
01
m
en 1
n+m
trasladando la cadena 1
m
una casilla hacia la izquierda. El separador 0 se sobre-escribe por 1 y el
6.8. LA TESIS DE CHURCH-TURING 25
ultimo 1 de 1
m
se sobre-escribe por el smbolo b. La funcion de transicion
necesaria para implementar esta idea es:
(q
0
, 1) = (q
1
, 1, ),
(q
1
, 1) = (q
1
, 1, ),
(q
1
, 0) = (q
2
, 1, ),
(q
2
, 1) = (q
2
, 1, ),
(q
2
, b) = (q
3
, b, ),
(q
3
, 1) = (q
4
, b, ),
(q
4
, 1) = (q
4
, 1, ),
(q
4
, b) = (q
f
, b, ).
ITULO 6. M
AQUINAS DE TURING
Hay varias razones por las cuales la maquina de Turing sigue siendo un
formalismo util y ampliamente utilizado:
1. La nocion de paso computacional esta claramente denida. Esto
permite precisar sin ambig uedades el concepto de tiempo de compu-
tacion.
2. La nocion de lugar de almacenamiento esta tambien claramente pre-
sentada, por medio de las casillas individuales en la cinta.
3. Estos dos recursos, tiempo y espacio, aparecen en la maquina de
Turing de una manera muy realista y permiten analizar los efectos
de imponer limitaciones sobre ellos, lo cual es muy adecuado en las
investigaciones sobre complejidad computacional.
Ning un modelo computacional captura de manera tan satisfactoria tales
aspectos de la computacion.
Dise nar una MT es completamente similar a escribir un programa com-
putacional, lo cual establece una conexion intuitiva directa entre maquinas
de Turing y algoritmos. Esta conexion es el fundamento de la armacion
conocida como Tesis de Church-Turing y que puede ser enunciada de la
manera mas directa como:
6.8.1. Tesis de Church-Turing. Todo algoritmo puede ser descrito por
medio de una maquina de Turing.
En su formulacion mas amplia, la Tesis de Church-Turing abarca tanto
los algoritmos que producen una salida para cada entrada como aquellos que
no terminan (ingresan en bucles innitos) para algunas entradas. Tambien
se incluyen los algoritmos deterministas y los no-deterministas.
Para apreciar su signicado y su alcance, hay que enfatizar que la Tesis
de Church-Turing no es un enunciado matematico susceptible de demostra-
cion, ya que involucra la nocion intuitiva de algoritmo. En otras palabras,
la tesis no se puede demostrar. Se podra refutar, no obstante, exhibiendo
un procedimiento efectivo, que todo el mundo acepte que es un verdadero
algoritmo y que no pueda descrito por una maquina de Turing. Pero tal
refutacion no se ha producido hasta la fecha; de hecho, la experiencia acu-
mulada durante decadas de investigacion ha corroborado una y otra vez la
Tesis de Church-Turing. Entre los hechos que contribuyen a apoyar la tesis
podemos destacar los dos siguientes:
1. La adicion de recursos computacionales a las maquinas de Turing
(m ultiples pistas o cintas, no determinismo, etc) no incrementa el
6.8. LA TESIS DE CHURCH-TURING 27
poder computacional del modelo basico. Esto es un indicativo de que
el modelo de MT es lo sucientemente poderoso como para simular
todas las acciones consideradas computacionalmente validas.
2. Todos los modelos o mecanismos computacionales propuestos para
describir formalmente la nocion de algoritmo han resultado ser equi-
valentes a la maquina de Turing, en el sentido de que lo que se puede
hacer con ellos tambien se puede hacer con una MT adecuada, y vice-
versa. Entre los modelos de computacion secuencial equivalentes a la
maquina de Turing podemos citar: las funciones parciales recursivas
(modelo de Godel y Kleene, 1936), el calculo- (modelo de Church,
1936), los sistemas de deduccion canonica (modelo de Post, 1943), los
algoritmos de Markov (modelo de Markov, 1951) y las maquinas de
registro (modelo de Shepherdson-Sturgis, 1963).
Captulo 7
Problemas indecidibles
7.1. Codicacion de maquinas de Turing
Toda MT se puede codicar como una secuencia nita de ceros y unos.
En esta seccion presentaremos una codicacion valida para todas las MT
que act uen sobre un alfabeto de entrada pre-establecido. Para simpli-
car la codicacion, suponemos que toda MT tiene un unico estado inicial,
denotado q
1
, y un unico estado nal, denotado q
2
(en la seccion 6.4.1 se mos-
tro que esta modicacion siempre se puede hacer, sin alterar los lenguajes
aceptados). El alfabeto de cinta de cada MT M es de la forma
= {s
1
, s
2
, . . . , s
m
, . . . , s
p
}
donde s
1
representa el smbolo blanco b, = {s
2
, . . . , s
m
} y s
m+1
, . . . , s
p
son los smbolos auxiliares utilizados por M (cada MT utiliza su propia
coleccion nita de smbolos auxiliares). Todos estos smbolos se codican
como secuencias de unos:
Smbolo Codicacion
s
1
(smbolo b) 1
s
2
11
s
3
111
.
.
.
.
.
.
s
m
11 1
m veces
.
.
.
.
.
.
s
p
11 1
p veces
1
2 CAP
es
01
i
1
01
i
2
0 01
i
k
0.
Los estados de una MT, q
1
, q
2
, q
3
, . . . , q
n
, se codican tambien con secuen-
cias de unos:
Estado Codicacion
q
1
(inicial) 1
q
2
(nal) 11
.
.
.
.
.
.
q
n
11 1
n veces
Las directrices de desplazamiento , y se codican con 1, 11 y 111,
respectivamente. Una transicion (q, a) = (p, b, D) se codica usando ceros
como separadores para los estados, los smbolos del alfabeto de cinta y la
directriz de desplazamiento D. As, la transicion (q
3
, s
2
) = (q
5
, s
3
, ) se
codica como
01110110111110111010
En general, la codicacion de una transicion cualquiera (q
i
, s
k
) = (q
j
, s
, D)
es
01
i
01
k
01
j
01
01
t
0
donde t = 1 o 2 o 3, seg un D sea , o . Observese que aparecen
exactamente seis ceros separados por secuencias de unos.
Una MT se codica escribiendo consecutivamente las secuencias de las
codicaciones de todas sus transiciones. Mas precisamente, la codicacion
de una MT M es de la forma
C
1
C
2
C
r
donde las C
i
son las codicaciones de las transiciones de M. Puesto que
el orden en que se presentan las transiciones de una MT no es relevante,
7.1. CODIFICACI
ON DE M
AQUINAS DE TURING 3
una misma MT tiene varias codicaciones diferentes. Esto no representa
ninguna desventaja practica o conceptual.
111101110100111101101111101101001111010110101110
(b) 0101
3
0101
3
0100101
2
01
3
01
2
0100101
2
01
5
01
2
0100
sigue
1
3
01
2
01
4
01
2
01001
4
01
3
0101
3
01001
5
01
3
0101
3
0100
sigue
1
5
0101
2
0101
3
0010101
2
0101
3
Es corriente identicar las cadenas w y las MT M con sus respec-
tivas codicaciones binarias, y haremos eso en lo sucesivo.
7.2. Enumeracion de maquinas de Turing
Las cadenas binarias (cadenas de ceros y unos) se pueden ordenar lexi-
cogracamente: w
1
, w
2
, w
3
, . . . . El orden se establece por longitud y las
cadenas de la misma longitud se ordenan ortogracamente de izquierda a
derecha (considerando 0 < 1). Este orden comienza as:
0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, 0000, 0001, 0010, . . .
Seg un la codicacion presentada en la seccion anterior, no todas las se-
cuencias binarias representan una MT. Sabemos, por ejemplo, que en la
codicacion de una MT no pueden aparecer tres ceros consecutivos y tam-
poco pueden comenzar con 1. As, las secuencias 0101000110, 010001110
y 1011010110111010 no codican ninguna MT. Si una cadena binaria no
representa el codigo valido de una MT, supondremos que codica la MT
con un solo estado y sin transiciones; tal MT acepta el lenguaje .
Tenemos entonces una enumeracion w
1
, w
2
, w
3
, . . . de todas las cadenas
binarias y una enumeracion M
1
, M
2
, M
3
, . . . de las MT que act uan sobre
un alfabeto dado . Podemos entonces hablar de la i-esima cadena binaria
y de la i-esima MT, M
i
. En realidad, estas enumeraciones coinciden por-
que, seg un lo expuesto en el parrafo anterior, todas las cadenas binarias
codican maquinas de Turing. Notese tambien que en la enumeracion M
1
,
M
2
, M
3
, . . ., cada MT aparece varias veces (porque al cambiar el orden de
7.3. M
}.
El lenguaje universal L
u
es, por consiguiente, un lenguaje RE.
7.4. Lenguajes RE y lenguajes que no son RE
En esta seccion consideraremos ejemplos de lenguajes RE formados por
codigos binarios de maquinas de Turing (lenguajes similares a L
u
), y ex-
hibiremos lenguajes que no son RE, o sea, lenguajes que no pueden ser
reconocidos por ninguna MT.
Seg un la denicion, un lenguaje L es RE si existe una MT M tal que
L(M) = L. Usando la tesis de Church-Turing, se puede concluir que L
es RE exhibiendo un algoritmo de aceptaci on para L. Con entrada u, el
algoritmo debe nalizar con aceptacion si y solo si u L. Si u / L, el
algoritmo puede detenerse, sin aceptar, o puede no detenerse nunca.
Ejemplo
El argumento que se uso en la seccion anterior para concluir
que L
u
es RE se puede presentar como un algoritmo de acep-
tacion:
7.4. LENGUAJES RE Y LENGUAJES QUE NO SON RE 7
1. Entrada: M0w.
2. Ejecutar la MT M con la cadena w.
3. Aceptar si M se detiene en un estado de aceptacion.
Este algoritmo naliza con aceptacion si y solo si M acepta a w.
Ejemplo El lenguaje
L
a
= {M : L(M) = } = {M : M acepta alguna cadena}.
es RE. El siguiente es un algoritmo no-determinista para aceptar L
a
:
1. Entrada: una MT M arbitraria.
2. Conjetura: escoger de manera no-determinista una cadena w sobre el
alfabeto de cinta.
3. Simular M con entrada w.
4. Aceptar si M acepta a w.
Notese que si M acepta aunque sea una cadena, esta sera encontrada, even-
tualmente, en el paso 2. Si M no acepta ninguna cadena, el anterior algo-
ritmo nunca termina. En conclusion: el algoritmo naliza con aceptacion
de la entrada M si y solo si M acepta alguna cadena.
Por medio de un argumento diagonal de interaccion entre las enume-
raciones w
1
, w
2
, w
3
, . . ., de las cadenas binarias, y M
1
, M
2
, M
3
, . . ., de las
MT, es posible construir un lenguaje que no sea recursivamente enumerable.
7.4.1 Teorema. El lenguaje
L = {w
i
: w
i
no es aceptada por M
i
}
no es RE, es decir, no es aceptado por ninguna MT.
Demostraci on. Razonamos suponiendo que L s es RE para llegar a una
contradiccion. Si L fuera RE sera aceptado por una MT M
k
, con respecto
a la enumeracion de maquinas de Turing ya descrita. Es decir, L = L(M
k
)
para alg un k. Se tendra entonces
w
k
L =w
k
no es aceptada por M
k
=w
k
/ L(M
k
) = L.
w
k
/ L =w
k
/ L(M
k
) =w
k
es aceptada por M
k
=w
k
L.
8 CAP
, la maquina M
acepta el lenguaje L
d
, o sea,
L(M
) = L
d
. Esto signica, en particular, que L
d
es RE lo cual contradice
el Teorema 7.4.1.
10 CAP
Ejemplo
El hecho de que el lenguaje universal L
u
no es recursivo, esta-
blecido en el Teorema 7.5.1, equivale a armar que el siguiente
problema de decision (el problema universal) es indecidible:
Dada una MT M cualquiera, sobre un alfabeto de cinta pre-
determinado, y una cadena w
, acepta M a w?
7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES 11
P se satisface
P no se satisface
Entrada o
Instancia
Algoritmo
de decision A
SI
NO
Notese que las entradas o instancias para este problema son de la forma
M0w donde M es el codigo de una MT y w es el codigo de una entrada.
Tecnica de reduccion de problemas
Conociendo que ciertos problemas son indecidibles, se puede concluir que
otros problemas de decision tambien lo son si se razona por contradiccion.
Para ser mas precisos, supongase que ya se sabe que un cierto problema P
1
es indecidible (como el problema universal, por ejemplo). Podramos con-
cluir que un problema dado P
2
es indecidible razonando por contradiccion:
si P
2
fuera decidible tambien lo sera P
1
. Esta contradiccion mostrara que
el problema P
2
no puede ser decidible. Al razonar de esta manera se dice
que el problema P
1
se reduce al problema P
2
.
Para utilizar esta tecnica de reduccion, es necesario dise nar un algoritmo
A (o una maquina de Turing) que sea capaz de convertir una entrada cual-
quiera u del problema P
1
en entradas para el problema P
2
de tal manera
que, al aplicar la supuesta MT M que resuelve el problema P
2
, se llegue
a una decision, SI o NO, del problema P
1
para la entrada u. La siguiente
graca ilustra este procedimiento; el algoritmo A, que aparece represen-
tado por el rectangulo a trozos, es la parte esencial del procedimiento de
reduccion.
12 CAP
Ejemplo
Problema de la parada o problema de la detencion. Este fa-
moso problema (halting problem, en ingles), considerado por el
propio Turing, consiste en preguntar si existe un algoritmo para el siguiente
problema de decision:
Dada una MT M cualquiera, sobre el alfabeto de cinta , y una
cadena w
M
Sea M0w una entrada arbitraria (M y w codican MT y cadenas sobre
, respectivamente). La maquina M
M
Sea M0w una entrada arbitraria. Construimos una MT M
inicia su
procesamiento con la cinta en blanco, podemos ejecutar la maquina M,
con entrada M
(codicada). M decide si M
se detiene o no y, por lo
tanto, se obtiene una decision sobre si M se detiene o no con entrada w.
Conclusion: si el problema de la cinta en blanco fuera decidible, tambien lo
sera el problema de la parada.
Lo anterior tambien permite concluir que el lenguaje
L
b
= {M : M se detiene al operar con la cinta en blanco}
no es recursivo.