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 terbukaopen 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 hashawal telah terisi. Syarat dari metode ini adalah ukuran table hashmerupakan 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 arraytable 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 ChainingPengandengan
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 hashakan 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 ChainingPengandengan 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 sisaDivision Remainder yang diperbaharui dengan menambahkan proses penanganan tipe data String. Fungsi hash metode pembagian
sisaDivision 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