Está en la página 1de 12

Captulo 4

AUTMATAS
Por autmata en la matemtica discreta entendemos una especie de computadora abstracta
que dada una entrada produce una salida, es decir, calcula alguna funcin. Generalmente la
entrada es una cadena de smbolos de un alfabeto1, y la salida tambin, posiblemente sobre
otro alfabeto.
Vamos a estudiar en este captulo tres clases de autmatas, que se llaman autmatas finitos,
mquinas secuenciales, y, mquinas de Turing, y despus, en el captulo de lenguajes, mquinas
de pila. Las primeras dos son de memoria finita, y las otras dos de memoria ilimitada pero de
una finita cantidad de informacin en cualquier momento durante su computacin.
Podramos observar que una computadora electrnica, por mucha memoria RAM y disco
duro que tenga, es un autmata finito, pero s la cantidad de memoria nos permite para la
mayora de propsitos seguir como si fuera ilimitada. Pero no es nada difcil definir en unas
cuantas lneas una funcin que agota toda la memoria de cualquier computadora enseguida,
como por ejemplo A(2, 4, 6) (A para Ackermann) donde A(m, p, n) se define as para m, p, n 0 :
A(m, 0, 0)
A(m, 1, 0)
A(m, p + 2, 0)
A(m, 0, n + 1)
A(m, p + 1, n + 1)

=
=
=
=
=

m
0
1
A(m, 0, n) + 1
A(m, p, A(m, p + 1, n)) para todo m, n, p 0

Aqu p es una operacin, digamos opp , y m opp n = m opp1 m opp1 m...opp1 m (n veces). Entonces se puede ver que op0 es adicin, op1 es multiplicacin, op2 es exponenciacin:
m
A(m, 2, n) = mn . op3 es una torre de exponentes, A(m, 3, 3) = mm . En general opp+1 se obtiene de opp en la misma forma que exponencin se obtiene de multiplicacin y multiplicacin de
adicin. (Hemos definido A(0, p, 0) = 1, para todo P > 1, mientras 00 por ejemplo queda sin
definicin en la matemtica, pero nuestro inters es como crece de rpido A.)
Sugerimos que tome unos minutos para programar esto en Maple, a ver que pasa con
A(2, 3, 4). Claro, si lo programamos diciendo que 0 es adicin, 1 es multiplicacin y 2 es exponenciacin, todas operaciones incorporados a Maple, y vamos a la recursin solo para P > 2
podemos hacer A(2, 3, 4) sin problema (y no presenta demasiada dificultad a mano). A(2, 3, 5)
es algo sorprendente. Y A(2, 3, 6)? A(2, 4, 4)?
As que conviene ver cules son las limitaciones verdaderas de la memoria finita.
Notacin. Sea un alfabeto. La cadena vaca se llama para no confundirla con el conjunto
vaco de cadenas. Dadas dos cadenas c1 y c2 , c1 c2 significa la concatenacin de las dos. Si
a , cuando escribimos a puede significar o simplemente la letra a o la cadena de longitud 1
cuya nica letra es a, y cul es ser claro del contexto. Por ejemplo, si a y c es una cadena
sobre , ac significa la concatenacin de la cadena a con c. Si C1 y C2 son dos conjuntos de
cadenas, C1 C2 significa el conjunto {c1 c2 : c1 C1 y c2 C2 }. Si C es un conjunto de cadenas,
i
C 0 = {}, C k+1 = CC k para todo natural k, y C =
i=0 C , es decir, una concatenacin de 0
o ms palabras de C. Para una cadena c, con |c| queremos decir la longitud de c.
1Cuando

decimos alfabeto, tcnicamente es simplemente un conjunto finito, pero lleva la connotacin de que
sus miembros son smbolos que son legibles en algn sentido.
63

64

4. AUTMATAS

1.

Autmatas finitos y lenguajes regulares

Definicin 4.1. Un autmata finito A sobre un alfabeto es (K, , , p0 , F ) donde K es un


conjunto finito de estados, es una funcin de K en K, p0 es un estado (el estado inicial ), y
F es un conjunto de estados (los estados finales). Extendemos la funcin al dominio K ,
siendo el conjunto de todas las cadenas finitas sobre los smbolos de , diciendo
(q, ) = q
Para c en y a en , (q, ac) = ((q, a), c).
El conjunto aceptado por A es {c : (p0 , c) F }, y se llama C(A).
Definicin 4.2. Para un alfabeto , un subconjunto de es regular si es C(A) para algn
autmata A sobre .
Ejemplo 4.3. Sea = {0, 1}. Sea M = {c : c representa en binaro un mltiplo
de 7}. Entonces M es regular. El autmata que acepta M tendr 7 estados, que llamamos {0, 1, 2, 3, 4, 5, 6}, y queremos que para todo c, (0, c) = resto(val(c, 2), 7) (val definido como en la parte de aritmtica de grandes nmeros). Esto se va a cumplir si definimos
(n, 0) = resto(2n, 7) y (n, 1) = resto(2n + 1, 7). Entonces la tabla para definir sera:
0 1 2 3 4 5 6
0 0 2 4 6 1 3 5
1 1 3 5 0 2 4 6
donde (p, i) se ve en la fila i, columna p. El estado inicial es 0, y F = {0}. As el autmata
acepta la cadena nula .
Ejemplo 4.4. Sea M = {c {0, 1} , |c| 4 : los ltimos 4 smbolos de c representan un nmero
primo en binario}. Entonces M es regular. En la memoria es necesario guardar slo las ltimas 3
entradas, que hace necesario estados {, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111}
pero adems necesitamos los estados finales que llamamos {p2 , p3 , p5 , p7 , p11 , p13 }, 21 estados en
total. La tabla para esta :
0
1

00

01

10

11

000

001

010

011

100

101

110

111

p2

p3

p5

p7

p11

p13

00

10

000

010

100

110

000

p2

100

110

000

010

100

110

100

110

010

110

110

010

01

11

001

011

101

111

001

p3

p5

p7

001

p11

p13

111

p5

p7

p11

111

p7

p11

El estado inicial es .
Despus de este ejemplo, sera natural preguntar si el conjunto de todos los primos puede
ser regular. La respuesta es no, pero la demostracin es un poco engorrosa para contarla aqu.
Pero no es sorprendente cuando consideramos que ningn autmata puede aceptar {0n 1n : n
natural}. La demostracin de so es sencilla: tendra que aceptar una cadena 0n 1n donde n es
mayor que el nmero de estados, as que algn estado tiene que ocurrir dos veces, y si borramos
todos los 0 entre las dos ocurrencias sas, el autmata tiene que aceptar esa nueva cadena
porque termina en el mismo estado, pero ahora hay menos 0 que 1.
Es claro que la interseccin de dos conjuntos regulares es regular, y lo mismo con la unin
y el complemento (ver ejercicio 2).
No es tan inmediato que M R es regular siempre que M es regular, donde C R significa el
conjunto formado por todas las cadenas de C escritas al revs. Tampoco es tan inmediato que
si M y N son regulares, entonces M N lo es. Una herramienta terica muy til en estos y
otros problemas es el autmata finito no determinista, que puede ofrecernos, para un estado y
entrada dados, una eleccin entre varios posibles nuevos estados, y esto puede ocurrir varias
veces durante la lectura de la cadena de entrada. El autmata acepta la cadena de entrada si
es posible hacer todas estas elecciones de manera tal de llegar a un estado final al terminar la
lectura. A primera vista, parecera demasiado fcil: seguro que estos autmatas van a aceptar
algn conjunto que los autmatas finitos deterministas no son capaces de distinguir. Entonces es
algo sorprendente que no: siempre hay un autmata determinista que acepta el mismo conjunto.
Veamos esto formalmente.

1. AUTMATAS FINITOS Y LENGUAJES REGULARES

65

Definicin 4.5. Un autmata finito no determinista (afnd) es (K, , , p0 , F ) donde K, , p0 y


F son como en la definicin de autmatas finitos y es una funcin de K a los subconjuntos
de K. Para una cadena c de longitud k de y un estado p de K, una computacin de p para
c es una sucesin de estados p = p0 , . . . , pk tal que pi (pi1 , ci ) para todo i = 1, . . . , k, y en
tal caso decimos que (p, c) A pk . Se dice que A acepta c si (p0 , c) A q para algn q F .
Veamos que fcil es demostrar que M R es regular cuando M es regular, una vez que sabemos
que los afnd aceptan slo conjuntos regulares. Sea M el conjunto aceptado por el autmata
finito A = (K, , , p0 , F ). Definimos el afnd B = (KB , , B , p0B , FB }) donde KB = K {p0B }
(se supone que p0B
/ K), FB = {p0 } si p0
/ F y FB = {p0 , p0B } si p0 F , B (p0B , a) = {p :
(p, a) F } para cada a , B (q, a) = {p K : (p, a) = q} para cada (q, a) K .
Ahora, suponga que B acepta c. Si c = entonces tiene que ser que p0B FB , luego p0 F
as que A acepta = R tambin. Si c 6= , sea c = c1 ck . Existe una sucesin de estados
q0 , . . . , qk tal que cada qi B (qi1 , ci ), i = 1, . . . , k, y con qk FB . Pero esto implica que
(qi , ci ) = qi1 para i = 2, . . . , k, y para i = 1 implica que (qi , c1 ) = r para algn r F . Ya
que qk FB tiene que ser que qk = p0 porque (q, a) nunca incluye a p0B . Es claro entonces
que (p0 , ck c1 ) = r F , es decir, A acepta cR .
Recprocamente, suponga que A acepta c. Si c = , debe ser p0 F , as que p0B FB y
por tanto B acepta cR = tambin. Si c 6= , sea c = c1 ck . Existe una sucesin de estados
p0 = q0 , . . . , qk F tal que qi = (qi1 , ci ) para i = 1, . . . , k. Entonces para i = 1, . . . , k es
qi1 B (qi , ci ), y siendo qk F , qk B (q0B ) Por tanto p0B , qk , . . . , q0 es una sucesin de
estados de B que verifica que B acepta ck c1 = cR .
As vemos que para toda cadena c, c es aceptada por A si y slo si cR es aceptada por B.
Para la teora que sigue, ser conveniente extender a K para los afnd como hicimos para los autmatas finitos:
Definimos (p, ) = {p}; y para a y c definimos
[
inductivamente (p, ac) = {(q, c) : q (p, a)}.
Lema 4.6. Sea A = (K, , , p0 , F ) un afnd. Para todo p, q K y c , (p, c) = {q :
(p, c) A q}.
Demostracin. Por induccin sobre |c|. Si c = , es p el nico q (p, ). La nica sucesin
de estados que cumple la definicin de (p, ) A p es la sucesin {p}, que s lo cumple porque
empieza y termina en p y la nica condicin adicional no puede ser incumplida porque no hay
(qi1 , qi ).
Suponga que algn c cumple para todo estado p, (p, c) = {q : (p, c) A q}. Vamos a
demostrar que esto implica que para todo estado p y todo a en , (p, ac) = {q : (p, ac) A q}.
Ahora,
[ [
(p, ac) = bigcup{(q, c)) : q (p, a)} = { {r : (q, c) A r} : q (p, a)}.
pero es claro de las definiciones que
(q, c) A r&q (p, a) si y solo si (p, ac) A r.
Teorema 4.7. El conjunto aceptado por un autmata finito no determinista es aceptado por
algn autmata finito determinista.
Demostracin. Sea A = (K, , , p0 , F ) un autmata finito no determinista. Definimos el autmata finito determinista B [
= (KB , , B , p0B , FB ) como sigue: KB es el conjunto de los
subconjuntos de K. B (S, a) = {(q, a) : q S}. p0B = {p0 }. FB = {S K : S F 6= }. Es
fcil demostrar por induccin que para cada S K y c
[
B (S, c) = {(p, c) : p S}.
La base de la induccin, para evitar cualquier confusin, debera ser para |c| = 0 y |c| = 1, que se
demuestran directamente de las definiciones. Suponiendo que vale para todo c con |c| = k > 0,

66

4. AUTMATAS

sea c = c1 ck+1 . [
Sabemos que B (S, c1 ck+1 ) = B (B (S, c1 ), c2 ck+1 ).
[Por la hiptesis de
induccin, esto es {(r, c2 ck+1 ) : r B (S, c1 )}. Ya que B (S, c1 ) = {(p, c1 ) : p S},
(p, c1 ) tal que q (r, c2 ck+1 )}.
podemos expresar
[ B (S, c1 ck+1 ) como {q : p S r [
Pero (p, c) =
{(r, c2 ck+1 ) : r (p, c1 )}, as que
{(p, c) : p S} = {q : p S
r (p, c1 ) tal que q (r, c2 ...ck+1 )} tambin.
Ahora, B acepta c si y slo si B ({p0 }, c) contiene un estado final. Pero B ({p0 }, c) = (p0 , c)
segn lo demostrado recin, lo cual, segn el ltimo Lema, es {q : (p0 , c) A q}. Concluimos
que B acepta c si y slo si (p0 , c) A q para algn estado final q, es decir si y slo si A acepta
c.
1.1. La caracterizacin de Kleene. La caracterizacin ms importante de los conjuntos regulares sobre , que por muchos autores se da como su definicin, es la de Kleene:
Definicin 4.8. Sea un alfabeto y sea K(), o simplemente K cuando est entendido, la
mnima familia de subconjuntos de que satisface las siguientes propiedades:
1. Todo conjunto finito pertenece a K.
2. Si C y D pertenecen a K, entonces tambin le pertenecen C D, CD y C .

Dicho en forma ms compacta, K es la familia ms chica de conjuntos de que incluye


todo conjunto finito y es cerrada bajo unin, concatenacin y la operacin C .
Los minimalistas axiomticos sacaran la redundancia de la primera diciendo que {a} K
para cada a , y K.
Teorema 4.9. La familia de conjuntos regulares sobre es K().

Demostracin. En el conjunto de ejercicios se encuentran los de la clausura de los conjuntos


regulares bajo unin, concatenacin, y C , y que los finitos son regulares, que se demuestra
mediante autmatas no deterministas. Ya que K es la mnima familia as clausurado, est
incluida en los conjuntos regulares.
Para la otra inclusin, definimos primero que un sistema de ecuaciones simultneas sobre el
conjunto de incgnitas {Bq : q J}
[
{Bq = Aq ( Aqp Bp ) : q J}
pJ

es bien formado si cada coeficiente Aq o Aqp est en K() y ningn Aqp contiene .
Ahora sea A = (K, , , p0 , F ) un autmata finito. Para cada estado q sea Bq = {c : (q, c)
F }. Para cada q K se cumple la ecuacin:
[
B q = Aq
aB(q,a) ,
a

donde Aq = {} si q F y Aq = si q
/ F.
Es claro que este sistema de ecuaciones es bien formado.
Esas son |K| ecuaciones con las |K| incgnitas {Bq : q K}. Si podemos resolver el sistema
tendremos Bp0 , y veremos que pertenece a K.
Entonces vamos a demostrar que dado un sistema de ecuaciones bien formado con n > 1
variables podemos derivar otro sistema equivalente con n 1 variables, eliminando cualquiera
de las variables que queremos. Esto nos permite llegar a un sistema bien formado de una sola
ecuacin que dice que Bp0 es igual a una expresin formada por uniones, concatenaciones y
operaciones de conjuntos de K, es decir, que Bp0 K.
Vamos a proceder a resolverlas por algo parecido a la eliminacin Gaussiana. Pero las
constantes son conjuntos. Estos conjuntos son de K. Al hacer la eliminacin, tenemos que
asegurar que las nuevas constantes siguen siendo de K, y aseguramos esto notando que formamos
las nuevas constantes con unin, concatenacin, y la operacin . Encontramos un requerimiento
tcnico ms: cada constante que se concatena con una incgnita no tiene que contener .

1. AUTMATAS FINITOS Y LENGUAJES REGULARES

67

Formalmente, vamos a demostrar la siguiente asercin:


Dado un sistema bien formado sobre J, con |J| > 1,
para cada q J existe un sistema bien formado sobre J {q}.
Es decir, que podemos eliminar cualquier q. Para demostrar sto, necesitamos:
/ A y S = T AS, entonces S = A T .
Lema 4.10. Si S, A y T son subconjuntos de ,
Demostracin. Si T es vaco el nico conjunto que puede cumplir S = T AS es S = , en cuyo
caso S = A T tambin. Suponga que T no es vaco. Demostramos primero por induccin sobre
n que An T S. Se cumple para n = 0 porque en este caso la asercin es simplemente que
T S, conclusin inmediata dada S = T AS. Suponga que se cumple para algn n, An T S.
De S = T AS sabemos que AR S para cualquier R S, as que A(An T ) = An+1 T S.
As queda demostrado por induccin que An T S para todo n.
De eso concluimos que A T S.
Para la otra inclusin, si S A T no es vaco, sea c una cadena de longitud mnima en
S A T . De S = T AS, o c T o c AS, pero c
/ T porque T A T (siendo A ),
entonces c AS, as que c = de con d A y e S. Ahora d 6= porque
/ A por hiptesis,

as que |e| < |c|. Por la minimalidad de |c| en S A T , siendo e S, e A T . Pero esto
conduce a una contradiccin porque entonces c AA T A T . La nica manera para evitar
esta contradiccin es admitir que S A T es vaco, es decir, que S A T . 
Sea q el estado que decidimos eliminar. Si S
Aqq es vaco ya tenemos Bq en funcin de los
dems. Si Aqq no es vaco, poniendo T = Aq ( pJ{q} Aqp Bp ), tenemos Bq = T Aqq Bq . Por
el Lema, Bq = Aqq T , expresando Bq en trminos de las otras Bp . Al sustituir eso en el lugar de
Bq en cada ecuacin para Bp para p J {q} tenemos nuevas ecuaciones
Bp = Ap Apq Aqq T

[
rJ{q}

Apr Br = Ap

Apr Br .

rJ{q}

Vamos a ver cunto vale el coeficiente Apr de Br en sto.


Apq Aqq T = Apq Aqq (Aq (

Aqr Br )

rJ{q}

as que Apr = Apq Aqq Aqr Apr . Esto muestra dos cosas: puesto que Apr , Aqr , Aqq y Apq son de
/ Apr porque
/ Apq y por tanto tampoco en Apq Aqq Aqr , y
K(), Apr es de K(). Adems,

/ Apr . Finalmente, las nuevas cadenas para acompaar a Ap en Ap vienen de Apq Aqq T , y son
de Apq Aqq Aq , as que Ap = Ap Apq Aqq Aq , que es de K() puesto que Ap , App , Aqq y Aq lo son.
(Es interesante notar que Ap si y slo si Ap , y as siguiendo hasta el primer conjunto
de ecuaciones, en donde Ap = o , segn p F o no.)
Aunque podemos elegir los Bq por eliminacin Gaussiana en cualquier orden, nos conviene
dejar Bp0 para el ltimo, cuando expresando Bp0 en trminos de las dems incgnitas significa
expresarle como slo la constante Ap0 de la ltima iteracin, es decir, como un conjunto de
K (). 
Ilustramos este teorema a travs de algunos ejemplos. Consideremos los autmatas sobre
{0, 1} dados en la siguiente figura, donde seguimos la convencin de que los estados finales son
representados por cuadrados y el estado inicial ms negro.

68

4. AUTMATAS

El autmata 1 acepta las cadenas que terminan en 1. Las ecuaciones son Bp = 0Bp 1Bq y
Bq = 1Bq 0Bp , y de la segunda sacamos Bq = 1 ( 0Bp ), que al sustituir en la primera da
Bp = 0Bp 11 (0Bp ) = (011 0)Bp 11 , y finalmente Bp = C(A) = (011 0) 11 . Estaba
esperando {0, 1} 1, que escribiramos de inmediato sin el algoritmo? Pero no se presenta este
algoritmo como para sacar la expresin regular ms bonita y compacta posible, sino como
para sacar alguna expresin regular y as demostrar el teorema de Kleene. Pero en resolver
las ecuaciones no estamos obligados a seguir el procedimiento de la demostracin: en este caso
podemos observar que enchufando la primera ecuacin en la segunda vemos Bq = {} Bp y
enchufando esto de vuelta en el primero y reordenando vemos Bp = {1} {0, 1}Bp , y de all el
lema nos da Bp = {0, 1} 1.
A veces el procedimiento saca la expresin ms compacta, como por ejemplo, en el caso del
autmata 2, que acepta el revs del autmata 1, es decir, todas las cadenas que empiezan con
1. Ahora las ecuaciones son Bp = 1Bq 0Br Br = {0, 1}Br , y Bq = 1Bq 0Bq = {1, 0}Bq ,
dando Bq = {1, 0} = {1, 0} , y Br = {0, 1} = Sustituyendo en Bp da Bp = 1{1, 0} ; ms
compacto no se puede esperar.
El autmata 3 acepta las cadenas sobre {0, 1} que, interpretadas como nmeros representados en el sistema binario, son divisibles por 3. Por ejemplo, las de longitud 5 son 00000,
00011, 00110, 00101, 01100, 01111, 10010, 10101, 11000, 11011, 11110. El autmata tiene que
saber en cul miembro de Z3 est: si ha recibido un nmero i, y ahora viene un 0, va a tener
2i(mod3), y si recibe 1 es 2i + 1 (mod3), as que podemos llamar 0, 1, 2 a los tres estados, y
(i, a) = 2i+a(mod3). Por eso el grfico del autmata 3. Las ecuaciones son B0 = 0B0 1B1 ,
B1 = 0B2 1B0 , B2 = 0B1 1B2 . Sustituyendo B1 en B0 y B2 :
B0 = 0B0 1(1B0 0B2 ) = (0 11)B0 10B2
B2 = 0(1B0 0B2 ) 1B2 = (00 1)B2 01B0
Poniendo B2 = (00 1) 01B0 y sustituyendo en la nueva ecuacin para B0 :
B0 = 0B0 1(1B0 0(00 1) 01B0 ) = (0 11 10(00 1) 01)B0 ,
y de all sacamos finalmente
B0 = (0 11 10(00 1) 01) .
Sabemos que si no hemos hecho un error manipulativo esto s es correcto. Pero podemos
ver directamente que es correcto pensando as: para aceptar c, o c = o c 0B0 o c 1D1B0
donde D consiste de todas las cadenas que llevan el estado 1 al estado 1 sin pasar por el
estado 0. Por inspeccin del autmata D = (01 0) , Entonces B0 = 0B0 1(01 0) B0 =
(0 1(01 0) 1)B0 , y por el Lema B0 = (0 1(01 0) 1) (concatenado con pero eso es como
multiplicar por 1). Pensando un poco se ve que 1(01 0) 1 = 11 10(00 1) 01 (por ejemplo,
1(0110)(01110)1 = (10)(1100111)(01)).
Hemos mencionado cosas, por ejemplo clausura bajo concatenacin, que son ms difciles de ver por la caracterizacin por autmata. Pero, quiere demostrar directamente por la
caracterizacin de Kleene la clausura bajo complementacin de K?

2. MQUINAS DE TURING

69

1.2. Mquinas Secuenciales. Ahora vamos a ver un tipo de autmata de memoria


finita que particiona en ms de dos conjuntos, mientras el autmata finito particiona en 2.
Lo hacen por emitir una salida, que depende de la entrada, que viene de un alfabeto finito, y
el estado.
Definicin 4.11. Una mquina secuencial es (K, , , , , p0 ) donde K es un conjunto finito
de estados, y son alfabetos finitos, es una funcin K K, es una funcin
K , y p0 , el estado inicial, es en K.
Extendemos a K K como para el autmata finito, y a K en forma
semejante:
(q, ) =
(q, ac) = (q, a)((q, a), c) para todo a , c .
Por ejemplo, definimos una mquina secuencial que emite i {0, 1, 2} cuando la cadena de
entradas en {0, 1}, interpretada como nmero representado en binario, es i(mod3). Los estados
son 0,1,2. En la tabla T que sigue, Tij = (q, a) significa que (j, i) = q y (j, i) = a:
0
1
2
0 0,0 2,2 1,1
1 1,1 0,0 2,2
Es decir, es igual a la del autmata 3 de un ejemplo anterior que aceptaba mltiplos de 3, y
(i, j) = (i, j) para todo i, j.
Es fcil demostrar, y no muy sorprendente, que para cualquier mquina secuencial (K, , , , , p0 )
y cada a el conjunto {c : (p0 , c) termina en a} es regular. Casi recprocamente,
para cada conjunto regular R sobre hay una mquina secuencial con = {0, 1} tal que
R {} = {c : (p0 , c) termina en 1} (lamentablemente, no hay forma de hacer que (q, )
termine en 1).
La primera propiedad es un caso especial de la pregunta, para un conjunto regular R dado
sobre , si {c : (q, c) R} es regular. La respuesta es s: Sea A = (KA , , A , p0A , FA )
un autmata con C(A) = R, y sea M = (K, , , , , p0 ) la mquina secuencial. Sea B el
autmata (KB , , B , p0B , FB ), donde KB = K KA , B ((p, q), a) = ((p, a), A (q, (p, a))),
p0B = (p0 , p0A ). B quiere aceptar c si A acepta (q, c), entonces manda c a M carcter
por carcter, observando cada salida que resulta de M y mandndola a A. Cada vez que A dice
s, acepto, B acepta. Entonces FB = {(p, q) KB : q KA }.
2.

Mquinas de Turing

A.M. Turing fue un pionero de la computacin, tanto en la ingeniera como en la teora. En


los aos 30 particip en la bsqueda de la formalizacin matemtica de la nocin de computabilidad, de funcin computable. Haba varias definiciones que pretendan captar esta nocin,
que despus de mucha discusin fueron demostradas ser equivalentes. Una era la mquina de
Turing.
La mquina de Turing es de estados finitos pero trabaja con una cinta que tiene escrita en
cualquier momento dado una cantidad finita de informacin, pero que puede ser aumentada
por la mquina en una forma controlada. Entonces la memoria es finita pero ilimitada. La
memoria tiene dos partes: una parte finita que constituye los estados internos de la mquina,
que es como las de los autmatas finitos y las mquinas secuenciales, y una cinta infinita en las
dos direcciones en que est escrita una cantidad finita de informacin, en el sentido que todas
menos un conjunto finito de casillas tiene escrito blanco. La mquina, posicionada en una
casilla de esta sucesin, lee el carcter, escribe all uno nuevo de su alfabeto finito, dependiendo
del estado interno y el carcter ledo, entra en un nuevo estado, que depende del estado y del
carcter ledo, y se mueve una casilla a la derecha o a la izquierda, dependiendo del estado y el
carcter ledo. Si no hay instrucciones acerca de este carcter y estado, la mquina para.

70

4. AUTMATAS

La mquina puede tener la tarea de aceptar o rechazar una cadena sobre un alfabeto finito
dado, o calcular una funcin de uno o ms argumentos naturales.
Formalmente:
Definicin 4.12. Una mquina de Turing es M = (K, , , , , p0 , pf ) donde K es un conjunto finito de estados, y son alfabetos finitos con , (el blanco), es
una funcin de un subconjunto de (K pf ) K {I, D}, p0 y pf son estados (el
estado inicial y el estado final respectivamente). Una configuracin de M es (t, q, i) donde t
es una sucesin infinita en ambas direcciones sobre , es decir una funcin Z , con slo
finitos valores distintos de , es decir en donde existen m, n tal que t(i) = para todo i < m y
todo i > n, q K, e i Z (la posicin de la cabeza de lectura). De dos configuraciones (t, q, i)
y (s, p, j) se dice que (t, q, i) (s, p, j) si (q, ti ) est definida e igual a (p, a, d) donde
si = a y sk = tk para todo k 6= i,
si d = I entonces j = i 1 y si d = D entonces j = i + 1.
Se define la relacin sobre configuraciones como la mnima relacin transitiva que incluye
. Una configuracin (t, p, i) es un paro si (p, ti ) no est definido. Se dice que M acepta una
cadena c si la configuracin (t, p0 , 1) (s, pf , i) para algn s, i donde tk = para todo
k 0 y para todo k > |c| y t1 . . . t|c| = c. Se dice que M rechaza c si (t, p0 , 1) (s, p, i) donde
(s, p, i) es un paro y p 6= pf .
Se dice que M acepta un conjunto C si acepta cada cadena c C y rechaza cada
cadena c C.
Observe que para que M acepte C, M tiene que parar en algn momento para cada c, sea
c C o no. Si hay alguna cadena que lo hace seguir para siempre, no acepta ningn conjunto.
Nos tiene que dar siempre una respuesta a la pregunta c C?
Notemos (t, pf , i) siempre es un paro, porque hemos excluido (pf , a) del dominio de . Para
aceptar c, la mquina tiene que parar en pf . Para rechazar c, tiene que parar en un estado
p 6= pf .

Ejemplo 4.13. Una mquina de Turing que acepta las cadenas de {0, 1} en que el nmero
de caracteres 1 es igual al nmero de caracteres 0. Segn las reglas, tenemos que recibir una
configuracin (t, p0 , 1) con c y con t0 t1 . . . t|c| t|c|+1 = c. El plan es el siguiente: la mquina
busca el primer carcter a la derecha que no es 2 (inicialmente ser el primer carcter de c,
si hay, pero sta es la operacin que proyectamos para p0 y la repetimos). Si encuentra un
primero, va a pf . Si encuentra un 0 lo cambia a 2 y busca un 1 a la derecha. Si encuentra
primero esta vez, para, sino cambia el 1 a 2 y busca a la izquierda a , y cuando lo encuentra se
mueve uno a la derecha sin cambiarlo y entra en estado p0 . Si consigue cambiar en 2 todas las
casillas 1 hasta |c|, acepta. Entonces K = {01, 0, 1, , pf } que significan buscar a la derecha
por el primer carcter en {0, 1}, buscar el primer 0 a la derecha, buscar el primer 1 a la
derecha, y buscar el primer a la izquierda. = {0, 1, 2, } y = {0, 1}. El estado inicial
es 01 y la tabla de transiciones (fila i, columna j es (i, j) a menos que sea paro, que es
equivalente a dejarlo en blanco excepto que queremos implicar que el paro es intencional) es:
0
1
2

01 1, 2, D 0, 2, D 01, 2, D pf , , I
0 , 2, I 0, 1, D 0, 2, D paro
1 1, 0, D , 2, I 1, 2, D paro
, 0, I , 1, I , 2, I
01, , D
Cuando Turing empez a investigar la naturaleza de estos autmatas, primero le interesaba
hacer las operaciones aritmticas comunes, adicin, multiplicacin, divisin, y luego cosas ms
complicadas, hasta sospechar que su alcance iba a ser todas las funciones que intuitivamente
diramos computables. Luego, despus de divulgar, le decan el clculo lambda puede hacer
cualquier funcin que hacen tus mquinas, o cualquiera de tus mquinas calcula una funcin
recursiva general, y lo mismo para sistemas Post y otros. Pero en cada caso, result la recproca:

2. MQUINAS DE TURING

71

para cualquier funcin del clculo lambda, hay una mquina de Turing que la hace, etc. Todos los
intentos independientes de formalizar la nocin de computabilidad resultaron equivalentes, y de
all sali la llamada tesis de Church-Turing, que todos representaban la idea de computabilidad.
Un ejemplo que nos lleva un paso en esa direccin:
Ejemplo 4.14. Una mquina de Turing que acepta las cadenas de 1* cuya longitud es un
nmero primo. La mquina empieza sobre el primer carcter de c en una cinta 1n , y
n
se puede trabajar dentro del segmento 1
. Vamos probando divisores 2, 3, 4, . . . , n 1 para
establecer primalidad no paramos en n, es ms facil recorrer todos los dems divisores que
engendrar d2 y comparlo con n no nos interesa eficiencia, sino mostrar que las mquinas Turing
pueden hacer la funcin. Cuando estamos por probar un divisor d, tenemos una configuracin
con 2d 1nd y repetimos lo siguiente: cambiar el primer 2 a 3, ir al primer 1 y cambiarlo al
4, a menos que se llega a antes, en cuyo caso d no es factor de n. Si cambiamos todos los 2
a 3, cambiando un 1 a 4 cada vez, volvemos cambiando todos los 3 a 2 y todos los 4 a 1 hasta
encontrar . Luego vamos al final de los 2, que va a ser seguido por un 1, y cambiamos el 1 a
2. En este momento, si el carcter a la derecha es , hemos terminado, aceptamos porque n es
primo.
Especificamos la mquina de Turing con el siguiente programa:
si (t = ) rechazar sino 2
si(t = ) rechazar sino t
d+
mientras ( t = 2) 2
2
si(t = ) aceptar
mientras(t 6= )t
cancelar

mientras(t = 3) 3
si(t = 2)
. 3
. mientras(t
/ {1, }) t
. si(t = )
. .
. . mientras(t 6= )
. . . si(t = 4) 1
. . . sino si(t {2, 3}) 2
. .
. . ir a d+

. sino
(t 6= )
. . 4
. . mientras(t 6= ) t
. . ir a cancelar
sino
(t 6= 2)
. mientras(t
/ {1, }) t
. si(t = ) rechazar
. sino
. . 1
. . mientras(t = 4) 4
. . mientras(t = 3)2
. . ir a cancelar

La mquina ejecuta el programa. Su estado es la lnea de cdigo que est ejecutando. La


instruccin fundamental es a o a , donde a , y las flechas significan mover a la
izquierda y mover a la derecha respectivamente. Tambin usamos sentencias condicionales,
si(condicin) cdigo1 sino cdigo 2, y mientras(condicin) cdigo. Todo esto es trasladable directamente, aunque tediosamente, a una tabla de transiciones (la parte ms molesta es inventar
nombres para todos los estados). En el programa, hemos usado la notacin t para significar el caracter ti de la configuracin actual (t, q, i). Usamos ir a etiqueta donde etiqueta es la etiqueta
de alguna lnea de cdigo, escrita a la izquierda antes de la lnea. = {1} y = {, 1, 2, 3, 4}.
Las mquinas de Turing con alfabeto de trabajo = {0, 1, } pueden representar todas las
mquinas de Turing. Bosquejamos esto para una mquina con = {a, b, c, d, }, y la idea se ve.
Codificamos a, b, c, d en binario, a = 00, b = 01, c = 10, d = 11, as que las cadenas de {a, b, c, d}
estn representadas en forma nica por las cadenas de longitud par en {0, 1} . Ahora suponga

72

4. AUTMATAS

que la mquina con = {a, b, c, d, } tiene estados p, q con (p, a) = (q, b, D). La nueva mquina
M tendr estados p, q, p0, qb, qb0 (entre otros). M (p, 0) = (p0, 0, D). M (p0, 0) = (qb, 0, I).
M (qb, t) = (qb0, 0, D) para t {0, 1}, y M (qb0, t) = (q, 1, D) para t {0, 1}. En otras
palabras, qb escribe el cdigo de b, se mueve dos veces a la derecha, y termina en el estado b,
cualquier que sea el contenido de las dos casillas que atraviesa. Los otros movimientos se hacen
en la misma manera.
2.1. La Mquina de Turing Universal. Se puede hacer una mquina de Turing con
= {0, 1} y que, dada la especificacin de una mquina de Turing M sobre esos alfabetos, y una
entrada en {0, 1} , codificados adecuadamente, simula la accin de M sobre esa entrada. M se
codifica como una cadena en (1+ (((01+ )(0{1, 11, 111})(0{1, 11} {})3 0))+ donde enumeramos
los estados de M como q1 , . . . , qk y la subcadena
1n (01p0 01a0 01d0 )(01p1 01a1 01d1 ) (01p 01a 01d )
significa que M (qn , 0) = (qp0 , e, d) donde e = 0, 1, segn a0 = 1, 2, 3 respectivamente, y
d = I, D segn d0 = 1, 2 respectivamente, reglas similares para (p1 , a1 , d1 ) y (p , a , d ) para
M (qn , 1) y M (qn , ) respectivamente. Si algn pi = 0 entonces los correspondientes ai y di
son 0, significando que el valor de M correspondiente no est definido. Esta especificacin est
seguida por 1s donde s indica el estado inicial qs , y despus viene la entrada en {0, 1}
seguida por otro blanco. La mquina universal U empieza poniendo (01)s a la izquierda de
todo, los 0 intercalados para facilitar comparaciones, y siempre durante la simulacin la cadena
{01, 11}k va a significar que el estado actual de la simulacin de M es qk (los 11 son para
marcar dnde va la comparacin de k con un estado de la especificacin). La cinta que ve M
es simulada por una cadena de ({0, 1}{0, 1, })+ , el primer carcter 1 slo cuando la actual
configuracin de M en la simulacin ubica la cabeza de lectura en esa casilla. Cada vez que
M quiere ir a la casilla a la izquierda de sta, hay que correr todo dos casillas a la derecha y
meter un en la nueva casilla. Un movimiento de M se simula por buscar el estado actual en la
especificacin, ubicar la terna correspondiente al carcter actual, escribir en la cinta simulada
el nuevo carcter, y escribir a la izquierda el nuevo estado.
Sabiendo que hay una mquina U de Turing capaz de simular cualquier mquina de Turing,
podemos pensar en hacerla simular a s misma simulando a s misma. Pero eso no es posible,
porque la cinta inicial tendr infinita informacin.
Pero si U es tan inteligente, no puede haber una mquina U que, dada la especificacin e
de una mquina M y su entrada c, decide si M para alguna vez cuando recibe c? Si existe esta
U , podemos tener otra mquina U que, dado nada ms que la especificacin de M , construye
la cinta inicial correspondiente a la especificacin de M seguida por la especificacin de M , y
entra en una submquina equivalente a U . Ahora U va a contestar, dada la especificacin de
una mquina M , si M para o no enfrentada con su propia especificacin.
2.2. Una funcin no computable. Hagamos un pequeo cambio en la mquina U .
Dijimos que tena una submquina equivalente a U . Para cada estado final all, lo cambiamos

para leer e ir a la derecha sin parar. Llamamos a esta mquina U . Ahora, U(M
) para si M no

para presentada con su propia especificacin. Lo mismo que U , pero si M (M ) para, U para
no para.
en un estado final, y consecuentemente U

Entonces U(M ) para si y slo si M (M ) no para.


U)?

Qu pasa entonces con U(


U)
para si y slo si U(
U)
no para.
U(
Repasando las observaciones que nos condujeron a esta contradiccin, el culpable era la
mquina U , supuestamente capaz de decidir si una mquina M iba a poder decidir sobre una
entrada c. Eso se llama el problema de la parada, y es el primer problema indecidible conocido.
Desde su descubrimiento por Turing, se ha descubierto un montn ms, algunos de los cuales
vamos a ver aqu.

2. MQUINAS DE TURING

73

Ejercicios de Autmatas
1. (1) Demuestre que la familia de conjuntos regulares sobre un alfabeto es cerrada bajo
interseccin y complemento respecto de .
2. (3) Demuestre que todo conjunto finito es regular, y que la familia de conjuntos regulares
es cerrada bajo unin, concatenacin y la operacin , y por tanto incluye todo K().
Autmatas no deterministas pueden ser tiles en este ejercicio.
3. (1) Haga un autmata finito que acepta cadenas en {0, 1} que interpretados como
nmeros expresados en binario son divisibles por 9.
4. (2) Haga un autmata finito que acepta cadenas en {0, 1} que son divisible por 2 o por
3. Por ejemplo, las cadenas de 4 dgitos que acepta son 0000, 0010, 0011, 0100, 0110,
1000, 1001, 1010, 1100, 1110, 1111. Sugerencia: hgalo como una unin.
5. (3) Haga una mquina secuencial con = {0, 1} {0,
P1} y = {0,
P 1) tal que, para toda
cadena no nula en , ((a0 , b0 ), ..., (an , bn )) = rep( ni=0 ai 2i + ni=0 bi 2i )mod(2n ), 2) .
6. (4) Sea A un autmata finito. Definimos para p, q K, p i q si para cada c con
|c| i, (p, c) F (q, c) F . Es claro que i es una relacin de equivalencia. Sea
i la particin de K inducida por i . Demuestre que para todos estados p, q:
a) p 0 q si y slo si p F q F
b) para todo i > 0, p i q si y slo si p i1 q y (p, a) i1 (q, a) para cada a
Definimos p q si para cada c , (p, c) F (q, c) F . Sea i la particin
de K inducida por i y sea la inducida por . Demuestre que si i = i+1 entonces
i = , y que i = i+1 para algn i |K|.
Demuestre que as se puede construir un autmata B con el mnimo nmero posible
de estados tal que C(B) = C(A).
He aqu un ejemplo de cmo son esas i para un autmata que detecta divisibilidad
por 6 en cadenas binarias. Los estados son {0, 1, 2, 3, 4, 5}, el estado inicial y nico estado
final es 0, y (i, j) para un estado i y entrada j se encuentra en la fila j, columna i de
la siguiente tabla:
0 1 2 3 4 5
0 0 2 4 0 2 4
1 1 3 5 1 3 5
En la siguiente, [q]i para un estado q y nmero i es la clase de q en i :
[0]0 = {0}
[1]0 = {1, 2, 3, 4, 5}
[1]1 = {1, 2, 4, 5}
[1]2 = {1, 4}
[1]3 = {1, 4}
[2]2 = {2, 5}
[2]3 = {2, 5}
[3]1 = {3}
y de all se ve que 2 = 3 y entonces que = {{0}, {1, 4}, {2, 5}, {3}}. La mquina
equivalente reducida es
0 1 2 3
0 0 2 1 0
1 1 3 2 1
7. (3) Construya un autmata finito mnimo para cada uno de los siguientes conjuntos.
Sugerencia: se puede cortar el trabajo notando qe si p i q para algn i y se sabe ya
que (p, a) (q, a) para todo a (usualmente porque son iguales) entonces p q.
a) Las cadenas de {0, 1} que, interpretadas en binario, representan un mltiplo de
4.

74

4. AUTMATAS

b) Las cadenas de {0, 1} que, interpretadas en binario, representan un mltiplo de


12. (Sugerencia: construirlo como la interseccin de los mltiplos de 3 y de 4 para tener
menos estados al principio).
c) Las cadenas de {a, l, r, o} que terminan en una de las cadenas del conjunto
S = {ala, alla, loro, rala, ralo, oro, ola, olla, olor, oral, orar, ora, rol, ara, aro, arar ,rara,
raro, llora, lloro, llorar }. Sugerencia: cada estado va a ser una cadena en {a, l, r, o} de
longitud no ms de 4. Todas van a ser prefijos de alguna cadena en S. Los prefijos de S
son
S {, a, l, r, o, al, ar, lo, ra, ro, or, ol, all, oll, lor, ral, rar, olo, ll, llo, llor}

(vea all 0 ).
8. (2) Sean A = (KA , A , , p0A , FA ), B = (KB , B , , p0B , FB ) dos autmatas finitos. Sea
C = ({(p, q) : p KA , q KB }, C , , (p0A , p0B ), {(p, q) : p FA , q FB )

9.
10.
11.
12.

donde C ((p, q), a) = ((A (p, a), B (q, a)) para cada p A, q B, a . Si A y B son
reducidos (es decir, con el mnimo nmero de estados), es C necesariamente reducido?
Justifique la respuesta.
(3) Haga una mquina de Turing que, presentada con una cinta 1n 01m 01p , y
ubicada sobre el primer 1 a la izquierda, acepta si p = m n y rechaza si no. Use
cualquier que sea conveniente.
(2) Sea C el conjunto de cadenas sobre {0, 1) que, ledas como binarios, representan un
mltiplo de 3. Construir un autmata finito determinista que acepta C R .
(2) Construya un autmata finito determinista que acepta C R , donde C es el conjunto
de cadenas binarias que no representan ni un mltiplo de 2 ni de 3. Ntese que no es
necesario construir 26 estados, sino slo los que surgen del estado {p0B }.
(2) Si no tuviramos tanta confianza en la capacidad del autor en hacer manipulaciones
simblicas sin error, dudaramos que la expresin regular (0 11 0) 11 representa el
conjunto {0, 1} 1 aceptado por el autmata 1. Pero el autor mismo no tiene esa confianza
y no lo crey hasta demostrarlo directamente. Hgalo Ud.

También podría gustarte