22 votos

¿Cómo se relacionan los números no computables con las funciones no computables?

Todos los recursos en línea que he visto sobre números no computables asumen que todos son irracionales. Pero esto no parece ser requerido por la definición. Wikipedia, por ejemplo, dice que "los números no computables son los números reales que no pueden ser calculados con la precisión deseada por un algoritmo finito y terminable".

¿Pero esto no describe también las salidas de las funciones no computables? Busy_beaver(6) no puede ser calculado por ningún algoritmo de terminación finita, y sin embargo es un número entero. (Bueno, tal vez el 6 es todavía computable y sólo se convierten en no computable más tarde. Pero eso no es relevante para esta pregunta).

Quizá la cuestión aquí sea la definición de "número". En el contexto de los números no computables, la gente está interpretando Busy_beaver(6) como una declaración de "no sabemos qué número es el resultado de esta función", en lugar de un número específico. Después de todo, sea lo que sea Busy_beaver(6), ese número también podría calcularse de otra forma. Si Busy_beaver(6) es, digamos, 10^20000, sin duda hay un algoritmo de terminación finita que da como resultado 10^20000, incluso si no tenemos forma de saber que ese número es también el resultado de Busy_beaver(6).

Pero esto parece entrar en conflicto con la forma en que la gente habla de "números" en otros contextos. Se pueden definir dos números grandes que son el resultado de computable (como Graham's Number o TREE(3) o lo que sea), y la gente está de acuerdo en que éstas especifican un único número inequívoco, aunque no sepamos si dos de ellos son iguales o conozcamos su expansión decimal exacta.

Por cierto, ¿cómo sabemos que la constante de Chaitin no es el resultado de una función finita terminal? El argumento dado en la página de Wikipedia sólo prueba que nunca podemos calcular qué número es la Constante de Chaitin, pero no prueba que la Constante de Chaitin no sea el resultado de ninguna otra función no relacionada. (Por ejemplo, ¿cómo se puede demostrar que la constante de Chaitin no es pi/4? Quizá lo sea, pero nunca lo sabríamos).

Está claro que estoy muy confundido sobre qué tipos de enunciado cuentan como definición clara de un único número. ¿Ayuda?

43voto

Matt Dawdy Puntos 5479

Editer : Hay una sutileza adicional que creo que he pasado por alto y que me gustaría describir con más detalle. En primer lugar, podemos escribir un predicado $\text{Computes}(T, r)$ (en ZF de primer orden, para ser específicos) que dada una máquina de Turing $T$ y un número real $r$ afirma que $T$ calcula $r$ .

Ahora, " $r$ es computable" se define como " $\exists T : \text{Computes}(T, r)$ ." Así que una parte importante de la confusión potencial aquí tiene que ver con el significado estándar de $\exists$ en la lógica clásica de primer orden: lo que es importante, no se requiere que las pruebas de existencia sean constructivas, en el sentido de que una prueba de que $\exists x P(x)$ no es necesario proceder a la construcción de un elemento explícito $x$ y luego verificar que satisface $P(x)$ . Por lo tanto, es posible demostrar de forma no constructiva que un número real, tal como $BB(6)$ es computable, sin construir una máquina de Turing explícita que lo compute.

Es posible que usted considere esto insatisfactorio y una mala forma de definir "computable", o al menos es posible que desee poder referirse a alguna noción de "computabilidad explícita". (Si es así, quizá le interese leer sobre constructivismo .) He aquí una forma sencilla de hacerlo: basta con definir una directiva cálculo explícito de un número real $r$ para ser una construcción de una máquina de Turing $T$ satisfaciendo $\text{Computes}(T, r)$ (se debe suministrar tanto la máquina de Turing $T$ y una prueba de que calcula $r$ ). En otras palabras, para demostrar que un número real $r$ es "explícitamente computable" hay que mostrar la máquina de Turing que lo computa, en lugar de limitarse a demostrar que existe alguna máquina de Turing de este tipo.

Nótese, sin embargo, que realmente quiero alterar la gramática aquí a "computación explícita" en lugar de "explícitamente computable". No se trata de una definición de una clase de números reales que satisfacen una condición lógica; esta noción de "computabilidad explícita" depende de qué máquinas de Turing se han escrito hasta ahora y, en particular, cambia con el tiempo si se escribe alguna nueva máquina de Turing que computa explícitamente algún número que aún no se había computado anteriormente. Además, en este sentido sólo se han calculado explícitamente un número finito de números reales, ya que sólo se han escrito un número finito de máquinas de Turing. Peor aún, sólo un número finito de números reales puede calcularse explícitamente en este sentido, ya que el universo (por lo que sabemos) no es arbitrariamente grande y no caben en él descripciones de máquinas de Turing arbitrariamente grandes.

Sin embargo, es una forma de precisar el sentido en el que no sabemos $BB(6)$ : nadie ha escrito aún una máquina de Turing que lo compute, por lo que no se ha calculado explícitamente en el sentido anterior.

(La respuesta original sigue a continuación).


Todos los recursos en línea que he visto sobre números no computables asumen que todos son irracionales.

Esto no es una suposición, es un teorema. Todo número racional es calculable porque existe un programa que imprime los dígitos de cualquier número racional. Del mismo modo, dado que podemos calcular las raíces de un polinomio con coeficientes racionales con precisión arbitraria, todo número algebraico es computable, por lo que los números no computables son trascendentes.

¿Pero esto no describe también las salidas de las funciones no computables? Busy_beaver(6) no puede ser calculado por ningún algoritmo de terminación finita, y sin embargo es un número entero.

Debemos distinguir cuidadosamente entre objetos y descripciones de objetos . No tenemos ni idea de qué número $BB(6)$ es, pero si crees que $BB$ es una función bien definida, cualquiera que sea el número $BB(6)$ es, ese número es trivialmente computable, es decir, por un programa que imprime sus dígitos. Simplemente no sabemos de qué programa se trata ¡!

En realidad, este asunto no tiene nada que ver con $BB$ al no ser computable, se trata realmente de la diferencia entre números y descripciones de números. Por ejemplo, consideremos el número entero que es igual a $0$ si la hipótesis de Riemann es falsa y $1$ si la hipótesis de Riemann es cierta. Cualquiera que sea este número, es de nuevo trivialmente calculable, ya sea por el programa que imprime $0$ o el programa que imprime $1$ . Pero no sabemos qué programa es el correcto.

(Menos trivialmente, existe un único programa informático, que en principio podemos escribir explícitamente ahora mismo, que imprime $0$ si la hipótesis de Riemann es falsa e imprime $1$ si es demostrable en ZFC. Esto es así porque podemos buscar entre los ceros no triviales de la función zeta y verificar que tienen parte real $\frac{1}{2}$ (se requiere algún análisis complejo no trivial para demostrar que esto es posible), y también podemos buscar a través de pruebas de la hipótesis de Riemann en ZFC. Sin embargo, este programa se ejecutaría eternamente en el improbable caso de que la hipótesis de Riemann fuera cierta pero independiente de ZFC).

Por lo demás, ¿cómo sabemos que la constante de Chaitin no es el resultado de una función de terminación finita? El argumento dado en la página de Wikipedia sólo prueba que nunca podemos calcular qué número es la Constante de Chaitin, pero no prueba que la Constante de Chaitin no sea el resultado de ninguna otra función no relacionada. (Por ejemplo, ¿cómo se puede demostrar que la constante de Chaitin no es pi/4? Quizá lo sea, pero nunca lo sabríamos).

No, el argumento de Wikipedia demuestra que los dígitos de la constante de Chaitin no pueden ser impresos por ninguna máquina de Turing (esto es lo que significa para un número específico para no ser computable), porque si pudiera entonces esa máquina de Turing también resuelve el problema de detención. Dado que los dígitos de $\frac{\pi}{4}$ (o cualquier otro real computable que te guste) puede ser impresa por una máquina de Turing, no puede ser igual a la constante de Chaitin. Esta es una situación genuinamente diferente de la $BB(6)$ ejemplo, que puede ser impreso por un desconocido Máquina de Turing.

La siguiente analogía puede ser útil: supongamos que alguien demuestra por contradicción que $\pi + e$ es algebraico (no se sabe si este número es trascendental). Esto significaría que hay algún polinomio racional $f(x)$ tal que $f(\pi + e) = 0$ . Esto sería cierto incluso si la prueba no produce $f$ así que no sabemos lo que es. Así que este polinomio desconocido sería análogo a las máquinas de Turing desconocidas anteriores.

5voto

Sólo quiero añadir a la excelente respuesta anterior de Qiaochu Yuan un ejemplo concreto de la distinción entre número computable y función computable

Considere $BB$ es una función de valor natural bien definida, por lo que para cualquier $n$ existe un único número natural que es el valor de $BB(n)$ .

Además, observe que para cualquier número natural existe una máquina de Turing trivial que produce ese número. La intuición es básicamente que el número está codificado en la máquina de Turing y se copia en la cinta de salida cuando se ejecuta la máquina. Yo soy programador, así que imagino que el número es esencialmente una constante en el código fuente de la máquina, y que la máquina produce esa constante sin tener que calcular nada.

Así que.., $BB(6)$ es computable: existe una máquina de Turing (trivial) que lo produce en tiempo finito.

Sin embargo, para la función $BB$ para ser computable, tendría que haber una máquina de Turing que tome $n$ como entrada y salidas $BB(n)$ para todos $n$ . A partir de la definición de $BB$ el Teorema de Halting demuestra que no existe tal máquina.

Así, para cualquier fijo $n$ el valor $BB(n)$ es un número computable. Sin embargo, la función $n\mapsto BB(n)$ no es computable.

-4voto

Timothy Puntos 29

He leído la primera parte de la respuesta tanto de Qiaochu como de Adam Brown y me han parecido confusas. No dediqué mucha atención a mi intento. He aquí mi respuesta, que puede resultar confusa para otras personas, pero no para mí y quizá tampoco para el OP o algunas otras personas. Creemos que la aritmética de Peano es cierta. Pero la aritmética de Peano no puede probar su propia consistencia, así que creamos un sistema más fuerte que prueba que la aritmética de Peano es consistente. Una vez leí que la constante de Chitian es algorítmicamente aleatoria. Se puede demostrar en el sistema más fuerte que la aritmética de Peano no puede demostrar lo que cualquiera de los dígitos más allá de un cierto punto son dado lo que todos los dígitos anteriores son, y que la aritmética de Peano no puede demostrar su propia incapacidad para demostrar que ninguno de los dígitos más allá de ese punto se puede demostrar en la aritmética de Peano dado lo que todos los dígitos anteriores son.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X