Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Automatas DR Hibbard
Automatas DR Hibbard
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.
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.
65
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 .
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 .
67
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}
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
Mquinas de Turing
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
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
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
(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.