máquina de Turing


Una máquina de Turing es un modelo matemático de computación que define una máquina abstracta [1] que manipula símbolos en una tira de cinta de acuerdo con una tabla de reglas. [2] A pesar de la simplicidad del modelo, dado cualquier algoritmo informático , se puede construir una máquina de Turing capaz de implementar la lógica de ese algoritmo. [3]

La máquina opera en una cinta de memoria infinita [4] dividida en "celdas" discretas . [5] La máquina coloca su "cabeza" sobre una celda y "lee" o "escanea" [6] el símbolo allí. Luego, según el símbolo y el estado actual de la máquina en una "tabla finita" [7] de instrucciones especificadas por el usuario, la máquina primero escribe un símbolo (por ejemplo, un dígito o una letra de un alfabeto finito) en la celda ( algunos modelos permiten borrar símbolos o no escribir), [8] luego mueve la cinta una celda hacia la izquierda o hacia la derecha (algunos modelos no permiten movimiento, algunos modelos mueven la cabeza), [9]luego, según el símbolo observado y el propio estado de la máquina en la tabla, continúa con otra instrucción o detiene el cálculo. [10]

La máquina de Turing fue inventada en 1936 por Alan Turing , [11] [12] quien la llamó "a-machine" (máquina automática). [13] Fue el asesor de doctorado de Turing, Alonzo Church , quien más tarde acuñó el término "máquina de Turing" en una reseña. [14] Con este modelo, Turing pudo responder negativamente a dos preguntas:

Por lo tanto, al proporcionar una descripción matemática de un dispositivo muy simple capaz de realizar cálculos arbitrarios, pudo probar las propiedades de la computación en general y, en particular, la incomputabilidad del Entscheidungsproblem ("problema de decisión"). [17]

Las máquinas de Turing demostraron la existencia de limitaciones fundamentales en el poder de la computación mecánica. [18] Si bien pueden expresar cálculos arbitrarios, su diseño minimalista los hace inadecuados para el cálculo en la práctica: las computadoras del mundo real se basan en diferentes diseños que, a diferencia de las máquinas de Turing, usan memoria de acceso aleatorio .

La completitud de Turing es la capacidad de 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.


Combinational logicFinite-state machinePushdown automatonTuring machineAutomata theoryTeoría de autómatas.svg
Acerca de esta imagen
clases de autómatas
(Al hacer clic en cada capa se obtiene un artículo sobre ese tema)
La cabeza siempre está sobre un cuadrado particular de la cinta; solo se muestra un tramo finito de cuadrados. La instrucción a realizar (q 4 ) se muestra sobre el cuadrado escaneado. (Dibujo según Kleene (1952) p. 375.)
Aquí, el estado interno (q 1 ) se muestra dentro de la cabeza, y la ilustración describe la cinta como infinita y precargada con "0", el símbolo que sirve como espacio en blanco. El estado completo del sistema (su "configuración completa") consta del estado interno, cualquier símbolo que no esté en blanco en la cinta (en esta ilustración, "11B") y la posición del cabezal en relación con esos símbolos, incluidos los espacios en blanco, es decir, "011B ". (Dibujo según Minsky (1967) p. 121.)
Castor ocupado de 3 estados. Los iconos negros representan la ubicación y el estado de la cabeza; los colores cuadrados representan 1 (naranja) y 0 (blanco); el tiempo progresa verticalmente desde la parte superior hasta el estado HALT en la parte inferior.
La máquina de Turing del "castor ocupado de 3 estados" en una representación de estado finito . Cada círculo representa un "estado" de la tabla: una "configuración m" o "instrucción". La "dirección" de una transición de estado se muestra con una flecha. La etiqueta (por ejemplo , 0/P,R ) cerca del estado de salida (en la "cola" de la flecha) especifica el símbolo escaneado que causa una transición particular (por ejemplo, 0 ) seguido de una barra inclinada / , seguido de los "comportamientos" posteriores de la máquina, por ejemplo, " P print " y luego mueva la cinta " R right ". No existe un formato generalmente aceptado. La convención que se muestra es después de McClusky (1965), Booth (1967),
La evolución del cómputo del castor ocupado comienza en la parte superior y avanza hacia la parte inferior.
Una implementación de una máquina de Turing
Realización de una máquina de Turing utilizando piezas de Lego
Otra realización de la máquina de Turing