Berikut beberapa penjelasan metode teknik hashing:
Pengertian Hashing
Hash adalah suatu teknik "klasik" dalam Ilmu
Komputer yang banyak digunakan dalam praktek secara mendalam. Hash merupakan
suatu metode yang secara langsung mengakses record-record dalam suatu tabel
dengan melakukan transformasi aritmatik pada key yang menjadi alamat dalam
tabel tersebut. Key merupakan suatu input dari pemakai di mana pada umumnya
berupa nilai atau string karakter.
Pelacakan dengan menggunakan Hash terdiri dari dua langkah
utama, yaitu:
1. Menghitung Fungsi Hash
Fungsi Hash adalah
suatu fungsi yang mengubah key menjadi alamat dalam tabel. Fungsi Hash
memetakan sebuah key ke suatu alamat dalam tabel. Idealnya, key-key yang
berbeda seharusnya dipetakan ke alamat-alamat yang berbeda juga. Pada
kenyataannya, tidak ada fungsi Hash yang sempurna. Kemungkinan besar yang
terjadi adalah dua atau lebih key yang berbeda dipetakan ke alamat yang sama
dalam tabel. Peristiwa ini disebut dengan collision (tabrakan). Karena itulah
diperlukan langkah berikutnya, yaitu collision resolution (pemecahan tabrakan).
2. Collision Resolution
Collision resolution
merupakan proses untuk menangani kejadian dua atau lebih key di-hash ke alamat
yang sama. Cara yang dilakukan jika terjadi collision adalah mencari lokasi
yang kosong dalam tabel Hash secara terurut. Cara lainnya adalah dengan
menggunakan fungsi Hash yang lain untuk mencari lokasi kosong tersebut.
Fungsi Hash
(dilambangkan dengan h(key)) bertugas untuk mengubah key menjadi suatu nilai
dalam interval [0....LEVELSIZE-1], dimana "LEVELSIZE" adalah jumlah
maksimum dari record-record yang dapat ditampung dalam tabel. Jumlah maksimum
ini bergantung pada ruang memori yang tersedia.
Fungsi Hash yang
ideal adalah mudah dihitung dan bersifat random, agar dapat menyebarkan semua
key. Dengan key yang tersebar, berarti data dapat terdistribusi secara seragam
dan collision dapat dicegah. Sehingga kompleksitas kinerja model Hash dapat
mencapai O(1), di mana kompleksitas tersebut tidak ditemukan pada struktur
model lain.
KELEBIHAN DAN KELEMAHAN MODEL HASHING
Model Hash memiliki
kelemahan pada saat penambahan dan penghapusan record. Diperlukan
waktu untuk menstrukturisasi tabel Hash. Pada tabel Hash terdapat suatu daerah
(akibat collision) kelebihan data (overflow). Untuk mencapai daerah tersebut,
memerlukan waktu. Lamanya waktu disebabkan jika data diletakkan dalam disk atau
tape.
Hal ini bisa diatasi
dengan meletakkan keseluruhan data sampel secara utuh ke dalam memori. Namun
ruang memori yang terbatas merupakan kendala tersendiri, karena data yang
tersedia dalam kamus kata ini sangat besar (46.010 buah).
Penghapusan suatu
unsur dari tabel Hash dapat menimbulkan masalah. Penghapusan suatu key dapat
menyebabkan key-key yang berikutnya tidak dapat diakses, karena stuktur tabel
yang sudah ada menjadi berubah. Namun dalam pembuatan kamus kata, hal tersebut
tidak perlu dikhawatirkan, karena program ini tidak membutuhkan suatu
penghapusan. Semua data yang terdapat dalam "Basis Data Kamus Kata"
(yang berarti berada dalam tabel Hash), bersifat permanen, sehingga tidak perlu
penghapusan.
PENANGGULANGAN COLLISION
Masalah yang biasanya
terjadi adalah, data yang ada begitu besar dibandingkan dengan jumlah lokasi
dalam tabel. Sangatlah sukar, bahkan tidak mungkin untuk menemukan fungsi Hash
yang dapat mencegah collision. Oleh karena itu penanggulangan collision yang baik
sangat penting dalam Hash agar bisa meminimalkan jumlah collision.
Jika tabel Hash yang
dimiliki berukuran T[0...LEVELSIZE-1], collision terjadi apabila lokasi
T[h(key)] telah terisi pada saat ingin menyisipkan key. Oleh karena itu, harus
ada suatu cara untuk menentukan lokasi lain dalam tabel Hash tersebut untuk
menyimpan key. Collison resolution bertujuan untuk menentukan lokasi kosong
tersebut.
Teknik-teknik collision yang ada diantaranya adalah:
è Separate
Chaining
Teknik Separate Chaining merupakan suatu teknik untuk
mengatasi collision dengan cara menggunakan daerah di luar tabel Hash dalam
bentuk linier. Bentuk linier ini bisa berupa linked-list atau array. Urutan
data pada daerah overflow bisa terurut atau random, tergantung cara penyisipan
yang dilakukan.
è Open
Addressing
Teknik Open Addressing adalah suatu teknik penyimpanan dalam
tabel Hash yang membutuhkan ruang memori sangat besar. Open Addressing Hash
menyimpan N data dalam tabel Hash yang berukuran LEVELSIZE dengan menggunakan
tempat-tempat kosong untuk menangani collision resolution.
è Double
Hashing
Teknik Double Hashing adalah suatu teknik penyimpanan dalam
tabel Hash dimana jika terjadi collision, lokasi selanjutnya adalah lokasi
sekarang + h(k). h(k) adalah suatu fungsi Hash yang berbeda dengan fungsi Hash
yang pertama
KESIMPULAN
Dari rangkaian
eksperimen yang telah diujikan, kami mendapat kesimpulan bahwa kecepatan dari
suatu algoritme pencarian kata dipengaruhi oleh:
1. Fungsi Hash
Fungsi Hash yang mendekati ideal sangat menentukan
kemerataan penyebaran kata pada tabel Hash, sehingga dapat meminimalkan jumlah
collision yang terjadi. Fungsi Hash yang ideal adalah mudah dikomputasikan dan
bersifat random untuk meminimalkan jumlah collision. Hasil random tersebut
dicapai dengan cara memanfaatkan seluruh unsur dalam key dan memperhatikan
semua urutan dalam key tersebut. Namun dalam pemanfaatan seluruh unsur dalam
key dapat berakibat pada sulitnya komputasi fungsi Hash. Fungsi Hash yang kompleks
akan menambah kompleksitas (bisa menyebabkan fungsi Hash tidak lagi linier)
yang mengakibatkan penambahan running time pada saat perhitungan terhadap
fungsi Hash. Dengan demikian, perlu dicari suatu algoritme Hash yang bagus.
2. Pemakaian Informasi Frekwensi
Algoritme Hash dengan memanfaatkan informasi frekwensi kata
ternyata memberikan kontribusi besar dalam kecepatan waktu pencarian kata.
Waktu keseluruhan pencarian kata yang diperlukan oleh algoritme dengan
memanfaatkan informasi frekwensi adalah 0,056 detik. Hasil ini 65% lebih cepat
dibandingkan dengan algoritme Hash yang tidak memanfaatkan informasi frekwensi
(0,086 detik).
3. Hardware yang dipakai untuk melakukan running terhadap
program
Dengan pemakaian hardware yang memiliki kinerja tinggi, maka
running time terhadap program juga semakin cepat
Tidak ada komentar:
Posting Komentar