Thursday, June 10, 2021

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.






28 comments:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ReplyDelete
  15. This comment has been removed by the author.

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

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

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

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

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

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

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

    ReplyDelete