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.
28 komentar
komentarNama: Julio Geraldi Soeiono
ReplyNRP: 5025201079
Link: https://juliogeraldigg.blogspot.com/2021/06/no-telp-java.html
Nama : Haniif Ahmad Jauhari
ReplyNRP : 5025201224
Link : https://haniifahmadjauhari.blogspot.com/2021/06/tugas-struktur-data-16-juni-2021.html
Nama : Anggito Anju Hartawan Manalu
ReplyNRP : 5025201216
Link : https://anggitoanju.blogspot.com/2021/06/implementasi-hash-table.html
Nama : Fajar Zuhri Hadiyanto
ReplyNRP : 5025201248
Link : https://fajarzuhrihadiyanto.blogspot.com/2021/06/implementasi-hashtable-pada-java.html
Nama : Nabila Zakiyah Khansa' Machrus
ReplyNRP : 5025201139
Link : https://nabilayasha.blogspot.com/2021/06/hash-table.html
Nama : Afira Rolobessy
ReplyNRP: 5025201006
LINK: https://afira03.blogspot.com/2021/06/implementasi-hash-table.html
Nama : Cahyadi Surya Nugraha
ReplyNRP : 5025201184
Link : https://cahyadisuryanugraha.blogspot.com/2021/06/hash-table.html
Nama : Bagus Febrian Dali Hidayat
ReplyNRP : 5025201208
Link : https://bagusfebrian25.blogspot.com/2021/06/implementasi-hash-table.html
Nama : Ryo Hilmi Ridho
ReplyNRP : 5025201192
Link : https://ryohilmiridho.blogspot.com/2021/06/tugas-implementasi-hash-table.html
Nama : Frederick Wijayadi Susilo
ReplyNRP : 5025201111
Link : https://frederickws.blogspot.com/2021/06/implementasi-hash-table-dalam-program.html
Nama: Ferdinand Putra Gumilang Silalahi
ReplyNRP: 5025201176
Link: https://gumilangsilalahi.blogspot.com/2021/06/hash-table.html
Nama: Muhammad Andi Akbar Ramadhan
ReplyNRP : 5025201264
Link: https://andiakbar264.blogspot.com/2021/06/hashtable-java.html
Nama : Reza Maranelo Alifiansyah
ReplyNRP : 5025201071
Link : https://rmaranelo.blogspot.com/2021/06/hashtable-implementation-with-java-rabu.html
Nama : Rafael Asi Kristanto Tambunan
ReplyNRP : 5025201168
Link : https://rafaelaktambunan.blogspot.com/2021/06/hash-table.html
Nama : Sarah Alissa Putri
ReplyNRP : 5025201272
LINK : https://sharrju.blogspot.com/2021/06/struktur-data-hash-table.html
Nama : Joy Posma Abednego Gultom
ReplyNRP : 5025201103
Link : https://joygoeltom.blogspot.com/2021/06/hash-table.html
Nama: Mohammad Fadhil Rasyidin Parinduri
ReplyNRP: 5025201131
Link: Hashtable in Java
Nama : Ahmad Ibnu Malik Rahman
ReplyNRP : 5025201232
Link : https://ibnumalik12.blogspot.com/2021/06/implementation-hash-table-in-java.html
Nama : Sidrotul Munawaroh
ReplyNRP : 5025201047
Link : https://sidrotulmunawaroh.blogspot.com/2021/06/implementasi-hash-table-in-java.html
Nama : Angela Oryza Prabowo
ReplyNRP : 5025201022
Link : https://angelaoryza.blogspot.com/2021/06/hash-table.html
Nama : Ilma Fahma Syadidah
ReplyNRP : 5025201063
Link : https://ilmafsy.blogspot.com/2021/06/tugas-hash-table.html
Nama : Samuel Berkat Hulu
ReplyNRP : 5025201055
Link : https://samuelberkathulu.blogspot.com/2021/06/implementasi-hash-table.html
Nama : Afiq Akram
ReplyNRP : 5025201270
Link : https://afiqakraam.blogspot.com/2021/06/implementasi-hash-table.html
Nama : Zidan Al Azizi
ReplyNRP : 5025201014
Link : https://zidanalazizi27.blogspot.com/2021/06/implementasi-hash-table.html
Nama : Helmi Taqiyudin
ReplyNRP : 5025201152
Link : https://helmitaqiyudin.blogspot.com/2021/06/hashtable-implementation.html
Nama : Daniel Hermawan
ReplyNRP : 5025201087
Link : https://danielportofolio.blogspot.com/2021/06/tugas-ngoding-di-java-8-hashmap.html
Nama: Abd. Wahid
ReplyNRP: 50250201039
Link: https://wahidnesia.blogspot.com/2021/07/hashtable-java.html