Les fonctions non calculables deviennent-elles asymptotiquement plus grandes?


13

J'ai lu sur les nombres de castors occupés et comment ils deviennent asymptotiquement plus grands que n'importe quelle fonction calculable. Pourquoi cela est-il ainsi? Est-ce à cause de la non-calculabilité de la fonction castor occupé? Dans l'affirmative, toutes les fonctions non calculables deviennent-elles asymptotiquement plus grandes que les fonctions calculables?

Éditer:

Excellentes réponses ci-dessous mais je voudrais expliquer en anglais plus simple ce que je comprends d'eux.

S'il y avait une fonction calculable f qui s'est développée plus rapidement que la fonction de castor occupé, cela signifie que la fonction de castor occupé est limitée par f. En d'autres termes, une machine de turing aurait simplement besoin d'exécuter f (n) de nombreuses étapes pour décider du problème d'arrêt. Puisque nous savons que le problème de l'arrêt est indécidable, notre présupposition initiale est fausse. Par conséquent, la fonction castor occupé se développe plus rapidement que toutes les fonctions calculables.


Concernant votre partie "anglais simple", d'où avez-vous obtenu les réponses? Comment passe-t-on d'une limite à la fonction de castor occupé pour décider du problème d'arrêt en général? Notez qu'il n'est pas impossible de décider d'arrêter une machine Turing donnée .
Raphael

@Raphael son résumé en anglais clair me semble correct, mais pas tout à fait complet. Le détail manquant est que l'on peut réduire le fait de décider si TMM s'arrête sur à décider si un TM M ' s'arrête sur la bande vide (fil dur x dans M ' ). Alors si f ( n ) était une borne calculable sur BB, l'algorithme décrit par OP résoudrait le problème d'arrêt sur tout M et x . xMxMf(n)Mx
Sasho Nikolov

Réponses:


14

Si vous prenez n'importe quel ensemble de nombres naturels non calculables, la fonction caractéristique de l'ensemble ne prend que les valeurs et n'est pas calculable. Il n'est donc pas vrai que toutes les fonctions non calculables se développent très rapidement, elles peuvent même être limitées.{0,1}

La fonction Busy Beaver se développe plus rapidement que toute fonction calculable car elle est conçue pour le faire. La preuve qu'il n'est pas calculable procède d'abord en prouvant qu'il croît plus vite que n'importe quelle fonction calculable.

Plus généralement, disons qu'un ensemble a "un degré sans hyperimmunité" si chaque fonction calculable à partir de A est limitée par une fonction calculable. Certes, chaque ensemble calculable a un degré sans hyperimmunité. Il est connu qu'il existe également de nombreux ensembles non calculables qui ont un degré sans hyperimmunité. Il n'est donc pas vrai que tout ce qui n'est pas calculable devra calculer une fonction à croissance rapide. ANA

Cependant, il est également vrai qu'une réinitialisation non calculable n'aura pas de degré sans hyperimmunité. Si est re, et énuméré par l'index e , la fonction f telle que f ( n ) = k si e énumère n en k étapes, et f ( n ) = 0 si e n'énumère pas n , est calculable à partir de B mais ceci est limitée par une fonction calculable si et seulement si B est calculable.Beff(n)=kenkF(n)=0enBB


4

Si une fonction croît plus rapidement (ou moins) que toute fonction dans un ensemble F de fonctions, qui est f co ( g ) (ou o ( g ) ) pour toutes les fonctions g F , il est clair que f F . C'est ce qui est utilisé pour montrer que la fonction de castor occupé n'est pas calculable. Un autre exemple est la preuve que la fonction - calculable et totale - d' Ackermann n'est pas récursive primitive.FFFω(g)o(g)gFFF

L'inverse ne tient pas nécessairement. La fonction Halting problem prend des valeurs dans donc elle est dans O ( 1 ) ¹; il est clair que les fonctions calculables se développent de plus en plus vite.{0,1}O(1)

Il existe certainement des ensembles de fonctions pour lesquelles l'exécution est à la fois un critère d'appartenance nécessaire et suffisant, à savoir celles qui sont caractérisées par l'exécution, telles que

.Poly={F:NNk.FO(nk)}


  1. Cela n'a qu'un sens limité. Le paramètre de la fonction HP est un codage de machine de Turing et un nombre naturel; sa taille n'est pas une mesure de la complexité de la décision d'arrêter.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.