Il problema di Halting afferma che è impossibile scrivere un programma in grado di determinare se un altro programma si arresta, per tutti i possibili programmi di input .
Tuttavia, posso sicuramente scrivere un programma in grado di calcolare il tempo di esecuzione di un programma simile a:
for(i=0; i<N; i++)
{ x = 1; }
e restituisce una complessità temporale di , senza mai eseguirla.
Per tutti gli altri programmi di input, restituirebbe un flag indicante che non era in grado di determinare la complessità temporale.
La mia domanda è questa:
Quali condizioni devono rispettare, in modo che possiamo determinare algoritmicamente la complessità temporale di un determinato programma?
* Se c'è un riferimento canonico o un articolo di revisione a questo apprezzerei un link ad esso nei commenti.