Anda di halaman 1dari 2

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.

Faktor Muatan (load factor)

Nisbah bilangan kunci semasa dengan ruang yang disediakan

Jika faktor muatan >= 80 %, banyak pertembungan akan berlaku.

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 bagi string

Menggunakan nilai Unicode


contoh:
kunci = KUNING
jumlah = (int) K + (int) U + (int) N + (int) I + (int) N + (int) G

Fungsi hash:
h(i) = jumlah mod saiz

Anda mungkin juga menyukai