Leí sobre los números de castores ocupados y cómo crecen asintóticamente más grandes que cualquier función computable. ¿Por qué esto es tan? ¿Se debe a la no computabilidad de la función de castor ocupado? Si es así, ¿todas las funciones no computables crecen asintóticamente más grandes que las computables?
Editar:
Grandes respuestas a continuación, pero me gustaría explicar en inglés simple lo que entiendo de ellas.
Si hubo una función computable f que creció más rápido que la función de castor ocupado, entonces esto significa que la función de castor ocupado está limitada por f. En otras palabras, una máquina de turing simplemente necesitaría ejecutar f (n) muchos pasos para decidir el problema de detención. Como sabemos que el problema de detención es indecidible, nuestra presuposición inicial es incorrecta. Por lo tanto, la función de castor ocupado crece más rápido que todas las funciones computables.
fuente
Respuestas:
Si toma cualquier conjunto no computable de números naturales, la función característica del conjunto toma solo los valores y no es computable. Por lo tanto, no es el caso de que todas las funciones no computables crezcan muy rápidamente, incluso pueden limitarse.{ 0 , 1 }
La función Busy Beaver crece más rápidamente que todas las funciones computables porque está diseñada para hacerlo. La prueba de que no es computable procede al probar primero que crece más rápido que cualquier función computable.
En términos más generales, digamos que un conjunto tiene un "grado libre de hiperinmunidad" si cada función computable desde A está limitada por una función computable. Ciertamente, cada conjunto computable tiene un grado libre de hiperinmunidad. Se sabe que también hay muchos conjuntos no computables que tienen un grado libre de hiperinmunidad. Por lo tanto, no es el caso de que todo lo no computable tenga que computar alguna función de rápido crecimiento.A ⊆ N UN
Sin embargo, también es el caso de que un restablecimiento que no sea computable no tendrá un grado libre de hiperinmunidad. Si es re, y se enumera por índice e , la función f tal que f ( n ) = k si e enumera n en k pasos, y f ( n ) = 0 si e no enumera n , es computable desde B pero esto la función está limitada por una función computable si y solo si B es computable.si mi F F( n ) = k mi norte k F( n ) = 0 mi norte si si
fuente
Si una función crece más rápido (o más lento) que cualquier función en un conjunto F de funciones, es decir f ∈ ω ( g ) (u o ( g ) ) para todas las funciones g ∈ FF F F∈ ω ( g) o ( g) sol∈ F , entonces claramente . Esto es lo que se usa para mostrar que la función de castor ocupado no es computable. Otro ejemplo es la prueba de que la función de Ackermann , computable y total, no es primitiva recursiva.F∉ F
Lo contrario no necesariamente se cumple. La función de problema de detención toma valores en por lo que está en O ( 1 ) ¹; claramente hay funciones computables que crecen cada vez más rápido.{ 0 , 1 } O ( 1 )
Ciertamente, hay conjuntos de funciones para las cuales el tiempo de ejecución es un criterio de membresía necesario y suficiente, a saber, aquellas que se caracterizan por el tiempo de ejecución, como
.P o l y ={f: N → N | ∃ k .F∈ O ( nk) }
fuente