Définissez un "problème" comme étant un algorithme acceptant un nombre naturel et renvoyant 0 ou 1 qui renvoie sur au moins un . Un tel est appelé une "solution" à1 n ∈ N n A
Définir un "solutionneur de problèmes universel" comme étant un algorithme acceptant un problème et renvoyant l'une de ses solutions. Par exemple, peut fonctionner en bouclant sur tous les nombres naturels et en exécutant son entrée sur eux jusqu'à résultat (il ne doit s'arrêter que sur une entrée valide)U 1
Je suis intéressé à explorer les limites de performance sur les résolveurs de problèmes universels
Étant donné un résolveur de problèmes universel et un problème, notons le temps qu'il faut à pour produire une sortie lors de l'acceptation de l'entréeA t ( U , A ) U A
Un résolveur de problèmes universel est appelé "efficace" lorsque, pour tout résolveur de problèmes universel , nous avonsV
Ici, dépend de mais ne dépend pas de V A
Existe-t-il des résolveurs de problèmes universels efficaces?
EDIT: J'ai réalisé qu'il était possible de changer les définitions de "problème" et "solutionneur de problème universel" en quelque chose d'un peu plus élégant et essentiellement équivalent. Un "problème" est un algorithme sans entrée retournant 0 ou 1 (qui s'arrête). Un "solutionneur de problèmes universel" est un algorithme acceptant un problème et renvoyant son résultat. C'est plus ou moins une machine de Turing universelle
L'ancienne définition peut être réduite à une nouvelle définition, car étant donné un problème dans l'ancien sens, nous pouvons construire un problème dans le nouveau sens qui applique simplement le solveur universel trivial à l'ancien sens à (le solveur décrit dans le texte ci-dessus). )B A
La nouvelle définition peut être réduite à l'ancienne définition, étant donné que un problème dans le nouveau sens, nous pouvons construire un problème dans l'ancien sens qui calcule simplement et compare l'entrée au résultatA B
L'exemple trivial d'un résolveur de problèmes universel nouveau sens est un algorithme qui exécute simplement son entrée
L'algorithme universel de Levin est un algorithme tel que . En modifiant l'algorithme (voir par exemple l'algorithme de Hutter le plus rapide et le plus court pour tous les problèmes bien définis ), vous pouvez faire de une constante universelle, mais certainement pas comme vous le souhaitez. Pour les travaux connexes, consultez les travaux de Hirsch, Itsykson et leurs étudiants, par exemple ce rapport technique .s V 1t(U,A)<sVt(V,A)+tV sV 1
Edit: Comme le fait remarquer Squark, le temps d'exécution de l'algorithme de Levin dépend également du temps d'exécution de , car il doit vérifier ses réponses. Pour obtenir un constant , tout ce que vous devez faire est de définir les vitesses des différents algorithmes en progression géométrique (plutôt qu'en progression arithmétique, comme dans l'algorithme original de Levin).s VA sV
la source