Me he divertido mucho aquí en Quora con la mordaza sobre “Por qué la teoría de la computabilidad dice que estás manguera”. Esta será la sexta entrega, pero primero déjame dar un resumen rápido de las anteriores.
- En mi primera respuesta en esta serie, di un teorema encantador que muestra que casi cualquier propiedad que te pueda interesar es indecidible para grupos finitamente generados. Por ejemplo, no hay algoritmos que determinen las respuestas a “¿Es [matemática] G [/ matemática] finita?”, “¿Es [matemática] G [/ matemática] cíclica?”, “Es [matemática] G [/ matemática] ] abelian? ”o“ ¿[math] G [/ math] es generado por menos de 5 elementos? ”
- En la segunda respuesta, mostré que no hay un algoritmo que acepte una serie convergente y genere si el límite es algebraico o no.
- En la tercera respuesta, señalé que no existe un algoritmo que acepte una serie convergente y devuelva un algoritmo que escupirá la expansión decimal del límite. (No probé esto, aunque di algunas referencias de cómo uno podría hacerlo).
- En la cuarta respuesta, probé que no hay un algoritmo que acepte una serie y devuelva si converge o no.
- En la quinta entrega, probé que no hay un algoritmo que acepte dos números irracionales y determine si el producto es irracional.
Hoy, voy a demostrar algo aún más decepcionante: no hay un algoritmo que acepte un número computable (es decir, un número real especificado por un algoritmo que escupe el número real con la precisión que quiera) y devolverá si es cero o no!
A primera vista, esto parece completamente imposible, ¿cómo es posible que ni siquiera se pueda saber si un número computable es cero o no? Pero es verdad; si pudiera escribir un algoritmo que haga esto, podría resolver el problema de Detención. Aquí hay una prueba.
- Si tengo los números n> 0, k> 0, a> 0 y el número primo x .. ¿Cuál es la forma más rápida de calcular ((n ^ k) * a) módulo x?
- ¿Cuál es el significado del teorema de Shamir?
- ¿Qué matemáticas necesito saber para ser un programador exitoso?
- ¿Alguien puede explicar paso a paso cómo se puede resolver el siguiente problema?
- ¿Cuáles son algunos de los temas de teoría de gráficos que necesito aprender para hacer el bien en la programación competitiva?
Elija cualquier programa P y defina [math] 0 \ leq \ epsilon <1 [/ math] de la siguiente manera: el dígito [math] n [/ math] -th en la expansión decimal de [math] \ epsilon [/ math] es [matemática] 1 [/ matemática] si el programa P se detiene después de [matemática] n [/ matemática] pasos, y es [matemática] 0 [/ matemática] de lo contrario. Claramente, [math] \ epsilon [/ math] es computable; simplemente ejecute el programa P el tiempo suficiente y habrá determinado [math] \ epsilon [/ math] con la precisión que desee.
Por otro lado, [math] \ epsilon = 0 [/ math] si y solo si P no se detiene. Por lo tanto, cualquier algoritmo que pueda decirle si [math] \ epsilon = 0 [/ math] también le dice si P se detiene o no. Es decir, tenemos una solución al problema de detención. Esto es imposible: ergo, no hay un algoritmo que haga lo que queremos.