P14 Hash Function TIF42/SIF42 A. Sidiq P. Prodi teknik Informatika & Prodi Sistem Informasi Fakultas Teknologi Informasi Universitas Mercu Buana Yogyakarta 1
Pembahasan Pengenalan Tabel Hash Memilih Fungsi Hash Menangani Tabrakan Dalam Tabel Hash Linear Aplikasi Hash 2
Pengenalan Hashing Alamat hash -> fungsi yg digunakan untuk menerjemahkan suatu nilai kunci menjadi suatu nilai Alamat hash inilah yg menyatakan indeks lokasi dalam array 3
Key = 12320 Hash Function Hash Function Key Mod 97 Key Mod 97 1 Tabel hash 12320 0 1 2 3 95 96 4
Hashing -> Teknik yg memungkinkan lokasi suatu record dapat diperoleh dengan mudah dan cepat melalui fungsi hash Tabel Hash -> Array yg digunakan untuk menyimpan data dengan cara hashing 5
Memilih Fungsi Hash Kriteria : Komputasi harus mudah dan cepat Harus menghasilkan nilai tersebar sepanjang jangkauan indeks array Metode Mod Cut Folding F Hash 6
Mod (Sisa Pembagian) Konsep : Membagi nilai kunci (Ex : NIP -> data Pegawai) dengan suatu nilai dan hasil MOD ini yg digunakan sebagai alamat hash Mengingat : k mod m -> menghasilkan bilangan 0... m-1 maka apabila lokasi memori (indeks array) berawal dengan 1, hasil pembagian perlu ditambah 1 H(k) = k mod m, m > 1 Dimana : - k -> kunci - m -> bilangan pembagi - n -> jumlah data H(k) = (k mod m) + 1 F Hash 7
contoh : mod 10 Indeks NIP Nama 0 55520 Andi 1 55521 Beta 2 55522 Citra 3 55523 Deny 4 55524 Emy 5 55525 Fadli 6 55526 Gunawan 7 55527 Hanif 8 55528 Indri 9 55529 Jeni 8
Cut (Pemotongan) dilakukan dengan : mengabaikan bagian-bagian tertentu dalam kunci, dan menggunakan yg tersisa sebagai indeks untuk mengakses data dalam tabel hash Misalkan : ukuran tabel hash = 1000 agar indeks ada di jangkauan 0... 999 -> suatu bilangan akan diatur agar panjang terdiri atas 3 digit F Hash 9
Ex : Ketentuan : diambil digit ke 2, 5 dan 6 4 9 6 7 1 6 9 1 6 Kelebihan : sangat cepat dalam melakukan komutasi Kelemahan : kunci yang tidak terdistribusi secara merata 10
Folding (Pelipatan) kunci dibagi menjadi beberapa bagian (misal : per 2 digit dan kemudian dijumlahkan) hasilnya bisa dipotong sehingga masuk jangkauan indeks dalam tabel hash F Hash 11
Contoh fungsi hash dengan Holding Kunci 496716 527133 527155 k1, k2, k3 (per 2 digit) 49, 67, 16 52, 71, 33 52, 71, 55 H(k)= k1+k2+k3 49+67+16 = 132 52+71+33 = 156 52+71+55 = 178 H(k)=pemotongan hanya pada 2 digit terakhir dari k1+k2+k3 32 56 78 12
Tabrakan dalam Tabel Hash Berdasarkan 3 metode (mod, cut, hoding) -> ada kemungkinan menimbulkan 2 buah kunci atau bahkan lebih diterjemaahkan oleh fungsi hash ke dalam nilai sama Situasi yg membuat beberapa kunci memiliki alamat hash yg sama disebut tabrakan hash (hash collision) Penanganan Tabrakan Pengalamatan Terbuka Pembentukan Rantai Pengalamatan Buket Tabr 13
12 mod 10 22 mod 10 Contoh tabrakan hash Terjadi tabrakan hash 0 1 2 3 4 5 6 7 8 9 14
Pengalamatan terbuka semua elemen disimpan dalam tabel hash Penanganan : mencari lokasi terdekat yg masih kosong Tabr 15
Kunci (k) Alamat hash k mod 10 279 0 Kosong 111 1 Data = 463 2 maka Alamat hash = 3 433 3 434 4 5 316 6 7 518 8 9 Alamat hash 3 -> 433 16
Tempat 463 Kunci (k) Alamat hash k mod 10 Kunci 463 hash 3 279 0 111 1 2 433 3 cara mencari ruang kosong -> pemeriksaan linear (linear probing) 434 4 5 316 6 7 518 8 9 pencarian indeks dimulai dari indeks 3 sampai ditemukan lokasi yg kosong (indeks = 5) 17
Pembentukan rantai data dalam tabel hash dibentuk secara dinamis dengan menggunakan senarai berantai Contoh : data pegawai yg bersisi NIP dan Nama Alamat Hash NIP 0 279 Andi 1 111 Beta 2 3 433 Deny 4 434 Emy 5 Nama 6 316 Gunawan 7 8 518 Indri 9 Tabr 18
521 Mod 10 = 1 Ex : Data akan masuk NIP = 521 Nama = Jeni 0 279 Andi Nil 1 111 Beta 521 Jeni Nil 2 Nil 3 4 5 6 Nil 433 Deny Nil 434 Emy Nil 316 Gunawan Nil Maka : Data baru akan diletakkan di dalam node dalam senarai berantai yg ditunjuk oleh node yg berisi NIM = 111 7 Nil 8 518 Indri Nil 9 Nil Tabrakan 19
Pengalamatan Buket menggunakan cara mirip dengan pembentukan rantai Penanganan : tabrakan tidak ditangani dengan senarai berantai, melainkan dengan array buket -> sebuah blok ruang yg cukup untuk menampung sejumlah data yg mempunyai alamat hash sama Tabr 20
Pemasukan : A 1, A 5, B 1, B 3, A 3, A 1 Pemasukan berikutnya : C 1, D 1, E 1, F 1, C 3 0 1 2 3 4 5 6 7 8 9 A 1 B 1 A 2 A 3 B 3 A 5 C 1 D 1 C 3 E 1 F 1 sebuah buket Maka : Jika sebuah buket penuh, buket lain akan diciptakan untuk menampung data baru yg mengalami tabrakan, dan sebuah petunjuk digunakan untuk memelihara hubungan antara buket yg penuh dan yg baru 21
Contoh Program Project Name = HashLinear Header File Name = HashLin.h Other Class File Name = HashLin.cpp Main Class File Name = main.cpp 22
Header File (HashLin.h) 23
Other Class (HashLin.cpp) 24
25
26
27
28
Main Class (main.cpp) 29
Hasil 30
Referensi Munir. Rinaldi, Algoritma & Pemrograman Dalam Bahasa Pascal dan C, 2007, Bandung : Penerbit Informatika. Utami, E., Raharjo, S., Sukrisno, "Struktur Data Konsep & Implementasinya Dalam Bahasa C & Free Pascal di GNU/Linux", 2007, Yogyakarta : Graha Ilmu. Sianipar, R.H., Wiryajati, I.K., Mangiri, H.S., "Pemrograman & Struktur Data C", 2013, Bandung : Penerbit Informatika. Hasbi, M., "Struktur Data dan Algoritma Dalam Pemrograman Turbo Pascal", 2003, Yogyakarta : Gava Media. 31
32
Agenda UAS Mohon dipelajari kembali Materi setelah UTS "P9 - Queue" s/d "P14 - Hash Function" Sifat : Essay Close All 33
Thanks 4 Participating in My Class C U Next Week 34