Nous disons qu'une Turing Machine est mortelle si M s'arrête pour chaque configuration de départ (en particulier, le contenu de la bande et l'état initial peuvent être arbitraires). Chaque langage récursif est-il reconnu par une machine de Turing mortelle? (c'est-à-dire s'il y a une MT qui accepte L , il y a aussi une TM mortelle qui accepte L )
computability
Marcin Kotowski
la source
la source
Réponses:
Voici deux résultats cités dans Charles E. Hughes "Undecidability of finite convergence for concatenation, insertion and bounded shuffle operators" :
Théorème 3 : La classe des machines de Turing mortelles est exactement la classe des machines de Turing à temps de fonctionnement constant.
st pour toutes les configurations initiales C , M s'arrête en pas plus de s étapes }Co n s t T= { M∣ ∃ s C M s }
Je pense donc que nous pouvons déduire ce qui suit: étant donné une machine de Turing mortelle , soit M ' , s le temps constant TM correspondant et son temps de fonctionnement. La langue reconnue par M sur l'alphabet Σ = { 0 , 1 } est exactement:M M′, s M Σ = { 0 , 1 }
Ainsi, la classe des langues reconnues par les machines mortelles de Turing est un sous-ensemble approprié de la classe des langues régulières. Par exemple, vous pouvez utiliser pour tromper chaque temps constant TM.L = { ( 0 | 1 )∗1∗}
Les choses deviennent intéressantes lorsque nous essayons de décider si une machine de Turing est mortelle parce que nous devons faire face à une bande et à un état arbitraires (finis) initiaux.
Théorème 4 : l'ensemble des machines mortelles de Turing est récursivement énumérable.
la source
Je pense que oui. Nous devons faire pour chaque L un M qui l'accepte de telle manière que tous ses mouvements soient enregistrés sur une bande et après chaque "étape principale" il vérifie si toutes ses étapes jusqu'à ce point étaient vraiment valables. Ci-dessous, je donne un aperçu de la façon dont une telle machine devrait être fabriquée (qui pourrait contenir quelques erreurs mineures mais l'idée principale devrait être bonne).
Désignons une machine qui accepte L par T. Maintenant, nous décrivons M. Premièrement, nous copions x sur une bande de mémoire séparée. Ensuite, chaque fois que T ferait un mouvement, nous l'écrivons sur cette bande mémoire, après x. Après cela, nous copions tout le contenu des bandes de T dans des bandes de travail supplémentaires et vérifions si, à partir de la configuration de départ, T atteindrait vraiment son état actuel après les étapes enregistrées sur la bande de mémoire. Sinon, nous nous arrêtons. Si oui, nous continuons.
la source