máquina de Turing

En informática teórica , una máquina de Turing es un modelo abstracto del funcionamiento de dispositivos informáticos mecánicos , como una computadora . Este modelo fue ideado por Alan Turing en 1936, con el fin de dar una definición precisa al concepto de algoritmo o "procedimiento mecánico". Todavía se usa ampliamente en la informática teórica , especialmente en los campos de la complejidad algorítmica y la computabilidad .

Originalmente, el concepto de máquina de Turing, inventado antes que la computadora, se suponía que representaba a una persona virtual realizando un procedimiento bien definido, cambiando el contenido de las cajas de una cinta infinita, eligiendo este contenido de un conjunto finito de símbolos . Por otro lado, en cada etapa del procedimiento, la persona debe colocarse en un estado particular entre un conjunto finito de estados. El procedimiento está formulado en términos de pasos elementales como: "si estás en el estado 42 y el símbolo contenido en la celda que estás mirando es" 0 ", reemplaza este símbolo con un" 1 ", ve al estado 17 , y ahora mira el cuadrado adyacente a la derecha ”.

La tesis de Church postula que cualquier problema computacional basado en un procedimiento algorítmico puede ser resuelto por una máquina de Turing. Esta tesis no es un enunciado matemático, ya que no supone una definición precisa de los procedimientos algorítmicos. Por otro lado, es posible definir una noción de “sistema de programación aceptable” y demostrar que la potencia de tales sistemas es equivalente a la de las máquinas de Turing (son Turing-completas ).

Definición

Aunque su nombre de "máquina" pueda llevar a pensar lo contrario, una máquina de Turing es un concepto abstracto, es decir, un objeto matemático. Una máquina de Turing tiene los siguientes componentes:

  1. Una cinta infinita dividida en cuadrados consecutivos. Cada caja contiene un símbolo de un alfabeto finito dado. El alfabeto contiene un símbolo especial llamado "símbolo en blanco" ('0' en los ejemplos que siguen) y uno o más símbolos más. Se supone que la cinta es infinitamente larga a la izquierda o a la derecha, en otras palabras, la máquina siempre debe tener suficiente longitud de cinta para funcionar. Consideramos que las casillas de la cinta contienen por defecto el “símbolo blanco”;
  2. Un cabezal de lectura / escritura que puede leer y escribir símbolos en la cinta y moverse a la izquierda o derecha de la cinta;
  3. Un registro de estado que almacena el estado actual de la máquina de Turing. El número de estados posibles es siempre finito y existe un estado especial llamado "estado de inicio" que es el estado inicial de la máquina antes de su ejecución;
  4. Una tabla de acciones que le dice a la máquina qué símbolo escribir en la cinta, cómo mover el cabezal de reproducción (por ejemplo, "   " para un cuadro a la izquierda "   " para un cuadro a la derecha) y cuál es el nuevo. Estado , dependiendo del símbolo leído en la cinta y del estado actual de la máquina. Si no existe ninguna acción para una combinación dada de un símbolo de lectura y un estado actual, la máquina se detiene.

Definicion formal

Se pueden dar varias definiciones formales cercanas entre sí de una máquina de Turing. Aquí se elige uno de ellos, relativamente común. Una máquina de Turing es un quintillizo donde:

Es un modelo de una máquina de Turing completa y determinista; es decir, está definida y es única.

Las flechas en la definición de representan los dos posibles movimientos del cabezal de lectura / escritura, es decir, el movimiento hacia la izquierda y el movimiento hacia la derecha. El significado de esta función de transición se puede explicar en el siguiente ejemplo: significa que si la máquina de Turing está en el estado y lee el símbolo , entonces escribe en lugar de , va al estado y luego mueve su cabezal de reproducción hacia la izquierda.

El funcionamiento de la máquina de Turing es entonces el siguiente: en cada etapa de su cálculo, la máquina evoluciona según el estado en el que se encuentra y el símbolo inscrito en la caja de la cinta donde se encuentra el cabezal de lectura. Estos dos datos se utilizan para actualizar el estado de la máquina mediante la función de transición. En el momento inicial, la máquina está en estado y el primer símbolo de la cinta es la entrada del programa. La máquina se detiene cuando entra en un estado terminal. El resultado del cálculo es entonces la palabra formada por los símbolos leídos sucesivamente por la máquina.

Podemos restringir un alfabeto de las posibles entradas en la definición. Por tanto, es posible trabajar con más precisión en este alfabeto reservando ciertos símbolos del alfabeto completo para los pasos de cálculo de la máquina. En particular, el símbolo blanco no debe formar parte de la entrada y, por lo tanto, puede definir el final de esta última .

El primer ejemplo a continuación usa una versión ligeramente diferente de una máquina de Turing en la que una máquina se detiene si está en un estado terminal y lee un cierto carácter en la cinta (aquí el símbolo blanco). El segundo ejemplo a continuación es el primer ejemplo histórico que da Turing en su artículo de 1936: es una máquina que no se detiene.

Ejemplos de

Duplica el número de '1'

La siguiente máquina de Turing tiene un alfabeto {'0', '1'}, siendo '0' el "símbolo blanco". Suponga que la cinta contiene una serie de '1' y que el cabezal de lectura / escritura está inicialmente por encima del '1' situado más a la izquierda. Esta máquina tiene el efecto de duplicar el número de '1', insertando un '0' entre las dos series. Por ejemplo, "111" se convierte en "1110111".
El conjunto de posibles estados de la máquina es {e1, e2, e3, e4, e5} y el estado inicial es e1.
La tabla de acciones es la siguiente:

Ejemplo de una tabla de transición
Estado antiguo Leer símbolo Símbolo escrito Movimiento Nuevo estado
e1 0 (Detener)
1 0 Derecha e2
e2 1 1 Derecha e2
0 0 Derecha e3
e3 1 1 Derecha e3
0 1 Izquierda e4
e4 1 1 Izquierda e4
0 0 Izquierda e5
e5 1 1 Izquierda e5
0 1 Derecha e1

Ejecutar esta máquina para una serie de dos '1 sería (la posición del cabezal de lectura / escritura en la cinta está escrita en letras rojas y en negrita):

Ejecución (1)
Escenario Estado Cinta
1 e1 1 1
2 e2 0 1
3 e2 01 0
4 e3 010 0
Ejecución (2)
Escenario Estado Cinta
5 e4 01 0 1
6 e5 0 1 01
7 e5 0 101
8 e1 1 1 01
Ejecución (3)
Escenario Estado Cinta
9 e2 10 0 1
10 e3 100 1
11 e3 1001 0
12 e4 100 1 1
Ejecución (4)
Escenario Estado Cinta
13 e4 10 0 11
14 e5 1 0 011
15 e1 11 0 11
  (Detener)

El comportamiento de esta máquina se puede describir como un bucle:

Este proceso se repite hasta que e1 cae en un 0 (es el 0 del medio entre las dos secuencias de 1); en este momento, la máquina se detiene.

Calcular un tercio en binario

En el siguiente ejemplo, la máquina de Turing tiene una cinta vacía y le permite construir la secuencia 01010101010101 ...

Ejemplo de una tabla infinita
Estado antiguo Símbolo escrito Movimiento Nuevo estado
Para 0 Derecha B
B 1 Derecha Para

La ejecución de esta máquina sería (la posición del cabezal de lectura / escritura en la cinta está escrita en negrita y magenta ):

Ejecutando la máquina infinita
Escenario Estado Cinta
1 Para 0
2 B 0 1
3 Para 01 0
4 B 010 1
5 Para 0101 0
6 B 01010 1
7 Para 010101 0
8 B 0101010 1
... ... 01010101 ...

El comportamiento de esta máquina se puede describir como un bucle infinito:

Esta máquina es la contraparte del cálculo de un tercio cuya escritura en binario es 0.010101010101 ...

Máquinas universales de Turing

Como muestra Alan Turing en su artículo fundamental, es posible crear una máquina de Turing llamada "máquina de Turing universal" que sea capaz de "simular" el comportamiento de cualquier otra máquina de Turing. "Simular" significa que si la máquina de Turing universal recibe como entrada una codificación de una máquina T y datos D , produce el mismo resultado que la máquina T a la que se le darían los datos D como entrada .

Una máquina de Turing universal tiene la capacidad de calcular cualquier cosa que sea computable: entonces decimos que es Turing completo . Al proporcionarle la codificación adecuada, puede simular cualquier función recursiva , analizar cualquier lenguaje recursivo y aceptar cualquier lenguaje parcialmente decidible . Según la tesis de Church-Turing , los problemas que pueden ser resueltos por una máquina universal de Turing son exactamente los problemas que pueden ser resueltos por un algoritmo o por un método de cálculo concreto .

Realización de una máquina de Turing

Una máquina de Turing es un objeto de pensamiento: su cinta es infinita y, por lo tanto, la memoria de una máquina de Turing es infinita. Una máquina de Turing nunca genera un desbordamiento de memoria , a diferencia de una computadora cuya memoria es finita. Al olvidar este problema de memoria, podemos simular una máquina de Turing en una computadora moderna.

También es posible construir máquinas de Turing puramente mecánicas. Así, la máquina de Turing, objeto de pensamiento, ha sido cosificada en numerosas ocasiones utilizando técnicas a veces bastante originales, de las que a continuación se exponen algunos ejemplos:

Referencias y bibliografía

Referencias

  1. (en) Harry R. Lewis y Christos Papadimitriou , Elementos de la teoría de la computación . Prentice-Hall , 1982; segunda edición, septiembre de 1997.
  2. "final" , CNRTL: "De hecho, no está flotando entre el final y final  : el 1 st parece ser el plur. del lang. Tribunal. y escritores, el segundo de lingüistas y economistas ” .
  3. Kévin Perrot, “  Calculabilidad. Curso 1: Máquinas de Turing  ” , en univ-mrs.fr ,primavera 2019(consultado en noviembre de 2020 )
  4. (en) Jim MacArthur, "  Turing Machine  " , en srimech.blogspot.fr ,8 de junio de 2012(consultado el 20 de febrero de 2018 ) .
  5. "  Proyecto RUBENS  " , en rubens.ens-lyon.fr ,marzo 2012(consultado el 20 de febrero de 2018 ) .
  6. David Larousserie, Le Monde , "  Una máquina completamente mecánica a la que no le falta aire  " , en lemonde.fr ,22 de junio de 2012(consultado el 20 de febrero de 2018 ) .
  7. Marc Raynaud, "  A Programmable Prototype to Realize the Turing Machine  " , en machinedeturing.org (consultado el 19 de febrero de 2018 ) .
  8. Ouest-France , "  Marc Raynaud, un culto inventor matemático  " , en ouest-france.fr ,14 de febrero de 2018(consultado el 14 de septiembre de 2020 ) .
  9. "  Turing Machine - Code tiene animaciones de luz atractivas, cálculos matemáticos en números binarios, series de números o cualquier otra aplicación que pueda inventar en su tiempo libre".  » (Consultado el 19 de marzo de 2021 )

Bibliografía

ManualesTuringKleene

Documento utilizado para redactar el artículo. : documento utilizado como fuente para este artículo.

Ver también

Artículos relacionados

enlaces externos

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">