Kita semua tahu bahwa perbedaan elemen dalam model berbasis perbandingan tidak dapat dilakukan dalam waktu . Namun, pada RAM kata, seseorang mungkin dapat mencapai yang lebih baik.
Tentu saja, jika kita mengasumsikan adanya fungsi hash sempurna yang dapat dihitung dalam waktu linier, kita mendapatkan algoritma waktu linier untuk perbedaan elemen: tetap saja hashing angka satu per satu dan kembalikan 1 jika ada tabrakan.
Namun, ada dua masalah: 1) sebagian besar konstruksi fungsi hash sempurna yang saya dapat menemukan keacakan digunakan dan 2) Saya tidak dapat menemukan diskusi tentang waktu pra-pemrosesan di mana saja, yaitu, waktu yang diperlukan untuk memutuskan fungsi hash mana yang sedang berjalan untuk digunakan berdasarkan set input angka.
Fredman et al. " Menyimpan tabel jarang dengan waktu akses kasus terburuk O ( 1 ) " tidak menyelesaikan masalah pertama dengan menyediakan fungsi hash dengan waktu akses dalam kasus terburuk, tetapi tidak mengatakan apa pun tentang masalah kedua .
Singkatnya, inilah yang saya inginkan:
Merancang sebuah algoritma yang diberikan satu set dari angka (masing-masing nomor yang bit panjang) pada kata-RAM dengan panjang kata , menemukan fungsi hash di waktu, di mana . Fungsi harus memiliki properti yang untuk setiap , jumlah elemen yang dipetakan ke adalah konstan dan menghitung harus mengambiln w w h : S → { 1 , ... , m } O ( n ) m = O ( n ) h j ∈ { 1 , ... , m } S j h ( i ) O ( 1 )waktu dalam model kata-RAM "masuk akal", yaitu, model tidak boleh membiarkan fungsi "eksotis" pada kata-kata dievaluasi dalam waktu .
Saya juga ingin tahu apakah ada algoritma untuk menyelesaikan elemen yang berbeda pada kata-RAM yang tidak menggunakan fungsi hash sama sekali.