Menggunakan kembali fungsi hash 5-independen untuk penyelidikan linear

14

Dalam tabel hash yang menyelesaikan tabrakan dengan linear probing, untuk memastikan kinerja yang diharapkan, perlu dan cukup bahwa fungsi hash berasal dari keluarga 5-independen. (Kecukupan: "Pemeriksaan linear dengan kemandirian yang konstan", Pagh et al. , Keharusan: "Pada k-Kemandirian yang Diperlukan oleh Pemeriksaan Linier dan Kemandirian Minwise", Pătraşcu dan Thorup )HAI(1)

Ini adalah pemahaman saya bahwa keluarga 5-independen yang paling cepat diketahui menggunakan tabulasi. Memilih fungsi dari keluarga seperti itu mungkin mahal, jadi saya ingin meminimalkan berapa kali saya melakukannya sambil tetap mencegah serangan kompleksitas algoritmik seperti yang dijelaskan dalam "Denial of Service via Algorithmic Complexity Attacks" karya Crosby dan Wallach . Saya kurang khawatir tentang serangan waktu (yaitu musuh dengan stopwatch). Apa konsekuensi menggunakan kembali fungsi yang sama:

  1. Saat menumbuhkan tabel hash yang terlalu penuh?
  2. Ketika menyusut tabel hash yang tidak cukup penuh?
  3. Saat membangun kembali tabel hash yang memiliki terlalu banyak bit "dihapus" yang ditetapkan?
  4. Dalam tabel hash yang berbeda yang mungkin berisi beberapa kunci yang sama?k
  5. Dalam tabel hash yang berbeda yang tidak mengandung kunci yang sama?k
jbapple
sumber
Jika ini adalah pertanyaan tentang praktik ... pendekatan pragmatis yang masuk akal adalah dengan menggunakan fungsi hash kriptografi, dengan rahasia acak dimasukkan dalam input, alih-alih menggunakan skema berdasarkan tabulasi. Lalu ada sedikit tekanan untuk menggunakan kembali fungsi hash yang sama; Anda dapat menggunakan rahasia berbeda untuk setiap tabel hash (dan mengubah rahasia dan mengulangi semuanya, ketika menyusut / tumbuh / membangun kembali tabel hash).
DW
Saya pikir bahkan fungsi hash kriptografi yang cepat pada input pendek seperti SipHash-2-4 cukup lambat dibandingkan bahkan dengan keluarga 5-independen yang menggunakan polinomial.
jbapple

Jawaban: