Demuestre que hay infinitamente más problemas de los que podremos calcular

8

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 en01
R 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?N

Yamar69
fuente
11
El punto es que el número de algoritmos es contable, mientras que el número de problemas de decisión es incontable. Sugiero buscar estos términos en un libro de texto sobre teoría de conjuntos elemental.
Yuval Filmus
1
@Yuval Filmus Soy perfectamente consciente del significado de estos términos, lo que me cuesta asimilar es la razón de estas diferentes cardinalidades (algoritmos / problemas de decisión).
Yamar69
1
@JimmyB la misma afirmación es verdadera para los números racionales, pero los números racionales siguen siendo contables (tienen el mismo "tamaño" que los enteros) mientras que los números reales no lo son.
Gregory J. Puleo
1
Quizás lo más interesante es que hay infinitos problemas de decisión finitamente especificados que ninguna máquina de Turing puede resolver. No es necesario recurrir a innumerables conjuntos para llegar a la conclusión de que hay infinitos problemas algorítmicamente irresolubles. No necesita la incontabilidad de los números reales para concluir que el conjunto de números reales computables tiene un complemento infinito.
John Coleman
1
"... de lo que podremos calcular" sugiere que los problemas que podemos calcular varían con el tiempo. La definición de "computable" no depende del tiempo.
David Richerby

Respuestas:

9

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 ).c0

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

royashcenazi
fuente
11

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,NPiiPR y el conjunto de problemas de decisión son conjuntos incontables.

dkaeae
fuente
6

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]

Yuval Filmus
fuente