Machine de Turing - ruban infini dans une ou deux directions


11

J'ai vu des machines de turing être représentées avec des bandes infinies dans une et dans deux directions. Y a-t-il une différence dans la puissance de ces machines de turing, ou sont-elles fondamentalement équivalentes? Dans ma tête, je pense qu'ils sont équivalents, car je suppose qu'il doit y avoir un moyen de représenter la bande infinie bidirectionnelle comme une bande infinie unidirectionnelle, mais je n'arrive pas à trouver une preuve ou un exemple.


1
Vous dupliquez les états et les symboles de bande, de sorte que vous avez une version pour la partie droite et une autre pour la partie gauche. Sur la bande, vous stockez des paires de symboles, un à gauche et un à droite. Vous ajustez la fonction de transition de sorte qu'elle ne change que la partie de la paire correspondant à la demi-bande avec laquelle vous travaillez actuellement. Et ajoutez un peu de gestion lorsque vous devez changer la demi-bande que vous envisagez. N'oubliez pas que si vous pliez le demi-ruban droit sur la gauche, les mouvements de la tête sont inversés. Modifiez donc vos transitions pour les bons états en conséquence.
babou

@babou Transformer en une réponse à part entière?
Yuval Filmus

Réponses:


12

Ils sont équivalents en puissance de calcul. Tout ce qui est calculable par l'un de ces deux types de machines de Turing, est calculable par l'autre type. Voyons comment simuler une machine de Turing avec une bande doublement infinie, sur une machine de Turing avec une bande singulièrement infinie.

L'idée est de couper votre bande doublement infinie en deux, de sorte que vous ayez deux bandes infiniment simples, une gauche et une droite, que vous fusionnerez finalement. Vous pouvez marquer les extrémités avec un emplacement de bande contenant un symbole EOF spécial. Vous dupliquez également votre contrôle fini, de sorte que vous disposez de deux contrôles d'état fini identiques. Vous supposez que vous avez un périphérique de passage de contrôle (voir ci-dessous), de sorte que, lorsque la machine de gauche essaie d'aller au-delà de l'extrémité droite de sa bande, elle passe le contrôle à la machine de droite, sur sa position de bande la plus à gauche (juste avant le extrémité gauche de la bande de droite). Et inversement, en essayant de passer l'extrémité gauche de la bande droite.

RL

Nous sommes maintenant prêts à fusionner les deux demi-bandes, par exemple en repliant la droite sur la gauche. Pour cela, vous retournez la moitié droite de la bande et vous veillez à modifier en conséquence les transitions, en échangeant de droite à gauche et de gauche à droite. Ensuite, vous fusionnez les deux demi-bandes en une seule bande contenant des paires de symboles, un gauche et un droit, chaque composant étant éventuellement vierge.

Vous modifiez à nouveau les transitions des deux machines, de sorte que les transitions gauche (resp. Droite) utilisent et modifient uniquement les parties gauche (resp. Droite) des paires sur la bande. Ensuite, vous fusionnez le contrôle des deux machines par simple union set respectivement pour les états et pour les transitions.

Vous ajoutez un ensemble de transitions pour chaque état existant, de sorte que lorsque le symbole de bande est EOF, il retourne à l'emplacement de bande précédent (le premier emplacement non EOF) et l'état change à son homologue chiral: s'il s'agit d'une gauche (resp. à droite), il change à son homologue droit (resp. à gauche). C'est le dispositif de passage de contrôle.

J'ai peut-être oublié un détail, mais c'est l'idée générale de la construction. La preuve est laissée en exécution.

Bien sûr, la bande initiale (entrée) doit être modifiée en conséquence. Mais cela peut être rendu simple en plaçant l'entrée (si elle est finie) complètement sur le côté gauche (celle qui n'est pas retournée) de la bande coupée.

Ensuite, vous rangez le tournevis car cela peut être dangereux pour les enfants.

PS J'ai seulement montré que la bande doublement infinie peut être simulée avec une bande singulièrement infinie. L'inverse semble trop évident.


@DW Merci pour la modification. J'aurais dû penser à le faire. Si je me souviens bien, j'ai inséré la dernière ligne après coup pendant la période de grâce de 5 minutes après l'édition. Compte tenu des règles existantes sur le nombre de modifications, j'attends généralement de collecter les modifications nécessaires, avant une nouvelle session d'édition.
babou

Ahh, oui, les règles d'édition! Je ne suis pas fan des règles qui limitent le nombre de modifications; à chaque fois que cela rend les gens réticents à améliorer leur réponse semble être une perte pour le site, mais eh bien, whaddya va faire? Désolé, j'ai augmenté votre nombre de modifications d'une unité - je ne voulais pas vous déranger étant donné la quantité de travail que vous avez déjà effectuée, mais j'aurais peut-être dû demander d'abord. Merci pour la bonne réponse!
DW

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.