Je lis Sipser et j'ai du mal à comprendre quel est le processus de sorte que si vous me donnez des machines k Turing avec k bandes, je peux cracher une machine Turing équivalente avec une seule bande. Un exemple serait bien. En fait, un exemple élaboré qui montre comment passer d'une MT qui a bandes à une qui a 1 bande est ce que je recherche vraiment. Jusqu'à présent, je n'ai pas pu en trouver. Je ne cherche pas non plus de preuves.
turing-machines
simulation
user678392
la source
la source
Réponses:
Une réponse copiée sans vergogne de moi - même :
Une machine de Turing à plusieurs bandes est essentiellement la même qu'une machine à bande unique, sauf que nous avons une fonction de transition étendue où k est le nombre de bandes. Donc, dans chaque état, la fonction de transition lit le contenu de chaque bande, passe à un nouvel état, (peut-être) écrit quelque chose sur chaque bande et déplace chaque tête - tout comme une MT régulière, sauf que maintenant nous avons plus de choses à lire, à écrire et bouger.Q × Γk→ Q × Γk× { L , R }k k
Comme votre question le suggère, une telle machine peut être simulée par un TM à bande unique . Encore mieux, cela peut se faire avec seulement un ralentissement quadratique (donc pour les classes fermées polynomialement, il suffit de parler de machines à bande unique).
La preuve en est quelque peu impliquée et facilement disponible avec une simple recherche sur le Web, je vais donc simplement esquisser le mappage des clés des bandes sur une seule bande.k
L'idée de base est assez simple; nous ajoutons simplement quelques nouveaux symboles et gardons une trace de chaque bande et tête l'un après l'autre. À chaque étape du calcul, nous ne pouvons avoir visité qu'une quantité limitée de l'une des bandes, nous n'avons donc besoin que de stocker autant d'informations sur chaque bande. Ainsi, pour chaque nous ajoutons un nouveau symbole γ _ à Γ qui indiquera où se trouve la tête (pour chaque bande) à tout moment du calcul. Nous introduisons également un caractère séparateur # à Γ qui indiquera le début et la fin des bandes "virtuelles". Étant donné l'entrée ω = ω 1 … ω nγ∈ Γ γ-- Γ # Γ ω = ω1… Ωn (nous pouvons supposer que même sur la machine à bandes multiples, toutes les entrées se trouvent sur la première bande - ce qui prouve pourquoi est un bon exercice) sur la machine à bandes multiples, notre machine à bande unique aura l'entrée
Nous utilisons ensuite l'état de la machine à bande unique pour coder dans quel état se trouve la machine à bandes multiples et ce que les têtes regardent. La fonction de transition de la machine à bande unique est une simulation à plusieurs étapes de la fonction de transition à bandes multiples, où nous effectuons les différentes actions de bande de manière appropriée, en déplaçant la bande unique vers chaque section à tour de rôle. Les seules rides restantes sont de tout déplacer lorsque nous manquons d'espace dans une section (mais une telle sous-machine est un exercice simple) - nous ne réduisons jamais la taille de chaque section.k
Un exemple (espérons-le) simple:
Supposons que nous ayons une TM à 3 bandes, où l'alphabet d'entrée est juste , l'alphabet de bande est Γ = { 0 , 1 , ⊔ } et l'entrée est ω = 10101 . L'état initial de la bande de la machine ressemble à: Bande 1: 1 ∧ 0101 ⊔ ⊔ ⊔ … Bande 2: ⊔ ∧ ⊔ ⊔ ⊔ ⊔ ⊔ … Bande 3: ⊔ ∧ ⊔ ⊔ ⊔ ⊔ ⊔ …Σ={0,1} Γ = { 0 , 1 , ⊔ } ω = 10101
Pour construire la machine à bande unique combinée, nous devons ajouter de nouveaux symboles à l'alphabet de la bande:
Après la deuxième étape:
Bien sûr, ceci est une vue de haut niveau du processus - je n'ai pas essayé d'expliquer comment construire les états, ou comment chaque bande simulée s'allonge (pour cela, vous avez besoin d'une petite routine qui vérifie si vous avez rencontré le à la fin de la bande simulée, puis déplace tout vers la droite d'une étape et le serre dans un nouveau blanc - c'est-à-dire qu'il n'ajoute des cellules de bande simulées que lorsqu'elles sont nécessaires).
la source