Klasifikasi fungsi hash

9

Di internet, saya menemukan pertanyaan ini:

Klasifikasi Fungsi Hashing berdasarkan berbagai metode yang digunakan untuk menemukan nilai kunci.

dengan jawaban suka

  • Metode langsung
  • Metode pengurangan
  • Metode Divisi-Modulo
  • Metode Ekstraksi Digit
  • Metode Mid-Square
  • Metode lipat
  • Metode pseudo-acak

yang saya temukan aneh. Saya rasa saya tahu banyak tentang hashing, tapi ini omong kosong bagi saya, dapatkah ada yang menjelaskan?

maaartinus
sumber

Jawaban:

4

Mereka adalah metode untuk mengubah kode hash menjadi indeks array yang berisi nilai-nilai. Katakanlah Anda memiliki kode hash 0x12345678. Jumlah yang sangat besar dan Anda tidak mungkin memiliki array ukuran ini. Jika Anda melakukannya, Anda bisa melakukannya

Value = array[0x12345678];

Dan dilakukan (metode langsung).

Jika tidak, maka Anda memiliki cara untuk mengubah nilai ini menjadi nilai yang sesuai dengan ukuran array saat mencoba menghindari tabrakan yang terlalu banyak. Istilah yang digunakan mungkin juga dikenal dengan nama lain, tetapi misalnya Anda hanya bisa menutupi bit kode hash yang lebih tinggi

Value = array[hashcode & 0xffff];

Atau mod kode hash terhadap ukuran array

Value = array[hashcode % array.size()]; // modulo division

Dll

Sunting: tautan ini dapat membantu

James
sumber
Terima kasih, begitulah - tautannya tampaknya menjadi sumber pembunuhan ini. Itu masih tidak masuk akal karena mereka menggabungkan banyak hal bersama-sama: 1. menghitung kode hash dari kunci (misalnya, melipat dan menambahkan), 2. meningkatkan (= mengolesi) hash (misalnya, mid-square), 3. pemetaan hash ke indeks (misalnya, modulus, "&").
maaartinus