Data Structure 3

Hashing Table

Gw nonton beberapa video youtube tentang hashing table di data structure dan gw belajar beberapa hal. Yang pertama, gw belajar secara kasar apa itu pengertian dari hashing table. Yang gw dapet, hashing table itu mirip dengan kalo kita mau cari seseorang secara spesifik di contact hp kita. Jadi di videonya, dia gambarin hashing table itu kayak array dengan index-index seperti biasanya. Misalnya, kita mau masukin nomor seseorang. Kita tinggal masukin dengan fungsi "hash" dan masukkin kode yang menunjuk kepada nomor orang tersebut. Misalnya itu nomornya si Budi, brati yang kita masukkin ke dalem fungsi hashing tablenya adalah "Budi". Nanti, hashing tablenya bakal ngeluarin index (yang berarti, di index berapa si nomor teleponnya Budi disimpen), misalnya nomor telepon Budi disimpen di index 0. Dan kita bukan cuman bisa simpen 1 value doang..kita bisa simpen banyak value dengan kode-kode yang berbeda untuk menunjuk ke value yang beda-beda juga.

Misalnya, abis gw masukkin value yang pertama (nomor telepon Budi), gw mo masukin value yang kedua, yaitu nomor teleponnya si "Charles". Gw bisa lansung pake fungsi hash yang tadi dan masukkin kode gw yg merujuk ke valuenya (nomor telepon di Charles). Dan si hashnya juga bakal nunjukin index berapa si value Charles ini disimpen. Selanjutnya gw mau masukkin nomor teleponnya Quincy misalnya, gw juga tinggal panggil fungsi hash yang tadi dan langsung masukkin kode "Quincy" (yang merujuk kepada value nomor teleponnya si Quincy). 

Nah tapi, akan ada saat di saat kita mau masukkin value lagi (misalnya Joni), si fungsi hashnya malah ngeluarin index yang udah pernah keluar, misalnya index 0. Nah untuk menanggulangi masalah ini, dalam hashing table, kita ga ngebuang value dari Budi ataupun Joni, melainkan dia ngebuat semacem "linked list di dalam array".  Mungkin kalo liat gambar di bawah jadi lebih kebayang..Image result for Hashing table & Binary Tree.
Dan setiap kali kita mau nyari nomor telepon dari si Joni, kita ga perlu cari satu-satu value apa aja yang udah pernah kita masukkin ke dalem hashing table ini, melainkan kita tinggal masukkin kata kuncinya, yaitu "Joni"..dan fungsi hashnya bakal ngeluarin di index berapa si value Joni itu disimpen. Dalam konteks ini, value (nomor telepon si Joni) disimpen di index ke 0 (bebarengan dengan value si Budi). Nah, setelah kita udah tau kita harus mulai pencarian ini dari index ke berapa, kita baru deh mulai cari dengan caranya kita nyari data di "linked list" seperti biasanya. Kalo sekarang gw balikin lagi ke metode pencarian nomor telepon seseorang dalama aplikasi contact di hp kita masing-masing udah kebayang kan maksudnya kayak apa.

Gw juga nonton apa hubungan hashing table dalam block chain. Dan dalam block chain ini bahkan lebih revolusioner lagi menurut gw. Di videonya gw belajar bahwa bahkan hashing table itu sendiri punya syarat-syarat penting kalo mau diimplementasikan ke dalam block chain (ada 5 syarat). Pertama, perubahan sedikit aja terhadap hashnya/keynya, data yang berubah juga harus signifikan perubahannya. Kedua, hashing dalam block chain setiap kali kita input key yang sama, outputnya juga harus sama persis. Ketiga, proses penyocokan input dengan outputnya juga harus berjalan dengan cepat agar prosesnya efisien. Keempat, infeasible yang berarti kita bakal bisa ngebuka suatu kode di saat kita bisa cocokin semua inputnya dengan outputnya. Kita emang bisa cobain satu-satu, tapi dalam data yang banyak banget, bisa dibilang mau kita cobain setiap detik pun sampe tua ga akan pernah kelar. Dan terakhir yang kelima, setiap output/value harus punya input/key yang unik dan berbeda dari yang lain. 

Comments