

Una máquina de Turing es un modelo matemático de computación que describe una máquina abstracta [ 1 ] que manipula símbolos en una tira de cinta según una tabla de reglas. [ 2 ] A pesar de la simplicidad del modelo, es capaz de implementar cualquier algoritmo informático . [ 3 ]
La máquina opera en una cinta de memoria infinita [ 4 ] dividida en celdas discretas , [ 5 ] cada una de las cuales puede contener un solo símbolo extraído de un conjunto finito de símbolos llamado alfabeto de la máquina. Tiene un "cabezal" que, en cualquier punto de la operación de la máquina, se posiciona sobre una de estas celdas, y un "estado" seleccionado de un conjunto finito de estados. En cada paso de su operación, el cabezal lee el símbolo en su celda. Luego, basándose en el símbolo y en el estado actual de la máquina, esta escribe un símbolo en la misma celda y mueve el cabezal un paso a la izquierda o a la derecha, [ 6 ] o detiene el cálculo. La elección del símbolo de reemplazo a escribir, la dirección en la que se mueve el cabezal y si se debe detener se basa en una tabla finita que especifica qué hacer para cada combinación del estado actual y el símbolo leído. Al igual que con un programa de computadora real, es posible que una máquina de Turing entre en un bucle infinito que nunca se detendrá.
La máquina de Turing fue inventada en 1936 por Alan Turing , [ 7 ] [ 11 ] quien la llamó "máquina automática". [ 12 ] Fue el director de tesis doctoral de Turing, Alonzo Church , quien posteriormente acuñó el término "máquina de Turing" en una reseña. [ 13 ] Con este modelo, Turing pudo responder negativamente a dos preguntas:
- ¿Existe alguna máquina capaz de determinar si una máquina cualquiera en su cinta es "circular" (por ejemplo, se congela o no logra continuar su tarea computacional)?
- ¿Existe alguna máquina que pueda determinar si alguna máquina cualquiera en su cinta imprime alguna vez un símbolo dado? [ 14 ] [ 15 ]
Así, al proporcionar una descripción matemática de un dispositivo muy simple capaz de realizar cálculos arbitrarios, pudo demostrar propiedades de la computación en general, y en particular, la incomputabilidad del Entscheidungsproblem , o «problema de decisión» (si toda afirmación matemática es demostrable o refutable). [ 16 ]
Las máquinas de Turing demostraron la existencia de limitaciones fundamentales en el poder de la computación mecánica. [ 3 ]
Si bien pueden expresar cálculos arbitrarios, su diseño minimalista los hace demasiado lentos para la computación en la práctica: las computadoras del mundo real se basan en diseños diferentes que, a diferencia de las máquinas de Turing, utilizan memoria de acceso aleatorio .
La completitud de Turing es la capacidad de un modelo de computación o un sistema de instrucciones para simular una máquina de Turing. Un lenguaje de programación que es Turing completo es teóricamente capaz de expresar todas las tareas que pueden realizar las computadoras; casi todos los lenguajes de programación son Turing completos si se ignoran las limitaciones de la memoria finita.
Descripción general
Una máquina de Turing es un modelo idealizado de una unidad central de procesamiento (CPU) que controla toda la manipulación de datos realizada por una computadora. La máquina clásica utiliza memoria secuencial para almacenar datos. Normalmente, la memoria secuencial se representa como una cinta de longitud infinita sobre la cual la máquina puede realizar operaciones de lectura y escritura.
En el contexto de la teoría del lenguaje formal , una máquina de Turing ( autómata ) es capaz de enumerar un subconjunto arbitrario de cadenas válidas de un alfabeto . Un conjunto de cadenas que se pueden enumerar de esta manera se denomina lenguaje recursivamente enumerable . La máquina de Turing puede definirse, de forma equivalente, como un modelo que reconoce cadenas de entrada válidas, en lugar de enumerar cadenas de salida.
Dada una máquina de Turing M y una cadena arbitraria s , generalmente no es posible decidir si M producirá finalmente s . Esto se debe a que el problema de la parada es irresoluble, lo cual tiene importantes implicaciones para los límites teóricos de la computación.
Una máquina de Turing capaz de simular cualquier otra máquina de Turing se denomina máquina de Turing universal (MTU, o simplemente máquina universal). Otro formalismo matemático, el cálculo lambda , con una naturaleza "universal" similar, fue introducido por Alonzo Church . El trabajo de Church se entrelazó con el de Turing para formar la base de la tesis Church-Turing . Esta tesis afirma que las máquinas de Turing, el cálculo lambda y otros formalismos de computación similares capturan la noción informal de métodos efectivos en lógica y matemáticas , proporcionando así un modelo mediante el cual se puede razonar sobre un algoritmo o "procedimiento mecánico" de forma matemáticamente precisa, sin estar atado a ningún formalismo en particular. El estudio de las propiedades abstractas de las máquinas de Turing ha aportado numerosas perspectivas a la informática , la teoría de la computabilidad y la teoría de la complejidad .
Descripción física
En su ensayo de 1948, "Maquinaria inteligente", Turing escribió que su máquina consta de:
...una capacidad de memoria ilimitada obtenida en forma de una cinta infinita dividida en cuadrados, en cada uno de los cuales se podía imprimir un símbolo. En cualquier momento hay un símbolo en la máquina; se le llama símbolo escaneado. La máquina puede modificar el símbolo escaneado, y su comportamiento está determinado en parte por ese símbolo, pero los demás símbolos de la cinta no afectan el comportamiento de la máquina. Sin embargo, la cinta puede moverse hacia adelante y hacia atrás a través de la máquina, siendo esta una de las operaciones elementales de la misma. Por lo tanto, cualquier símbolo en la cinta puede eventualmente tener una entrada. [ 17 ]
— Turing 1948 [ 18 ]
Descripción
La máquina de Turing modela matemáticamente una máquina que opera mecánicamente sobre una cinta. En esta cinta hay símbolos que la máquina puede leer y escribir, uno a uno, mediante un cabezal de lectura/escritura. El funcionamiento está completamente determinado por un conjunto finito de instrucciones elementales, como «en el estado 42, si el símbolo visto es 0, escribir un 1; si el símbolo visto es 1, pasar al estado 17; en el estado 17, si el símbolo visto es 0, escribir un 1 y pasar al estado 6»; etc. En el artículo original (« Sobre los números computables, con una aplicación al problema de decisión », véanse también las referencias a continuación ), Turing imagina no un mecanismo, sino una persona a la que llama «computadora», que ejecuta estas reglas mecánicas deterministas de forma servil (o, como dice Turing, «de manera desordenada»).


Más explícitamente, una máquina de Turing consta de:
- Una cinta dividida en celdas, una al lado de la otra. Cada celda contiene un símbolo de un alfabeto finito. El alfabeto contiene un símbolo especial en blanco (aquí escrito como '0') y uno o más símbolos adicionales. Se supone que la cinta es extensible arbitrariamente hacia la izquierda y hacia la derecha, de modo que la máquina de Turing siempre dispone de la cantidad de cinta necesaria para su cálculo. Se supone que las celdas que no se han escrito previamente están rellenas con el símbolo en blanco. En algunos modelos, la cinta tiene un extremo izquierdo marcado con un símbolo especial; la cinta se extiende o es indefinidamente extensible hacia la derecha.
- Un cabezal capaz de leer y escribir símbolos en la cinta y moverla de izquierda a derecha, celda por celda. En algunos modelos, el cabezal se mueve mientras la cinta permanece fija.
- Un registro de estado que almacena el estado de la máquina de Turing, uno de un número finito de estados. Entre estos se encuentra el estado inicial especial con el que se inicializa el registro de estado. Estos estados, escribe Turing, reemplazan el "estado mental" en el que normalmente se encontraría una persona que realiza cálculos.
- Una tabla finita [ 19 ] de instrucciones [ 20 ] que, dado el estado (q i ) en el que se encuentra actualmente la máquina y el símbolo (a j ) que está leyendo en la cinta (el símbolo que se encuentra actualmente bajo el cabezal), le indica a la máquina que haga lo siguiente en secuencia (para los modelos de 5- tuplas ):
- Borra o escribe un símbolo (reemplazando una j por una j1 ).
- Mover la cabeza (que se describe mediante d k y puede tener los valores: 'L' para un paso a la izquierda , 'R' para un paso a la derecha o 'N' para permanecer en el mismo lugar).
- Suponga el mismo estado o uno nuevo según lo prescrito (vaya al estado q i1 ).
En los modelos de 4-tuplas, borrar o escribir un símbolo (a j1 ) y mover el cabezal a la izquierda o a la derecha (d k ) se especifican como instrucciones separadas. La tabla indica a la máquina que (ia) borre o escriba un símbolo o (ib) mueva el cabezal a la izquierda o a la derecha, y luego (ii) adopte el mismo estado o uno nuevo según lo prescrito, pero no ambas acciones (ia) e (ib) en la misma instrucción. En algunos modelos, si no hay ninguna entrada en la tabla para la combinación actual de símbolo y estado, la máquina se detendrá; otros modelos requieren que todas las entradas estén completas.
Cada parte de la máquina (es decir, su estado, colecciones de símbolos y cinta usada en un momento dado) y sus acciones (como imprimir, borrar y movimiento de la cinta) es finita , discreta y distinguible ; es la cantidad ilimitada de cinta y tiempo de ejecución lo que le da una cantidad ilimitada de espacio de almacenamiento .
Definición formal
Siguiendo a Hopcroft y Ullman (1979), [ 21 ] una máquina de Turing (de una cinta) puede definirse formalmente como una 7- tupladónde
- es un conjunto finito y no vacío de estados ;
- es un conjunto finito y no vacío de símbolos del alfabeto de cinta ;
- es el símbolo en blanco (el único símbolo que puede aparecer en la cinta infinitamente a menudo en cualquier paso durante el cálculo);
- es el conjunto de símbolos de entrada , es decir, el conjunto de símbolos que se permite que aparezcan en el contenido inicial de la cinta;
- :(Q\setminus F)\times \Gamma \rightharpoonup Q\times \Gamma \times \{L,R\}} es una función parcial llamada función de transición , donde L es el desplazamiento a la izquierda y R es el desplazamiento a la derecha. Sino está definido en el estado actual y el símbolo de cinta actual, entonces la máquina se detiene; [ 22 ] intuitivamente, la función de transición especifica el siguiente estado transitado desde el estado actual, qué símbolo sobrescribir el símbolo actual apuntado por el cabezal y el siguiente movimiento del cabezal.
- es el estado inicial ;
- es el conjunto de estados finales o estados de aceptación . Se dice que el contenido inicial de la cinta es aceptado porsi finalmente se detiene en un estado de.

Una variante permite "ningún desplazamiento", digamos N, como un tercer elemento del conjunto de direcciones..
La 7-tupla para el castor ocupado de 3 estados se ve así (vea más sobre este castor ocupado en los ejemplos de máquinas de Turing ):
- (estados);
- (cinta de símbolos del alfabeto);
- (símbolo en blanco);
- (símbolos de entrada);
- Consulte la tabla de estados a continuación (función de transición).
- (estado inicial);
- (estados finales);
Inicialmente, todas las celdas de cinta están marcadas con.
Se requieren detalles adicionales para visualizar o implementar máquinas de Turing.
En palabras de van Emde Boas (1990): "El objeto de teoría de conjuntos [su descripción formal de siete tuplas similar a la anterior] proporciona solo información parcial sobre cómo se comportará la máquina y cómo serán sus cálculos". [ 23 ]
Por ejemplo,
- Será necesario tomar muchas decisiones sobre el aspecto real de los símbolos, así como establecer un método infalible para leer y escribir símbolos de forma indefinida.
- Las operaciones de desplazamiento a la izquierda y a la derecha pueden mover el cabezal de la cinta a lo largo de la misma, pero a la hora de construir una máquina de Turing, resulta más práctico hacer que la cinta se deslice hacia adelante y hacia atrás bajo el cabezal.
- La cinta puede ser finita y extenderse automáticamente con espacios en blanco según sea necesario (lo cual se aproxima más a la definición matemática), pero es más común imaginarla extendiéndose infinitamente en uno o ambos extremos y prellenándose con espacios en blanco, excepto en el fragmento finito explícitamente dado donde se encuentra el cabezal de la cinta (esto, por supuesto, no es implementable en la práctica). La cinta no puede tener una longitud fija, ya que eso no se correspondería con la definición dada y limitaría seriamente el rango de cálculos que la máquina puede realizar a los de un autómata lineal acotado si la cinta fuera proporcional al tamaño de entrada, o a los de una máquina de estados finitos si tuviera una longitud estrictamente fija.
Definiciones alternativas
Las definiciones en la literatura a veces difieren ligeramente para facilitar o aclarar argumentos o demostraciones, pero esto siempre se hace de manera que la máquina resultante tenga la misma potencia computacional. Por ejemplo, el conjunto podría cambiarse deadonde N ("Ninguno" o "Sin operación") permitiría que la máquina permaneciera en la misma celda de la cinta en lugar de moverse hacia la izquierda o la derecha. Esto no aumentaría la capacidad de cálculo de la máquina.
La convención más común representa cada "instrucción de Turing" en una "tabla de Turing" mediante una de nueve 5-tuplas, según la convención de Turing/Davis (Turing (1936) [ 24 ] y Davis (2000) [ 25 ] ):
- (definición 1): (q i , S j , S k /E/N, L/R/N, q m )
- ( estado actual q i , símbolo escaneado S j , imprimir símbolo S k / borrar E / ninguno N , mover cinta un cuadrado a la izquierda L / derecha R / ninguno N , nuevo estado q m )
Otros autores (Minsky (1967), [ 26 ] Hopcroft y Ullman (1979), [ 27 ] Stone (1972), [ 28 ] adoptan una convención diferente, con el nuevo estado q m listado inmediatamente después del símbolo escaneado S j :
- (definición 2): (q i , S j , q m , S k /E/N, L/R/N)
- ( estado actual q i , símbolo escaneado S j , nuevo estado q m , imprimir símbolo S k / borrar E / ninguno N , mover cinta un cuadrado a la izquierda L / derecha R / ninguno N )
En el resto de este artículo se utilizará la "definición 1" (la convención de Turing/Davis).
En la siguiente tabla, el modelo original de Turing permitía solo las tres primeras líneas que él denominó N1, N2, N3. [ 29 ] Permitió el borrado del "cuadrado escaneado" nombrando un símbolo 0, S 0 = "borrar" o "en blanco", etc. Sin embargo, no permitió la no impresión, por lo que cada línea de instrucciones incluye "imprimir símbolo S k " o "borrar". [ 31 ] Las abreviaturas son de Turing. [ 32 ] Posteriormente al artículo original de Turing en 1936-1937, los modelos de máquinas han permitido los nueve tipos posibles de quíntuplas:
Cualquier tabla de Turing (lista de instrucciones) puede construirse a partir de las nueve quíntuplas anteriores. Por razones técnicas, las tres instrucciones no imprimibles o "N" (4, 5, 6) generalmente pueden omitirse. Para ver ejemplos, consulte los ejemplos de máquinas de Turing .
Con menos frecuencia se encuentran los usos de 4-tuplas: estas representan una atomización adicional de las instrucciones de Turing. [ 33 ]
El "estado"
El término «estado», utilizado en el contexto de las máquinas de Turing, puede generar confusión, ya que puede tener dos significados. La mayoría de los autores posteriores a Turing han empleado «estado» para referirse al nombre o identificador de la instrucción actual a ejecutar, es decir, el contenido del registro de estado. Sin embargo, Turing (1936) estableció una clara distinción entre el registro de lo que denominó la «m-configuración» de la máquina y el «estado de progreso» de la máquina (o de la persona) durante el cálculo: el estado actual del sistema en su conjunto. Lo que Turing llamó «la fórmula de estado» incluye tanto la instrucción actual como todos los símbolos presentes en la cinta.
Así, el estado de avance del cálculo en cualquier etapa está completamente determinado por la nota de instrucciones y los símbolos en la cinta. Es decir, el estado del sistema puede describirse mediante una única expresión (secuencia de símbolos) que consta de los símbolos en la cinta seguidos de Δ (que se supone que no aparece en ningún otro lugar) y, a continuación, de la nota de instrucciones. Esta expresión se denomina «fórmula de estado».
Anteriormente en su artículo, Turing llevó esto aún más lejos: da un ejemplo donde colocó un símbolo de la "configuración m" actual —la etiqueta de la instrucción— debajo del cuadrado escaneado, junto con todos los símbolos en la cinta. [ 35 ] Lo llama "la configuración completa ". [ 36 ] Para imprimir la "configuración completa" en una línea, coloca la etiqueta de estado/configuración m a la izquierda del símbolo escaneado.
Una variante de esto se ve en Kleene (1952), donde Kleene muestra cómo escribir el número de Gödel de la "situación" de una máquina: coloca el símbolo de "configuración m" q 4 sobre el cuadrado escaneado en aproximadamente el centro de los 6 cuadrados no vacíos en la cinta (ver la figura de la cinta de Turing en este artículo) y lo coloca a la derecha del cuadrado escaneado. [ 37 ] Pero Kleene se refiere a "q 4 " en sí mismo como "el estado de la máquina". Hopcroft y Ullman llaman a este compuesto la "descripción instantánea" y siguen la convención de Turing de colocar el "estado actual" (etiqueta de instrucción, configuración m) a la izquierda del símbolo escaneado (p. 149), es decir, la descripción instantánea es el compuesto de símbolos no vacíos a la izquierda, estado de la máquina, el símbolo actual escaneado por el cabezal y los símbolos no vacíos a la derecha.
Ejemplo: estado total del castor ocupado de 3 estados y 2 símbolos después de 3 "movimientos" (tomado del ejemplo "run" en la figura siguiente):
- 1 A 1
Esto significa: después de tres movimientos la cinta tiene ... 000110000 ... en ella, el cabezal está escaneando el 1 más a la derecha y el estado es A. Los espacios en blanco (en este caso representados por "0") pueden ser parte del estado total como se muestra aquí: B 01; la cinta tiene un solo 1 en ella, pero el cabezal está escaneando el 0 ("espacio en blanco") a su izquierda y el estado es B.
En el contexto de las máquinas de Turing, se debe aclarar a qué se refiere el término "estado": la instrucción actual, la lista de símbolos en la cinta junto con la instrucción actual, o la lista de símbolos en la cinta junto con la instrucción actual colocada a la izquierda del símbolo escaneado o a la derecha del símbolo escaneado.
Diagramas de "estado"

A la derecha: la tabla anterior representada como un diagrama de "transición de estados".
Por lo general, es mejor dejar las tablas grandes como tablas (Booth, p. 74). Se simulan más fácilmente mediante ordenador en formato tabular (Booth, p. 74). Sin embargo, ciertos conceptos —por ejemplo, máquinas con estados de «reinicio» y máquinas con patrones repetitivos (cf. Hill y Peterson, p. 244 y ss.)— se aprecian mejor al visualizarlos como un dibujo.
El lector deberá decidir, en función del contexto particular, si un dibujo supone una mejora respecto a su tabla.

Cabe advertir nuevamente al lector que dichos diagramas representan una instantánea de su tabla congelada en el tiempo, no el curso ("trayectoria") de un cálculo a través del tiempo y el espacio. Si bien la máquina del castor ocupado "se ejecuta" siempre seguirá la misma trayectoria de estado, esto no ocurre con la máquina de "copia", a la que se le pueden proporcionar "parámetros" de entrada variables.
El diagrama "progreso del cálculo" muestra el progreso del "estado" (instrucción) del castor ocupado de tres estados a través de su cálculo de principio a fin. En el extremo derecho se encuentra la "configuración completa" de Turing (la "situación" de Kleene y la "descripción instantánea" de Hopcroft-Ullman) en cada paso. Si la máquina se detuviera y se borrara tanto el "registro de estado" como toda la cinta, estas "configuraciones" podrían usarse para reiniciar un cálculo en cualquier punto de su progreso. [ 38 ]
Modelos equivalentes
Se ha demostrado que muchas máquinas que podrían considerarse con mayor capacidad computacional que una simple máquina de Turing universal no poseen mayor potencia (Hopcroft y Ullman, pág. 159; cf. Minsky, 1967). Quizás computan más rápido, utilizan menos memoria o su conjunto de instrucciones es menor, pero no pueden computar con mayor potencia (es decir, realizar más funciones matemáticas). (La tesis de Church-Turing postula que esto es cierto para cualquier tipo de máquina: que todo lo que se puede "computar" puede ser computado por alguna máquina de Turing).
Una máquina de Turing es equivalente a un autómata de pila (PDA) de una sola pila, que se ha vuelto más flexible y conciso al flexibilizar el requisito de último en entrar, primero en salir (LIFO) de su pila. Además, una máquina de Turing también es equivalente a un PDA de dos pilas con semántica LIFO estándar, utilizando una pila para modelar la cinta a la izquierda del cabezal y la otra pila para la cinta a la derecha.
En el otro extremo, algunos modelos muy simples resultan ser equivalentes a una máquina de Turing , es decir, tienen la misma capacidad de cálculo que el modelo de máquina de Turing.
Los modelos equivalentes comunes son la máquina de Turing de cintas múltiples , la máquina de Turing de pistas múltiples , las máquinas con entrada y salida, y la máquina de Turing no determinista (NDTM) en contraposición a la máquina de Turing determinista (DTM) para la cual la tabla de acciones tiene como máximo una entrada para cada combinación de símbolo y estado.
Las máquinas de Turing de solo lectura que se mueven hacia la derecha son equivalentes a los autómatas finitos deterministas (así como a los autómatas finitos no deterministas mediante la conversión utilizando el algoritmo de conversión de autómatas finitos no deterministas ).
Con fines prácticos y didácticos, la máquina de registros equivalente puede utilizarse como un lenguaje de programación ensamblador convencional .
Una pregunta relevante es si el modelo de computación representado por lenguajes de programación concretos es equivalente a una máquina de Turing. Si bien la computación de una computadora real se basa en estados finitos y, por lo tanto, no puede simular una máquina de Turing, los lenguajes de programación en sí mismos no necesariamente tienen esta limitación. Kirner et al., 2009 demostraron que, entre los lenguajes de programación de propósito general, algunos son Turing completos, mientras que otros no. Por ejemplo, ANSI C no es Turing completo, ya que todas las instancias de ANSI C (son posibles diferentes instancias, ya que el estándar deja deliberadamente ciertos comportamientos sin definir por razones de compatibilidad con versiones anteriores) implican una memoria de espacio finito. Esto se debe a que el tamaño de los tipos de datos de referencia de memoria, llamados punteros , es accesible dentro del lenguaje. Sin embargo, otros lenguajes de programación como Pascal no tienen esta característica, lo que les permite ser Turing completos en principio. Es Turing completo en principio, ya que se permite que la asignación de memoria en un lenguaje de programación falle, lo que significa que el lenguaje de programación puede ser Turing completo al ignorar las asignaciones de memoria fallidas, pero los programas compilados ejecutables en una computadora real no pueden.
Máquinas C de elección, máquinas O de Oracle
Al principio de su artículo (1936), Turing establece una distinción entre una "máquina automática" —cuyo "movimiento está completamente determinado por la configuración"— y una "máquina de elección":
... cuyo movimiento está determinado solo parcialmente por la configuración... Cuando una máquina de este tipo alcanza una de estas configuraciones ambiguas, no puede continuar hasta que un operador externo haya tomado una decisión arbitraria. Este sería el caso si usáramos máquinas para trabajar con sistemas axiomáticos.
Turing (1936) no profundiza más, salvo en una nota a pie de página donde describe cómo usar una máquina automática para "encontrar todas las fórmulas demostrables del cálculo [de Hilbert]" en lugar de usar una máquina de elección. "Supone que las elecciones siempre están entre dos posibilidades, 0 y 1. Cada prueba estará entonces determinada por una secuencia de elecciones i 1 , i 2 , ..., i n (i 1 = 0 o 1, i 2 = 0 o 1, ..., i n = 0 o 1), y por lo tanto el número 2 n + i 1 2 n-1 + i 2 2 n-2 + ... +i n determina completamente la prueba. La máquina automática lleva a cabo sucesivamente la prueba 1, la prueba 2, la prueba 3, ..." [ 39 ]
Esta es, de hecho, la técnica mediante la cual una máquina de Turing determinista (es decir, a-) puede usarse para imitar la acción de una máquina de Turing no determinista ; Turing resolvió el asunto en una nota a pie de página y parece descartarlo para futuras consideraciones.
Una máquina oráculo u o-máquina es una a-máquina de Turing que pausa su cálculo en el estado " o " mientras, para completarlo, "espera la decisión" del "oráculo", una entidad no especificada por Turing "aparte de decir que no puede ser una máquina" (Turing (1939)). [ 40 ]
Máquinas de Turing universales

Como escribió Turing en Lo indecidible , (cursiva añadida): [ 41 ]
Es posible inventar una única máquina que pueda utilizarse para calcular cualquier secuencia computable. Si a esta máquina U se le proporciona una cinta en cuyo inicio está escrita la cadena de quíntuples separados por punto y coma de alguna máquina de cálculo M , entonces U calculará la misma secuencia que M.
El modelo de computación que Turing llamó su "máquina universal" —" U " para abreviar— es considerado por algunos [ 42 ] como el avance teórico fundamental que condujo a la noción de la computadora de programa almacenado .
El artículo de Turing... contiene, en esencia, la invención del ordenador moderno y algunas de las técnicas de programación que lo acompañaron.
— Minsky (1967) [ 43 ]
En términos de complejidad computacional , una máquina de Turing universal de múltiples cintas solo necesita ser más lenta por un factor logarítmico en comparación con las máquinas que simula. Este resultado fue obtenido en 1966 por FC Hennie y RE Stearns . [ 44 ] [ 45 ]
Comparación con máquinas reales

Las máquinas de Turing son más potentes que otros tipos de autómatas, como las máquinas de estados finitos y los autómatas de pila . Según la tesis de Church-Turing , son tan potentes como las máquinas reales y pueden ejecutar cualquier operación que un programa real pueda realizar. Lo que se pasa por alto en esta afirmación es que, dado que una máquina real solo puede tener un número finito de configuraciones , no es más que una máquina de estados finitos, mientras que una máquina de Turing dispone de una cantidad ilimitada de espacio de almacenamiento para sus cálculos.
Existen varias maneras de explicar por qué las máquinas de Turing son modelos útiles de ordenadores reales:
- Todo aquello que una computadora real puede calcular, una máquina de Turing también puede hacerlo. Por ejemplo: «Una máquina de Turing puede simular cualquier tipo de subrutina presente en los lenguajes de programación, incluyendo procedimientos recursivos y cualquiera de los mecanismos conocidos de paso de parámetros» (Hopcroft y Ullman, p. 157). Un autómata finito suficientemente grande también puede modelar cualquier computadora real, sin tener en cuenta la entrada/salida. Por lo tanto, cualquier afirmación sobre las limitaciones de las máquinas de Turing también se aplica a las computadoras reales.
- La diferencia radica únicamente en la capacidad de una máquina de Turing para manipular una cantidad ilimitada de datos. Sin embargo, dado un tiempo finito, una máquina de Turing (al igual que una máquina real) solo puede manipular una cantidad finita de datos.
- Al igual que una máquina de Turing, una máquina real puede ampliar su espacio de almacenamiento según sea necesario, adquiriendo más discos u otros medios de almacenamiento.
- Las descripciones de programas de máquinas reales mediante modelos abstractos más sencillos suelen ser mucho más complejas que las descripciones que utilizan máquinas de Turing. Por ejemplo, una máquina de Turing que describe un algoritmo puede tener unos pocos cientos de estados, mientras que el autómata finito determinista (AFD) equivalente en una máquina real dada tiene cuatrillones. Esto hace que la representación mediante AFD sea inviable para su análisis.
- Las máquinas de Turing describen algoritmos independientemente de la cantidad de memoria que utilicen. Si bien la memoria de cualquier máquina actual tiene un límite, este límite puede aumentar arbitrariamente con el tiempo. Las máquinas de Turing nos permiten formular afirmaciones sobre algoritmos que, en teoría, se mantendrán indefinidamente, independientemente de los avances en la arquitectura de las máquinas de computación convencionales .
- Los algoritmos que se ejecutan en máquinas abstractas equivalentes a Turing pueden disponer de tipos de datos de precisión arbitraria y nunca tienen que lidiar con condiciones inesperadas (incluidas, entre otras, la falta de memoria ).
Limitaciones
Teoría de la complejidad computacional
Una limitación de las máquinas de Turing es que no modelan bien las ventajas de una configuración particular. Por ejemplo, las computadoras modernas de programa almacenado son en realidad instancias de una forma más específica de máquina abstracta conocida como máquina de programa almacenado de acceso aleatorio o modelo de máquina RASP. Al igual que la máquina de Turing universal, la RASP almacena su "programa" en una "memoria" externa a las "instrucciones" de su máquina de estados finitos. A diferencia de la máquina de Turing universal, la RASP tiene un número infinito de "registros" distinguibles, numerados pero ilimitados: "celdas" de memoria que pueden contener cualquier número entero (cf. Elgot y Robinson (1964), Hartmanis (1971) y, en particular, Cook-Rechow (1973); referencias en random-access machine ). La máquina de estados finitos de la RASP está equipada con la capacidad de direccionamiento indirecto (por ejemplo, el contenido de un registro puede usarse como dirección para especificar otro registro); por lo tanto, el "programa" de la RASP puede direccionar cualquier registro en la secuencia de registros. La consecuencia de esta distinción es que existen optimizaciones computacionales que pueden realizarse en función de los índices de memoria, algo imposible en una máquina de Turing convencional. Por lo tanto, al utilizar máquinas de Turing como base para acotar los tiempos de ejecución, se puede demostrar una "límite inferior falso" para ciertos algoritmos (debido a la falsa suposición simplificadora de una máquina de Turing). Un ejemplo de esto es la búsqueda binaria , un algoritmo que se ejecuta más rápidamente utilizando el modelo de computación RASP que el modelo de máquina de Turing.
Interacción
En los inicios de la informática, el uso de las computadoras se limitaba generalmente al procesamiento por lotes , es decir, a tareas no interactivas, cada una de las cuales producía datos de salida a partir de datos de entrada. La teoría de la computabilidad, que estudia la computabilidad de funciones a partir de entradas y salidas, y para la cual se inventaron las máquinas de Turing, refleja esta práctica.
Desde la década de 1970, el uso interactivo de las computadoras se ha vuelto mucho más común. En principio, es posible modelar esto mediante un agente externo que lee y escribe en la cinta simultáneamente, como una máquina de Turing; sin embargo, esto rara vez coincide con la interacción real. Por lo tanto, al describir la interactividad, se suelen preferir alternativas como los autómatas de entrada/salida .
Comparación con el modelo aritmético de computación
El modelo aritmético de computación difiere del modelo de Turing en dos aspectos: [ 46 ]
- En el modelo aritmético, cada número real requiere una sola celda de memoria, mientras que en el modelo de Turing el tamaño de almacenamiento de un número real depende del número de bits necesarios para representarlo.
- En el modelo aritmético, cada operación aritmética básica con números reales (suma, resta, multiplicación y división) se puede realizar en un solo paso, mientras que en el modelo de Turing el tiempo de ejecución de cada operación aritmética depende de la longitud de los operandos.
Algunos algoritmos se ejecutan en tiempo polinomial en un modelo pero no en el otro. Por ejemplo:
- El algoritmo euclidiano se ejecuta en tiempo polinomial en el modelo de Turing, pero no en el modelo aritmético.
- El algoritmo que lee n números y luego calculamediante repetidas ejecuciones de elevación al cuadrado en tiempo polinomial en el modelo aritmético, pero no en el modelo de Turing. Esto se debe a que el número de bits necesarios para representar el resultado es exponencial con respecto al tamaño de la entrada.
Sin embargo, si un algoritmo se ejecuta en tiempo polinomial en el modelo aritmético y, además, la longitud binaria de todos los números involucrados es polinomial con respecto a la longitud de la entrada, entonces siempre se ejecutará en tiempo polinomial en el modelo de Turing. Se dice que dicho algoritmo se ejecuta en tiempo fuertemente polinomial .
Historia
Antecedentes históricos: maquinaria computacional
Robin Gandy (1919–1995), alumno de Alan Turing (1912–1954) y amigo suyo de toda la vida, rastrea el linaje de la noción de "máquina calculadora" hasta Charles Babbage (alrededor de 1834) y de hecho propone la "Tesis de Babbage":
Que todo el desarrollo y las operaciones de análisis ahora pueden ser ejecutados por maquinaria .
— (cursivas en Babbage según lo citado por Gandy) [ 47 ]
El análisis que hace Gandy de la máquina analítica de Babbage describe las siguientes cinco operaciones (véase págs. 52-53):
- Las funciones aritméticas +, −, ×, donde − indica resta "propia": x − y = 0 si y ≥ x .
- Cualquier secuencia de operaciones es una operación.
- Iteración de una operación (repetir n veces una operación P).
- Iteración condicional (repetir n veces una operación P condicionada al "éxito" de la prueba T).
- Transferencia condicional (es decir, " ir a " condicional).
Gandy afirma que «las funciones que pueden calcularse mediante (1), (2) y (4) son precisamente aquellas que son computables por Turing ». [ 48 ] Cita otras propuestas de «máquinas calculadoras universales», incluidas las de Percy Ludgate (1909), Leonardo Torres Quevedo (1914), [ 49 ] [ 50 ] Maurice d'Ocagne (1922), Louis Couffignal (1933), Vannevar Bush (1936) y Howard Aiken (1937). Sin embargo:
… el énfasis está en programar una secuencia iterable fija de operaciones aritméticas. No se reconoce la importancia fundamental de la iteración condicional y la transferencia condicional para una teoría general de las máquinas de calcular…
— Gandy [ 51 ]
El problema de la decisión (Entscheidungsproblem): la décima pregunta de Hilbert de 1900.
En lo que respecta a los problemas de Hilbert planteados por el famoso matemático David Hilbert en 1900, un aspecto del problema n.° 10 había estado circulando durante casi 30 años antes de que se formulara con precisión. La expresión original de Hilbert para el problema n.° 10 es la siguiente:
10. Determinación de la resolubilidad de una ecuación diofántica . Dada una ecuación diofántica con cualquier número de incógnitas y con coeficientes enteros racionales: Diseñar un proceso según el cual se pueda determinar en un número finito de operaciones si la ecuación es resoluble en enteros racionales. El problema de decisión ( entscheidungsproblem ) se resuelve cuando conocemos un procedimiento que permite decidir, mediante un número finito de operaciones, la validez o satisfacibilidad de cualquier expresión lógica dada. El problema de decisión debe considerarse el problema principal de la lógica matemática.
— citado, con esta traducción y el original en alemán, en Dershowitz y Gurevich, 2008 [ 52 ]
Para 1922, esta noción de " Entscheidungsproblem " se había desarrollado un poco, y H. Behmann afirmó que
... la forma más general del problema de decisión es la siguiente:
Se requiere una prescripción bastante definida y de aplicación general que permita decidir en un número finito de pasos la verdad o falsedad de una afirmación puramente lógica dada...
— Gandy [ 53 ] citando a Behmann
Behmann señala que... el problema general es equivalente al problema de decidir qué proposiciones matemáticas son verdaderas.
— Ibíd.
Si uno pudiera resolver el Entscheidungsproblem, entonces tendría un "procedimiento para resolver muchos (o incluso todos) los problemas matemáticos".
Para el congreso internacional de matemáticos de 1928, Hilbert "formuló sus preguntas con bastante precisión. Primero, ¿eran las matemáticas completas ?... Segundo, ¿eran las matemáticas consistentes ?... Y tercero, ¿eran las matemáticas decidibles ?" [ 55 ] [ 56 ] Las dos primeras preguntas fueron respondidas en 1930 por Kurt Gödel en la misma reunión donde Hilbert pronunció su discurso de retiro (para gran disgusto de Hilbert); la tercera —el problema de la decisión— tuvo que esperar hasta mediados de la década de 1930.
El problema radicaba en que una respuesta requería primero una definición precisa de "prescripción general aplicable definida", que el profesor de Princeton Alonzo Church denominaría " calculabilidad efectiva ", y en 1928 no existía tal definición. Pero durante los siguientes 6-7 años, Emil Post desarrolló su definición de un trabajador que se desplaza de una habitación a otra escribiendo y borrando marcas según una lista de instrucciones, [ 57 ] al igual que Church y sus dos estudiantes Stephen Kleene y JB Rosser mediante el cálculo lambda de Church y la teoría de la recursión de Gödel (1934). El artículo de Church (publicado el 15 de abril de 1936) demostró que el problema de decisión era, en efecto, "indecidible" [ 58 ] y se adelantó a Turing por casi un año (el artículo de Turing se presentó el 28 de mayo de 1936 y se publicó en enero de 1937). Mientras tanto, Emil Post presentó un breve artículo en el otoño de 1936, por lo que Turing al menos tenía prioridad sobre Post. Si bien Church revisó el artículo de Turing, este tuvo tiempo de estudiarlo y añadir un apéndice donde esbozó una demostración de que el cálculo lambda de Church y sus máquinas calcularían las mismas funciones.
Pero lo que Church había hecho era algo bastante diferente y, en cierto sentido, más débil. ... La construcción de Turing era más directa y proporcionaba un argumento basado en primeros principios, lo que subsanaba la deficiencia en la demostración de Church.
— Hodges [ 9 ]
Post solo había propuesto una definición de calculabilidad y criticado la "definición" de Church, pero no había demostrado nada.
La máquina A de Alan Turing
En la primavera de 1935, Turing, siendo un joven estudiante de maestría en el King's College de Cambridge , aceptó el desafío; había sido estimulado por las conferencias del lógico MHA Newman "y aprendió de ellas el trabajo de Gödel y el Entscheidungsproblem... Newman usó la palabra 'mecánico'... En su obituario de Turing de 1955, Newman escribe:
Ante la pregunta "¿qué es un proceso 'mecánico'?", Turing dio la respuesta característica "Algo que puede hacer una máquina" y se embarcó en la tarea, sumamente agradable, de analizar la noción general de una máquina de computación.
— Gandy [ 59 ]
Gandy afirma que:
Supongo, aunque no lo sé con certeza, que Turing, desde el inicio de su trabajo, tuvo como objetivo demostrar la indecidibilidad del problema de decisión (Entscheidungsproblem). Me contó que la idea principal del artículo se le ocurrió mientras descansaba en los prados de Grantchester en el verano de 1935. Dicha idea podría haber sido su análisis de la computación o su constatación de la existencia de una máquina universal, y por lo tanto, un argumento diagonal para demostrar la insolubilidad del problema.
Si bien Gandy creía que la afirmación de Newman anterior era "engañosa", esta opinión no es compartida por todos. Turing tuvo un interés de por vida en las máquinas: "Alan había soñado con inventar máquinas de escribir de niño; [su madre] la Sra. Turing tenía una máquina de escribir; y bien podría haber comenzado preguntándose qué significaba llamar a una máquina de escribir 'mecánica'" (Hodges, p. 96). Mientras estudiaba su doctorado en Princeton, Turing construyó un multiplicador de lógica booleana (véase más abajo). Su tesis doctoral, titulada " Sistemas de lógica basados en ordinales ", contiene la siguiente definición de "una función computable":
Como se mencionó anteriormente, «una función es efectivamente calculable si sus valores pueden hallarse mediante algún proceso puramente mecánico». Podemos interpretar esta afirmación literalmente, entendiendo por proceso puramente mecánico aquel que podría realizarse mediante una máquina. Es posible ofrecer una descripción matemática, en una forma normal determinada, de las estructuras de estas máquinas. El desarrollo de estas ideas conduce a la definición de función computable propuesta por el autor y a la identificación de la computabilidad con la calculabilidad efectiva. No resulta difícil, aunque sí algo laborioso, demostrar que estas tres definiciones [la tercera es el cálculo lambda] son equivalentes.
— Turing (1939 , p. 166) [ 61 ]
Alan Turing inventó la "máquina automática" en 1936. [ 7 ] Turing presentó su artículo el 31 de mayo de 1936 a la Sociedad Matemática de Londres para sus Actas , [ 62 ] pero se publicó a principios de 1937 y las separatas estuvieron disponibles en febrero de 1937. [ 63 ] Fue el director de tesis doctoral de Turing, Alonzo Church , quien más tarde acuñó el término "máquina de Turing" en una reseña. [ 13 ] Con este modelo, Turing pudo responder negativamente a dos preguntas:
- ¿Existe alguna máquina capaz de determinar si una máquina cualquiera en su cinta es "circular" (por ejemplo, se congela o no logra continuar su tarea computacional)?
- ¿Existe alguna máquina que pueda determinar si alguna máquina cualquiera en su cinta imprime alguna vez un símbolo dado? [ 14 ] [ 15 ]
Así, al proporcionar una descripción matemática de un dispositivo muy simple capaz de realizar cálculos arbitrarios, pudo demostrar propiedades de la computación en general, y en particular, la incomputabilidad del Entscheidungsproblem ('problema de decisión'). [ 16 ]
Cuando Turing regresó al Reino Unido, finalmente se convirtió en corresponsable del descifrado de los códigos secretos alemanes creados por las máquinas de cifrado llamadas "Enigma"; también participó en el diseño de la ACE ( Automatic Computing Engine ), "[La propuesta de Turing sobre la ACE era efectivamente autónoma, y sus raíces no se encontraban en la EDVAC [la iniciativa de EE. UU.], sino en su propia máquina universal" (Hodges, p. 318). Aún continúan los debates sobre el origen y la naturaleza de lo que Kleene (1952) denominó la Tesis de Turing . Pero lo que Turing sí demostró con su modelo de máquina computacional aparece en su artículo " Sobre los números computables, con una aplicación al problema de decisión " (1937):
[que] el problema de decisión de Hilbert no puede tener solución... Por lo tanto, propongo demostrar que no puede haber un proceso general para determinar si una fórmula dada U del cálculo funcional K es demostrable, es decir, que no puede haber una máquina que, al ser alimentada con cualquiera de estas fórmulas U, finalmente diga si U es demostrable.
— del artículo de Turing reimpreso en The Undecidable , pág. 145 [ 64 ]
Ejemplo de Turing (su segunda demostración): Si uno quiere pedir un procedimiento general que nos diga: "¿Esta máquina imprime alguna vez un 0?", la pregunta es "indecidible".
1937–1970: La "computadora digital", el nacimiento de la "ciencia de la computación".
En 1937, mientras estaba en Princeton trabajando en su tesis doctoral, Turing construyó un multiplicador digital (lógica booleana) desde cero, fabricando sus propios relés electromecánicos (Hodges p. 138). "La tarea de Alan era incorporar el diseño lógico de una máquina de Turing en una red de interruptores operados por relés..." (Hodges p. 138). Si bien Turing pudo haber sido inicialmente solo curioso y experimental, en Alemania Konrad Zuse (1938) y en Estados Unidos Howard Aiken y George Stibitz (1937) estaban realizando trabajos muy serios en la misma dirección; los frutos de sus trabajos fueron utilizados tanto por los ejércitos del Eje como por los Aliados en la Segunda Guerra Mundial (cf. Hodges p. 298–299). A principios y mediados de la década de 1950, Hao Wang y Marvin Minsky redujeron la máquina de Turing a una forma más simple (un precursor de la máquina Post-Turing de Martin Davis ); Simultáneamente, investigadores europeos reducían la novedosa computadora electrónica a un objeto teórico similar a una computadora, equivalente a lo que ahora se denomina "máquina de Turing". A finales de la década de 1950 y principios de la de 1960, los desarrollos coincidentes de Melzak y Lambek (1961), Minsky (1961) y Shepherdson y Sturgis (1961) llevaron el trabajo europeo más allá y redujeron la máquina de Turing a un modelo abstracto más amigable, similar a una computadora, llamado máquina contadora . Elgot y Robinson (1964), Hartmanis (1971) y Cook y Reckhow (1973) llevaron este trabajo aún más lejos con los modelos de máquina de registro y máquina de acceso aleatorio , pero básicamente todas son solo máquinas de Turing de cinta múltiple con un conjunto de instrucciones similar a la aritmética.
1970-presente: como modelo de computación
Hoy en día, las máquinas de contador, registro y acceso aleatorio, así como su precursora, la máquina de Turing, siguen siendo los modelos predilectos de los teóricos que investigan cuestiones de la teoría de la computación . En particular, la teoría de la complejidad computacional utiliza la máquina de Turing:
Dependiendo de los objetos que se deseen manipular en los cálculos (números como enteros no negativos o cadenas alfanuméricas), dos modelos han alcanzado una posición dominante en la teoría de la complejidad basada en máquinas:
la máquina de Turing multitape fuera de línea ..., que representa el modelo estándar para la computación orientada a cadenas, y la máquina de acceso aleatorio (RAM) introducida por Cook y Reckhow..., que modela la computadora idealizada al estilo de Von Neumann.
— Van Emde Boas (1990) [ 65 ]
Únicamente en el ámbito relacionado del análisis de algoritmos, el modelo RAM asume este papel.
— Van Emde Boas (1990) [ 66 ]
Véase también
- Jerarquía aritmética
- Límite de Bekenstein , que demuestra la imposibilidad de máquinas de Turing de cinta infinita de tamaño finito y energía limitada.
- BlooP y FlooP
- La constante de Chaitin u Omega (en informática) para información relacionada con el problema de la parada.
- Razonador de cálculo
- habitación china
- El juego de la vida de Conway , un autómata celular Turing-completo.
- Infinito digital
- La nueva mente del emperador
- Enumerador (informática)
- Genetix
- Gödel, Escher, Bach: Una eterna trenza dorada , un libro famoso que analiza, entre otros temas, la tesis Church-Turing.
- Problema de parada , para más referencias
- Arquitectura de Harvard
- Programación imperativa
- La hormiga de Langton y Turmites , análogos bidimensionales simples de la máquina de Turing.
- Lista de cosas que llevan el nombre de Alan Turing
- Arquitectura de Harvard modificada
- Máquina de Turing cuántica
- Claude Shannon , otro pensador destacado en la teoría de la información.
- Ejemplos de máquinas de Turing
- Un pozo de Turing , cualquier sistema informático o lenguaje que, a pesar de ser Turing completo, generalmente se considera inútil para la computación práctica.
- Máquina desorganizada , en referencia a las primeras ideas de Turing sobre redes neuronales.
- Arquitectura de Von Neumann
Notas
- ↑ Minsky (1967 , p. 107) "En su artículo de 1936, A. M. Turing definió la clase de máquinas abstractas que ahora llevan su nombre. Una máquina de Turing es una máquina de estados finitos asociada con un tipo especial de entorno —su cinta—en el que puede almacenar (y posteriormente recuperar) secuencias de símbolos", también Stone (1972 , p. 8) donde la palabra "máquina" está entre comillas.
- ↑ Stone (1972 , p. 8) afirma: "Esta 'máquina' es un modelo matemático abstracto", cf. también Sipser (2012 , p. 165 y ss.) que describe el "modelo de máquina de Turing". Rogers (1987 , p. 13) se refiere a la "caracterización de Turing", Boolos, Burgess y Jeffrey (2002 , p. 25) se refieren a un "tipo específico de máquina idealizada".
- 1 2 Sipser (2012 , p. 165) observa que "[una] máquina de Turing puede hacer todo lo que una computadora real puede hacer. Sin embargo, incluso una máquina de Turing no puede resolver ciertos problemas. En un sentido muy real, estos problemas están más allá de los límites teóricos de la computación."
- ↑ Cf. Sipser (2012 , p. 165) . Asimismo, Rogers (1987 , p. 13) describe «una cinta de papel de longitud infinita en ambas direcciones». Minsky (1967 , p. 118) afirma que «la cinta se considera infinita en ambas direcciones». Boolos, Burgess y Jeffrey (2002 , p. 25) incluyen la posibilidad de que «hay alguien apostado en cada extremo para añadir cuadrados en blanco adicionales según sea necesario».
- ↑ Cf. Rogers (1987 , p. 13) . Otros autores usan la palabra "cuadrado", por ejemplo Boolos, Burgess y Jeffrey (2002 , p. 35) , Minsky (1967 , p. 117) , Penrose (1989 , p. 37) .
- ↑ Boolos, Burgess y Jeffrey (2002 , p. 25) ilustran la máquina moviéndose a lo largo de la cinta. Penrose (1989 , pp. 36-37) se describe a sí mismo como "incómodo" con una cinta infinita observando que "¡podría ser difícil cambiarla!"; "prefiere pensar en la cinta como representando algún entorno externo a través del cual nuestro dispositivo finito puede moverse" y después de observar que el " ' movimiento' es una forma conveniente de visualizar las cosas" y luego sugiere que "el dispositivo recibe toda su entrada de este entorno. Algunas variaciones del modelo de máquina de Turing también permiten que el cabezal permanezca en la misma posición en lugar de moverse o detenerse.
- 1 2 Hodges 2012 .
- ↑ Hodges 1983 , pág. 93.
- 1 2 Hodges 1983 , pág. 112.
- ↑ Hodges 1983 , pág. 129.
- ↑ La idea le surgió a mediados de 1935 (quizás, véase más en la sección de Historia) tras una pregunta planteada por MHA Newman en sus conferencias: "¿Existía un método definido, o como lo expresó Newman, un 'proceso mecánico' que pudiera aplicarse a un enunciado matemático y que diera con la respuesta sobre si era demostrable?". [ 8 ] Turing presentó su artículo el 31 de mayo de 1936 a la Sociedad Matemática de Londres para sus Actas , [ 9 ] pero se publicó a principios de 1937 y las separatas estuvieron disponibles en febrero de 1937. [ 10 ]
- ↑ Véase la nota a pie de página en Davis (2000 , pág. 151) .
- 1 2 Ver nota en el prólogo Tyler & Emderton (2019) harvtxt error: no target: CITEREFTylerEmderton2019 ( ayuda ) .
- 1 2 Turing 1936 en Davis (2004 , pp. 132–134) ; la definición de "circular" de Turing se encuentra en la página 119.
- 1 2 Turing 1936 , págs. 230–265.
- 1 2 Turing 1936 en Davis (2004 , pág. 145)
- ↑ Ver la definición de " innings " en Wikcionario
- ↑ Turing (1968 , págs. 3-4)
- ↑ Ocasionalmente llamada tabla de acciones o función de transición .
- ↑ Normalmente quíntuples [5-tuplas]: q i a j →q i1 a j1 d k , pero a veces cuádruples [4-tuplas].
- ↑ Hopcroft y Ullman 1979 , pág. 148.
- ↑ pág. 149; en particular, Hopcroft y Ullman asumen queno está definido en todos los estados desde
- ↑ Van Emde Boas 1990 , pág. 6.
- ^ Davis 2004 , págs. 126-127.
- ↑ Davis 2000 , pág. 152.
- ↑ Minsky 1967 , pág. 119.
- ↑ Hopcroft y Ullman 1979 , pág. 158.
- ↑ Stone 1972 , pág. 9.
- ↑ Cf. Turing en Davis (2004 , p. 126)
- ↑ Davis 2004 , pág. 300.
- ↑ Cf. nota al pie 12 en Post (1947) [ 30 ]
- ↑ Davis 2004 , pág. 119.
- ↑ Cf. Post (1947) , Boolos y Jeffrey (1999) , Davis, Sigal y Weyuker (1994) . Véase también más en Post–Turing machine .
- ^ Davis 2004 , págs. 139-140.
- ↑ Davis 2004 , pág. 121.
- 1 2 Davis 2004 , pág. 118.
- ↑ Kleene 1952 , págs. 374–375.
- ↑ Cf. Turing (1936) [ 34 ]
- ↑ Nota al pie ‡ en Davis (2004 , pág. 138)
- ^ Davis 2004 , págs. 166-168.
- ↑ Davis 2004 , pág. 128.
- ↑ Davis 2000 .
- ↑ Minsky 1967 , pág. 104.
- ↑ Hennie & Stearns 1966 .
- ↑ Arora y Barak 2009 , teorema 1.9.
- ↑ Grötschel, Lovász y Schrijver 1993 , p. 32.
- ↑ Gandy 1995 , pág. 54.
- ↑ Gandy 1995 , pág. 53.
- ↑ Torres Quevedo 1914 .
- ↑ Torres Quevedo 1915 .
- ↑ Gandy 1995 , pág. 55.
- ↑ Dershowitz y Gurevich 2008 .
- ↑ Gandy 1995 , pág. 57.
- ↑ Gandy 1995 , pág. 92.
- ↑ Hodges 1983 , pág. 91.
- ↑ Hawking 2005 , pág. 1121.
- ↑ Después de 1936 .
- ↑ La cuestión más específica planteada en el décimo problema de Hilbert , sobre ecuaciones diofánticas , permaneció sin resolver hasta 1970, cuandofinalmente se puso de manifiesto la relación entre conjuntos recursivamente enumerables y conjuntos diofánticos .
- ↑ Gandy 1995 , pág. 74.
- ↑ Gandy 1995 , pág. 76.
- ↑ Davis 2004 , pág. 160.
- ↑ Cf. Hodges (1983 , p. 112)
- ↑ Cf. Hodges (1983 , p. 129)
- ↑ Davis 2004 , pág. 145.
- ↑ Van Emde Boas 1990 , pág. 4.
- ↑ Van Emde Boas 1990 , pág. 16.
Referencias
Literatura primaria, reimpresiones y compilaciones
- Church, Alonzo (23 de abril de 2019). Burge, Tyler; Enderton, Herbert (eds.). Obras completas de Alonzo Church . Cambridge, MA, EE. UU.: MIT Press . ISBN 978-0-262-02564-5.
- Copeland, Jack , ed. (2004). The Essential Turing: Seminal Writings in Computing, Logic, Philosophy, Artificial Intelligence, and Artificial Life plus The Secrets of Enigma . Oxford, Reino Unido: Clarendon Press (Oxford University Press). ISBN 0-19-825079-7
Contiene artículos sobre Turing, un borrador de carta a
Emil Post
sobre las críticas a la "convención deTuring" y
las correcciones de Donald W. Davies a la Máquina de Computación Universal de Turing.
- Davis, Martin , ed. (2004) [1965]. Lo indecidible: Artículos básicos sobre proposiciones indecidibles, problemas irresolubles y funciones computables . Mineola, NY: Dover Publ. ISBN 978-0486432281.
- Hennie, FC; Stearns, RE (1966). "Simulación de máquinas de Turing de múltiples cintas con dos cintas". Journal of the ACM . 13 (4): 533– 546. doi : 10.1145/321356.321362 .
- Post, Emil (1936). «Procesos combinatorios finitos: formulación 1». Journal of Symbolic Logic . 1 : 103–105 . doi : 10.2307/2269031 . JSTOR 2269031.
Reimpreso en
Davis (2004
, pág.
289 y ss .).
- Post, Emil (1947). "Recursive Unsolvability of a Problem of Thue". Journal of Symbolic Logic . 12 : 1–11 . doi : 10.2307/2267170 . JSTOR 2267170.
Reimpreso en
Davis (2004
, p.
293 y ss.); el apéndice incluye correcciones y comentarios sobre el artículo de Turing de 1936-1937. En particular, véanse las notas al pie 11 con correcciones a la codificación de la máquina de computación universal y la nota al pie 14 con comentarios sobre
las primeras y segundas demostraciones de Turing
.
- Turing, AM (1936). "Sobre los números computables, con una aplicación al problema de decisión" (PDF) . Actas de la Sociedad Matemática de Londres . 2. 42 (publicado en 1937): 230–265 . doi : 10.1112/plms/s2-42.1.230 . S2CID 73712 .
- Turing, AM (1938). «Sobre los números computables, con una aplicación al problema de decisión: una corrección». Actas de la Sociedad Matemática de Londres . 2. 43 (6): 544– 546. doi : 10.1112/plms/s2-43.6.544 .
Reimpreso en Davis (2004 , pp. 115–154).
- Turing, AM (1939). "Sistemas de lógica basados en ordinales". Actas de la Sociedad Matemática de Londres . s2-45 (1): 161– 228. doi : 10.1112/plms/s2-45.1.161 . hdl : 21.11116/0000-0001-91CE-3 .
- Turing, Alan (1968) [1948]. "Máquinas inteligentes". En Evans, CR; Robertson, ADJ (eds.). Cibernética: Artículos clave . Baltimore: University Park Press. pág. 31.Reimpresión: Turing, AM (1996). "Intelligent Machinery, A Hertical Theory" . Philosophia Mathematica . 4 (3): 256– 260. doi : 10.1093/philmat/4.3.256 .
teoría de la computabilidad
- Boolos, George ; Jeffrey, Richard (1999) [1974]. Computabilidad y lógica (3.ª ed.). Cambridge, Reino Unido: Cambridge University Press. ISBN 0-521-20402-X.
- Boolos, George ; Burgess, John P .; Jeffrey, Richard (2002) [1989]. Computabilidad y lógica (4.ª ed.). Cambridge, Reino Unido: Cambridge University Press. ISBN 0-521-00758-5
Algunas partes han sido reescritas significativamente por Burgess. Presentación de las máquinas de Turing en el contexto de las "máquinas de ábaco" de Lambek (véase
máquinade registro
) y
funciones recursivas
, mostrando su equivalencia.
- Booth, Taylor L. (1967). Máquinas secuenciales y teoría de autómatas . Nueva York: John Wiley and Sons, Inc.
Texto de ingeniería de nivel de posgrado; abarca una amplia variedad de temas. El capítulo IX, «Máquinas de Turing», incluye algo de teoría de la recursión.
- Davis, Martin (2000). La computadora universal: El camino de Leibniz a Turing . WW Norton & Company. ISBN 0-393-04785-7.Reimpreso como Motores de lógica: Matemáticos y el origen de la computadora . Nueva York: Norton. 2001. ISBN 9780393322293.
- Davis, Martin ; Sigal, Ron; Weyuker, Elaine J. (1994). Computabilidad, complejidad y lenguajes y lógica: Fundamentos de la informática teórica (2.ª ed.). San Diego: Academic Press, Harcourt, Brace & Company. ISBN 0-12-206382-1.
- Grötschel, Martín ; Lovász, László; Schrijver, Alejandro (1993). Algoritmos geométricos y optimización combinatoria . Algoritmos y Combinatoria. vol. 2 (2ª ed.). Berlín: Springer-Verlag. doi : 10.1007/978-3-642-78240-4 . ISBN 978-3-642-78242-8MR 1261419 .
- Hennie, Fredrick (1977). Introducción a la computabilidad . Reading, Mass.: Addison–Wesley. QA248.5H4 1977.
En las páginas 90–103, Hennie analiza el UTM con ejemplos y diagramas de flujo, pero sin código real.
- Hopcroft, John ; Ullman, Jeffrey D. (1979). Introducción a la teoría de autómatas, lenguajes y computación (1.ª ed.). Reading, Mass.: Addison–Wesley. ISBN 0-201-02988-X.
Centrado en los temas de la interpretación automática de "lenguajes", la NP-completitud, etc.
- Hopcroft, John E .; Motwani, Rajeev; Ullman, Jeffrey D. (2001). Introducción a la teoría de autómatas, lenguajes y computación (2.ª ed.). Reading, Mass.: Addison–Wesley. ISBN 0-201-44124-1.
- Kleene, Stephen (1952). Introducción a la metamatemática (10.ª edición (con correcciones de la 6.ª reimpresión de 1971) ). Ámsterdam, Países Bajos: North–Holland Publishing Company.
Texto de nivel de posgrado; la mayor parte del capítulo XIII, «Funciones computables», trata sobre demostraciones mediante máquinas de Turing de la computabilidad de funciones recursivas, etc.
- Knuth, Donald E. (1973). El arte de la programación informática, vol. 1: Algoritmos fundamentales (2.ª ed.). Reading, Mass.: Addison–Wesley Publishing Company.
Con referencia al papel de las máquinas de Turing en el desarrollo de la computación, véase 1.4.5 «Historia y bibliografía», págs. 225 y siguientes, y 2.6 «Historia y bibliografía», págs. 456 y siguientes.
- Manna, Zohar (1974). Teoría matemática de la computación (Reimpresión, Dover, ed. 2003). McGraw-Hill. ISBN 978-0-486-43238-0.
- Minsky, Marvin (1967). Computación: Máquinas finitas e infinitas . NJ: Prentice–Hall, Inc.
Véase el capítulo 8, sección 8.2 «La irresolubilidad del problema de la parada».
- Papadimitriou, Christos (1993). Complejidad computacional (1.ª ed.). Addison Wesley. ISBN 0-201-53082-1
Capítulo 2: Máquinas de Turing, págs. 19-56
. - Torres Quevedo, Leonardo (1914). "Ensayos sobre Automática – Su definición. Extensión teórica de sus aplicaciones". Revista de la Academia de Ciencias Exactas (en español). 12 : 391–418 .
- Torres Quevedo, Leonardo (1915). "Essais sur l'Automatique - Sa définition. Étendue théorique de ses application" . Revue Générale des Sciences Pures et Appliquées (en francés). 2 : 601–611 .
- Rogers, Hartley (1987) [1967]. Teoría de las funciones recursivas y la computabilidad efectiva (edición de bolsillo (original de 1967, McGraw-Hill) ). Cambridge, MA: The MIT Press. ISBN 0-262-68052-1.
- Sipser, Michael (2012) [1997]. «Capítulo 3: La tesis de Church-Turing». Introducción a la teoría de la computación (Tercera ed.). Cengage Learning. pp. 165–192 . ISBN 978-1-133-18779-0.
- Stone, Harold S. (1972). Introducción a la organización de computadoras y estructuras de datos (1.ª ed.). Nueva York: McGraw-Hill Book Company. ISBN 0-07-061726-0.
- Van Emde Boas, Peter (1990). «Modelos y simulaciones de máquinas». En Jan van Leeuwen (ed.). Manual de informática teórica, Volumen A: Algoritmos y complejidad . The MIT Press / Elsevier. pp. 3–66 . ISBN 0-444-88071-2
Número de clasificación de la Biblioteca del Congreso: QA76.H279
1990
La tesis de Church
- Dershowitz, Nachum; Gurevich, Yuri (septiembre de 2008). "Una axiomatización natural de la computabilidad y demostración de la tesis de Church" (PDF) . Boletín de lógica simbólica . 14 (3): 299–350 . doi : 10.2178/bsl/1231081370 . Consultado el 12 de diciembre de 2025 .
Otro
- Arora, Sanjeev ; Barak, Boaz (2009). «Secciones 1.4 y 1.7». Teoría de la complejidad: un enfoque moderno . Cambridge University Press. ISBN 978-0-521-42426-4.
- Gandy, Robin (1995). «La confluencia de ideas en 1936». En Herken, Rolf (ed.). La máquina de Turing universal: un estudio de medio siglo . Springer Verlag. pp. 51–102 . ISBN 978-3-211-82637-9.
- Hawking, Stephen , ed. (2005). Dios creó los números enteros: Los avances matemáticos que cambiaron la historia . Filadelfia: Running Press. ISBN 978-0-7624-1922-7
Incluye el artículo de Turing de 1936-1937 con comentarios y biografía de Hawking
. - Hodges, Andrew (1983). «El espíritu de la verdad». Alan Turing: El enigma . Nueva York: Simon and Schuster .
Véase el capítulo «El espíritu de la verdad» para un análisis histórico de su demostración.
- Hodges, Andrew (2012). Alan Turing: El enigma ( Edición del centenario). Princeton University Press . ISBN 978-0-691-15564-7.
- Kantorovitz, Isaiah Pinchas (1 de diciembre de 2005). "Una nota sobre la computabilidad de las máquinas de Turing en sistemas basados en reglas". SIGACT News . 36 (4): 109– 110. doi : 10.1145/1107523.1107525 . S2CID 31117713 .
- Kirner, Raimund; Zimmermann, Lobo; Richter, Dirk (octubre de 2009). "Sobre los resultados de indecidibilidad de los lenguajes de programación reales" . 15. Kolloquium Programmiersprachen und Grundlagen der Programmierung (KPS'09) . María Taferl, Austria.
- Penrose, Roger (1989). La nueva mente del emperador: Sobre ordenadores, mentes y las leyes de la física . Oxford y Nueva York: Oxford University Press . ISBN 0-19-851973-7
Correcciones de
1990 - Petzold, Charles (2008). The Annotated Turing . John Wiley & Sons, Inc. ISBN 978-0-470-22905-7.
- Wang, Hao (1957). "Una variante de la teoría de Turing sobre las máquinas de computación". Journal of the Association for Computing Machinery . 4 : 63–92 . doi : 10.1145/320856.320867 .
Enlaces externos
- "Máquina de Turing" , Enciclopedia de Matemáticas , EMS Press , 2001 [1994]
- Entrada sobre "Máquinas de Turing" de Liesbeth De Mol en la Enciclopedia de Filosofía de Stanford , verano de 2025.
- Máquina de Turing
- 1936 en informática
- 1937 en informática
- Máquinas abstractas educativas
- informática teórica
- Alan Turing
- Modelos de computación
- Métodos formales
- teoría de la computabilidad
- Inventos ingleses
- Autómatas (computación)
- Lenguajes formales
- Máquinas abstractas