You are on page 1of 8

Session 14 HASHING

Core Java / Session 1 / 1 of 21

HASH

Fungsi Hash adalah fungsi untuk konversi himpunan kunci (K) menjadi himpunan alamat pengingat dan bisa ditulis sbb: H:K -- L Fungsi Hash biasanya digunakan untuk mempermudah melakukan Searching Metode yang digunakan adalah Metode Pembagian, MidSquare dan Penjumlahan Digit
Core Java / Session 1 / 2 of 21

Metode Pembagian

Pilih suatu perubah yang nilainya lebih besar dibandingkan dengan banyaknya kunci dalam K, biasanya dipilih bilangan prima. Fungsi hash ditentukan sebagai berikut: H(k) = k mod m atau H(k) = k mod m +1 Persamaan dipilih bila ingin alamat dari 0 s/d m-1 dan persamaan kedua 1 s/d m Misal L terdiri dari 100 buah alamat yang masing-masing alamat terdiri dari 2 karakter, bila nomor mahasiswa adalah: 10347, 87492, 34212 dan 88688. Untuk menentukan alamat diatas kita pilih bilangan prima dekat 99 yaitu 97 dengan fungsi H(k) = k mod m didapat alamat 65, 95, 68 dan 30

Core Java / Session 1 / 3 of 21

Metode Midsquare

Dalam metode ini kunci di kuadratkan dan fungsi hash yang dipilih dengan menghilangkan digit-digit pada kedua sisi dari k2 dengan catatan digit kiri dan kanan sama bilka tidak digit kiri ditambah sejumlah trailling zero Dengan menggunakan contoh diatas maka hasil sbb: k 10347 87492 34212 88688 k2 107060409 76548500564 1170460944 7865561344
H(k) 06 85 46 56

Core Java / Session 1 / 4 of 21

PENJUMLAHAN DIGIT

Kunci yang diketahui dibagi menjadi beberapa kelompok sesuai jumlah digit alamat yang diinginkan dari sebelah kanan Hasil pembagian tersebut kita jumlahkan, bila hasil melebihi ukuran yang kita inginkan maka kita bagi lagi dan lakukan penjumlahan lagi sampai nilainya lebih kecil dari ukuran H(10347)=1+03+47=51 H(87492)=8+74+92=174=1+74=75 H(34212)=3+42+12=57 H(88688)=8+86+88=182=1+82=83
Core Java / Session 1 / 5 of 21

Mengatasi Tabrakan
Untuk mengatasi tabrakan karena alamat yang sama bisa digunakan metode Pengalamatan Terbuka, bila kita dapatkan alamat h di mana alamat tersebut sudah terisi maka dicari secara Linear Probing dengan H, H+1, H+2, H+3,. Misal: R A B C K P Q R Y Z H(k) 5 6 7 5 0 1 2 9 0 Maka hasil: R P Q R Z - A B C K Y Alamat 0 1 2 3 4 5 6 7 8 9 Ada juga dengan menggunakan quadratic probing sebagai berikut H, H+1, H+4, H+9,.

Core Java / Session 1 / 6 of 21

Mengatasi Tabrakan

Metode yang lain adalah Penggandengan dengan cara memanfaatkan senarai berantai, dimana digunakan sebuah senarai berantai tunggal berkepala dengan kepalanya adalah alamat Hash Struktur datanya: struct simpul { int nilai; simpul *kanan; }; simpul *awal[10];

Core Java / Session 1 / 7 of 21

Algoritma memasukkan data


1. Jika akar=NULL maka data masuk ke akar 2. Jika akar<>NULL maka 3. simpul=akar 4. node=akar 5. Selama akar<>null and data<>nilai yang ada di simpul, lakukan 6. jika data<nilai yang disimpul 7. node=simpul 8. simpul=cabang kiri dari simpul 9. jika data>nilai yang disimpul 10. node=simpul 11. simpul=cabang kanan dari simpul 12. jika data<nilai yang disimpul maka data menjadi cabang kiri dari node 13. jika data>nilai yang disimpul maka data menjadi cabang kanan dari node

Core Java / Session 1 / 8 of 21