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 )
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:
- Saat menumbuhkan tabel hash yang terlalu penuh?
- Ketika menyusut tabel hash yang tidak cukup penuh?
- Saat membangun kembali tabel hash yang memiliki terlalu banyak bit "dihapus" yang ditetapkan?
- Dalam tabel hash yang berbeda yang mungkin berisi beberapa kunci yang sama?
- Dalam tabel hash yang berbeda yang tidak mengandung kunci yang sama?
Jawaban:
sumber