Vous êtes sur la page 1sur 20
254 Introduccion ala toria de autématas, onguales y computacion {Generadora? Figura 7.11. Estructura de datos para comprobar en tiempo lineal si un lenguaje esta vacfo, Otros usos de la comprobacién lineal de si un lenguaje est vaefo La misma estructura de datos y de contadores que hemos utilizado en la Seccién 7.4.3 para comprobar si una variable es generadora se puede emplear para realizar algunas de las otras comprobaciones de la Seccién 7.1 en tiempo Tineal. Dos ejemplos importantes de esto son: 1. Qué simbolos son aleanzables? 2. {Qué simbolos son anulables? fen una cola de variables generadoras cuyas consecuencias tienen que ser exploradas (como hicimos para la variable B). Esta cola no se muestra. Falta demostrar que este algoritmo tarda un tiempo O(). Los puntos importantes son los siguientes: ‘+ Puseto que como méximo existen n variables en una gramitica da tamalto nla ereacién Ia inisializacisn de la maiz tarda un tiempo O(n) ‘+ Existen como maximo m produceiones, y su longitud total es como maximo n, por lo que la inicializacion de los enlaces y los contadores indicados en Ia Figura 7.11 puede hacerse en un tiempo O(n). ‘+ Cuando descubrimos que una produccién tiene un contador con el valor 0 (es decir, todas las posiciones de su cuerpo son generadoras), el trabajo que hay que realizar puede clasficarse de acuerdo con dos categoria: 1. Trabajo realizado para dicha produccién: descubrir que el contador es 0, determinar qué variable, por ejemplo, A, se encuentra en la cabeza, comprobar si ya se sabe que es generadora y colocarla en la cola sino lo es, Todos estos pasos son O(1) para cada produceidn y, por tanto, en total se hace un trabajo O(n) como méximo. ‘Trabajo realizado al visitar las posiciones de Tos cuerpos de produecién que tienen la variable de cabeza A. Este trabajoes proporcional al nimero de posiciones que contienen A. Por tanto, lacantidad agregada de trabajo realizado al procesar todos los s{mbolos generadores es proporcional ala suma | de las longitudes de los cuerpos de produccton, y eso es O(n). | Por tanto podemos concluir que el trabajo total reatizado por este algoritmo es O(n). Capitulo 7 Propiedades de los lenguales independientes del contexto 255 7.4.4 Comprobacién de la pertenencia a un LIC “También podemos decir la pertenencia de una cadena w a un LIC L. Hay disponibles varia formas ineficaces de realizar la comprobaci6n;invierten un tiempo que es exponencial en |, suponiendo que se dspone de una fgramaticao automata a pula para el Lenguaje Ly que su tamano se trata como a constant, independiente de \.Por ejemplo, se comienza convirtiendo cualquier representacién de L dada en una gramaica en la FNC para 1. Como los roles de derivacién de una gramdticaen la forma normal de Chomsky son érboles binaros, si \W tiene longitud n entonces existirin exactamente 2n ~ 1 nodos etiquetados con las Variables de! érbol(Aicho resultado puede demostrarseficilmente por induccién, por lo que dejamos dicha demostracién como ejercicio para el lector). El nimero de etiquetas de nodos y érboles posible ex por tanto “ssl” exponeneial en n, por lo aque en prineipio podemos enumeratlos todos y eomprobar si alguno de ellos tiene w como resultado. Existe una téenica mucho mds eficiente basada en la idea de “programacién dindmica” la cual también se conove como “algoritmo de llenado de tabla" 0 “tabulaeién". Este algoritmo, conocido como algorimo CYK2 parte de una gramética en la FNC G = (V.T.P.S) para un lenguaje F. La entrada al algoritmo es una cadena w — a,a:---4, on T*. En un tiempo O(»3), al algoritmo construye una tabla que indica ei w portenece 4 L. Observe que al calcular este tiempo de ejecucién, la propia gramdtica se considera fijay su tamalio slo contribuye en un factor constante al tiempo de ejecucidn, el cual se mide en funcin de la longitud dela cadena ‘Ww cuya pertenencia a se esté comprobando, Encl algoritmo CYK, construimos una tabla angular, como se muestra cn la Figura 7.12. El je horizontal corresponde a las posiciones de la cadena w = aya-+-a, que hemos supuesto que tiene una longitud de 5. La enteada de In tabla Xj cl conjunto de variables A tal que A 2> cicis1---as, Fjese en que estamos, en coneteto,interesados en si S pertenece al conjunto Xjq, ya que esto es lo mismo que decir que $= w, es deci, w pertenece aL. Figura 7.12. Tabla construida por el algoritmo CYK. La tabla se rellena en sentido ascendente fila por fila. Observe que cada fila corresponde a una longitud de las subcadenas; la fila inferior es para las cadenas de Tongitud 1, la segunda fila es para las cadenas de longitud 2, y asi sueesivamente hasta llegar a la fila superior correspondiente a una subcadena de longitud n, que es Ia propia w. Se tarda un tiempo O(n) en calcular cualquier entrada de la tabla, aplicando un método que vamos & ver a continuacién. Dado que existen n(n + 1]/2 entradas de tabla, el proceso de construecisn completo de la tabla necesitard un tiempo O(n*). Bl algoritmo para calcular Xj es el siguiente: Dtzste nombre se debe ates personas qu de manera independiente descubriron esencalmente la misma idea: J. Cocke, D. Younger y T Kasai 256. Introduccion ala teora da autémalas, langues y computacién [BASE. Calculamos Ia primera fila de Ia forma siguiente. Dado que Ia cadena que comienza y termina en la pposicidn i slo tiene el simbolo terminal a, y la gramética est en su forma normal de Chomsky, la nica forma de generar la cadena a, es utilizando una produccién de la forma A — a. Por tanto, Xi es el conjunto de variables Atal que A — a; es una produccién de G, PASO INDUCTIVO. Supongamos que deseamos calcular Xi), que esté en la fila j—i~ 1, y que hemos calculado todas las X de las filasinferiors. Es decir, conocemos todas las cadenas que son mis cortas que aia. ---4,¥en particular conocemos todos los prefijosy sufijos propios de dicha cadena. Como podemos suponer que j—i > 0, yaque el caso i= j es el caso base, sabemos que cualquier derivaciOn A %> ajai,1---a; tiene que comenzar con algtin paso A => BC. Entonees, B genera alin prefijo de aiai1---ay, por ejemplo, B > auaias-*-ay, para algin k < j. También, C tiene que generar entonces el resto de aiais---a), es decir, > ayyie.a-a Concluimos que para que A pertenezca a Xi, tenemos que determinar las variables By C, y un entero k tal ave: Lisk 2, el prograna nunca encontraré tres enteros positives que saisfagan la ecuacién x+y" = 2", y por tanto no imprimir hola, mundo, Lo interesante de esto es que hasta hace tunos pocos afios no se sabia si este programa imprimiria o noel texto holla, mundo para enteros n grandes. La afirmacién de que no to harfa, es decir, que no existen soluciones enteras para la ecuacién.x* +" = 2" si n> 2, fue hecha por Fermat hace 300 afos, pero hasta hace muy poco no se ha demostrado. Esta proposicién normalmente se conoce como el “tiltimo teorema de Fermat” Definamos et problema ce hola-mundo: determinar si un programa C dado, con una entrada dada, imprime ‘enprimerlugarlos primeros 1] caracteresde hola, mundo. Enloque sigue, menudo diremos, para abreviar, ‘que un programa imprime ola, mundo para indicar que lo primero que imprime son los 11 caracteres de hola, mundo. En caso afirmativo, el TB. W. Kernighan yD. M. Richie, The © Programming Lonsuage, 1978 Pence, Englewood Cis, ND Te Capitulo 8 Introduccion alas miquinas de Tring 263 int exp(int i, n) 7* calcula i a la potencia n */ 4 int ans, i; ans = 1; for (j=1; j total++; 2 3 Figura 8.2,_ El ditimo ‘eorema de Fermat expresado como un programa hola-mundo, Parece probable que, silos mateméticos tardaron 300 aflos en resolver una pregunta acerca de un nico programa de 22 lineas. entonces el problema general de establecer si un determinado programa, para una entrada dada, imprime hola, mando tiene que ser realmente complicado. De hecho, cualquiera de los problemas que los ‘matemiticos todavia no han podido solucionar puede transformarse en una pregunta de la forma “jimprime este programa, con esta entrada, el texto hola, mundo?”. Por tanto, serfa totalmente extraordinario que consiguigramos escribir un programa que examinara cualquier programa P y la entrada I para P, y estableciera si P, ejecutado para la entrada J, imprime o no hole, mundo. Demostraremos que tal programa no existe. 8.1.2 Comprobador hipotético de “hola, mundo” La imposibilidad de crear un comprobador de hola-mundo se demuestra por reducci6n al absurdo, Es decir, suponemos que existe un programa, llamado H, que toma como entrada un programa P y una entrada I, y establece si P para la entrada imprime hola, mundo. La Figura 8.3 es una representacién de lo que hace H. En conereto, la inica salida que proporciona H es o imprimir los caracteres = o imprimir los caracteres no. ‘Siempre hace una cosa o la otra ‘Siun problema tiene un algoritmo como H, que siempre establece correctamente si un caso del problema tiene como respuesta “si” o“'no” ,entonces se dice que el problema es “decidible”.En caso contrario,el problema ee “indecidible”. Nuestro objetivo ex demostrar que HT no existe; ea decir, que el problema de hota-mundo ex indecidible. ara demostrar dicha afirmacién por reduccisn al absurd, vamos a hacer algunos cambios en H constru- yendo un problema relacionado denominado 3 que demostraremos que no existe, Puesto que los cambios en HT 264 Inroduccén ala toria de autématas, lenguales y computacion 2. Tz entonces simula Hh pero cuando H; lea la entrada P o I, H, lecré de la copia almacenada en A. Para hacer un seguimiento de eudnto Hl ha leido de P y de J, H> puede mantener dos cursores que marquen las posiciones correspondientes en A, Ahora ya estamos preparados para demostrar que Hz no puede exist: Luego, Hi tampoco puede exist, y de la misma manera, H tampoco. Fl néicieo del argumento esté en prever lo que hace fz si se le proporciona como entrada su propio eédigo, En la Figura 8.6 se refleja esta situaci6n. Recuerde que Ha, dado cualquier ‘programa P como entrada, proporciona como salida s{ si Pimprime hola, mundo cuando su entrada es 6 mismo, Ademis, Hp imprime hola, mundo silaprimera sida produeida por P, con él mismo como entrada, noeshola, mundo. Supongamos que el programa Hrepresentado por la caja de la Figura 8.6 proporcionala salida =. Enton- ces lo que el programa H» esté diciendo acerca de su entrada Hy es que H, cuando se proporciona su propio digo como entrada, imprime hoa, mundo como su primera salida. Pero hemos supuesto que le primera salida de Hy en esta situacién es si en lugar de hola, mundo. ~”Syuy rotablement, el programa noid no en un comande printf, peo pura imprimir la“ con un print y la“0" con La fncidn UNIX de sistema ma Loc asign un boque de memori de un mado espcificado en fa ama anaoe. Esa funcion se ulin cuando no puede determina el espaci de amcenamer ues neces hata ques ecu el programa, como seri el 80 ‘en que se fora leer un cade longted arbitraria. Normniment, se invoea ama loc varias veces, a mei qe sv eyed In fend y se necesita mis espacio. 266. Inireduesin ala tarla de autématas,lengusjes y computacion hole, mundo Figura 8.5, Hf; se comporta como Hj, pero utiliza su entrada P como Pe I Figura 8.6. {Qué hace Ih, se le proporciona su propio c6digo como entrada? Por tanto, parece que en la Figura 8.6 la salida de la caja es hola, mundo, ya que tiene que ser una u otra, Pero si H, teniendo como entrada su propio c6digo, imprime en primer lugar hola, mundo, entonces Ja salida de la caja de la Figura 8.6 tiene que ser 9. Sea cual sea la salida que supongamos que proporciona Hz, podemos argumentar que proporcions la otra sia situacién es parad6iica, por lo que coneluimos que H> no puede existir. Como resultado, hemos legado una contradicci6n de la suposiciOn de que #7 existe. Es decir, hemos demostrado que ningun programa H puede informar de si un determinado programa P con entrada I imprime o no como primera salida hola, mundo. 841.3 Reduccién de un problema a otro Ahora, tenemos un problema (lo primero que escribe un determinado programa para una entrada dada es hola, mundo?) que sabemos que ningtin programa informético puede resolver. Un problema que no puede ser resuelto por una computadora se dice que es indecidible, En la Seccién 9.3 proporcionamos la definicién formal de problema “indecidible”, pero por el momento, vamos a emplear el término de manera informal. Suponga que queremos determinat si algGn otro problema puede ser solucionade 0 no por una computadora. ‘Podemos probar a escribir un programa para resolverlo, perosi no se nos ocurre cémo hacerlo, entonces podemos intentar demostrar que no existe tal programa, Podriamos demostrar que este nuevo problema es indecidible mediante una técnica similar a la que hemos cempleado en el problema de hola-mundo: supongamos que existe un programa que resuelve el problema y , y se aplica la misma respuesta de w y Pi. ccuce qo, ca ealidad, ua probiena es un lengua. Cuundo hablames del problema de decidir si un deerminado programa con ‘a entrada dada imprime com su primera salda hola, undo, realmente estamos hablando de cadenasformaas por un programa fucnteen€ seuidas de eualqie archivo de entrada qu l programa lee. Este conunto de cadeas es un legusie sobre calfaeto dels casceres ASCIL 288 Inteduocin ala torla de amas, languajes y computacion El sent de una reduccién es importante Es un error comiin intentar demostrar que un problema P; es indecidible reduciendo P; a un problema in- decidible conocido A; es decir, demostrando la proposicién “si Pes decidible. entonces P, es decidible”. Esta proposicién, aunque seguramente es verdadera, noes til, ya que lahipétesis "P, es decidible” es falsa La nica forma de demostrar que un nuevo problema Pes indecidible es reduciéndoloa un problema indecidible conocido . Dicho de otra forma, demostramos la proposicién “si Py es decidible, entonces, P, es decidible”. La conversién contradictoria de esta proposiciGn es “si P; es indecidible, entonces Ps es indecidible”. Dado que sabemos que P; es indecidible, podemos deducir que Ps es indecidible. Siw pertenece a P,, entonces.x pertenece a Pa, por lo que este algoritmo proporciona s{ como respuesta. Si w no pertenece a P), entonces x no pertenece a Fy el algoritmo proporciona no como respuesta, De cualquier forma, dice la verdad acerca de w. Puesto que hemos supuesto que no existe ningtin algoritmo que nos permita, decidir si existe una cadena que pertenezca a P, . tenemos una demostracién por reduccién al absurdo de que cl hipotético algoritmo de decisién para P) no existe; es decir, Py es un indecidible. EJEMPLO 8.1 Utilicemos esta metodologia para demostrar que la pregunta de si “un programa Q, dada una entrada y, hace una llamada ala TunciGn £00" es indecidile. Observe que Q puede no contener una funcién foo, en cuyo caso el problema es ficil, pero los ¢asos complicados aparecen cuando contiene na funcién £09 pero puede 0 no {nvocarla cuando Ia entrada es y. Dado que s6l0 conocemos un problema indecidible, el papel que desempetiars 2; ela Figura 8.7 esol dal problomahola mundo. Ps seriel problema lamar a foo gis asabamos de mencionak. Supongamos que existe un programa que resuelve el problema llamar-a-foo. Nuestro trabajo consste en diseRar un algoritmo que convierta el problema hola-mundo en el problema llamar-2-f. Esdecir, dado el programa Q y suentrada y tenemos que construirun programa R y una entrada = tal que R, con laentradaz, lame ala funcidn Foo siy solosi Qconlaentrada yimprimehola, mundo.Laconstraccién es dif 1. Si Q tiene una funcién denominada £00, renombramos dicha funcién, asf como todas las Hamadas a ka ‘misma, Evidentemente, ef nuevo programa Q; hace exactamente To mismo que Q. Afadimos a Qi una funcién £00. Esta funcién no haré nada y ademds no se la invoca. Bl programa resultateserd Qn 3. Modificamos Q» para recordar los 1 primeros caracteres que imprime y los almacenamos en una matriz A. El programa resultante seré Qs, 4, Modificamos Qs de modo que siempre que ejecute una instruccién de salida, compruebe el contenido de a unuiz A pasa ver si comlene Tus 11 Catacieres 0 mds, eu Caso airmuativg, si ho Lammunide sou Tos 11 primeras caracteres escritos. En dicho caso, se ama a la nueva funcién £oo que se ha afiadido en el punto (2). El programa resultante serd R, y la entrada zes igual que y ‘Supongamos que Q con la entrada y imprime hola, mundo como primera salida. Entonces, por cons- truccién, Rllamaria £00. Sin embargo. si Qcon laentradaynoimprime hola, mundo como primera salida, entonces R nunca llamar a £00. Si podemos decidir si R con la entrada z llama a £00, entonces también sabemos si Q con la entrada y (recuerde que y =z) imprime hola, mundo. Dado que sabemos que no existe Pec me Capitulo 8 ntroduocin alas maquinas de Turing 268 in algoritmo que permita decidir el problema hola-mundo y que los cuatro pasos de la construccién de R a partir de Q podrian realizarse mediante un programa que editara el c6digo de los programas, nuestra hip6tesis de que existe un comprobador para llamar-a-foo es err6nea. Por tanto, como no existe tal programa, el problema lamar-a-foo es indecidible. o 8.1.4 Ejercicios de la Seccion 8.1 Ejercicio 8.1.1. Reduzca el problema hola-mundo a cada uno de los siguientes problemas, Urilice el estilo informal de esta seccién para describir las posibles transformaciones del programa y no se preocupe por los limites précticos, como el tamaiio maximo de archivo o e] tamatio de memoria que imponen las computadoras reales. 1a) Dados un programa y una determinada entrada, el programa termina deteniéndose; es decir, el programa ‘no entra en un bucle infinito al recibir dicha entrada? ») Dados un programa y una determinada entrada, llega el programa a generar alguna salida? 1c) Dados un programa y una determinada entrada, ,producen ambos programas la misma salida para la ‘entrada dada’? 8.2 La maquina de Turing I propSsito de la teria de los problemas indecidibles no es s6lo establecer la exstencia de tales problemas (una idea excitane por sf misma desde el punto de vista intelectual) sino proporcionar también una guia a los programadores sobre lo que se puede 0 no conseguir a través de la programacién. La teoria también tiene un gran impacto prictico, como veremos en cl Capitulo 10, al tratar problemas que aunque sean decidibles requieren mucho tiempo para ser resuetos. Estos problemas, eonocidos como “problemas intratables”, suelen plantear tuna mayor dificultad al programador y al diseRador de sistemas que los problemas indecidibles. La razén de ello es que mientras que los problemas indecidibles normalmente suelen resultar obvios y habitualmente no se itentan resolver, los problemas intratables se presentancontinuamente. Ademés, amenud dan lugara pequefias modificaciones de los requisitos a soluciones heuristicas. Por tanto el diseiador se enfrenta con frecuencia a tener que decidir sun problema es 0 no intratabl, y qué hacer silo es Necesitamos herramientas que nos permitan determinar cuestiones acerca de Ia indecidibilidad o intrata- bilidad todos los dias. La teenologfa presentada en la Seccién 8.1 resulta dil para cuestiones que tratan con programas, pero no se puede trasladarficilmente a problemas en otros dominios no relacionados. Por ejemplo, tendriamos grandes dicultades para reducir el problema de hola-mundo a la cuestion de st una gramética es ambigua. ‘Como resultado, neeesitamos reconstrui nuestra eorfa sobre la indecidibidad, no basénddonosen programas en Co en otto lengua, sino en un modelo de eomputadora muy simple: la méquina de Turing. Bésicamente, este dispositivo es un autmata finito que dispone de una tnica cinta de longitud infnita en la que se pueden leery escribir datos, Una ventaja dela maquina de Turing sobre los programas como representacicn de 10 que se puede calcula es que la maquina de Turing es lo suficientemente simple como para que podamos representar su configuracién de manera precisa, uilizando una notacin sencilla muy similar alas deseripciones instantineas de un aut6mata a pila. En eambio, aungue los programas en C tienen un estado, ue implica a todas as variables ‘en cualquier secuencia de Ilamadas a funcién que se realiee, lanotacin para deseribir estos estadoses demasiado ‘compleja como para poder realizar demosiraciones formales comprensibles Con la notacién de la maquina de Turing, demostraremos que cicrtos problemas, que aparantemente no «estin relacionados con la programacién, son indecidibles. Por ejemplo, demostraremos en la Seccién 9.4 que cl “problema de la correspondencia de Post", una cuestiGn simple que implica a dos lstas de cadenas, es 270 Introsuecin a la teora de automata, lenguajesy computacicn indecidible, y que este problema facilita la demostracin de que algunas cuestiones acerca de las graméticas, ‘como por ejemplo la ambiguedad, sean indecidibles. Del mismo modo, al presentar los problemas intratables ‘comprobaremos que ciertas cuestiones, que parecen tener poco que ver con la computacién (como por ejemplo, si se satisfacen las formulas booleanas), son intratables. 8.2.1 El intento de decidir todas las cuestiones matematicas A finales de! siglo XX. el matemético D. Hilbert se preguntésieraposible encontrar un algoritmo para determinar Ia verdad o falsedad de cualquier proposicién matemstica. En particular, se pregunts si existia una forma de determinar si cualquier férmula del eélculo de predicados de primer orden, aplicada a enteros, era verdadera ado que e! céleulo de predicados de primer orden sobre los enteros es suficientemente potente para expresat proposicones como “esta gramética es ambigua'"o “este programaimprime hola, mundo” si Hilbert hubiera tenido éxito, existrfan algoritmos para estos problemas que ahora sabernos que no existen Sin embargo,en 1931, K. Gidel publicé su farnoso teorema de la incompletitud. Construyé una formula para €l cdleulo de predicados apicada a los enteros, que afirmaba que la propia f6rmula no podfa ser ni demostrada ni refutada dentro del edleulo de predicados. La técnica de Godel es similar a la construccidn del programa auto-contradictorio H; de la Seccién 8.1.2, pero tabaja con funciones sobre los enteos, en lugar de con programasen C. El eéleulo de predicados no era la nea idea que los matematicos tenfan para “cualquier computacion posible”. De hecho, el eélculo de predicados al ser declarativo mis que computacional,entraba en competencia on un variedad de notaciones, incluyendo Tas “Tunciones recursivas parciales”, une noc similar a un lenguaje de programacién, y otras notaciones similares. En 1936, A. M. Turing propuso la maquina de Turing como modelo de “cualquier posible computacion”. Este modelo es como una computador, en lugar de como tun programa, ineluso aunque las verdaderas computadoras electrSnicas 0 incluso electromecdnicas aparecieron varios afios después (y el propio Turing participé en la construcciGn de estas méquinas durante la Segunda Guerra Mundial Lo interesante es que todas las propuests serias de modelos de computacién tienen el mismo potencial; es decir, calculan las mismas funciones 0 reconoces los mismos lenguajes. La suposicién no demostrada de que cualquier forma general de computaciGn no permite caleulr sé las funciones recursivas parciales(o, lo que es Jo mismo, que ls méquinas de Turing o las computadoras actuales pueden calcula) se conoce como hipétesis de Church (por el experto en ligica A. Church) otis de Church 8.2.2 Notacion para la maquina de Turing Podemos visualizar una méquina de Turing como se muestra en la Figura 8.8. La mdquina consta de una unidad de control, que puede encontratse en cualquiera de un conjunto finito de estados. Hay una cinta dividida en ‘euadrados o Casitas y cada castlia puede contener un simbolo de entre un numero Anito de stmbotos. Unidad de control & 2 - [2 [2 [XIX x [xn8 |B | oe Figura 8.8. Una maquina de Turing. (Capitulo 8 Introduccion a las mquinas de Tring 271 Inicialmente, la entrada, que es una cadena de sfmbolos de longitud finita elegidos del alfabero de entrada, se coloca en la cinta, Las restantes casillas de la cinta, que se extiende infinitamente hacia la izquierda y la derecha, inicialmente almacenan un simbolo especial denominado espacio en blanco. El espacio en blanco es un simbolo de cinta, pero no un simbolo de entrada, y pueden existir también otros simbolos de cinta ademés de los simbolos de entrada y del espacio en bianco. Existe una cabeza de la cinta que siempre esté situada en una de las casillas de la cinta. Se dice que la ‘maquina de Turing sefiala dicha casilla.Inicialmente, la cabeza de la cinta esti en la casilla més a la izquierda «que contiene Ia entrada, Un movimiento de la méquina de Turing es una funcién del estado de la unidad de control y el simbolo de cinta al que senala la cabeza. En un movimiento, la maquina de Turing: 1. Cambiaré de estado. El siguiente estado puede ser opcionalmente el mismo que el estado actual. 2. Escribird un simbolo de cinta en la casilla que seflla la cabeza. Este sfmbolo de cinta reemplaza a cualquier simbolo que estuviera anteriormente en dicha casilla. Opcionalmente, el simbolo escrito puede ser el mismo que el que ya se encontraba ali. 3. Movers la cabeza de la cinta hacia la izquierda o hacia la derecha. En nuestro formalismo, exigiremos que haya un movimiento y no permitiremos que la cabeza quede estacionaria, Esta restriccidn no limita Jo que una mquina de Turing puede calcular, ya que cualquier secuencia de movimientos con una cabeza cstacionaria podria condensarse, junto con cl siguiente movimiento de la cabeza de la cinta, en un nico cambio de estado, un nuevo simbolo de cinta y un movimiento hacia Ia izquierda o hacia la derecha, La notaci6n formal que vamos a emplear para una méguina de Turing (MT) es similar a la que hemos empleado para los autématas finitos o los autémiatas a pila. Describimos un MT mediante la siguiente séptupla: M=(0.2,0,8,90.B,F) cuyos componentes tienen el siguiente significado: Q El conjuntofinito de estads deta unidad de contol El conjunto finito de simbotos de entrada. T Elconjunto completo de sinbolos de cinta; siempre es un subconjunto de F 6 La fmcion de trans ae 80%), in. Los argumentos de 6(q,X) son un estado q y un sfmbolo de cinta X. BI valor sth defnido, os (,¥,D), donde 1. pesel siguiente estado de Q. 2. ¥ es el simbolo de I, que se escribe en la casilla que sefala la cabeza y que sustituye a cualquier simbolo que se encontrara en ella, 3. Desunadireceién y puede ser Lo R, lo que que nos indica la direcciGn en que la cabeza se mueve, “inguierda” (L) 0 “derecha” (R), respectivamente, 4qo El estado inicial, un elemento de Q. en el que inicialmente se encuentra la unidad de contro. B Elsimbolo espacioen blanco. Este simbolo pertenece a pero no a; es decir, noes un sfmbolode entrada Elespacio en blanco aparece inicialmente en todas las casillas excepto en aquéllas que se almacenan los simbolos de la entrada, F El-conjunto de los estados finales 0 de acepatcién, un subconjunto de Q. 272 Introduccién ala teoria de autématas, enguales y computacion nes instantaneas de las maquinas de Turing 8.2.3 Deserip Para describir formalmente lo que hace una méquina de Turing, necesitamos desarrollar una notacién para las configuraciones o descripcianes instanséneas, al igual que la notacién que desarrollamos para los aut6matas a pila. Dada una MT que, en principio, tiene una cinta de longitud infinita, podemos pensar que es imposible de forma sueinta describir las configuraciones de dicha MT. Sin embargo, después de cualquier niimero fiito de ‘movimientos, la MT puede haber visitado tinicamente un nimero finito de casillas, incluso aunque el nimero de casillasvisitadas puede crecerfinalmente por encima de cualquier Ifmitefinito. Por tanto, en cada configuracin, existe un prefijo y un sufijo infinitos de casillas que nunca han sido visitadas. Todas estas casillas tienen que contener espacios en blanco 0 uno de los sfmbolos de entrada. En consecuencia, en una configuracién, slo _mostramos las casllas comprenaidas entre el simpolo mas a 1a i2quierda y el stmbolo mas & la dereena que no seas espacios en blanco. Cuando se dé la condicién especial de que la cabeza estd sefialando a uno de los espacios en blanco que hay antes o después de la cadena de entrada, también tendremos que incluir en la configuracién lun ndimero finito de espacios en blanco. Ademas de representar Ia cinta, tenemos que representar Ia unidad de control y la posicién de la cabeza de In cinta. Para clo, incluimos el estado en Ia cinta lo situamos inmediatomente a la izquierda de la caslla seflalada, Para que Ia cadena que representa el estado de la cinta no sea ambigua, tenemos que asegurarnos de que no utilizamos como estado cualquier simbolo que sea también un simbolo de cinta. Sin embargo, es fcil eambiar los nombres de los estados, de modo que no tengan nada en comin con los simbolos de cinta, ya que el funcionamiento de la MT no depende de cémo se llamen los estados. Por tanto, utilizaremos la cadena NiXo--Xi-igXiMice Mp para representar una configuracién en la que: 1. qseael estado de Ia méquina de Turing. / 2. Lacabeza dela cinta esté seialando al simbolo -ésimo empezando por I izqierd, 3. XiNo~--X Sea la parte de Ia cinta comprendida entre los simbolos distintos del espacio en blanco mds a Ja izqulerda y mas a Ia derecna, Como excepcion, si Ia cabeza esta a la izquierda del simbolo mas a ta ‘zquierda que no es un espacio en blanco o la derecha del simbolo masa la derecha que no es un espacio en blanco, entonces un prefijo o un sufijo de XiX2---X, serdn espacios en blanco e i seré igual a 10am, respectivamente, Describimos los movimientos de un maquina de Turing M = (Q.5.1.5.qo,B,F) utilizando la notacién gue hemos empleado para os automata pis, Cuando se sobreentenda que hacemos referencia la MT, solo saremos ~ para indica los movimienos. Como es habitual, wilizaremos Fo slo, par indiar ceo, uno ‘0 mas movimientos de la MT M. ‘Supongamos que 3(g.X:) (p.Y,L); es decir el siguiente movimiento se realiza hacia la izquierda, Enton- Xi HinngXikicr Kn XN KiapMi Mic ---Me Observe cémo este movimiento reflea el cambio al estado p y el hecho de que la cabeza de la cinta ahora sefiala ala casillaj— 1, Existen dos excepciones importantes: 1. Sif=,entonces M se mueve al espacio en blanco que se encuentra a la izquierda de X}. En dicho caso, aXXo Xo pBYN Ky 2. Sii=neY¥ =B,entonces el simbolo B escrito sobre X, se afade a la secuencia infinita de los espacios en blanco que hay después de la cadena de entrada y no apareceri en la siguiente configuraci6n, Por tanto, HaXa Ka saKa fe X1Xa--Xe- 20K RS ee Ero e ee SE IE peeecereeeeecerreereeereeeren rere ree rere reeeee CCapitule 8 Introduecién a las méquinas de Turing 273, Supongamos ahora que 5(¢q,X)) ~ (p.¥.R);e8 decir, cl siguiente movimiento es hacia la derecha, Entonces, MN Ki agKRiga Ke MAKE OX YR oy Eneste caso, el movimiento refleja el hecho de que la cabeza se ha movido a la casilla + 1. De nuevo, tenemos, dos excepeiones importantes: 1. Sii=nentonces la casilla + 1 almacena un espacio en blanco, por lo que dicha casilla no formaba parte ‘de la configuracién anterior. Por tanto, tenemos que: x NaatdXn Xi -¥pB 2. Sii=1e¥ bolo B escrito sobre X; se aftade a la secuencia infnita de los espacios ‘en blanco anteriores ala cadena de entrada y no apareceré en la siguiente configuracién. Por tant, | aKiXs Kat Ka Kea EJEMPLO 8.2 ‘Vamos a disefar una méquina de Turing y a ver c6mo se comporta con una entrada tipica. La MT que vamos a construiraceptarécl lenguaje {0"I" |n > 1}. Inicialmente, se proporciona ala cinta una secuencia finita de eros, ‘y unos, precedida y seguida por secuencias infinitas de espacios en blanco. Altemnativamente, la MT cambiaré primero un 0 por X y luego un 1 por una ¥. hasta que se hayan cambiado todos los cerosy Ios unos. Mis detalladamente, comenzando por el extremo izquierdo de la entrada, se cambia sueesivamente un 0 por una X y se mueve hacia la derecha pasando por encima de todos los ceros y letras ¥ que ve, hasta encontrar un 1. Cambia el 1 por uma ¥ y se mueve hacia la izquienda pasando sobre todas las letras ¥ y ceros hasta encontrar una X. En esta situacién, busca un 0 colocado inmediatamente ala derecha y, silo encuentra, lo cambia por una X y rept el proceso, cambiando el 1 correspodiente por una ¥. Si la entrada no es de la forma O°1", entonces la MT terminaré no haciendo el siguiente movimiento y se 1}

Vous aimerez peut-être aussi