Est-ce qu'une machine sans arrêt boucle toujours?


22

Une machine de Turing qui revient à un état rencontré précédemment avec sa tête de lecture / écriture sur la même cellule de la même bande exacte sera prise en boucle. Une telle machine ne s'arrête pas.

Quelqu'un peut-il donner un exemple d'une machine sans arrêt qui ne boucle pas?


1
Juste une remarque: la bande peut aussi être différente: une condition suffisante (mais pas nécessaire) pour une boucle sans fin lorsque la MT entre dans la même cellule à l'étape et à l'étape dans le même état, est qu'à l'étape la la portion de la bande visitée par la tête entre l'étape et l'étape est égale à la portion correspondante juste avant d'entrer . t1t2>t1t2t1t2t1
Vor

4
Si une MT devait boucler pour ne pas s'arrêter, vous seriez en mesure de résoudre assez facilement le problème d'arrêt des MT: rappelez-vous toutes les configurations précédentes, et à chaque étape, voyez si vous êtes dans une configuration que vous avez vue avant, et si c'est le cas, vous savez que la chose ne s'arrête pas (sinon, comme nous supposons qu'elle doit boucler pour fonctionner pour toujours, elle ne fonctionnera pas pour toujours, c'est-à-dire qu'elle s'arrêtera, auquel cas nous finirons par finir savoir).
Patrick87

Inspiré par la réponse de @Niel de Beaudrap: une machine de turing pourrait calculer la séquence oeis.org/A014445 et s'arrêter lorsqu'elle obtient un nombre impair. Il pourrait calculer oeis.org/A016742 comme une somme cumulée et s'arrêter lorsque le nombre est impair. Il pourrait calculer x^2où les xcycles entre -100et 100et le cycle se fait avec un modulo et s'arrêter lorsque le résultat est négatif. Il pourrait calculer x%2où x varie de zéro à l'infini positif et s'arrêter lorsque le résultat est égal à 2. Dans le langage d'assemblage, les boucles do / while / for descendent toutes avec un saut conditionnel, mais le saut cond seul signifie peu.
Leonid

L'hypothèse de la question n'est vraie que pour les machines déterministes.
Raphael

Réponses:


15

Considérez le TM qui déplace toujours la tête de bande vers la droite et imprime un symbole de bande spécial non vierge à chaque étape. Cela signifie que la TM ne s'arrête jamais, car elle se déplace toujours vers la droite et ne répète jamais un état, car après k pas, la tête de bande se trouve au-dessus de la kème cellule de la machine. Par conséquent, chaque configuration de la machine est différente de toutes les autres et la machine boucle toujours.

Nous pourrions également montrer de manière non constructive l'existence de telles machines. Supposons par contradiction que chaque MT qui ne s'arrête jamais finit par une boucle. Cela signifie que si vous démarrez un TM sur une chaîne w , l'un des événements suivants se produira finalement:Mw

  1. s'arrête, ouM
  2. répète une configuration.M

Dans ce cas, le problème d'arrêt serait décidable comme suit. Étant donné un TM et une chaîne w , simulez M sur w , en écrivant à chaque point le contenu de la bande, l'état actuel et la position actuelle de la bande. Si cette configuration est un doublon, la sortie "ne s'arrête pas". Sinon, si M s'arrête sur w , sortez "s'arrête". Étant donné que l'un d'eux est garanti de se produire à terme, ce processus se termine toujours, nous aurions donc un algorithme pour le problème d'arrêt, dont nous savons qu'il n'existe pas.MwMwMw

J'espère que cela t'aides!


Hah, vous battre pour cette édition. Voir mon commentaire sur la question. J'aime cette façon d'expliquer pourquoi tous les TM non-stop ne doivent pas boucler ... ça construit l'intuition.
Patrick87

@ Patrick87- Désolé, je n'ai pas remarqué le commentaire. J'ai pensé à l'addendum sur mon trajet et je me suis assis pour y entrer dès mon retour.
templatetypedef

Pas de problème, mec ... Je suis content que tu l'aies ajouté, car je pense que c'est une bonne façon de l'expliquer. Je ne l'ai ajouté qu'en tant que commentaire, et non en tant que réponse, puisque vous m'avez battu à cela. : D
Patrick87

En fait, en termes de problème d'arrêt tel que le retour en arrière et le changement de bande à l'infini semblent être le "vrai problème". Ces marcheurs du vide que vous pouvez détecter.
Raphael

12

Une machine de Turing qui calcule toutes les décimales de π (ou toute autre fraction non terminale, dans n'importe quelle base) ne s'arrête jamais, et peut être faite pour écrire sur chaque cellule seulement un nombre fini de fois. Bien sûr, le fait qu'il n'y ait pas de transition vers un état d'arrêt serait un cadeau mort, mais c'est au moins un exemple naturel.

Un cas plus intéressant (mais aussi ambigu) serait une machine de Turing qui calcule itérativement la fonction Collatz sur son entrée, terminant si et seulement s'il obtient l'entier 1. La fameuse conjecture de Collatz

f(n)={3n+1,if n is odd;n/2,if n is even,
est que pour toute entrée, cette procédure s'arrête finalement. Mais on ne sait pas si c'est le cas. Il peut échouer de deux manières différentes, en principe: soit il peut trouver une séquence d'entiers qui boucle (correspondant à l'existence d'un entier n tel que pour un certain nombre de compositions, où n  ≠ 1); ou il pourrait y avoir des chaînes d'entiers n , f (n) , f (f (n))fff(n)=n, ... qui divergent asymptotiquement vers l'infini. Si des séquences de ce dernier type existent, cela impliquerait que la machine de Turing que j'ai décrite ci-dessus ne se répéterait pas, car la bande serait continuellement changée en nombres de plus en plus grands.

J'aime jouer avec les chiffres de pi. Une MT peut s'arrêter chaque fois que le carré d'un chiffre piégal à exactement 7.
Leonid

@Leonid: Vous pourriez certainement envisager une machine Turing qui accepte certaines entrées et s'arrête à une condition déterminée par ces entrées. Vous pouvez même spécifier les conditions dans lesquelles il arrête une partie de l'entrée. Et vous pourriez fournir une entrée, comme vous le décrivez, définissant une contrainte qui n'est jamais satisfaite.
Niel de Beaudrap

10

Considérez toute machine Turing sans arrêt qui ne déplace jamais la tête de lecture / écriture vers la gauche.


Certains bouclent encore. </nitpicking>
Raphael

5

Si cela était vrai, le problème de l'arrêt serait décidable. Vous enregistrez simplement chaque paire (bande, état) vue lors de l'exécution de la machine Turing, et la machine s'arrête (dans ce cas, elle s'arrête évidemment), ou vous voyez une paire que vous avez déjà vue, auquel cas la machine ne s'arrête pas.

Étant donné que le problème de l'arrêt est indécidable, cela ne peut pas être vrai. (Voir d'autres exemples pour des contre-exemples.)


Qu'est-ce que cette réponse ajoute à la réponse de templatetypedef ?
Raphael

Je suppose que non. Désolé, j'ai en quelque sorte manqué cette réponse quand j'ai écrit la mienne.
RecursivelyIronic
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.