Anda di halaman 1dari 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 nitos, mquinas secuenciales, y, mquinas de Turing, y despus, en el captulo de lenguajes, mquinas de pila. Las primeras dos son de memoria nita, y las otras dos de memoria ilimitada pero de una nita 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 nito, pero s la cantidad de memoria nos permite para la mayora de propsitos seguir como si fuera ilimitada. Pero no es nada difcil denir 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 dene 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 denido A(0, p, 0) = 1, para todo P > 1, mientras 00 por ejemplo queda sin denicin 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 dicultad 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 nita. 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 signica la concatenacin de las dos. Si a , cuando escribimos a puede signicar 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 signica la concatenacin de la cadena a con c. Si C1 y C2 son dos conjuntos de cadenas, C1 C2 signica el conjunto {c1 c2 : c1 C1 y c2 C2 }. Si C es un conjunto de cadenas, C 0 = {}, C k+1 = CC k para todo natural k, y C = C i , es decir, una concatenacin de 0 i=0 o ms palabras de C. Para una cadena c, con |c| queremos decir la longitud de c.
decimos alfabeto, tcnicamente es simplemente un conjunto nito, pero lleva la connotacin de que sus miembros son smbolos que son legibles en algn sentido.
63
1Cuando

64

4. AUTMATAS

1.

Autmatas nitos y lenguajes regulares

Definicin 4.1. Un autmata nito A sobre un alfabeto es (K, , , p0 , F ) donde K es un conjunto nito 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 nales). Extendemos la funcin al dominio K , siendo el conjunto de todas las cadenas nitas 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 denido como en la parte de aritmtica de grandes nmeros). Esto se va a cumplir si denimos (n, 0) = resto(2n, 7) y (n, 1) = resto(2n + 1, 7). Entonces la tabla para denir 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 la 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 nales que llamamos {p2 , p3 , p5 , p7 , p11 , p13 }, 21 estados en total. La tabla para esta :
0 1 0 1 0 00 01 1 10 11 00 000 001 01 010 011 10 100 101 11 110 111 000 000 001 001 p2 p3 010 100 p5 011 110 p7 100 000 001 101 010 p11 110 100 p13 111 110 111 p2 100 p5 p3 110 p7 p5 010 p11 p7 110 111 p11 110 p7 p13 010 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 signica 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 nito 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 nal al terminar la lectura. A primera vista, parecera demasiado fcil: seguro que estos autmatas van a aceptar algn conjunto que los autmatas nitos 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 nito no determinista (afnd) es (K, , , p0 , F ) donde K, , p0 y F son como en la denicin de autmatas nitos 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 nito A = (K, , , p0 , F ). Denimos 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 = , 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 = , 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 verica 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 nitos: Denimos (p, ) = {p}; y para a y c denimos 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 denicin 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)} = pero es claro de las deniciones 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 nito no determinista es aceptado por algn autmata nito determinista. Demostracin. Sea A = (K, , , p0 , F ) un autmata nito no determinista. Denimos el autmata nito 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 = }. 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 deniciones. Suponiendo que vale para todo c con |c| = k > 0, { {r : (q, c) A r} : q (p, a)}.

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}, podemos expresar B (S, c1 ck+1 ) como {q : p S r (p, c1 ) tal que q (r, c2 ck+1 )}. 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 nal. 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 nal 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 denicin, 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 nito 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 nito 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 nitos 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, denimos primero que un sistema de ecuaciones simultneas sobre el conjunto de incgnitas {Bq : q J} {Bq = Aq (
pJ

Aqp Bp ) : q J}

es bien formado si cada coeciente Aq o Aqp est en K() y ningn Aqp contiene . Ahora sea A = (K, , , p0 , F ) un autmata nito. 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: / Lema 4.10. Si S, A y T son subconjuntos de , A y S = T AS, entonces S = A T . 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 = 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 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 = A T , expresando Bq en trminos de las otras Bp . Al sustituir eso en el lugar de qq Bq en cada ecuacin para Bp para p J {q} tenemos nuevas ecuaciones Bp = Ap Apq A T qq Apr Br = Ap Apr Br .
rJ{q}

rJ{q}

Vamos a ver cunto vale el coeciente Apr de Br en sto. Apq A T = Apq A (Aq ( qq qq

Aqr Br )
rJ{q}

as que Apr = Apq A Aqr Apr . Esto muestra dos cosas: puesto que Apr , Aqr , Aqq y Apq son de qq / / K(), Apr es de K(). Adems, Apr porque Apq y por tanto tampoco en Apq A Aqr , y qq Apr . Finalmente, las nuevas cadenas para acompaar a Ap en Ap vienen de Apq A T , y son / qq de Apq A Aq , as que Ap = Ap Apq A Aq , que es de K() puesto que Ap , App , Aqq y Aq lo son. qq qq (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 signica 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 gura, donde seguimos la convencin de que los estados nales 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 nalmente 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 grco 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 nalmente 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 nita que particiona en ms de dos conjuntos, mientras el autmata nito particiona en 2. Lo hacen por emitir una salida, que depende de la entrada, que viene de un alfabeto nito, y el estado. Definicin 4.11. Una mquina secuencial es (K, , , , , p0 ) donde K es un conjunto nito de estados, y son alfabetos nitos, 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 nito, y a K en forma semejante: (q, ) = (q, ac) = (q, a)((q, a), c) para todo a , c . Por ejemplo, denimos 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) signica 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 deniciones 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 nitos pero trabaja con una cinta que tiene escrita en cualquier momento dado una cantidad nita de informacin, pero que puede ser aumentada por la mquina en una forma controlada. Entonces la memoria es nita pero ilimitada. La memoria tiene dos partes: una parte nita que constituye los estados internos de la mquina, que es como las de los autmatas nitos y las mquinas secuenciales, y una cinta innita en las dos direcciones en que est escrita una cantidad nita de informacin, en el sentido que todas menos un conjunto nito de casillas tiene escrito blanco. La mquina, posicionada en una casilla de esta sucesin, lee el carcter, escribe all uno nuevo de su alfabeto nito, 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 nito 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 nito de estados, y son alfabetos nitos 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 nal respectivamente). Una conguracin de M es (t, q, i) donde t es una sucesin innita en ambas direcciones sobre , es decir una funcin Z , con slo nitos 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 conguraciones (t, q, i) y (s, p, j) se dice que (t, q, i) (s, p, j) si (q, ti ) est denida e igual a (p, a, d) donde si = a y sk = tk para todo k = i, si d = I entonces j = i 1 y si d = D entonces j = i + 1. Se dene la relacin sobre conguraciones como la mnima relacin transitiva que incluye . Una conguracin (t, p, i) es un paro si (p, ti ) no est denido. Se dice que M acepta una cadena c si la conguracin (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 = 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 = 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 conguracin (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 signican 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 (la 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 se puede trabajar dentro del segmento 1n . 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 eciencia, sino mostrar que las mquinas Turing pueden hacer la funcin. Cuando estamos por probar un divisor d, tenemos una conguracin 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 nal 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. Especicamos 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 = )t cancelar mientras(t = 3) 3 si(t = 2) . 3 . mientras(t {1, }) t / . si(t = ) . . . . mientras(t = ) . . . si(t = 4) 1 . . . sino si(t {2, 3}) 2 . . . . ir a d+ . sino (t = ) . . 4 . . mientras(t = ) t . . ir a cancelar sino (t = 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 echas signican 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 signicar el caracter ti de la conguracin 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. Codicamos 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 especicacin de una mquina de Turing M sobre esos alfabetos, y una entrada en {0, 1} , codicados adecuadamente, simula la accin de M sobre esa entrada. M se codica 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 ) signica 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, signicando que el valor de M correspondiente no est denido. Esta especicacin 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 signicar 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 especicacin). La cinta que ve M es simulada por una cadena de ({0, 1}{0, 1, })+ , el primer carcter 1 slo cuando la actual conguracin 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 especicacin, 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 innita informacin. Pero si U es tan inteligente, no puede haber una mquina U que, dada la especicacin 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 especicacin de M , construye la cinta inicial correspondiente a la especicacin de M seguida por la especicacin de M , y entra en una submquina equivalente a U . Ahora U va a contestar, dada la especicacin de una mquina M , si M para o no enfrentada con su propia especicacin. 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 nal 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 especicacin. Lo mismo que U , pero si M (M ) para, U para en un estado nal, y consecuentemente U no para. Entonces U(M ) para si y slo si M (M ) no para. Qu pasa entonces con U(U)? U(U) para si y slo si U(U) no para. 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 nito 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 nito que acepta cadenas en {0, 1} que interpretados como nmeros expresados en binario son divisibles por 9. 4. (2) Haga un autmata nito 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, 1} y = {0, 1) tal que, para toda cadena no nula en , ((a0 , b0 ), ..., (an , bn )) = rep( n ai 2i + n bi 2i )mod(2n ), 2) . i=0 i=0 6. (4) Sea A un autmata nito. Denimos 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 Denimos 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 nal es 0, y (i, j) para un estado i y entrada j se encuentra en la la 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 nito 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 prejos de alguna cadena en S. Los prejos de S son (vea all 0 ). 8. (2) Sean A = (KA , A , , p0A , FA ), B = (KB , B , , p0B , FB ) dos autmatas nitos. Sea 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? Justique 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 nito determinista que acepta C R . (2) Construya un autmata nito 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 conanza 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 conanza y no lo crey hasta demostrarlo directamente. Hgalo Ud. C = ({(p, q) : p KA , q KB }, C , , (p0A , p0B ), {(p, q) : p FA , q FB ) S {, a, l, r, o, al, ar, lo, ra, ro, or, ol, all, oll, lor, ral, rar, olo, ll, llo, llor}

9. 10. 11. 12.

Anda mungkin juga menyukai