Berikut adalah contoh kasus untuk
LinearProbing
, jika data 7, 13, 25, 27 ingin dimasukan ke dalam
table hash
dengan
m
= 13.
Gambar 2.2 Contoh Linear Probing
Tabrakan yang terjadi pada data 39 di indeks 0 diselesaikan dengan bergeser ke indeks 1. Karena indeks 1 juga telah terisi maka
data 39 bergeser ke indeks 2. Karena indeks 2 masih kosong maka data 39 dapat dimasukkan.
b. Quadratic Probing
Quadratic Probing
mencari alamat baru untuk ditempati dengan proses perhitungan kuadratik yang lebih kompleks. Tidak ada
rumus baku pada
quadratic probing.
Kita dapat menentukan sendiri rumus yang akan digunakan.
c.
Double Hashing
Double hashing
adalah salah satu metode pengalamatan terbaik yang tersedia untuk pengalamatan terbuka
open addressing
sebab
permutasi yang dihasilkan mempunyai banyak karakteristik permutasi yang terpilih secara acakThomas H. Cormen, 2009.
Double Hashing
menggunakan fungsi
hash
kedua dan menangani tabrakan dengan menempatkan item di dalam kolom yang
tersediakosong. Fungsi
hash
kedua yang digunakan setelah alamat yang didapat dari fungsi
hash
awal telah terisi. Syarat dari metode ini adalah ukuran
table hash
merupakan bilangan prima, untuk menghindari siklus pencarian slot yang sama.
Contoh fungsi hash adalah
h1 = k mod m
, dimana
k
adalah nilai kunci dan
m
adalah panjang
tablehash.
Jika hasil dari
h1
mengalami tabrakan kunci pada
table hash
maka dapat menggunakan fungsi
hash
kedua
Keterangan :
h2 =
Fungsi hash ke – dua
k =
Indeks
table hash
yang mengalami tabrakan
s
= Nilai jarak lompatan
m =
Panjang
table hash
h2 = k+s mod m
Dengan s didapat dari rumus berikut :
c
adalah konstanta dengan syarat nilai
c
harus bilangan prima dan lebih kecil dari panjang
table hash.
Contoh kasus untuk
double hashing
adalah sebagai berikut : Jika data 76, 93, 40, 47, 10, dan 55 ingin dimasukan ke dalam
tablehash
dengan
m
= 7 dan nilai kontanta = 5.
Gambar 2.3 Contoh Double Hashing Sumber : https:www.cs.washington.edu
Kelemahan dari
open addressing
adalah ukuran array
table hash
yang disediakan harus lebih besar dari jumlah data. Selain itu dibutuhkan
memori yang lebih besar untuk meminimalkan terjadinya
collision.
s = c
–
k mod c
Separate Chaining
Pengandengan
Metode pengandengan merupakan metode lain yang digunakan untuk mengatasi kemungkinan adanya tabrakan alamat
hash.
Metode ini memanfaatkan senarai berantai yang dipasang pada setiap alamat
hash
yang diketahui. Pada metode pengandengan ini, jumlah elemen yang dapat disimpan hanya dibatasi oleh kapasistas memori komputer yang tersedia.
Jika kita memiliki sebuah alamat
hash
lengkap dan senarai menyimpan rekaman
– rekaman yang mempunyai alamat
hash
yang sama, maka kita akan melihat adanya sebuah senarai tunggal berkepala.
Sebagai contoh, jika kita mempunyai rekaman – rekaman yang kunci
rekamanya dituliskan sebagai berikut : 35
56 15
50 91
100 28
11 29
79 83 43
Fungsi
hash
yang digunakan adalah
k mod
10. Dengan demikian, alamat
hash
akan terdiri dari 10 buah alamat yang memiliki nomor 0 sampai 9.
Gambar dibawah ini menunjukan alamat
hash
lengkap dengan senarai berantainya untuk menyimpan rekaman - rekaman di atas.
Gambar 2.4 Metode
Chaining
Pengandengan c.
Fungsi Hash Metode Pembagian Sisa Pada String
Penanganan tipe data String pada fungsi hash adalah mengubah nilai karakter pada String diubah menjadi nilai char berdasarkan kode ASCII. Dan
dilakukan proses untuk menghitung nilai kunci, dan akan diperoleh nilai kunci yang unik, dari beberapa String yang memiliki karakter kata yang sama tetapi
akan di peroleh nilai kunci yang berbeda. Alamat
Hash
Rekaman
1 2
3 4
5 6
7 8
9
35 56
15 50
91 100
28 11
29 79
83 43
Penanganan ukuran kunci haruslah dilakukan secara hati – hati, hal ini
dilakukan untuk membuat ukuran kunci hasil transformasi menjadi tidak terlalu besar sehingga sulit untuk disimpan di memori. Ini dapat diselesaikan
dengan memecah kunci transformasi menjadi potongan – potongan nilai, dan
kemudian mengkombinasikan potongan – potongan nilai itu Adi Nugroho,
2008. Penggunaan fungsi hash pada String menggunakan fungsi hash metode
pembagian sisa
Division Remainder
yang diperbaharui dengan menambahkan proses penanganan tipe data String. Fungsi hash metode pembagian
sisa
Division Remainder
String tersebut ditunjukan dengan rumus sebagai berikut :
Keterangan :
NK
= Nilai Kunci
A
= Nilai karakter kata pada String
X
= Jumlah keseluruhan karakter pada ASCII yaitu 128
h
= Panjang table hash Pada rumus di atas terlebih dahulu nilai dari karakter kata akan
dikalikan dengan
X
, kemudian akan dilakukan modulu. Nilai dari karakter kata
NK = A
n
X mod h X + A
1
mod h X + A mod h
yang telah di modulu tersebut akan dikalikan dengan X dan kemudian nilainya akan ditambahkan dengan nilai karakter kata selanjutnya kemudian akan
modulukan lagi. Proses tersebut akan terus berlanjut sampai dengan karakter kata habis, Setelah semua proses selesai maka akan didapat hasil dari nilai
Kunci dari kata tersebut. Setiap katakter kata sebelum ditambahkan dengan karakter kata selanjutnya akan dikalikan dengan 128, hal tersebut dilakukan
untuk mendapatkan nilai karakter yang unik. Dan selesai penambahan karakter kata akan dilakukan modulu panjang table hash, hal tersebut
dilakukan agar nilai kunci tidak terlalu besar dari pada panjang table hash. Untuk mempermudah pemahaman tentang penangangan
String
di atas, disertakan contoh, jika ada 2 buah kata yaitu
kau
dan
aku.
Dua kata tersebut memiliki karakter yang sama. Dengan menggunakan penanganan
string
biasa kita hanya akan menambahkan nilai karakter kata tersebutberdasarkan kode
ASCII sehingga menghasilkan nilai dari kata tersebut.
Gambar 2.5 Karakter ASCII
Untuk Karakter
kau
memiliki 3 karakter kata yaitu
k,a,u.
dan untuk
aku
memiliki 3 karakter kata
a,k,u.
Jika dilakukan penanganan string dengan biasa akan di dapat hasil sebagai berikut :
Nilai Kata 1 = „k‟+‟a‟+‟u‟, setiap karakter diubah berdasarkan kode ASCII
= 107+ 97+ 117 = 321
Nilai Kata 2 = „
a
‟+‟k‟+‟u‟ setiap karakterdiubah berdasarkan kode
ASCII = 97+ 107+ 117
= 321
Dari hasil di atas didapatkan bahwa kedua kata tersebut memiliki nilai kata yang sama sehingga kita di lakukan fungsi hash, maka kedua kata tersebut akan
mengalami tabrakan.
Maka dari itu akan dilakukan penanganan
string
yang lebih unik yaitu dengan menggunakan rumus di atas, agar nilai
String
yang dihasilkan menjadi lebih unik. Nilai Kata 1 =
k128Mod 13128+ aMod 13128+ uMod 13 setiap karakter diubah berdasarkan kode ASCII
= 107128Mod 13128+ 97Mod 13128+ 117Mod 13
= 3
Nilai Kata 2 =
a128Mod 13128+ kMod 13128+ uMod 13 setiap karakterdiubah berdasarkan kode ASCII
= 97128Mod 13128+ 107Mod 13128+ 117Mod 13
= 11
Dari hasil diatas di dapat bahwa dengan menggunakan penanganan
string
yang lebih khusus akan menghasilkan nilai kata yang lebih unik.
2.3 Kamus