HASH TABLE!
Di
kesempatan kali ini saya akan menerangkan sedikit tentang “Hash Table” ini.
Tujuan dari hash table adalah untuk mempercepat pencarian kembali dari banyak
data yang disimpan. Hash table menggunakan suatu teknik penyimpanan sehingga
waktu yang dibutuhkan untuk penambahan data (insertions), penghapusan data
(deletions), dan pencarian data (searching) relatif sama dibanding struktur
data atau algoritma yang lain.
Kelebihan
dari hash table antara lain sebagai berikut :
– Hash table relatif lebih cepat
– Kecepatan dalam insertions, deletions,
maupun searching relatif sama
Jadi hash
function merupakan suatu fungsi sederhana untuk mendapatkan hash value dari key
value suatu data. Yang perlu diperhatikan untuk membuat hash function adalah:
– ukuran array/table size(m),
– key value/nilai yang didapat dari data(k),
– hash value/hash index/indeks yang
dituju(h).
Operasi Pada
Hash Tabel
insert:
diberikan sebuah key dan nilai, insert nilai dalam tabel
find:
diberikan sebuah key, temukan nilai yang berhubungan dengan key
remove:
diberikan sebuah key,temukan nilai yang berhubungan dengan key, kemudian hapus
nilai tersebut
getIterator:
mengambalikan iterator,yang memeriksa nilai satu demi satu.
Berikut ini
cara-cara yang digunakan untuk mengatasi collision :
1. Closed hashing (Open Addressing)
Close
hashing menyelesaikan collision dengan menggunakan memori yang masih ada tanpa
menggunakan memori diluar array yang digunakan. Closed hashing mencari alamat
lain apabila alamat yang akan dituju sudah terisi oleh data. 3 cara untuk
mencari alamat lain tersebut :
Ø Linear
Probing
Apabila
telah terisi, linear probing mencari alamat lain dengan bergeser 1 indeks dari
alamat sebelumnya hingga ditemukan alamat yang belum terisi data, dengan rumus
(h+1) mod m.
Ø Quadratic
Probing
Quadratic
Probing mencari alamat baru untuk ditempati dengan proses perhitungan kuadratik
yang lebih kompleks. Tidak ada formula baku pada quadratic probing ini,anda
dapat menentukan sendiri formula yang akan digunakan.
Contoh
formula quadratic probing untuk mencari alamat baru:
h,(h+i2)mod
m,(h-i2)mod m, … ,(h+((m-1)/2)2)mod m, (h-((m-1)/2)2)mod m
dengan i =
1,2,3,4, … , ((m-1)/2)
Mksud
formula di atas adalah jika alamat h telah terisi, maka alamat lain yang
digunakan adalah (h+1)mod m, jika telah terisi gunakan alamat (h-1)mod m, jika telah terisi gunakan alamat (h+4)mod m,
jika telah terisi gunakan alamat (h-4)mod m, dan seterusnya.
Jadi jika
m=23,maka nilai maksimal i adalah : ((23-1)/2)=11.
Double
hashing
Sesuai
dengan namanya, alamat baru untuk menyimpan data yang belum dapat masuk ke
dalam table diperoleh dengan menggunakan hash function lagi. Hash function
kedua yang digunakan setelah alamat yang dihasilkan oleh hash function awal
telah terisi tentu saja berbeda dengan hash function awal itu sendiri.
Kelemahan
dari closed hashing adalah ukuran array yang disediakan harus lebih besar dari
jumlah data. Selain itu dibutuhkan memori yang lebih besar untuk meminimalkan
collision.
2. Open hashing (Separate Chaining)
Pada
dasarnya separate chaining membuat tabel yang digunakan untuk proses hashing
menjadi sebuah array of pointer yang masing-masing pointernya diikuti oleh
sebuah linked list, dengan chain (mata rantai) 1 terletak pada array of
pointer, sedangkan chain 2 dan seterusnya berhubungan dengan chain 1 secara
memanjang.
Kelemahan
dari open hashing adalah bila data menumpuk pada satu/sedikit indeks sehingga
terjadi linked list yang panjang.
itu saja yang bisa saya sampaikann, semoga membantu
HAVE A NICE DAY!
itu saja yang bisa saya sampaikann, semoga membantu
HAVE A NICE DAY!