Pertimbangkan masalah berikut:
Input : daftar bilangan bulat
Sasaran : menentukan apakah ada bilangan bulat yang ada di kedua daftar.
Misalkan kedua daftar ukuran Y adalah . Apakah ada algoritma deterministik, linear-waktu untuk masalah ini? Dengan kata lain, dapatkah Anda menyelesaikan masalah ini dalam waktu deterministik, tanpa menggunakan keacakan?
Sayangnya, Anda tidak dapat mengasumsikan bahwa elemen daftar semuanya kecil.
Saya bisa melihat bagaimana menyelesaikannya dalam waktu yang diharapkan menggunakan algoritma acak: secara acak memilih fungsi hash 2-universal , menyimpan elemen ke dalam hashtable (menggunakan sebagai fungsi hash), dan kemudian mencari setiap elemen untuk melihat apakah itu ada dalam hashtable. Waktu berjalan yang diharapkan adalah . Namun, saya tidak dapat melihat bagaimana menemukan algoritma deterministik dengan waktu berjalan. Jika Anda mencoba untuk derandomisasi ini dan memperbaiki fungsi hash tunggal tertentu, akan ada input terburuk yang menyebabkan prosedur ini berjalan di waktu. Algoritma deterministik terbaik yang dapat saya temukan melibatkan pengurutan nilai, tetapi itu tidak akan linear-waktu. Bisakah kita mencapai waktu berlari linier?
Juga, saya bisa melihat bagaimana menyelesaikannya dalam waktu linier jika Anda mengasumsikan bahwa semua elemen daftar adalah bilangan bulat dalam kisaran (pada dasarnya, jangan menghitung semacam) - tetapi saya tertarik pada apa yang terjadi pada umumnya kasus ketika kita tidak bisa menganggap itu.
Jika jawabannya tergantung pada model perhitungan, model RAM langsung masuk ke pikiran, tetapi saya akan tertarik pada hasil untuk setiap model perhitungan yang masuk akal. Saya mengetahui batas bawah untuk algoritma pohon keputusan untuk keunikan elemen , tetapi ini tidak pasti, karena kadang-kadang kita dapat menemukan algoritma linear-waktu bahkan ketika ada Ω ( n log n ) terikat dalam model pohon keputusan.