¿Cómo demostrar la existencia de un número que no puede ser escrito por ningún algoritmo?

14

Tengo el problema

Demuestre que existe un número real para el que no existe ningún programa que se ejecute infinitamente largo y escriba los dígitos decimales de ese número.

Supongo que se puede resolver reduciéndolo al problema de detención, pero no tengo idea de cómo hacerlo.

También agradecería enlaces a problemas similares para practicar más.

refrescar
fuente
Yuval Filmus proporcionó una respuesta interesante que debes leer cuidadosamente. El problema de detención "es la cosa" que puede intentar reducir a su problema, no al revés (reduzca su problema a la detención, como lo plantea la hipótesis en su pregunta).
quetzalcoatl
¿Podría mejorarse esta pregunta corrigiendo la gramática en la sección citada? Me resulta muy difícil de analizar.
JimmyJames
@JimmyJames, hice todo lo posible para traducirlo del ruso: Объясните в одно предложение, почему существует такое вещественное число, для которого не существует программы, которая будет работать бесконечно долго и выписывать цифры его представления в десятичной системе счисления. Espero que alguien mejore mi traducción.
Fresheed

Respuestas:

18

Como indica Sebastian, solo hay (infinitamente) innumerables programas. Enumerarlos para crear una lista de programas. La lista es (infinitamente pero) contablemente larga. Cada programa genera un número en R. A partir de eso, podemos crear una lista de números (infinita pero) contable en R. Ahora podemos aplicar el argumento diagonal de Cantor directamente para demostrar que todavía debe haber otros números.

Por cierto, si el algoritmo tiene argumentos (finitos), puede volver a escribir eso como una lista "más larga" de programas donde cada programa no tiene ningún argumento.

Con respecto a su comentario "¿Qué pasa si se permiten números reales como argumento?", Entonces la premisa de la pregunta es incorrecta: todos los números en R pueden generarse. Si alguien encuentra un número, diga 皮 y afirma que no se puede calcular, tenemos el siguiente "algoritmo":

func(number):
    return number

y llamar a func (皮)

Albert Hendriks
fuente
17

En realidad es mucho más simple. Solo hay un número contable de algoritmos. Sin embargo, hay innumerables números reales. Entonces, si intentas emparejarlos, algunos números reales quedarán pendientes.

Sebastian Oberhoff
fuente
9

k1k0 0

Yuval Filmus
fuente
1

El número es un número infinitamente largo que después del punto decimal codifica de todos modos todas las máquinas de Turing que no se detienen. Con este número, podrá resolver el problema de detención.

Puede "buscar" el TM en el número y ejecutarlo en paralelo. Si TM se detiene, se detiene. Si no, "encontrará su código en el número".

Hay muchas modificaciones de la prueba y debería poder reproducirlas después de la primera lección de complejidad :-)

smrt28
fuente
Esto está estrechamente relacionado con la constante de Chaitin .
David Richerby
sí, brote mucho más fácil de entender ...
smrt28
-2

Un punto se mueve en una ruta por la función y = 2x. Cuando la abscisa es un número no computable, no hay forma de que el Punto calcule su camino, pero sabemos que continúa. Por lo tanto, los números no computables pueden existir en absoluto.

Valmir
fuente