Ch09 Hashing
Ch09 Hashing
Kita inginkan satu kunci yang boleh mencapai data dalam jadual secara terus
Contoh: Andaikan terdapat 25 nombor integer yang nilainya antara 0 hingga 999
disimpan dalam jadual;
Sediakan tatasusunan Jadual dengan indeks 0 .. 999. Berikan nilai awal 1 kepada
setiap lokasi tatasusunan. Umpukkan nombor i pada lokasi Jadual[i].
Lokasi tersebut dapat dicapai secara terus dengan:
Jadual[nombor] == nombor
Fungsi hash:
h(i) = i
Dengan kaedah ini, ruang yang besar diperlukan.
Hashing with linear probing. Guna 25 lokasi sahaja untuk menyimpan 25 nilai.
Jadual mempunyai indeks 0..24.
Fungsi hash:
h(i) = i mod 25
Contoh:
...
23
24
500 -1
52
-1 129 -1
273
1 49
Masalah akan timbul jika berlaku pertembungan (collision), iaitu apabila nilai 77
ingin dimasukkan pada lokasi 2.
Masalah ini dapat diselesaikan secara linear probing. Dengan mengambil lokasi
kosong berikutnya iaitu 3.
Kaedah folding
Fungsi hash:
h(i) = ((i div saiz) + (i mod saiz)) mod saiz
cth: Jika:
nombor = 346892,
saiz = 1000
h(346892) = (346 + 892) mod 1000
= 238
Fungsi hash:
h(i) = jumlah mod saiz