Considera il seguente problema:
Input : elenca di numeri interi
Obiettivo : determinare se esiste un numero intero presente in entrambi gli elenchi.
Supponiamo che entrambe le liste siano della dimensione n . Esiste un algoritmo deterministico a tempo lineare per questo problema? In altre parole, puoi risolvere questo problema in O ( n ) tempo in modo deterministico, senza usare la casualità?
Sfortunatamente, non puoi presumere che gli elementi dell'elenco siano tutti piccoli.
Posso vedere come risolverlo nel tempo previsto usando un algoritmo randomizzato: scegliere casualmente una funzione hash 2-universale h , memorizzare gli elementi di X in una tabella hash (usando h come funzione hash), quindi cercare ogni elemento di Y per vedere se è nella tabella hash. Il tempo di esecuzione previsto sarà O ( n ) . Tuttavia, non riesco a vedere come trovare un algoritmo deterministico con tempo di esecuzione O ( n ) . Se si tenta di derandomizzare questo e correggere una singola funzione hash specifica, esiste un input nel caso peggiore che causa l'esecuzione di questa procedura tempo. Il miglior algoritmo deterministico che riesco a trovare comporta l'ordinamento dei valori, ma non sarà un tempo lineare. Possiamo raggiungere un tempo di esecuzione lineare?
Inoltre, posso vedere come risolverlo in tempo lineare se supponi che tutti gli elementi dell'elenco siano numeri interi nell'intervallo (sostanzialmente, contando l'ordinamento) - ma sono interessato a ciò che accade in generale caso in cui non possiamo assumerlo.
Se la risposta dipende dal modello di calcolo, mi viene in mente il modello RAM, ma sarei interessato ai risultati per qualsiasi modello ragionevole di calcolo. Sono a conoscenza dei limiti inferiori per gli algoritmi dell'albero decisionale per l'univocità degli elementi , ma questo non è definitivo, poiché a volte possiamo trovare algoritmi a tempo lineare anche quando è presente un limite Ω ( n log n ) il modello dell'albero decisionale.