Máquina de Turing
Programación II
Margarita Álvarez
Máquina de Turing 1937 – Alan Mathison Turing: “On computable numbers with an application to the Entscheidungsproblem” Una Máquina de Turing es un dispositivo matemático abstracto de cálculo que introduce el concepto de “algoritmo”. Es un hecho universalmente aceptado que la máquina de Turing es una contrapartida formal, totalmente satisfactoria, de la noción de algoritmo. De hecho nadie ha podido encontrar un proceso que pueda naturalmente ser llamado un procedimiento general y no pueda realizarse con una máquina de Turing. La trascendencia del argumento de Turing es que toda máquina es capaz de ejecutar todo procedimiento general o efectivo. Se conoce en la actualidad como Tesis de Turing. Esta hipótesis, que no es matemáticamente demostrable o rechazable, ha resistido las pruebas del tiempo, ya que nadie hasta hoy a propuesto un modelo de computación teórico más general. Precursora abstracta de las máquinas de calcular automáticas. Demuestra la existencia de problemas irresolubles, los que ninguna máquina de Turing (y ningún ordenador) puede resolver o calcular. (Teoría de la Computabilidad).
Descripción informal Una máquina de Turing es un autómata que consiste de: 1) Una unidad de control 2) Una memoria auxiliar que es una cinta infinita con acceso relativamente no-restringido. La cinta infinita se considera como dividida en cuadrados, cada uno contiene un símbolo (incluyendo un símbolo que opera como espacio en blanco). La cabeza lectora/grabadora de la cinta puede moverse a lo largo de la cinta en ambas direcciones leyendo y/o escribiendo el contenido de un cuadrado uno a uno. La cinta almacena inicialmente la entrada y subsecuentemente la máquina de Turing usa su cinta como almacenamiento operacional. Cinta infinita Cabeza de lectura / escritura
Descripción formal Una máquina de Turing es:
A = (Q, ,, ,q0 ,F) donde:
Q es un conjunto finito y no vacío de estados. es el alfabeto de entrada, no vacío. es el alfabeto de la cinta, no vacío, * . q0 Q es el estado inicial. F Q es el conjunto de estados finales. es la función de transición directa. Es una proyección: Q x en subconjuntos finitos de Q x x {D,I,N}
Descripción formal El funcionamiento de la máquina de Turing está dado por la función de transición directa: (q,A1 ) = (p,A2 ,d) significa que: 1) La unidad de control de la máquina de Turing está actualmente en el estado q Q y el símbolo A1 se lee mediante la cabeza de la cinta. 2) Al realizar un movimiento atómico, la unidad de control de la máquina de Turing cambia al estado p Q, el símbolo A1 se reemplaza por A2, y la cabeza lectora/escritora se mueve un cuadrado en dirección d {D, I, ,N}. Si d = D la cabeza se mueve un cuadrado a la derecha, si d = I la cabeza se mueve un cuadrado a la izquierda, si d = N la cabeza no se mueve.
Representación gráfica (q, X) = (r, Y, D) se puede representar gráficamente de la siguiente manera
X,Y, D q
r
Interpretaciones de la Máquina de Turing
Interpretaciones
Como reconocedora de un lenguaje: Dada una cadena x * *, como entrada a M, puede suceder que la máquina de Turing se detenga o no. Si M se detiene, con su unidad de control en estado q, se dice que M acepta x si q F, y que M rechaza x si q F. Si M no se detiene, entonces se dice que ni acepta ni rechaza a x. Los lenguajes reconocidos por máquinas de Turing reciben el nombre de lenguajes recursivamente numerables.
Como un procedimiento: M realizará una serie de computaciones y eventualmente se detendrá con una cadena y * en su cinta. Esto será así para cada posible cadena de entrada. De tal modo, M establece una relación entre sus entradas y sus salidas. Para cada posible x * produce a lo sumo un y *, es decir, define una función parcial FM: * *. Las funciones definidas mediante este mecanismo reciben el nombre de funciones Turing-computables.
Ejemplos L={0n 1n / n ≥1} T = ({q0 ,q1 ,q2 ,q3 ,q4 ,q5 } , {0,1} , {0,1,B,X,Y} , , q0 , {q5 }) La función esta dada por la siguiente tabla: 0 q0
q1 , X, D
q1
q1 , 0, D
q2
q4 , 0, I
q3 q4
1
B
X
q2, Y, I
q1 , Y, D
q3 , X, D q5 , B, N
q4 , 0, I
Y
q2 , Y, I q3 , Y, D
q0 , X, D
q5
0,0,D Y,Y,D
q0
0,X,D
q1
q4
Y,Y,I
1,Y,I
q2
0,0,I
Y,Y,D
X,X,D
q3
B,B,N
q5
Ejemplos La máquina de Turing que suma dos números naturales expresados en notación unaria. T = ({q0 ,q1 ,q2 ,q3 } , {1,+} , {1,B,+} , , q0 , {q3 }) La función esta dada por la siguiente tabla:
q0
1 q0 , 1, D
q1
q2 , +, I
+ q1 , +, D
B
1,1,D
q3 ,B,I
q2
q0 , 1, D
q3
q3 ,B,D
q0
+,1,D
q1 +,B,D
q2
B,B,I
q3
Máquina de Turing multicinta Consta de un número arbitrario (aunque finito) de cintas y de cabezas de lectura/escritura por cinta. Cada tipo de cinta es una secuencia de celdas infinitas a derecha. Se asume que el modelo consta de una cinta de entrada (TI ) de la que sólo se puede leer (no se puede escribir) ni moverse a izquierda. Una cinta de salida (TO) en la que sólo se puede escribir no puede leer, ni moverse a izquierda. Un número determinado de cintas de trabajo. En las dos primeras las cabezas sólo pueden moverse a la derecha, en tanto que a las cintas de trabajo se les permite leer y escribir y mover las cabezas en ambos sentidos. Con estas observaciones, el funcionamiento de una máquina de Turing multicinta se puede describir en términos análogos que en el caso de la máquina ordinaria.
Descripción informal Consta de: Una cinta de entrada TI. Una cinta de salida T0. k cintas de memoria T1 , ... , Tk.
TI
T1
TK
T0
U.C.
La máquina realiza las siguientes operaciones: 1. La UC cambia de estado. 2. Imprime nuevos símbolos sobre los símbolos actuales en las celdas bajo inspección (excepto en TI ). 3. Se mueven algunas o todas las cabezas de cintas, independientemente una de otra hacia la derecha, izquierda o permanece en el lugar. Excepto las cabezas de TI y TO que no se pueden mover a la izquierda.
Descripción formal Una máquina de Turing de k cintas es una 9-tupla:
M = ( Q, , , O , , , qo , zo , F ) donde: Q : conjunto finito de estados. : alfabeto finito de entrada. : alfabeto finito de memoria (de la cinta). O : alfabeto finito de salida F Q : conjunto de estados finales. qo Q : estado inicial. zo : símbolo inicial del alfabeto de la cinta. ( , , O : contienen el símbolo especial blanco) : función de transición (posiblemente parcial)
: (Q-F) x x k Q x k x {D, I, N} k+1
: es la función (posiblemente parcial) de salida
: (Q-F) x x k O x {D, N} definida siempre y cuando esté
definida.
Convenciones Las funciones de transición de una máquina de Turing multicinta se representan por una terna separada por barras, donde cada elemento de la terna es un conjunto de símbolos que expresan la lectura, escritura y movimientos respectivos. x, y1 , ... , yk / y1 , ... , yk , z / d, d1 , ... ,dk , d donde:
x: representa el símbolo leído en TI . (x ) yr : representa el símbolo leído/escrito en Tr con 1 r k. (yr ) z: representa el símbolo que se escribe en TO . (z O) d { D, N } dr { D, I, N } con 1 r k
Ejemplo La máquina de Turing multicinta (k = 1) que reconoce el lenguaje: L(G) = { an bn cn / n 1} es la siguiente:
a,B/*/D,D
q0
a,Z0/Z0/N,D
q1
b,B/B/N,I
b,*/*/D,I
q2 c,Z0/Z0/N,D
c,*/*/D,D
q3 B,B/B/N,N
q4
En este caso la máquina de Turing funciona como reconocedora de lenguaje, por lo tanto no se utiliza la cinta TO.
Ejemplo La máquina de Turing multicinta (k = 2) que calcula n2 expresado en notación unaria es la siguiente: 1,B,B/1,X, / D,D,D,N
q0
1,Z0, Z0/ /N,D,D,N
q1
B,1,Y / /N,I,N,N B,1,X / /N,I,I,N
B,B,B/ /N,I,I,N
q2 B,Z0,Z0/ / N,D,D,N B,Z0,Y / N,D,D,N
q3
B,1,X/ ,Y,1/N,D,N,D B,1,B/ /N,N,N,N
B,B,Y/ /N,I,N,N
q4 B,1,Y/, , 1/N,D,N,D
Máquina de Turing Universal Turing demostró que la actuación de una máquina de Turing arbitraria M sobre una sucesión cualquiera x de símbolos de su cinta puede ser simulada por otra máquina, la Máquina Universal de Turing. Los símbolos que la máquina universal va registrando y reconociendo en su cinta están agrupados en dos secciones principales: a la izquierda está la descripción codificada de la máquina M; a la derecha está la sucesión de símbolos x que M encontrará al ir inspeccionando la cinta que le es propia. La máquina universal se construye entonces de modo que su cabezal vaya y venga entre las dos secciones, izquierda y derecha de la cinta. Mediante un complejo sistema de marcadores, la máquina universal lleva la cuenta del estado codificado de M que se está consultando. Turing demostró que el efecto de la máquina universal sobre la sucesión de símbolos x es exactamente el que produciría M sobre la misma sucesión. La idea básica de una máquina universal se trata sencillamente de un intérprete. En efecto, en la cinta de la máquina universal se puede codificar el programa (es decir, la función de transición) de toda otra máquina y los datos con que se desea ejecutar el programa. La máquina universal puede simular entonces, paso a paso, la ejecución de dicho programa con esos datos.
Máquina de Turing Universal
Los símbolos del alfabeto pueden codificarse como cadenas de ceros y unos.
Las operaciones sobre los símbolos pueden reducirse a otras más elementales que sólo operan sobre 0 y 1. Los estados pueden representarse por números naturales (1, 2, ... , n) expresados en notación binaria. Se pueden también eliminar los movimientos correspondientes a d. Con estas convenciones, veremos como se puede representar una máquina de Turing como una cadena sobre el alfabeto {0,1,c,I,D} donde c es un símbolo especial usado como separador de instrucciones. Claramente, todo lo que hay que codificar es, la función de transición. Esto se hace tratando de reproducir la tabla correspondiente. Se comienza la cadena con ccc y luego se reproduce cada uno de los cuadros de la tabla línea por línea, separándolos entre si por una c, y cada línea de la siguiente por cc.
La función de transición no especificadas se representan en la codificación con 0.
La codificación de la tabla finaliza con ccc.
Máquina de Turing Universal Suma de dos números en notación unaria.
1,1,D
1
+
b
1
0
01
Símbolo Estado 1
+,1,D
3 +,B,D
2
B,B,I
001
1
1, 1, D
2, 0, D
010
2
3, 0, I
011
3
1, 1, D
100
4
4, 01, D
4, 01, I
4
ccc 001 1 D c 0100 D c 0 cc 0110 I c 0 c 10001 I cc 0 c 0011 D c 0 cc 0 c 100 01 D c 0 ccc