Teorema de incompletitud de Gödels (primero) y el problema de la detención: ¿qué tan limitante es?


8

Cuando escuché por primera vez de estas cosas, quedé muy fascinado ya que pensé que realmente establece un límite para las matemáticas y la ciencia en general. Pero, ¿qué tan relevantes son estas cosas?

Para el problema de detención: ¿Hay más de algunos casos construidos artificialmente, donde uno no puede decidir si el algoritmo terminará o no?

Para el teorema de incompletitud: ¿hay más de algunos casos construidos artificialmente, donde uno no puede probar / refutar la declaración?

Pregunto esto porque parece que en la mayoría de las áreas de la ciencia realmente no importa que haya limitaciones tan fundamentales. ¿Están incluso allí? Me gustaría saber dónde esto realmente establece un límite y dónde es realmente relevante.


44
El resultado del problema de detención no indica que no puede decidir si una TM determinada no se detiene. Establece que no existe un algoritmo general que pueda decidir eso para todas las TM.
babou

2
Bueno, sí, pero ¿cuáles son las implicaciones prácticas de esto? ¿Es realmente relevante o solo importa en casos construidos artificialmente?
Nocta

Quizás algo a tener en cuenta es la programación funcional total, que solo permite terminar programas. Luego puede ver con qué frecuencia los profesionales tienen que recurrir a una programación funcional débil (Turing completo) para resolver problemas. En lo que respecta a los lenguajes de programación de propósito general, solo he oído hablar de Idris; el resto parece ser un teorema.
Guildenstern

1
Muchos problemas matemáticos interesantes y difíciles podrían resolverse fácilmente si se pudiera resolver el problema de detención. Por ejemplo, el último teorema de Fermat. Me lleva 5 minutos escribir un programa que se detendrá si y solo si hay una solución para a ^ n + b ^ n = c ^ n con a, b, c> 0 y n> = 3. Si demuestra o refuta que se detiene, eso está probado por FLT. "Hay infinitos primos gemelos" es solo un poco más difícil de probar si se resuelve el problema de detención.
gnasher729

2
Limítese a una pregunta por publicación; Los dos teoremas a los que hace referencia tienen poco que ver entre sí. Su frase también sugiere que realmente no entendió lo que dicen (vea el comentario de babou); tienes que leer un poco más! Estas son declaraciones profundamente matemático-formales que no pueden entenderse adecuadamente en una forma de ciencia pop.
Raphael

Respuestas:


9

El problema de detención que es indecidible tiene mucha relevancia práctica, aquí hay un ejemplo rápido:

Escribir software antivirus es difícil: no podemos decidir si un determinado código es malicioso porque si pudiéramos, podríamos decidir el problema de detención.

Para ver esto, tome un código que tome como entrada una máquina de Turing M y una palabra de entrada w y hace algo malicioso si y solo si M se detiene en la entrada w. Si pudiéramos decidir si una determinada pieza de código era maliciosa, entonces podríamos decidir si esta pieza de código era maliciosa, pero entonces podríamos decidir el problema de detención, que sabemos que no podemos hacer.

Lo que esto está diciendo es que no existe un software antivirus perfecto, no se puede hacer. Eso no significa que no debamos intentar escribir software antivirus, solo que nunca podremos escribir uno perfecto. De hecho, cualquier declaración sobre la decisión de qué programas hacer es indecidible (ver el teorema de Rice ).

Con respecto al teorema de Godel, el teorema de Goodstein es un ejemplo de una declaración que no se puede probar utilizando los axiomas de Peano.


55
Con respeto, creo que esta respuesta es un ejemplo perfecto de no hacer la distinción sobre la que pregunta el OP: está utilizando el problema de detención de una manera que no tiene relevancia práctica. En la práctica, no hay ninguna razón para que un código benigno contenga instrucciones que realicen una acción maliciosa, por lo que no importa que no podamos determinar si esas instrucciones se ejecutan o no; si están allí, el código puede considerarse malicioso.
Harry Johnston

(Sospecho que puede sacar la misma conclusión más adecuadamente si considera en su lugar conjuntos de instrucciones cuyo efecto combinado puede ser benigno o malicioso, dependiendo de qué combinación de instrucciones se ejecute, y luego argumentando que en las circunstancias correctas no puede entender qué combinaciones son posibles, pero no estoy seguro de cómo poner todo junto rigurosamente.)
Harry Johnston

@HarryJohnston Una posibilidad es disfrazar instrucciones maliciosas en los datos. Para algunos programas, es posible que no podamos decidir si estos datos se ejecutan alguna vez como código, o si simplemente es una cadena benigna que parece instrucciones maliciosas. Por supuesto, en los sistemas operativos convencionales (e incluso en los procesadores) existe una separación forzada entre la memoria ejecutable de solo lectura y la memoria de datos grabables, pero hay escenarios en los que este no es el caso.
WaelJ

@HarryJohnston: Eso sería cierto si pudiéramos consultar la parte malvada de la instrucción, pero no podemos. Mi software arbitrario lee un archivo de configuración de ~ / Documents y admite la eliminación de su propia configuración. Hay una ruta de ejecución en la que el "archivo para eliminar" se establece en ~ / Documentos antes de que se llame "eliminar", lo cual es extremadamente malicioso, pero no hay forma de decir "hey, esta aplicación tiene estas dos cosas, debe ser maliciosa". ! " sin mirar lo que está haciendo con ellos. Lo que no puede hacer en el caso general, porque detiene el problema.
Phoshi

@Phoshi: sí, ese es un ejemplo del argumento que describo en mi segundo comentario. Supongo que es posible hacer esto riguroso dados ciertos supuestos, aunque no es obvio para mí la mejor forma de abordarlo. OTOH, puede ser que para que sea riguroso necesitaría permitir que la aplicación se analice a sí misma (es decir, inspeccionar su propio código) y en la práctica debería ser seguro no permitir esto.
Harry Johnston

6

Para el problema de detención: ¿Hay más de algunos casos construidos artificialmente, donde uno no puede decidir si el algoritmo terminará o no?

Hay bastantes contextos "más o menos prácticos / aplicados" con investigación activa en los que el problema de detención juega un papel:

  • prueba automatizada de teoremas . probar los teoremas de las computadoras se encuentra con los mismos límites de indecidibilidad del problema de detención.

  • probar la finalización del programa para programas reales es un área de investigación y se muestra, por ejemplo, en la lógica del compilador y el análisis del programa.

  • La complejidad de Kolmogorov intenta estudiar los límites teóricos de los algoritmos de compresión de datos. encontrar una compresión óptima (en cierto sentido, es decir, encontrar la TM más pequeña que comprime una cadena) es indecidible.

  • La indecidibilidad aparece en algunos problemas físicos. por ejemplo, sistemas dinámicos .

  • Un problema básico estudiado llamado "el castor ocupado" . aún teórico pero menos abstracto que el problema de detención y estudiado en particular por su conexión. Los investigadores han intentado resolver esto durante décadas para TMs "pequeños" con pocos estados / símbolos.

Aquí hay una cita relacionada / interesante de un artículo reciente que estudia el problema de los castores ocupados "problemas en la teoría de números de la competencia de castores ocupados" por Michel (p.3):

En realidad, el problema de detención para las máquinas Turing lanzadas en una cinta en blanco es m completo, y esto implica que este problema es tan difícil como el problema de la probabilidad de una declaración matemática en una teoría lógica como ZFC (Zermelo Fraenkel establece la teoría con axioma de elección). Entonces, cuando se estudian máquinas de Turing con más y más estados y símbolos, potencialmente se cumplirán todos los teoremas de las matemáticas. Cuando se estudian más y más máquinas de Turing que no se detienen para demostrar que no se detienen, uno tiene que esperar enfrentar problemas abiertos en matemáticas, es decir, problemas que el conocimiento matemático actual no puede resolver.

en otras palabras, el problema de la detención en realidad codifica / encapsula el desafío de intentar probar nuevos teoremas matemáticos en matemáticas / CS y, por lo tanto, puede considerarse extremadamente profundo / práctico / aplicado en este sentido. (sin embargo, aunque algunos consideran que esta observación es obvia o trivial, generalmente tampoco es una opinión comúnmente sostenida / expresada).


también, por ejemplo, Penrose argumenta que la indecidibilidad es un factor que previene la IA en la nueva mente del Emperador
vzn

Otro gran contexto donde aparece la indecidibilidad es en algunas preguntas matemáticas básicas. quizás el más básico / famoso es el décimo problema de Hilbert, ecuaciones de diofantina en polinomios. también, la indecidibilidad aparece en algunas preguntas sobre fractales, por ejemplo, el conjunto de Mandelbrot, etc.
vzn

5

Estoy respondiendo una de sus dos preguntas, con respecto al problema de detención.

Primero, la indecidibilidad del problema de detención no indica que no se puede decidir si una TM determinada no se detiene. Establece que no existe un algoritmo general que pueda decidir eso para todas las TM.

Esta es una declaración sobre nuestros modelos de lo que constituye el cálculo. Pero, de acuerdo con la tesis de Turing-Church, eso es todo lo que tenemos para expresar el cálculo.

En cuanto a la relevancia, se basa en máquinas de Turing construidas artificialmente. Pero entonces, todas las TM son bastante artificiales y están construidas solo para afirmar algunos hechos sobre el cálculo. Si algunos TM son más relevantes que otros en la práctica es una pregunta tan importante como el sexo de los ángeles, o la cantidad de ellos que pueden pararse en una cabeza de aguja.

La indecidibilidad del problema de detención nos dice que hay preguntas generales que no pueden resolverse mediante una técnica general aplicable a todos los casos. Lo que quiero decir con pregunta general es una pregunta que depende de algunos parámetros, donde se encuentra la respuesta para algunos valores de los parámetros.

Recuerde que el propósito de gran parte de nuestras matemáticas es encontrar técnicas generales para resolver una familia de problemas. Un ejemplo típico es la resolución de ecuaciones. La indecidibilidad del problema de detención nos dice que esto no siempre es posible.

Por ejemplo, se puede usar para mostrar que no existe una técnica general para decidir si una gramática libre de contexto es ambigua.

Sin embargo, su pregunta es válida. Puede ser que un problema sea indecidible porque simplemente lo hizo demasiado general. Posiblemente, al restringirlo un poco, puede hacerlo decidible para una subfamilia útil y aún lo suficientemente grande.

No tengo un ejemplo espectacular en mente, pero estoy seguro de que debe haber alguno.

Recuerdo un caso real de un problema de análisis de programa que se demostró que estaba completo en NP (a menos que fuera indecidible, no lo recuerdo bien). Contra todo consejo, un estudiante de doctorado decidió abordarlo de todos modos. De hecho, pudo demostrar que algunas restricciones sobre el problema, que no importaban mucho en la práctica, lo convirtieron en un problema muy manejable, permitiendo así el uso de varias herramientas de análisis y optimización de programas.


44
Un ejemplo que creo que encajaría bien en su respuesta es la optimización de compiladores. La indecidibilidad del problema de detención significa que, por ejemplo, no existe un algoritmo que pueda realizar una eliminación perfecta del código muerto o producir el ejecutable más rápido posible para un archivo fuente en particular. Pero esto no impide que los compiladores hagan un muy buen trabajo de estas cosas, en la mayoría de los casos, en la práctica.
David Richerby
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.