Per ogni funzione calcolabile esiste un problema che può essere risolto al meglio in tempo di oppure esiste una funzione calcolabile tale che ogni problema che può essere risolto in può anche essere risolto in tempo?Θ ( f ( n ) ) f O ( f ( n ) ) o ( f ( n ) )
Questa domanda mi è venuta in mente ieri. Ci sto pensando da un po 'adesso, ma non riesco a capirlo. Non so davvero come farei Google per questo, quindi chiedo qui. Ecco cosa mi è venuto in mente:
Il mio primo pensiero è stato che la risposta è sì: per ogni funzione calcolabile il problema "Output punti" (o creare una stringa con punti o altro) non può ovviamente essere risolto in tempo. Quindi dobbiamo solo dimostrare che può essere risolto in tempo. Nessun problema, basta prendere il seguente pseudo codice:f ( n ) f ( n ) o ( f ( n ) ) O ( f ( n ) )
x = f(n)
for i from 1 to x:
output(".")
Chiaramente quell'algoritmo risolve il problema dichiarato. Ed il suo runtime è ovviamente in , quindi il problema è stato risolto. È stato facile, vero? Tranne il no, non è perché devi considerare il costo della prima riga. Il runtime dell'algoritmo sopra riportato è solo in se il tempo necessario per calcolare è in . Chiaramente questo non è vero per tutte le funzioni 1 .Θ (
Quindi questo approccio non mi ha portato da nessuna parte. Sarei grato a chiunque mi indicasse la giusta direzione per capirlo correttamente.
1 Consideriamo ad esempio la funzione . Chiaramente , ma non esiste un algoritmo che calcola nel tempo .