Hash Table

Hashing merupakan teknik yang digunakan untuk menyusun dan mengakses elemen data dalam List dengan waktu yang relatif konstan melalui manipulasi key untuk mengidentifikasi lokasi dalam List.

Hash function merupakan fungsi yang digunakan untuk memanipulasi key dari elemen data dalam List untuk mengidentifikasi lokasi aslinya di list. Fungsi ini akan memetakan list data yang ukurannya berubah-ubah ke ukuran tetap. Nilai kembalian dari fungsi hash disebut dengan Hash Values.

Hash table adalah sebuah struktur data yang terdiri atas sebuah tabel dan fungsi yang bertujuan untuk memetakan nilai kunci yang unik untuk setiap record menjadi angka (hash) lokasi record tersebut dalam sebuah tabel. 

Keunggulan dari struktur hash table ini adalah waktu aksesnya yang cukup cepat, jika record yang dicari langsung berada pada angka hash lokasi penyimpanannya. Akan tetapi pada kenyataannya sering sekali ditemukan hash table yang recordrecordnya mempunyai angka hash yang sama (bertabrakan).

Karena pemetaan hash function yang digunakan bukanlah pemetaan satu-satu, (antara dua record yang tidak sama dapat dibangkitkan angka hash yang sama) maka dapat terjadi bentrokan (collision) dalam penempatan suatu data record. Untuk mengatasi hal ini, maka perlu diterapkan kebijakan resolusi bentrokan (collision resolution policy) untuk menentukan lokasi record dalam tabel. Umumnya kebijakan resolusi bentrokan adalah dengan mencari lokasi tabel yang masih kosong pada lokasi setelah lokasi yang berbentrokan. 

Hash table menggunakan memori penyimpanan utama berbentuk array dengan tambahan algoritma untuk mempercepat pemrosesan data. Pada intinya hash table merupakan penyimpanan data menggunakan key value yang didapat dari nilai data itu sendiri. Dengan key value tersebut didapat hash value. 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).

Berikut contoh penggunaan hash table dengan hash function sederhana yaitu memodulus key value dengan ukuran array : h = k (mod m)

Misal kita memiliki array dengan ukuran 13, maka hash function : h = k (mod 13).

Dengan hash function tersebut didapat :

Perhatikan range dari h untuk sembarang nilai k.

Maka data 7 akan disimpan pada index 7, data 13 akan disimpan pada index 0, dst..

Untuk mencari kembali suatu data, maka kita hanya perlu menggunakan hash function yang sama sehingga mendapatkan hash index yang sama pula.

Misal : mencari data 25 → h = 25 (mod 13) = 12

Namun pada penerapannya, seperti contoh di atas terdapat tabrakan (collision) pada k = 13 dan k = 39. Collision berarti ada lebih dari satu data yang memiliki hash index yang sama, padahal seperti yang kita ketahui, satu alamat / satu index array hanya dapat menyimpan satu data saja.

Untuk meminimalkan collision gunakan hash function yang dapat mencapai seluruh indeks/alamat. Dalam contoh di atas gunakan m untuk me-modulo k. Perhatikan bila kita menggunakan angka m untuk me-modulo k maka pada indeks yang lebih besar dari dan sama dengan m di hash table tidak akan pernah terisi (memori yang terpakai semakin kecil), kemungkinan terjadi collision juga semakin besar.

Karena memori yang terbatas dan untuk masukan data yang belum diketahui tentu collision tidak dapat dihindari.






Share this

Related Posts

Previous
Next Post »

28 komentar

komentar
June 15, 2021 at 9:12 PM delete

Nama: Julio Geraldi Soeiono
NRP: 5025201079
Link: https://juliogeraldigg.blogspot.com/2021/06/no-telp-java.html

Reply
avatar
June 19, 2021 at 9:05 PM delete

Nama : Haniif Ahmad Jauhari
NRP : 5025201224
Link : https://haniifahmadjauhari.blogspot.com/2021/06/tugas-struktur-data-16-juni-2021.html

Reply
avatar
June 21, 2021 at 4:58 AM delete

Nama : Nabila Zakiyah Khansa' Machrus
NRP : 5025201139
Link : https://nabilayasha.blogspot.com/2021/06/hash-table.html

Reply
avatar
June 21, 2021 at 7:07 PM delete

Nama : Afira Rolobessy
NRP: 5025201006
LINK: https://afira03.blogspot.com/2021/06/implementasi-hash-table.html

Reply
avatar
June 22, 2021 at 4:41 AM delete

Nama : Cahyadi Surya Nugraha
NRP : 5025201184
Link : https://cahyadisuryanugraha.blogspot.com/2021/06/hash-table.html

Reply
avatar
June 22, 2021 at 5:50 AM delete

Nama : Bagus Febrian Dali Hidayat
NRP : 5025201208
Link : https://bagusfebrian25.blogspot.com/2021/06/implementasi-hash-table.html

Reply
avatar
June 22, 2021 at 6:39 AM delete

Nama : Frederick Wijayadi Susilo
NRP : 5025201111
Link : https://frederickws.blogspot.com/2021/06/implementasi-hash-table-dalam-program.html

Reply
avatar
June 22, 2021 at 7:17 AM delete

Nama: Ferdinand Putra Gumilang Silalahi
NRP: 5025201176
Link: https://gumilangsilalahi.blogspot.com/2021/06/hash-table.html

Reply
avatar
June 22, 2021 at 7:38 AM delete

Nama: Muhammad Andi Akbar Ramadhan
NRP : 5025201264
Link: https://andiakbar264.blogspot.com/2021/06/hashtable-java.html

Reply
avatar
June 22, 2021 at 8:37 AM delete

Nama : Rafael Asi Kristanto Tambunan
NRP : 5025201168
Link : https://rafaelaktambunan.blogspot.com/2021/06/hash-table.html

Reply
avatar
June 22, 2021 at 8:43 AM delete

Nama : Sarah Alissa Putri
NRP : 5025201272
LINK : https://sharrju.blogspot.com/2021/06/struktur-data-hash-table.html

Reply
avatar
June 22, 2021 at 9:54 AM delete

Nama : Joy Posma Abednego Gultom
NRP : 5025201103
Link : https://joygoeltom.blogspot.com/2021/06/hash-table.html

Reply
avatar
June 22, 2021 at 10:02 AM delete

Nama: Mohammad Fadhil Rasyidin Parinduri
NRP: 5025201131
Link: Hashtable in Java

Reply
avatar
June 22, 2021 at 10:04 AM delete

Nama : Ahmad Ibnu Malik Rahman
NRP : 5025201232
Link : https://ibnumalik12.blogspot.com/2021/06/implementation-hash-table-in-java.html

Reply
avatar
June 22, 2021 at 10:34 AM delete This comment has been removed by the author.
avatar
June 22, 2021 at 10:35 AM delete

Nama : Sidrotul Munawaroh
NRP : 5025201047
Link : https://sidrotulmunawaroh.blogspot.com/2021/06/implementasi-hash-table-in-java.html

Reply
avatar
June 22, 2021 at 11:04 AM delete

Nama : Angela Oryza Prabowo
NRP : 5025201022
Link : https://angelaoryza.blogspot.com/2021/06/hash-table.html

Reply
avatar
June 22, 2021 at 5:33 PM delete

Nama : Ilma Fahma Syadidah
NRP : 5025201063
Link : https://ilmafsy.blogspot.com/2021/06/tugas-hash-table.html

Reply
avatar
June 22, 2021 at 5:45 PM delete

Nama : Samuel Berkat Hulu
NRP : 5025201055
Link : https://samuelberkathulu.blogspot.com/2021/06/implementasi-hash-table.html

Reply
avatar
June 22, 2021 at 6:00 PM delete

Nama : Afiq Akram
NRP : 5025201270
Link : https://afiqakraam.blogspot.com/2021/06/implementasi-hash-table.html

Reply
avatar
June 22, 2021 at 6:04 PM delete

Nama : Zidan Al Azizi
NRP : 5025201014
Link : https://zidanalazizi27.blogspot.com/2021/06/implementasi-hash-table.html

Reply
avatar
June 22, 2021 at 7:16 PM delete

Nama : Helmi Taqiyudin
NRP : 5025201152
Link : https://helmitaqiyudin.blogspot.com/2021/06/hashtable-implementation.html

Reply
avatar