Complexité temporelle des simulations de machines de Turing universelles et théorème de la hiérarchie temporelle

8

J'ai un petit problème pour comprendre la preuve du théorème de la hiérarchie temporelle (Hennie et Stearns, 1966) qui garantit l'existence d'un langage acceptable en mais non acceptable en pour toutes les fonctions , tel que est constructible dans le temps etU(n)T(n)T(n),U(n)U(n)

nT(n)=o(U(n)logT(n)).

Cette preuve est basée sur l'existence de la machine de Turing universelle simulant toute machine de Turing de complexité temporelle dans le temps .T(n)T(n)logT(n)

Je comprends (et je crois) la preuve que chaque machine de Turing à bande peut être simulée par une machine de Turing à deux bandes avec une surcharge logarithmique. Cependant, je ne comprends cette construction que si la machine de Turing simulée est fixe, pas dans le cas de la simulation Universal TM.k

Je vois un "problème" dans le raisonnement donné dans l'article cité (et aussi dans plusieurs livres standard sur la complexité de calcul) lié à la construction de la machine universelle. Ce «problème» est que dans la simulation de machine universelle, une étape de calcul d'une machine simulée est censée être exécutée en temps constant par la machine universelle. En d'autres termes, la longueur de la description de la machine simulée est supposée constante.

Mais est-ce OK? Puisque dans la preuve du théorème de la hiérarchie temporelle, l'entrée donnée à la machine de Turing simulée est exactement cette description, et donc, la description dépend en quelque sorte de . Je suis conscient que la description peut être allongée par une séquence de bits de tête, mais cela ne semble pas résoudre ce problème.n

Autrement dit, je ne peux pas comprendre pourquoi l'étape de calcul d'une machine simulée peut être supposée être exécutée en un temps constant par la machine universelle. Le papier de Hennie et Stearns n'y prête pas beaucoup d'attention, il déclare simplement que cette fois est quelque chose qui est implicitement supposé être une constante. De même dans les manuels que j'ai lus sur le sujet.

Je ne peux tout simplement pas comprendre pourquoi la complexité temporelle de la simulation est , et non .T(n)logT(n)nT(n)logT(n)

Je suis presque sûr de manquer quelque chose. Cependant, j'essaie de comprendre cela depuis assez longtemps et je ne peux pas comprendre cela.

042
la source

Réponses:

7

Je me réfère ici à la preuve du théorème de la hiérarchie que je connais, dans laquelle je ne vois pas le problème que vous mentionnez.

Nous définissons la langue L={(M,w):M n'accepte pas (M,w) dans t(n)|M|3+|M|Journalt(n),n=|(M,w)|} (où t est la fonction temporelle sur laquelle nous travaillons).

Nous montrons que L est décidable en O(t(n)) en utilisant la machine universelle, et dans la machine universelle chaque étape dépend en effet de la taille de la machine, c'est pourquoi nous avons |M|3 dans le dénominateur (le 3 est juste une limite supérieure sur les calculs nécessaires pour simuler une étape).

Pour l'exhaustivité de la réponse: lorsque nous essayons d'atteindre une contradiction, alors nous supposons qu'il existe une machine T qui décide L. Après cette hypothèse, le codage deT est fixe, puis une simulation d'une seule étape prend vraiment du temps constant, et nous pouvons atteindre une contradiction en prenant suffisamment de temps w pour augmenter la longueur de l'entrée sans changer T.

Shaull
la source
1
Je pense que je comprends - enfin ... C'est super. ;) Merci beaucoup!
042
1
Soit dit en passant, ce n'est pas du tout une question stupide. C'est un théorème difficile même sans tous ces petits détails!
Shaull