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
Mn
Mn2n
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 ) NMNΘ(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 ) NMNnO(1)N
En bref:
M halts on blank tape ⇔N is optimial
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 MMNNM
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é;).