Quadratic Probing Aplikasi kamus Bahasa Dayak Ngaju Indonesia berbasis android menggunakan metode Hash

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