El problema de detención indica que es imposible escribir un programa que pueda determinar si otro programa se detiene, para todos los programas de entrada posibles .
Sin embargo, ciertamente puedo escribir un programa que pueda calcular el tiempo de ejecución de un programa como:
for(i=0; i<N; i++)
{ x = 1; }
y devuelve una complejidad de tiempo de , sin ejecutarlo nunca.
Para todos los demás programas de entrada, devolvería un indicador que indica que no pudo determinar la complejidad temporal.
Mi pregunta es esta:
¿Qué condiciones deben cumplir, de modo que podamos determinar algorítmicamente la complejidad temporal de un programa dado?
* Si hay una referencia canónica o un artículo de revisión sobre esto, agradecería un enlace a él en los comentarios.