Pour chaque fonction calculable existe-t-il un problème qui peut être résolu au mieux en temps ou existe-t-il une fonction calculable telle que chaque problème qui peut être résolu dans peut également résolu en temps ?Θ ( f ( n ) ) f O ( f ( n ) ) o ( f ( n ) )
Cette question m'est venue à l'esprit hier. J'y pense depuis un petit moment maintenant, mais je ne peux pas le comprendre. Je ne sais pas vraiment comment je ferais pour google, alors je demande ici. Voici ce que j'ai trouvé:
Ma première pensée a été que la réponse est oui: pour chaque fonction calculable le problème "Sortie points" (ou créer une chaîne avec points ou autre) ne peut évidemment pas être résolu en temps. Il suffit donc de montrer qu'il peut être résolu en temps . Pas de problème, prenez simplement le pseudo code suivant:f ( n ) f ( n ) o ( f ( n ) ) O ( f ( n ) )
x = f(n)
for i from 1 to x:
output(".")
Il est clair que cet algorithme résout le problème déclaré. Et son exécution est évidemment dans , donc le problème est résolu. C'était facile, non? Sauf que non, ce n'est pas parce qu'il faut tenir compte du coût de la première ligne. L'exécution de l'algorithme ci-dessus est uniquement dans si le temps nécessaire pour calculer est dans . Ce n'est clairement pas vrai pour toutes les fonctions 1 .Θ ( f ( n ) ) f ( n ) O ( f ( n ) )
Cette approche ne m'a donc conduit nulle part. Je serais reconnaissant à tous ceux qui me pointent dans la bonne direction de comprendre cela correctement.
1 Considérons par exemple la fonction . Clairement O ( p ( n ) ) = O ( 1 ) , mais il n'y a pas d'algorithme qui calcule p en temps O ( 1 ) .