Existe-t-il un algorithme pour le problème suivant:
Étant donné une machine de Turing qui décide d'un langage , existe-t-il une machine de Turing décidant telle que ?M 2 L t 2 ( n ) = o ( t 1 ( n ) )
Les fonctions et sont respectivement les durées de fonctionnement les plus défavorables des machines Turing et .t 2 M 1 M 2
Et la complexité de l'espace?
Réponses:
Voici un argument simple pour montrer qu'ils sont indécidables, c'est-à-dire qu'il n'y a pas d'algorithmes pour vérifier si un algorithme donné est optimal en ce qui concerne son temps d'exécution ou l'utilisation de la mémoire.
Nous réduisons le problème d'arrêt sur bande vierge à votre problème d'optimalité de la durée d'exécution.
Soit une machine de Turing donnée. Soit N la machine de Turing suivante:M
n M n M n 2 nN : sur l'entrée
1. Exécutez sur une bande vierge pendant (au plus) étapes.
2. Si ne s'arrête pas en étapes, exécutez une boucle de taille , puis retournez NO.
3. Sinon, retournez OUI.n
M n
M n 2n
Il y a deux cas:
Si ne s'arrête pas sur une bande vierge, la machine s'exécutera pour les étapes sur l'entrée . Son temps d'exécution est donc . Dans ce cas, n'est évidemment pas optimal.N Θ ( 2 n ) n Θ ( 2 n ) NM N Θ(2n) n Θ(2n) N
Si s'arrête sur une bande vierge, alors la machine s'exécutera pour un nombre constant d'étapes pour tous les suffisamment grands , donc le temps d'exécution est . Dans ce cas, est évidemment optimal.N n O ( 1 ) NM N n O(1) N
En bref:
De plus étant donné le code pour on peut calculer le code pour . Par conséquent, nous avons réduit le problème d'arrêt sur bande vierge en un problème d'optimalité au moment de l'exécution. Si nous pouvions décider si une machine de Turing donnée est optimale, nous pourrions utiliser la réduction ci-dessus pour vérifier si une machine donnée s'arrête sur du ruban vierge. Étant donné que l'arrêt sur une bande vierge est indécidable, votre problème est également indécidable.N N MM N N M
Un argument similaire peut être utilisé pour l'espace, c'est-à-dire qu'il est également indécidable de vérifier si une machine de Turing donnée est optimale en ce qui concerne l'espace qu'elle utilise.
Même une affirmation plus forte est vraie: nous ne pouvons pas décider si une fonction calculable donnée est une limite supérieure de la complexité temporelle du calcul d'une fonction calculable donnée. De même pour l'espace. C'est-à-dire que même la théorie de la complexité de base ne peut pas être automatisée par des algorithmes (ce qui peut être considéré comme une bonne nouvelle pour les théoriciens de la complexité;).
la source
Comme d'autres l'ont mentionné, la réponse est non.
Mais il y a un article intéressant écrit par Blum " Une théorie indépendante de la machine de la complexité des fonctions récursives ". Il a montré qu'il existe certaines fonctions avec la propriété que peu importe la vitesse à laquelle un programme peut être pour calculer ces fonctions, un autre programme existe pour les calculer beaucoup plus rapidement .
une très belle propriété!
la source
Ha! Si la réponse était oui, nous vivrions dans un monde différent.
Malheureusement, ce n'est pas possible, et en effet je pense personnellement que prouver l'optimalité (non triviale) est le problème le plus intéressant (et le plus difficile) en informatique. Pour autant que je sache - je serais heureux d'être corrigé - il n'existe aucun résultat d'optimalité pour un problème polynomial (à l'exception des résultats d'optimalité triviaux bien sûr des algorithmes prenant un temps proportionnel à la taille d'entrée).
la source