¿Una máquina que nunca se detiene siempre gira?


22

Una máquina de Turing que vuelve a un estado encontrado anteriormente con su cabeza de lectura / escritura en la misma celda de la misma cinta será atrapada en un bucle. Tal máquina no se detiene.

¿Alguien puede dar un ejemplo de una máquina que nunca se detiene y que no funciona?


1
Solo una nota: la cinta también puede ser diferente: una condición suficiente (pero no necesaria) para un bucle sin fin cuando el TM ingresa a la misma celda en el paso y en el paso en el mismo estado, es que en el paso el La porción de la cinta visitada por la cabeza entre el paso y el paso es igual a la porción correspondiente justo antes de ingresart 2 > t 1 t 2 t 1 t 2 t 1t1t2>t1t2t1t2t1 .
Vor

44
Si un TM tuviera que hacer un bucle para no detenerse, sería capaz de resolver con bastante facilidad el problema de detención de los TM: recuerde todas las configuraciones anteriores y, en cada paso, vea si está en una configuración que ha visto antes, y si es así, sabes que la cosa no se detiene (de lo contrario, dado que suponemos que debe repetirse para ejecutarse para siempre, no se ejecutará para siempre, es decir, se detendrá, en cuyo caso eventualmente saber sobre esto).
Patrick87

Inspirado por la respuesta de @Niel de Beaudrap: una máquina de turing podría calcular la secuencia oeis.org/A014445 y detenerse cuando obtiene un número impar. Podría calcular oeis.org/A016742 como una suma acumulada y detenerse cuando el número sea impar. Podría calcular x^2dónde se realizan los xciclos entre -100y 100el ciclo con un módulo y detenerse cuando el resultado es negativo. Podría calcular x%2dónde x varía de cero a infinito positivo y detenerse cuando el resultado es igual a 2. En lenguaje ensamblador, los bucles do / while / for se reducen con un salto condicional, pero el salto cond solo significa poco.
Leonid

La suposición de la pregunta solo es cierta para las máquinas deterministas.
Raphael

Respuestas:


15

Considere la TM que siempre mueve el cabezal de la cinta hacia la derecha e imprime un símbolo especial de cinta no en blanco en cada paso. Esto significa que la TM nunca se detiene, ya que siempre se mueve hacia la derecha, y nunca repite un estado, ya que después de k pasos, el cabezal de la cinta está sobre la celda k de la máquina. En consecuencia, cada configuración de la máquina es diferente de todas las demás, y la máquina siempre realiza un bucle.

También podríamos mostrar de manera no constructiva la existencia de tales máquinas. Asuma por contradicción que cada TM que nunca se detiene eventualmente se repite. Esto significa que si inicia un TM en una cadena w , eventualmente sucederá uno de los siguientes:METROw

  1. detiene, oMETRO
  2. repite una configuración.METRO

En este caso, el problema de detención sería decidible de la siguiente manera. Dada una TM y una cadena w , simule M en w , en cada punto escribiendo el contenido de la cinta, el estado actual y la posición actual de la cinta. Si esta configuración es un duplicado, la salida "no se detiene". De lo contrario, si M se detiene en w , la salida "se detiene". Como se garantiza que uno de estos sucederá eventualmente, este proceso siempre termina, por lo que tendríamos un algoritmo para el problema de detención, que sabemos que no existe.METROwMETROwMETROw

¡Espero que esto ayude!


Ja, te gané en esa edición. Vea mi comentario sobre la pregunta. Me gusta esta forma de explicar por qué no todos los TM que no se detienen deben formar un bucle ... construye la intuición.
Patrick87

@ Patrick87- Lo siento, no noté el comentario. Pensé en el apéndice de mi viaje y me senté para entrar en él tan pronto como regresé.
templatetypedef

No hay problema, hombre ... me alegra que lo hayas agregado, ya que creo que es una buena forma de explicarlo. Solo lo agregué como un comentario, y no como una respuesta, ya que me ganaste. : D
Patrick87

En realidad, en términos del problema de detención tal que regresar y cambiar la cinta hasta el infinito parece ser el "problema real". Esos caminantes por el vacío que puedes detectar.
Raphael

12

Una máquina de Turing que calcula todos los lugares decimales de π (o cualquier otra fracción no terminante, en cualquier base) nunca se detiene, y se puede hacer que escriba en cada celda solo un número finito de veces. Por supuesto, el hecho de que no haya una transición a un estado de detención sería un regalo muerto, pero al menos es un ejemplo natural.

Un caso más interesante (pero también ambiguo) sería una máquina de Turing que calcula iterativamente la función Collatz en su entrada, terminando si y solo si obtiene el entero 1. La famosa conjetura de Collatz

F(norte)={3norte+1,Si norte es impar;norte/ /2,Si norte incluso,
es que para cualquier entrada, este procedimiento finalmente se detiene. Pero no se sabe si este es el caso. Puede fallar de dos maneras diferentes, en principio: puede encontrar una secuencia de enteros que se repite (correspondiente a la existencia de un entero n tal que para un cierto número de composiciones, donde n  ≠ 1); o podría ser que hay cadenas de enteros n , f (n) , f (f (n))FFF(norte)=norte, ... que divergen asintóticamente hasta el infinito. Si existe alguna secuencia de este último tipo, esto implicaría que la máquina de Turing que describí anteriormente no se repetiría, ya que la cinta se cambiaría continuamente a números cada vez más grandes.

Me gusta jugar con los dígitos de pi. Un TM podría detenerse siempre que el cuadrado de cualquier dígito sea piigual a exactamente 7.
Leonid

@Leonid: Ciertamente podría considerar una máquina de Turing que acepta alguna entrada y se detiene en una condición determinada por esa entrada. Incluso podría hacer la especificación de las condiciones bajo las cuales se detiene parte de la entrada. Y podría proporcionar una entrada, como lo describe, estableciendo una restricción que nunca se cumple.
Niel de Beaudrap

10

Considere cualquier máquina de Turing que no se detenga y que nunca mueva el cabezal de lectura / escritura hacia la izquierda.


Algunos de ellos todavía se repiten. </nitpicking>
Raphael

5

Si esto fuera cierto, entonces el problema de detención sería decidible. Simplemente registraría cada par (cinta, estado) visto al ejecutar la máquina Turing, y la máquina se detendría (en cuyo caso obviamente se detiene), o verá un par que ha visto antes, en cuyo caso la máquina no se detiene

Dado que el problema de detención es indecidible, esto no puede ser cierto. (Vea otros ejemplos para ejemplos de contador).


¿Qué agrega esta respuesta a la respuesta de templatetypedef ?
Raphael

Supongo que no. Lo siento, de alguna manera me perdí esa respuesta cuando escribí la mía.
RecursivelyIronic
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.