El problema de detención plantea la siguiente pregunta: ¿Existe un programa P que pueda determinar si algún otro programa Q se detendrá cuando se presente la entrada I?
Esta es una restricción a nuestra capacidad de crear programas que predicen si otros programas arbitrarios se detendrán. No es una restricción a nuestra capacidad de razonar sobre programas particulares .
Considere el siguiente programa de Python:
- Recientemente instalé Ubuntu, ¿cómo debo comenzar a jugar con él?
- Cómo instalar Windows 8 o 10 en mi computadora portátil de segunda mano
- ¿Cuál es la diferencia entre los clasificadores de aprendizaje automático y los modelos de lenguaje estadístico?
- ¿Cuál es la diferencia entre informática y ciencia de datos?
- ¿Utiliza Windows y prácticamente arranca Linux o al revés?
def prog (x):
total = 0
mientras x> 0:
total = total + x
x = x – 1
retorno total
Al examinar este programa, puedo mostrar con bastante facilidad que siempre se detiene . Si x 0, se ejecuta el cuerpo del bucle. Esto hace que x disminuya en uno. Como x siempre disminuye en uno, después de las ejecuciones del cuerpo del bucle x será menor o igual a cero. Por lo tanto, el programa siempre se detiene.
Lo que no puedo hacer es escribir un programa que tome cualquier programa y un argumento como entradas, y luego determine si se detiene. Entonces, en términos de Python, no puedo escribir esto:
def se detiene (prog, x):
si prog (x) termina:
volver verdadero
más:
falso retorno
La prueba del problema de detención muestra que la instrucción “if” en la línea 2 no tiene un límite superior en el tiempo necesario para ejecutar. Por lo tanto, es solo un programa que de alguna manera se reduce a esto donde el problema de detención es un problema. La mayoría de los programas que escribimos en la práctica no son así. Nos quedamos con cosas que podemos mostrar que se detendrán entre las entradas.