Está en la página 1de 20

5.

- CALCULABILIDAD Y MQUINAS DE TURING


5.1 Calculabilidad. 5.1.1 Problema soluble. Algoritmo. Nocin general de algoritmo. 1.2 Decidibilidad. Definibilidad. Generalidad. 5.2 Mquinas de Turing 5.2.1 Definicin. 5.2.2 Construccin. Clases de Parada. Mquinas equivalentes. Diferentes estrategias. Cardinalidad del alfabeto. Composicin de Mquinas. 5.2.3 Indeterminismo. 5.2.4 Funciones calculables y parcialmente calculables. 5.2.5 La Mquina Universal de Turing. Tesis de Turing.

5.1. CALCULABILIDAD. ALGORITMO

Se pretende la abstraccin y posterior formalizacin del concepto matemtico de calculabilidad o, lo que es lo mismo, de algoritmo. 5.1.1 Problema soluble(o calculable) Un problema es calculable cuando hay un proceso potencialmente realizable que conduce a la solucin. Por proceso potencialmente realizable entendemos que las operaciones del proceso se pueden realizar de forma inequvoca y que el n de pasos del proceso es finito. P.e., intuitivamente "el n no es calculable, puesto que tiene infinitos decimales". "Es calculable el valor aproximado con error <10-n , para un n determinado". Esta nocin de calculabilidad es independiente de las limitaciones de los hombres o las mquinas. No importa la cantidad de "memoria" o el "tiempo" que haga falta, siempre que al resultado se pueda llegar mediante un n finito de pasos. Las teoras matemticas de la calculabilidad no son un tratado de "clculo prctico". La aplicacin de un algoritmo se considera como un proceso potencialmente realizable. Por ejemplo: la multiplicacin de dos nmeros puede ser irrealizable dentro de un lapso de tiempo dado si los nmeros son excesivamente grandes; sin embargo, es un proceso potencialmente realizable. 5.1.2 Decidibilidad Ordinariamente a un problema se le puede aplicar un algoritmo conocido para resolverlo. Otras veces la cuestin estriba en conocer si existe un algoritmo capaz de resolver el problema en cuestin. Este tipo de problemas se llaman problemas de decisin (decidability). Se dice que un problema P tiene solucin,o que es calculable, cuando tiene "solucin positiva" el "problema de decisin" P siguiente: P: Existe un algoritmo capaz de resolver el problema P?. El problema P no tiene solucin si el problema P tiene "solucin negativa". La propiedad "el problema P tiene solucin" es decidible si existe tal algoritmo o si no existe tal algoritmo (se puede demostrar que no puede existir). En general, una propiedad es decidible si "existe un algoritmo que permita afirmar, en cualquier caso particular, si la propiedad es verdad o si es falsa". Si no existe el algoritmo y no se puede demostrar que tal algoritmo no puede existir, la propiedad es indecidible. Esta definicin de propiedad indecidible es adecuada para estudiar el concepto de algoritmo. Si la propiedad P(x1,...,xn) es decidible, lo es porque existe un algoritmo que, para toda n-upla (u1,...,un), da como solucin P(u1,...,un) {verdad, falso}. Si es verdad, hay solucin positiva para (u1,...un) y se puede aplicar un algoritmo para resolver el problema P tomando como entrada esa n-upla. Si es falso, no hay solucin del problema P para esa nupla, o sea, no es calculable para esa n-upla. Si es P(u1,...un) = falso para todas y cada una de las n-uplas, el problema P es insoluble (no existe algoritmo que resuelva P). El concepto de problema que no tiene solucin parece, en principio, confuso. El enunciado puede no tener sentido, aunque lo parezca(como en Fsica los enunciados que violan el principio de incertidumbre). Pero, qu sentido tiene proponer un problema que no tiene solucin?. Por ejemplo, el problema: Qu longitud de onda tiene la vida? o Qu densidad tiene la razn?. Son preguntas bien construidas sintcticamente, a partir de palabras con sentido, pero el significado de las preguntas no tiene sentido. No nos referimos a problemas sin sentido, sino a problemas bien definidos, con sentido, para los que no hay solucin. Cmo se puede llegar a definir un problema con esas caractersticas?. Generalmente por extensin. Por ejemplo, se puede empezar definiendo unas relaciones 2

sobre un universo de objetos, que pueden, o no, cumplirse entre cada pareja de objetos; si vamos imponiendo ms y ms relaciones, puede que no haya ninguna pareja que cumpla todas las relaciones que queremos imponer. Dado el dominio A, y varios conjuntos de relaciones binarias: R1 A X A, R2 A X A, etc., puede que la propiedad (x1 , x2 ) A X A tales que cumplan R1 R2 ....... sea decidible con solucin negativa. Veremos ms adelante algn caso de problema insoluble. Si Pes indecidible, el problema P no es calculable hoy, pero puede que algn da P sea decidible. Por ejemplo, el problema P: En el campo de los nmeros enteros x N = {-, 0, + }., dados a1, a0 N = {-, 0, + }, tiene solucin la ecuacin: a1 . x + a0 = 0?. La propiedad asociada es P: "Dados a0, a1, un algoritmo que calcula x. P es decidible, ya que, teniendo en cuenta si a0 es divisible por a1, P(a0, a1) = verdad en el caso de serlo y P(a0, a1) = falso en caso de no serlo. P es decidible. El problema P es soluble en el dominio D N2 tal que D = {(a0, a1) N2 (a0 / a1 N )} y es insoluble en N2 - D. Concepto intuitivo de algoritmo En los prrafos anteriores usamos ya un concepto intuitivo y no formalizado de algoritmo que podra expresarse como: "prescripcin precisa para ejecutar en un orden determinado un nmero finito de operaciones para resolver todos los problemas de cierto tipo de dados". En esta definicin aparecen dos rasgos fundamentales: 1) Definibilidad: El mtodo ha de poder ser comunicado bajo la forma de un nmero finito de reglas. No ha de dejar nada al arbitrio del operador (humano o artificial). Se puede repetir, sin importar quin lo haga ni cundo se haga. Es un proceso determinista. La mquina ejecutante ha de operar de manera absolutamente definida. Con los mismos datos, el algoritmo proporcionar siempre los mismos resultados. 2) Generalidad: Toda una serie de problemas del mismo tipo han de ser cubiertos por el algoritmo. Ej. el algoritmo de la suma sirve para cualesquiera dos sumandos. Pero este concepto es mucho ms que la simple sustitucin de una variable por un argumento. Lo que se pretende es alcanzar algoritmos que abarquen a otros como casos particulares. Observemos el concepto de generalidad a travs del siguiente ejemplo: Ecuaciones diofnticas: - 1. - De una incgnita: 1.1-1er grado: Dados a0 y a1 enteros, existe x0 entero que satisfaga la ecuacin a1x + a0 = 0?. La respuesta se alcanza analizando el valor de la incgnita x0 = - a0/a1. Si a1 es divisor de a0, existe solucin entera (x0). Si no, no existe. Por supuesto, x0 tambin ha de ser divisor de a0. El problema de decisin correspondiente tiene solucin positiva. El algoritmo que resuelve el problema de decisin es el algoritmo de la divisibilidad. 1-2 - 2 grado: a2x2 + a1x + a0 = 0 Podra pensarse que un algoritmo sera dar una tabla como la siguiente: a2 a1 a0 Solucin 0 0 0 S 0 0 1 No 0 0 -1 No Pero esta tabla sera siempre incompleta. El problema P, para 1-3 - cualquier grado y una incgnita, se formula as: anxn + an-1xn-1 + . . . . + a1x + a0 = 0 3

Los valores de x(cuando existen) se calculan de acuerdo con el siguiente teorema: "Si x0 es raz entera, a0 es divisible por x0". En efecto: (anx0n-1 + an-1x0n-2 + .......+ a1) x0 = - a0 n entero Conocido el algoritmo de la divisibilidad, el algoritmo que resuelve el problema de decisin, es inmediato: Encontrar todos los divisores de a0. Hallar el valor de P, sucesivamente, para cada uno de los divisores, hasta que, para uno de ellos, se cumpla P = 0. En este caso hay solucin. Si se acaban y no se cumple P=0, no existe un x entero que lo cumpla. - 2 - De dos incgnitas: 2.1-1er grado: Dados: a, b, c enteros {+, 0, -}, existe un algoritmo que permita decidir si existen x, y tales que se cumpla la ecuacin (1) ax + by = c en el campo de los enteros? El problema nos lo resuelve el siguiente resultado de la teora de los nmeros: Teorema: " (1) tiene solucin en el campo de los enteros si, y slo si, el m.c.d. (a, b), entero y positivo, es divisor de c". La propiedad P es decidible. Dados a, b y c, hay un algoritmo que dice si P(a, b, c) es verdad o es falsa. Conocido el algoritmo de la divisibilidad, y si se sabe hallar el m.c.d. de dos nmeros, es inmediato construir el algoritmo pedido: [1] Hallar el m.c.d. (a, b). [2] Hallar los divisores de c. [3] Es c mltiplo de m.c.d. (a, b)?. Si c es mltiplo de m.c.d. (a, b) existen x, y cumpliendo (1). Si c no es mltiplo de m.c.d. (a,b) no existen x, y. Cuando P(a, b, c) = V es fcil deducir el algoritmo que resuelve el problema calculando los valores de x e y que satisfacen la ecuacin. 2.2 - 2 grado (exponente mximo en cualquiera de las incgnitas = 2). 0 = a00 + a10 x1 + a01 x2 + a11 x1. x2 + a20 x12 + a02 x22 + a12 x1. x22 + + a21 x12. x2 + a22 x12. x22 er El 1 subndice en el coeficiente significa el exponente de la 1 incgnita ( x1) en el trmino correspondiente y el 2 subndice es el exponente de la 2 incgnita (x2). La misma ecuacin se puede expresar ms sintticamente: 2 i1, i2 = 0

a i1i2

. x1 i1 . x2i2 = 0

La ecuacin puede aumentar bien en el grado, bien en el nmero de incgnitas o bien en los dos. - 3 - La generalizacin mxima de este problema es: - k incgnitas y grado n: n 0 = 4

.x1i1. x2i2. ..xkik i1, i2...ik = 0 i1i2.... ik Para resolver este problema no se conoce algoritmo alguno. sta es la expresin del problema n 10 de Hilbert, que suele escribirse como: 0=a .x1i1. x2i2. ..xkik i1 i2.ik 0 i1 n1 0 i2 n2 .............. 0 ik nk , siendo, en general, n1 n2 nr De este ltimo problema no slo no se conoce ningn algoritmo que le sea aplicable, sino que se sabe que no es posible la existencia de un tal algoritmo. El problema de decisin correspondiente tiene solucin negativa. (Matijasevic, 1970). No existe algoritmo para poder resolver el problema en cualquier caso, es decir, para cualesquiera datos: coeficientes a con subndices i1, i2 , ... ik y exponentes i1, i2, .. ik. Ello no quiere decir que, para alguna clase particular de problemas de este tipo (p.e. todos los problemas 1 y todos los 2.1) no exista algoritmo para calcular la solucin. Pero en el camino desde el problema ms simple hasta el ms generalizado hay algunos para los que no se conocen algoritmos. El problema de decisin correspondiente no tiene solucin o, lo que es igual, la propiedad "el problema tiene solucin" es indecidible. P.e., el Teorema de Fermat fue indecidible hasta hace muy pocos aos. Teorema de Fermat : ( x, y, z) solucin de la ecuacin xn + yn = zn para n > 2 . Para n = 0 solucin, ya que: x0 = y0 = z0 = 1, pero 1 + 1 1. Para n = 1 hay muchas soluciones: x y z

0 0 0 -1 1 0 1 1 2 Para n = 2 hay solucin: 3 4 5 Para n > 2 no hay solucin, en general, salvo las triviales, como, p. ej., para n impar ( x = - y, n = 2k + 1, z = 0). Pero hasta final del siglo pasado no se demostr el teorema de forma reconocida indisputablemente. Tanto si no existe algoritmo porque se demuestra la no existencia (solucin negativa del problema de decisin), como si no se conoce algoritmo para el problema (no se ha podido demostrar la no existencia), el problema no es calculable. Sobre una nocin ms rigurosa de algoritmo La nocin rigurosa de algoritmo, as como el problema de si un supuesto algoritmo dado es realmente algoritmo o no, corresponden a la Teora de la Calculabilidad. Para demostrar que una clase de problemas dada no tiene solucin, es preciso dar una demostracin de la no existencia del algoritmo que da la solucin; pero si no se tiene una definicin precisa de algoritmo, no se puede demostrar. De ah la necesidad de una 5

definicin rigurosa de algoritmo. Es ilustrativo el hecho de que ha habido problemas que durante mucho tiempo no encontraban solucin y, despus, se pudo establecer que era imposible resolverlos con los medios que se empleaban para ello. As: el problema de la triseccin del ngulo (con regla y comps), el problema de la resolucin (por radicales) de ecuaciones, etc. La demostracin de imposibilidad es rigurosa cuando se tiene una definicin precisa de (1) "divisin de un ngulo con regla y comps" y (2) "resolucin de una ecuacin por radicales". En ambos casos se necesitaba la nocin de "algoritmo de una forma particular". Cuando se alcanz, se resolvi el problema. Sin embargo, para la nocin general de algoritmo no se dispona de una definicin precisa. Necesariamente la nocin de algoritmo ha de abarcar las caractersticas comunes de todos los algoritmos conocidos. Las caractersticas que ha de cumplir todo algoritmo son: 1) Las instrucciones son de "magnitud" finita (magnitud medida por ejemplo, en nmero de smbolos necesarios para enunciar la regla). 2) Un operador (humano o automtico) interpreta las instrucciones y realiza las operaciones. 3) Hay dispositivos (papel y lpiz, dispositivos mecnicos, memorias magnticas, etc.) para almacenar datos y efectuar operaciones. 4) Los procesos son discretos (aunque los objetos manipulados en los procesos puedan tener caractersticas continuas). Y el n de operaciones ha de ser finito. 5) La serie de instrucciones est perfectamente determinada (es un proceso determinstico). En las mismas condiciones y con los mismos datos, la aplicacin del algoritmo da los mismos resultados. Es ilustrativo ver la correspondencia con el concepto computadora de programa almacenado (Von Neumann): 1) Programa, como secuencia de instrucciones en nmero finito; y cada instruccin es finita, tanto en texto como por la naturaleza de su operatividad(como el programa). 2) Unidad de Control de la computadora. 3) Memoria de la computadora y operadores de la mquina. 4) Naturaleza digital de la computadora. 5) Naturaleza mecnica, automtica y determinada de la ejecucin del programa. La definicin general de algoritmo debe estar perfectamente formalizada y debe corresponder efectivamente con la esencia del concepto que quiere definirse. Para formalizar las caractersticas 2) y 3) es preciso definir la mquina que ejecutar las instrucciones y el mecanismo de trabajo de una tal mquina. La mquina deber presentar la mxima simplicidad en cuanto a su estructura lgica y las reglas por las que se rige su trabajo(instrucciones del programa y encadenamiento de las mismas) han de ser absolutamente precisas. Histricamente, la primera formalizacin de la nocin de algoritmo es la mquina de Turing (1936). La mquina de Turing formaliza el concepto de calculabilidad. Ha de ser lo ms simple posible y no ha de poseer limitaciones (en el sentido capacidad de memoria o tiempo). Otros investigadores partieron de otras tcnicas y consideraciones lgicas distintas, llegando a elaborarse varias definiciones del concepto de algoritmo. P.e.: Los sistemas combinatorios (mquinas de Post), algoritmos normales de Markof, algoritmos recursivos (o funciones recursivas) de Kleene y Gdel. Posteriormente se ha comprobado que todas estas definiciones son equivalentes, lo que induce a pensar que, aunque de forma 6

distinta, todas definen el mismo concepto, la nocin precisa de algoritmo. 5.2 MQUINAS DE TURING 5.2.1 Definicin Una MT es una "mquina de papel", con un funcionamiento preciso, que cumple todos los requisitos (1 a 5) del concepto de algoritmo. El soporte de almacenamiento es una cinta de celdas tan grande como se quiera. En una celda se puede guardar cualquier carcter del alfabeto que maneja la mquina. Para introducir informacin y manipularla existe una cabeza de Lectura/Escritura que, en un instante dado, apunta a una nica celda determinada. Las operaciones de transformacin de la informacin se realizan accediendo a las celdas y sustituyendo unos smbolos (caracteres del alfabeto) por otros. Para ello la mquina dispone de instrucciones para desplazar la cabeza L/E a lo largo de la cinta en cualquiera de los dos sentidos y para reemplazar caracteres. La parte de la mquina distinta de la cinta y la cabeza L/E puede ser vista como una Unidad de Control con una serie de estados internos, por los que se puede ir pasando a lo largo del tiempo. En un instante dado la mquina est en un determinado estado, la cinta tiene una determinada configuracin y la cabeza L/E apunta a una determinada celda de la cinta. .... 0 a b c 1 0 2 h .....

si Una configuracin, en un instante dado,es el contenido de la cinta ms el estado de la "Unidad de Control" ms la casilla apuntada por la cabeza L/E. Una descripcin instantnea es el contenido de la cinta ms el sitio apuntado por la cabeza en un instante dado. Operatividad: La mquina de Turing opera cclicamente. Al comienzo de un ciclo se parte de una determinada configuracin. El smbolo contenido en la celda explorada por la cabeza L/E ms el estado de la MT determinan las acciones a realizar en un ciclo. Estas acciones son: 1) Sustituir un smbolo por otro (puede ser el mismo) 2) Desplazar la cabeza L/E: a la derecha (D), a la izquierda (I) o dejarla en la misma casilla (N). 3) Pasar la UC a otro estado (el mismo como caso particular). Una vez realizadas esas tres acciones, el ciclo ha terminado y puede comenzar otro ciclo nuevo. En cada ciclo se realiza una instruccin. As pues, una instruccin viene representada por una quntupla: ai sk aj m sl; ai, aj ; sk, sl S y m {D, I, N} Convenio: Los dos primeros smbolos de la quntupla son el carcter al que apunta la cabeza L/E al comienzo del ciclo y el estado de la mquina en ese instante; los tres smbolos finales son el carcter que sustituye al que haba en la casilla, el movimiento de la cabeza L/E y el estado de la mquina al final del ciclo. Consiguientemente una MT queda completamente definida por , S , I , Q : alfabeto, S: conjunto de estados, I: configuracin inicial, Q: conjunto de quntuplas (repertorio de instrucciones). Una instruccin importante es la de Parada, equivalente a una quntupla ai sj ai N sj. 7

La mquina ha de ser no ambigua. Es decir, no debe haber, ante las mismas condiciones iniciales, reacciones diferentes de la mquina. Ello implica que no debe haber dos quntuplas distintas con los dos primeros smbolos iguales. S puede haber, obviamente, dos quntuplas diferentes con los tres ltimos smbolos iguales. Diferencias entre las computadoras y las Mquinas de Turing Aparte de la capacidad de memoria, las diferencias entre una MT y una computadora de estructura Von Neuman son: En cuanto a estados: En una MT el n de estados depende del algoritmo. En una computadora, un estado viene representado por el contenido de la memoria, y una situacin por un estado y un puntero a una direccin (la que contiene a la instruccin que va a ejecutarse). La ejecucin de la instruccin pasa a la mquina a otro estado y la variable de enlace adopta otro argumento (la direccin siguiente si la instruccin no era de bifurcacin y la mquina es secuencial natural). En cuanto a memoria: En una MT la memoria es la cinta de E/S ms el "soporte fsico" de los estados de la UC. Y ya sabemos cmo se pasa de una situacin a otra: a i sr aj m sl. Programa en una MT es la secuencia de quntuplas que hay que seguir para hacer el clculo. El mismo algoritmo, expresado en lenguaje-mquina "tipo" para una computadora "tipo", o sea, programa en lenguaje mquina, es algo distinto que la secuencia de quntuplas. Y se debe a la marcada diferencia entre n-upla e instruccin. Para formalizar el concepto de programa en lenguaje mquina no es, pues, buen modelo una MT. En cuanto al orden de ejecucin de las instrucciones: En la estructura Von Neumann el secuenciamiento lo marca el orden de colocacin de las instrucciones en la memoria interna y viene asegurado por el contador de programa. En una MT el orden de ejecucin lo marca en todo instante el estado de la mquina y el carcter de la cinta apuntado, que son los dos datos que determinan la quntupla que ha de ser ejecutada. 5.2.2 Construccin La construccin de la MT que resuelve un determinado problema pasa por la definicin del conjunto de estados y del repertorio de instrucciones de la misma. Es una creacin que requiere la habilidad de irse imaginando el trabajo de la mquina que, partiendo de los datos colocados en la cinta, termine por obtener la configuracin de la cinta que es la solucin del problema. Consiguientemente lo primero es definir la configuracin inicial: la informacin que debe contener la cinta para empezar a trabajar, ms la celda apuntada por la cabeza de L/E antes de que comience el procesamiento de los datos de entrada, ms el estado inicial de la mquina. Para ello es necesario tener definida la representacin de los datos y su codificacin en el alfabeto de la cinta. Ejemplo 1: Problema: Sumar dos nmeros. = {b, 1, 0}. Representacin de los nmeros: Secuencia de tantos "unos" como su cardinalidad. Aqu 0` es elemento separador y b` es blanco. Configuracin inicial ... b b 1 1 ... 1 0 1 ... 1 b b ... s0 A continuacin hay que definir la configuracin final o, al menos,la informacin que 8

debe contener la cinta cuando la mquina haya calculado el resultado y quede parada. No es posible, sin haber construido la mquina, saber el estado en que estar cuando haya parado. Tambin puede ser difcil saber la celda apuntada por la cabeza de L/E en ese instante, sin haber definido la estrategia de trabajo que deber seguir la mquina para alcanzar el resultado. Adoptando el convenio de que no se conserven los datos, slo aparecer el resultado, representado y codificado igual que los sumandos, en la configuracin final. Configuracin final ... b b 1 1 ... 1 1 b b s1 resultado A continuacin hay que definir la estrategia de trabajo para que la mquina transforme la configuracin inicial en la configuracin final. Estrategia de trabajo: Desplazar el puntero hacia la derecha hasta que se encuentre un blanco, haciendo los retoques necesarios para que queden tantos 1s como requiere el resultado correcto. En esta situacin son suficientes dos estados. En el estado inicial la mquina puede permanecer desplazando la cabeza hacia la derecha hasta que encuentra un b. Esa es la idea central para la construccin de la mquina. Paso a paso se ha de ir definiendo cada instruccin necesaria para seguir la estrategia de trabajo. Y slo se introducir un nuevo estado cuando se necesite. En este caso se llega a: M 0 1/1D b/bI s0 0/1D Diagrama de estados s1 b b/bN Matriz de Turing o Esquema funcional b I s1 b N s1 = Parada 1/bN 1 1 D s0 b N s1 so 1 D s0 s1 ....

Comprobacin: Se debe tener seguridad de la correccin de la mquina construida. Para ello se debe probar el procesamiento a mano de ejemplos significativos. As: Secuencia de descripciones instantneas: s0 ... b 1 1 1 0 1 1 b b . . . configuracin inicial s0 ... b 1 1 1 0 1 1 b b . . . -----------------------------s0 ... b 1 1 1 0 1 1 b . . . s0 ... b 1 1 1 1 1 1 b . . . -----------------------------s0 ... b 1 1 1 1 1 1 b . . . b 1 1 1 1 1 1 b . . . pasa de s0 a s1 S1 9

S1

b 1 1 1 1 1 b b . . . configuracin final

Tambin hay que comprobar para el 1 er sumando = 0 y/o 2 sumando = 0. Hacindolo, se ve que se cumple en este ejemplo. Podemos confiar en la mquina construida slo si ha salido airosa de las comprobaciones. Es conveniente aplicar sistemticamente el mtodo de construccin seguido, que consta de las siguientes etapas: 1.- Representacin de los objetos: Datos y resultados. 2.- Alfabeto de la cinta y codificacin de los objetos en el alfabeto. Y de ah la configuracin inicial. 3.- Definicin del resultado para todos los ejemplares de entrada. Y de ah la configuracin final, excepto el estado final y la celda apuntada en esa situacin. 4.- Estrategia de trabajo que ha de seguir la mquina para pasar de la configuracin inicial a la final. 5.- Estados e instrucciones de la mquina. 6.- Comprobacin. Siempre que la mquina no sea muy simple se debe seguir este mtodo. Mquinas equivalentes Veamos que puede haber diversas mquinas de Turing para resolver el mismo problema. Otra MT para el mismo problema del ejemplo 1: El retoque (borrar un 1) se hace al principio. La mquina equivalente es: Q = {0 s0 0 D s1, 0 s1 1 D s1 ,1 s0 b D s1, 1 s1 1 D s1, b s1 b N s1} Explicacin de la quntupla <0 s0 0 D s1>: Es el caso de 1er sumando nulo. Como el resultado ha de ser el 2 sumando, ste ha de quedar intacto, as como el separador. Comprobacin: Configuracin inicial: s0 b b 1 1 . . 1 0 1 1 . . 1 b s1 b b b 1 . . 1 0 1 1 . . 1 b s1 . . . . . . . . . . . . . . . . . . s1 b b b 1 . . 1 0 1 1 . . 1 b s1 b b b 1 . . 1 1 1 1 . . 1 b s1 . . . . . . . . . . . . . . . ..... Configuracin final: s1 b b b 1 . . 1 1 1 1 . . 1 b Tambin hay que comprobar para 1er sumando = 0 y/o 2 sumando = 0. Para una descripcin instantnea inicial distinta, la MT sera algo distinta. Por ejemplo, si se partiese de la configuracin inicial s0 ... b b b ... b 1 1 ... 1 0 1 1 ... 1 b b ..., la MT correspondiente sera (borrando el 1er "1" del 1er n): M2 s0 s1 b b D s0 b N s1 1 b D s1 1 D s1 0 0 D s1 1 D s1

Hay que hacer notar que si se partiese de la 1 MT (borrando el ltimo "1" del 2 n) habra que introducir un estado ms, porque habra que distinguir 3 tipos de b: Los que se recorren hacia la derecha al principio, el primero que se encuentra cuando ha terminado 10

de barrerse el 2 n y el b que se encuentra al volver a la izquierda (por transformacin del ltimo "1" del 2 n). Observacin sobre la Parada: En el ejemplo 1 hay una casilla (0, s1) vaca. Si la mquina se encontrara en esa situacin, quedara parada (bloqueada) por no existir instruccin para operar en ese caso. Eso no debe suceder si la mquina est bien construida. No debe haber otras instrucciones que lleven a la mquina a una tal situacin (situacin equivalente a una mquina de Von Neuman en un estado tal que el contenido del "contador del programa" apunta a una celda de memoria que no contiene ninguna instruccin). Datos incorrectos: Ahora bien en el caso de la MT puede llegarse a una situacin, estando bien construida la mquina, de buena Parada aun cuando los datos estn incorrectamente representados (con errores). P.ej. supongamos en el Ejemplo 1 que queremos sumar 3 + 3 y nos hemos equivocado al escribir el 2 sumando: Configuracin inicial : ... b b 1 1 1 0 1 0 1 b b ... La mquina trabajara hasta llegar a la configuracin final ...b b 1 1 1 1 1 1 b ..., que es la solucin. Sin embargo esta situacin no es deseable. Una elemental reflexin nos lleva a la conclusin de que esta mquina no distingue un smbolo separador de un error en un dato. Lo que podra hacerse en este caso es que la mquina distinguiera entre un primer smbolo y otros ms, pues se supone que slo debe haber uno. En la situacin de encontrarse con un segundo 0 debe llegarse a una situacin de Parada, pero esta Parada es debida a la deteccin de un error por la propia mquina. Es decir, todo programa debera contener una parte de reconocimiento y validacin de la configuracin inicial. En el caso que estamos tratando habran de crearse un estado ms y quntuplas nuevas, al mero efecto de reconocimiento de un error en algn dato y consiguiente parada de aviso. En s0, cuando se encuentra el primer 0, lo cambia a "1" y hay una transicin a s 1, de forma que, si se encuentra otro "0" en estado s 1, pueda parar: s1 0 0 N s1. Ver Me. Entonces se necesita un nuevo estado s2, para encargarse de lo que antes se encargaba a s1. Por qu no hace bien el resultado M? Qu es lo que hace en realidad M?. M (igual que M1 y M2) calcula la funcin: n f(x1, x2,...,xn) = x1 + 1 + x2 + 1 + ... + xn - 1 = xi + n - 2 i=1 Para n = 2, f (x1,x2) = x1 + x2 Me s0 s1 s2 1 1 D s0 1 D s1 b N s2 parada error 0 1 D s1 0 N s1 b I s2 b N s2 parada buena b

Consideraciones similares pueden hacerse sobre todas las posibles clases de errores (b en los datos, p.e.). Las cosas pueden adquirir una complejidad grande en funcin de las clases de errores que admitamos como posibles. 11

Mientras no digamos lo contrario supondremos que la configuracin inicial es correcta. Pero debemos tener en cuenta que "un algoritmo solo debe hacer aquella funcin para la que ha sido construido", y nada ms. En el caso del Ej. 1, la mquina suma dos nmeros y, adems, hace otras cosas (considera que los 0, a partir del 1, son "1"). Relacin entre la cardinalidad del alfabeto y el n de estados: Los datos se pueden codificar con uno u otro alfabeto, con ms o menos smbolos. Las MT correspondientes son diferentes en uno u otro caso. Vemoslo con un ejemplo: Ejemplo 2: Sumar dos nmeros, con la misma representacin del ej. 1. = {b, 1} Configuracin inicial: . . . b 1 1 1 b 1 1 b . . . Necesitamos distinguir entre el b separador de los 2 nmeros y el b que sigue al 2 nmero. Las acciones a realizar, en cada uno de esos dos casos, son diferentes. Con el mismo smbolo de entrada, la primera vez hay que sustituirlo por "1" y continuar moviendo el cursor a la derecha, pero en el 2 caso hay que dejarlo todo tal cual y desplazar el cursor a la izquierda. Teniendo en cuenta que no puede haber dos quntuplas distintas con los mismos dos primeros smbolos y, adems, que el smbolo de entrada (b) es el mismo en los dos casos, es preciso introducir otro estado ms. Tendremos entonces tres estados, caracterizados por: s0 : el carcter (1) que se lee es del 1er sumando. s1 : el carcter que se lee es del 2 sumando. Cuando llega un b se ha terminado de explorar el 2 sumando. s2 : Se han terminado los sumandos. Esquema funcional s0 b 1 1 D s1 1 D s0 s1 b I s2 1 D s1 s2 b N s2 b N s2

Vemos que, para el mismo problema, se necesita un estado ms. Y no es posible hacerlo con menos estados. Es sta un regla general: "Cuanto menor es el n de smbolos para representar la misma informacin, mayor es el n de estados de la Mquina de Turing necesarios para resolver un problema dado". Composicin de mquinas En muchos casos, MT complejas pueden construirse combinando MT ya construidas ms sencillas. Es decir, en una fase de la ejecucin del algoritmo acta una MT y en otras fases actan otras. La MT que representa el algoritmo es, entonces, la composicin de las MT que representan los distintos subalgoritmos. As, en la fig. la M T global es la composicin de M T 1 con M T 2. MT1 MT Ejemplo: Definir la M T que calcula el complemento a 2 de un nmero x representado en binario: f(x) = 2n - x 12 MT2

Vamos a definirla por composicin de MT1 con MT2, asignando a MT1 el clculo de g(x) = 2n x 1 y a MT2 el de f(y) = y + 1. -M T 1 : Calcula la n-upla complementaria de una n-upla dada. En efecto, 2 n 1 es, en base 2, n unos. Si realizamos la resta de un nmero expresado por n unos de otro de n cifras binarias, basta cambiar cada uno por cero y cada cero por uno. = {b , 1 , 0}, x puede tomar los valores "0" "1". x es el complementario de x. C.I. s0...b b x x ... x b b ...; C.F. s0... b x x... x bb..... MT1 s0 b b N s0 0 1 D s0 1 0 D s0

- M T 2: Suma una unidad a un nmero representado en base 2. El algoritmo es: En estado s0 cambia los "1" a "0" hasta que encuentre un "0" yendo hacia la izda. (o b), en cuyo caso lo cambia a "1" y pasa a s1. En s1 sigue explorando , sin cambiar nada, hasta que encuentra b y para. Siguiendo el mtodo general de construccin se llega a: MT2 b 1 0 s0 s1 b N s1 0 I s0 1 I s1 1 I s1 0 I s1

- M T : Calcula el complemento a 2 de un n binario. Configuracin inicial: ... b x x ... x b ... s0 La estrategia a seguir se basa en la siguiente observacin: "el complemento a 2 es igual que el complementario (0 1, 1 O) ms 1 unidad". P. ej.: (1 0 0 - x x = 1 1 - x x) + 1). El complementario lo hace M T 1 y la suma la hace la M T 2.

MT b 0 1

t0 b I t1 1 D t0 0 D t0 MT1

t1 1 I t2 1 I t2 0 I t1 MT2

t2 b N t2 0 I t2 1 I t2

Hay que tener cuidado en la notacin: t0 (MT) es s0 (MT1), t1 (MT) es s0 (MT2) y t2 (MT) es s1 (MT2). El enlace se hace siempre sustituyendo la instruccin de PARADA de la mquina por otra, u otras, para transformar la configuracin final de la MT1 en la configuracin inicial de la MT2 y pasar el control a MT2. En nuestro caso, basta una sola instruccin: b to b I t1. La MT1 calcula la funcin g: N N g (x) = La MT2 " " " f : N N f (x) = x + 1. La MT " " " f (g (x)). Es decir, primero se calcula g (x) ( el complementario de x ) y 13

despus se calcula f sobre el resultado (x) de haber aplicado g. 5.2.3 INDETERMINISMO En el ejemplo 2 se podra pensar en 2 estados en lugar de 3, de forma que en el 1 la cinta ha de moverse hacia delante. Entonces, en este estado, cuando se encuentra el 1er blanco (de separacin) se pondra en su lugar un 1 y cuando se encuentra el 2 blanco (de terminacin del 2 sumando) se pondra un b (igual smbolo) y se movera la cinta a la izquierda y se pasara a otro estado. Pero entonces habra 2 quntuplas con los dos 1os smbolos iguales: s0 b 1 s0 D y s0 b b s1 I. Habra indeterminismo. Con dos reglas as, cuando se da una situacin s0 b no se sabra cual regla elegir. Qu sucede si quitamos la imposicin de que no puede haber dos instrucciones distintas con los 2 primeros smbolos iguales?. Supongamos que la mquina, en una situacin determinada, tiene que elegir ejecutar una u otra de esas dos (o ms) instrucciones. Supongamos que la eleccin es al azar. El comportamiento, entonces, sera indeterminstico. Dejaramos de estar en procesos efectivamente calculables (podra llegarse a una parada con un resultado u otro). Ejemplo: Sea la MT: s0 b 1 1 1 D s1 1 D s0 1 D s2 s1 b N s1 s2 b N s2 b D s2

A partir de la configuracin inicial ... b b 1 1 ... 1 1 b b ... , calcula la funcin f: N N: f (x) = x +1, si elige siempre como 1 instruccin s0 1 1 s0 D y f (x) = 1, " " " " " " s0 1 1 s2 D. En general, un clculo (computation), en una mquina no determinista, es un rbol de descripciones instantneas (DI), en lugar de ser una secuencia lineal de DI, que es el caso de las mquinas deterministas. En el ejemplo, el rbol de DI es binario. De l representamos solo los dos itinerarios correspondientes a las funciones arriba indicadas: .... b 1 1 ... 1 b ... s0

s0

b 1 1 ... 1 b --------------

b 1 1 ... 1 b b 1 b 1 ...1 b

s2 s2 14

s0 s0 s1

-------------b 1 1 ... 1 b b 1 1 ... 1 b b 1 1 ... 1 1 b

---------------b 1 b ... 1 b s2 b 1 b ... b b s2

Otros itinerarios corresponden al clculo de f (x) = 2, 3, etc Pero en general, puede ser un rbol cualquiera. Si la mquina est bien construida, para un ejemplar (instance), cada itinerario del rbol conduce a un resultado en general diferente del de los dems itinerarios. Con esta perspectiva uno se puede preguntar si el indeterminismo posibilita el clculo de funciones que no pueden ser calculadas con mquinas deterministas. La respuesta es NO, porque una funcin calculable asigna un valor (nico) del rango a cada n-upla (entrada) del dominio para la que exista solucin. Cada itinerario de una mquina indeterminista corresponde al clculo de una determinista. En AF y AP es clara la utilidad que tiene construir autmatas finitos no deterministas para facilitar la construccin de los autmatas deterministas correspondientes. Igualmente el concepto es til en MT. Tiene aplicacin, p.ej., asociado al clculo de funciones parcialmente calculables, como vamos a ver. 5.2. 4 FUNCIONES CALCULABLES Y PARCIALMENTE CALCULABLES Una funcin definida en un dominio es totalmente calculable cuando existe una MT que calcula la funcin en todos los puntos del dominio; es decir, para cualquier posible entrada hay un clculo finito que termina cuando la mquina obtiene el resultado y queda parada. Es parcialmente calculable cuando existe una MT tal que calcula la funcin para algunos puntos del dominio y para los dems no hay clculo finito con parada. Ejemplos: - f : N x N N, f (x1, x2) = x1 - x2 tiene solucin para las parejas de enteros no negativos que cumplen x1 x2. - f : N x N R, f (x1, x2) = x1/x2 tiene solucin en el campo de los nos racionales (x1, x2 enteros, excepto x2 = 0). Est definida para un subconjunto de parejas de enteros, pero no para otras : 2/3, 1/7, ... A travs del enfoque de las MT, se define algoritmo, como "el procedimiento definido por la mquina de Turing que calcula una funcin parcialmente calculable". Hay que tener en cuenta que el conjunto de las funciones totalmente calculables es un subconjunto de las funciones parcialmente calculables. Esta definicin de algoritmo es equivalente a la hiptesis fundamental de la Teora de Algoritmos: "Cualquier algoritmo puede ser definido por un esquema funcional de Turing y realizado en la MT correspondiente". Esta definicin de algoritmo se apoya en el hecho de que no se ha podido definir ninguna funcin calculable que no pueda ser calculada por una mquina de Turing. El algoritmo, en el caso de funcin parcialmente calculable, debe detectar que, para esa entrada de datos particular, el problema tiene solucin, calcularla y parar. Tambin debe detectar cundo no existe solucin y parar, avisando de la ausencia de solucin. Si no se hace esa deteccin, la mquina no parara cuando no hay solucin. Indeterminismo y funciones parcialmente calculables: En el caso de funciones parcialmente calculables, la MT debera elegir: a) no hacer nada 15

cuando la funcin no es calculable para una determinada entrada y comunicarlo, o b) hacer su trabajo si la funcin es calculable para esa determinada entrada. La entrada es aceptada o rechazada. Hay que tomar una decisin: por qu rama seguir?. Es cmodo construir, en estos casos, la MT no determinista que resuelve el problema. Sea la funcin parcialmente calculable Resta(x1, x2) = x1 - x2 , siendo x1, x2 N . Cuando x1 x2, aplicamos el mtodo de construccin para la mquina de Turing. Con el alfabeto = {1, b, #} , y la configuracin inicial ...b b # 1 1 ... 1 # 1 ... 1 # b b.... s0, establecemos la siguiente estrategia de trabajo: Borra un 1 del sustraendo, va a la izquierda hasta que encuentra en el minuendo otro 1 y lo borra. Vuelve explorando hacia la derecha hasta que encuentra otro 1 en el sustraendo; se vuelve a las condiciones iniciales. Este trabajo se repite cclicamente hasta que se borra el sustraendo completamente, en cuyo caso se encuentra # y para. As para el ejemplar de configuracin inicial ...b b # 1 1 1 # 1 1 # bb..., la configuracin final(sin saber el estado de parada ni la celda final) sera: ...bb # 1 b b # b b # bb... La mquina de Turing as construida tiene tres estados, que se definen a continuacin: s0 b 1 # b D s0 b I s1 # N s0 s1 b I s1 b D s2 # I s1 # D s0 s2 b D s2 s0: Se explora el sustraendo de izquierda a derecha hasta que se encuentra un 1; si todo son b (ya ha terminado de restar) se encuentra # y para. s1: Recuerda que ha borrado una cifra del sustraendo. s2: recuerda que ha borrado la cifra correspondiente del minuendo.

La secuencia de descripciones instantneas, para la configuracin inicial arriba expresada, es: # 1 1 1 # 1 1 # s0 # 1 1 1 # b 1 # s1 # 1 1 1 # b 1 # s1 # 1 1 b # b 1 # s2 # 1 1 b # b 1 # s0 # 1 1 b # b 1 # s0 # 1 1 b # b b s1 s1 # 1 1 b # b b s1 # 1 b b # b b s2 s2 # 1 b b # b b # s0 s0 # 1 b b # b b # s0 --- Comprobacin correcta cuando x1 > x2 Tambin se comprueba que es correcta cuando x1 = x2. Qu hace la mquina cuando x1 < x2 ? Se encontrara en una situacin tal como: # bb#bb1# s1 y, a partir de aqu: 16

... b b # s1 ... b b # s1 --------------------- indefinidamente. As trabajan todas las MT(deterministas). Cuando la CI corresponde a un punto del dominio de la funcin en el que sta est definida, calcula el resultado y para; pero si est indefinida, no para. La MT no determinista, por convenio, sera la misma incluyendo otra quntupla de Parada de Rechazo. Para llegar a la MTND que calcula la funcin parcial Resta(x 1 - x2), a estas instrucciones hay que aadir la parada de rechazo por funcin indefinida # s1 # N s1, que hace parar a la mquina cuando x1 < x2. Esta mquina realiza un rbol de itinerarios, de forma que, cuando para, hay una hoja con resultado x1 - x2; pero cuando x1 < x2, todas las hojas son consecuencia de parada por rechazo o bien no hay parada. Vamos a verlo en nuestro caso. Qu hara la MT indeterminista?. En cualquier situacin distinta de (s1 #) hara lo que la MT determinista, ya que hay una sola quntupla para ejecutar. Observemos lo que ocurre cuando x1 x2 y cuando x1 < x2. Caso x1 x2 En la situacin (s1 #) aplicara las dos quntuplas, s1 # # N s1 (funcin indefinida) y s1 # # I s1, calculando dos configuraciones distintas simultneamente. Una de las dos configuraciones sera final, la que corresponde a la parada por funcin indefinida. La otra no es final y la secuencia de configuraciones continuara hasta que se encontrase en otra situacin (s 1 #) o hasta que se encontrase en la situacin (s 0 #) que es el caso de parada cuando x1 x2. Luego, en el caso de funcin definida, hay en el rbol de configuraciones una hoja de parada con el resultado calculado. Las dems hojas corresponden a parada por funcin indefinida. Caso x1 < x2 En el caso x1 < x2 no habra ninguna rama conduciendo a una parada de funcin calculada. Todas las hojas corresponderan a parada por funcin indefinida y, adems, habra una rama con infinitas configuraciones: ... b # ... # ... # b... s1 b b # ... # ... # b... s1 ................................. Cuando la MTND procesa un ejemplar para el que la funcin est indefinida, se produce un rbol de clculos que no tiene ninguna hoja con parada por funcin calculada; es decir, todas las paradas son de funcin indefinida, o bien no hay parada (clculo infinito). Pero una mquina no determinista puede ser siempre sustituida por la mquina determinista equivalente con dos paradas, una para funcin calculada y otra para funcin indefinida. En la prctica, lo que conviene es detectar las entradas para las cuales la M T no parara (funcin parcialmente calculable). Hay que discriminar la configuracin # 1 1 ... 1 # 1 1 ... 1 # s1 de la configuracin # b b ... b # b b ... 1 # s1, que se da cuando x1 < x2. As, en nuestro caso, bastara con realizar tres acciones nuevas: 1- incluir algn estado ms (s3), 2- sustituir la instruccin # s1 # I s1 por # s1 # I s2 y 3- dar a s2 la responsabilidad de s1 cuando se va hacia la izquierda en el minuendo. En esa situacin, cuando en s2 se encuentra #, se ha detectado una entrada para la que la funcin no es calculable. As pues, la instruccin de parada por rechazo es: # S2 # N S2. Hay que tener en cuenta que los estados, adems de s0 , son: s1: estado que recuerda que ha borrado una cifra del sustraendo. 17

s2: recuerda que ha pasado del sustraendo al minuendo (el ltimo smbolo explorado es el separador # entre ambos). Si, yendo hacia la izquierda, solo hubiera b`, entonces es x1 < x2, se encontrara con # y habra de parar diciendo que, para esos datos, la funcin no est definida. s 3: recuerda que ha borrado la cifra correspondiente del minuendo. La MTD es: 1 s0 s1 s2 s3 b D s3 b I s1 b b D s0 b I s1 b I s2 b D s3 # # N s0 # I s2 # N s2 # D s0 Parada (x1x2)

Parada por valor indefinido(x1 < x2)

Los clculos suceden as: s0 # 1 1..1 # 1 1..1 # (primera vez) s0 # ... 1 1 b b b # b b b1...1 # (intermedio) s0 # ...1 1 b b b # b b b # parada de final feliz (x1 x 2). Si x1 < x2, la configuracin final es: s2 # b b b # b b b1...1 # parada por funcin indefinida. Hay casos. en que es natural construir una MT ND. Son situaciones en las que no se sabe con certeza el camino que se debe seguir. P. ej., supongamos dos datos seguidos, tales que uno es como el otro pero invertido: = {b, a1, a2}. Configuracin inicial: ... b a1 a2 a1 a1 a2 a1 b .... . Saber dnde termina uno y empieza otro es difcil para la MT. En este caso, cuando llegue esa situacin, hay que seguir las dos hiptesis: 1) la mquina sigue trabajando como si a partir de esa situacin estuviese el 2 dato y 2) la mquina sigue trabajando como si an no se hubiese alcanzado el 2 dato. Como en el estudio de los AFND y los APND, es posible pasar a la MTD aumentando el nmero de estados. A veces es ms cmodo construir la MTD partiendo de la MTND. Queda indicado que el Indeterminismo es una posibilidad que puede significar comodidad a la hora de construir mquinas, pero que no aade potencialidad adicional. 2.5. LA MAQUINA UNIVERSAL DE TURING Hasta aqu hemos considerado cada esquema funcional asociado a su MT propia. Pero es posible concebir una M T capaz de ejecutar cualquier algoritmo; es decir capaz de realizar los clculos que realizara cualquier otra MT, o sea, capaz de simular (tener el mismo 18

comportamiento) cualquier MT particular. Esta mquina Universal no debe ser diseada para realizar un clculo especfico, sino para procesar cualquier informacin (realizar cualquier clculo especfico -MT particularsobre cualquier configuracin inicial de entrada correcta para esa MT particular). La MUT ha de tomar como informacin de entrada la MT particular ms la C.I. . El algoritmo universal ha de ser un intrprete de esa informacin de entrada. La cinta de entrada ha de tener una C.I. tal como: ... bb quntupla b quntupla b... C I (MT) b b ... El trabajo de interpretacin del esquema universal ha de consistir en: 1) sk = s0 (Inicializacin: Suponer que la MT particular empieza estando en s0). 2) Acceder al carcter de la Configuracin apuntado por la Cabeza L/E de la MT (ai). 3) Encontrar en la cinta una quntupla que empiece por ai sk (ai sk aj m s1). 4) Reemplazar ai por aj en la casilla donde se accedi a ai. 5) Realizar el desplazamiento m desde la casilla donde estaba ai. O sea, marcar la nueva casilla a la que apunta la cabeza L/E de la MT particular. 6) sk = s1 (actualizar el estado de la MT particular). 7) Volver a 2). Observaciones sobre el esquema universal: - La M U T parar cuando el clculo est terminado, o sea, cuando la quntupla a aplicar sea del tipo ai sk ai sk N sk. As pues, en el ciclo que es el algoritmo universal, hay que incluir dentro de la fase 3 una exploracin de la quntupla, una vez encontrada, para decidir si hay que parar o continuar. -Es complicado explicitar detalladamente las instrucciones que componen cada fase del Algoritmo Universal, debido al carcter unidimensional de la cinta y a la exploracin casilla a casilla. - Es obligada una codificacin de la informacin. El n de alfabetos y de caracteres distintos de todas las posibles M T particulares que puedan pensarse es arbitrariamente grande y, sin embargo, la M U T slo puede disponer de un alfabeto finito determinado. Esto obliga a definir procedimientos para codificar la informacin de cualquier alfabeto finito al alfabeto que definamos para la M U T. Por el mismo motivo ha de haber una normalizacin en la notacin de los estados (el estado inicial de cualquier M T debe ser designado con el mismo smbolo, y as para los sucesivos). Una metodologa para la aplicacin de este concepto de normalizacin de la informacin es la numeracin de Gdel, que se ve en Funciones Recursivas. Otra, ms prctica, es la siguiente: Codificacin de MTS: La codificacin debe permitir a la MUT un reconocimiento preciso de cada componente sintctico registrado en la cinta. Para las letras del alfabeto: c (b) = b (cdigo del carcter blanco) c (ai) = 1i+1; ai (indeterminadamente grande); i = 0,1,2, Para los estados: c (h) = 1; h = estado de parada. c( si) = 1i+1; Si Q S (indeterminadamente grande). Para los desplazamientos del cursor, m { N, I, D}: c (N) = 1; c ( I) = 1 1; c (D) = 1 1 1. 19

El cdigo de una quntupla p a q d m est representado por una palabra {0, 1}*, definida as: c(p) b c(a) b c (q) b c(d) b c(m) b. Una MT que tiene n quntuplas (el orden no importa): u1, u2, , un tiene un cdigo: c(qj) b c(u1) b c(u2) b .. b c(un) b, siendo qj: estado inicial de T. Codificacin de palabras Sean las letras del alfabeto Zi A y Z una palabra Z = Z1 Z2Zn Z tiene un cdigo c(Z) = b b c ( Z1) b c (Z2) b b c (Zn) b Sobre el trabajo de la MUT (continuacin) La entrada a la MUT est dada por una MT y una palabra Z. La entrada codificada es: c(T) c(Z). Obsrvese que entre el final del cdigo de la ltima quntupla y el comienzo del cdigo de Z hay tres blancos. Es fcil construir la MT que transforma T en c(T) y Z * en c(Z). Para simular el trabajo de T con una entrada Z, la entrada a la MUT es c(T) c(Z). El trabajo ha de ser: a) Cuando la funcin parcial que calcula T est definida para Z, T se detiene y da s como resultado. En este caso la MUT debe parar y dar c(s) como resultado. z T s c(T) c(Z) MUT c(T) c(s)

b) Cuando la funcin que calcula T no est definida para Z, T no se detiene y la MUT tampoco debe parar. En este caso la MUT se mete en un ciclo infinito. Tesis de Turing <<La Mquina Universal de Turing calcula el conjunto de las funciones parcialmente calculables >>. Esta tesis se apoya en la mismas observaciones que la definicin de algoritmo y en el hecho de que la M U T simula cualquier M T particular.

20

También podría gustarte