Il tempo costante è la complessità assoluta della fine dei tempi. Ci si potrebbe chiedere: c'è qualcosa di non banale che può essere calcolato in tempo costante? Se ci atteniamo al modello della macchina di Turing, allora non si può fare molto, poiché la risposta può dipendere solo da un segmento iniziale di lunghezza costante dell'input, poiché parti più lontane dell'input non possono nemmeno essere raggiunte in tempo costante.
D'altra parte, se adottiamo il modello RAM a costo unitario un po 'più potente (e più realistico), in cui le operazioni elementari sui numeri di bit vengono conteggiate come singole fasi, allora potremmo essere in grado di risolvere non banali compiti, anche a tempo costante. Ecco un esempio:
Istanza: numeri interi , ciascuno dato in formato binario da bit O ( log n ) .
Domanda: esiste un grafico -vertex, tale che la sua connettività vertice è k , la connettività del bordo è l e il suo grado minimo è d ?
Si noti che dalla definizione non è nemmeno ovvio che il problema sia in NP . Il motivo è che il testimone naturale (il grafico) potrebbe aver bisogno di una descrizione lunga a , mentre l'ingresso è dato solo da bit O ( log n ) . D'altra parte, il seguente teorema (vedi Extremal Graph Theory di B. Bollobas) viene in soccorso.
Teorema: Sia numeri interi. Esiste un grafico n -vertex con connettività del vertice k , connettività del bordo l e grado minimo d , se e solo se è soddisfatta una delle seguenti condizioni:
- ,
Poiché queste condizioni possono essere verificate in tempo costante (nel modello RAM a costo unitario), il teorema conduce a un algoritmo a tempo costante in questo modello.
Domanda: quali sono alcuni altri esempi non banali di algoritmi a tempo costante?