Estaba mirando esta lectura del MIT sobre la complejidad computacional y en el minuto 15:00 Erik Demaine se embarca en una demostración para mostrar lo que se indica en el título de esta pregunta. Sin embargo, no puedo seguir su razonamiento, en la práctica lo que dice es esto:
podemos establecer un problema de decisión como una cadena de y que en la práctica es la tabla de verdad de la función.
Continúa diciendo que un problema de decisión es una cadena infinita de bits, mientras que un programa es una cadena finita de bits y hasta aquí no hay problema. Lo que no entiendo es la continuación de la prueba a partir de este punto: los problemas de decisión están en
porque puede poner un punto decimal antes de la cadena que representa el problema, obteniendo así la parte decimal de un verdadero
for example if you have 0111011010101010101... it could become x.0111011010101010101...
Un programa es "solo" un número entero en porque es una cadena finita de bits. El punto que no entiendo es cómo es posible que un problema de decisión sea comparable a un número real en lugar de un número entero ... Quiero decir, si usamos el argumento de "poner un punto delante del número" no podría ¿Se puede aplicar el mismo razonamiento a la cantidad de algoritmos posibles que se pueden producir?
Respuestas:
Si te entiendo correctamente, tu pregunta es: ¿por qué una solución puede ser codificada por un número natural y un problema con un número real? (Supongo que comprende la siguiente fase de la prueba que se basa en la diferencia entre los conjuntos de cardinalidad y ).c ℵ0
La razón radica en la teoría de conjuntos, más específicamente en la cardinalidad de diferentes conjuntos. Cuente el número de programas: es el tamaño de las diferentes cadenas de un idioma específico o conjunto de caracteres (ASCII, por ejemplo). Este tamaño es equivalente al tamaño del conjunto (números naturales). (Cada cadena se puede representar como su valor que se calcula mediante su representación binaria).N
Pero, contando el número de funciones desde los números naturales (o cadenas que los representan) hasta , bueno, esa es una historia completamente diferente, y aquí estamos tratando con diferencias de tamaño entre dos conjuntos infinitos; El tamaño de este conjunto es más grande. Hay una buena prueba que se basa en el hecho de que las funciones de a todos los conjuntos mencionados anteriormente no pueden ser "sobre", lo que lleva a la conclusión de la diferencia de cardinalidad. Puedes leer la prueba aquí .{0,1} N
fuente
Reformulando de una manera matemáticamente más precisa, lo que el profesor intenta decir es esto: cualquier algoritmo puede codificarse (únicamente) como una cadena finita de bits, y cualquier cadena finita de bits (únicamente) codifica un programa; por lo tanto, hay una biyección entre y el conjunto de algoritmos, por lo que ambos son conjuntos contables. Por el contrario, después de haber arreglado un orden de las cadenas, cualquier problema de decisión puede codificarse (únicamente) como una cadena infinita de bits, donde el bit -ésimo representa si la cadena -ésima está en o no, y cualquier cadena infinita de los bits (únicamente) codifican un problema de decisión (de la misma manera); por lo tanto,N P i i P R y el conjunto de problemas de decisión son conjuntos incontables.
fuente
Cada algoritmo puede ser descrito por una cadena finita, por lo que solo hay innumerables algoritmos. En contraste, podemos describir cada problema de decisión como un decimal infinito en la base 2, y además es un mapeo sobreyectivo : cada número en puede "decodificarse" en un problema de decisión. Por lo tanto, hay innumerables problemas de decisión.[0,1]
El argumento de decodificación no funciona para algoritmos; aunque cada algoritmo corresponde a un decimal finito, esto no cubre todo , sino solo un subconjunto contable.[0,1]
fuente