P14 Hash Function TIF42/SIF42 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 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 Key Mod 97 1 12320 2 3 95 96 Tabel hash 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 Mod Metode Cut Folding F Hash 6
Mod (Sisa Pembagian) Konsep : Mengingat : Membagi nilai kunci (Ex : NIP -> data Pegawai) dengan suatu nilai dan hasil MOD ini yg digunakan sebagai alamat hash H(k) = k mod m, m > 1 Dimana : - k -> kunci - m -> bilangan pembagi - n -> jumlah data 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) + 1 F Hash 7
contoh tabel hash: mod 10 Indeks NIP Nama 55520 Andi 1 55521 Beta 2 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
N = 12 30 mod N = 6 -> menghasilkan 2 sisa 6 40 mod N = 4 -> menghasilkan 3 sisa 4 50 mod N = 2 -> menghasilkan 4 sisa 2 60 mod N = 0 -> menghasilkan 5 sisa 0
Cut (Pemotongan) dilakukan dengan : Misalkan : 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 10
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
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
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
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) Pengalamatan Terbuka Pembentukan Rantai Penanganan Tabrakan Pengalamatan Buket Tabr
Contoh tabrakan hash 1 2 3 4 5 6 7 8 9 Terjadi tabrakan hash 12 mod 10 1 2 3 4 5 6 7 8 9 Terjadi tabrakan hash 12 mod 10 22 mod 10 Contoh tabrakan hash
semua elemen disimpan dalam tabel hash Penanganan : Pengalamatan terbuka semua elemen disimpan dalam tabel hash Penanganan : mencari lokasi terdekat yg masih kosong Tabr
Kunci (k) Alamat hash k mod 10 279 111 1 2 433 3 434 4 5 316 6 7 518 8 9 Alamat hash 3 -> 433 Kosong Data = 463 maka Alamat hash = 3
pencarian indeks dimulai dari indeks 3 sampai ditemukan Kunci (k) Alamat hash k mod 10 279 111 1 2 433 3 434 4 5 316 6 7 518 8 9 Kunci 463 hash 3 Tempat 463 cara mencari ruang kosong -> pemeriksaan linear (linear probing) pencarian indeks dimulai dari indeks 3 sampai ditemukan lokasi yg kosong (indeks = 5)
Alamat Hash NIP Nama 279 Andi 1 111 Beta 2 3 433 Deny 4 434 Emy 5 6 316 Gunawan 7 8 518 Indri 9 Pembentukan rantai data dalam tabel hash dibentuk secara dinamis dengan menggunakan senarai berantai Contoh : data pegawai yg bersisi NIP dan Nama Tabr
521 Mod 10 = 1 Ex : Data akan masuk NIP = 521 Nama = Jeni 1 2 3 4 5 6 7 8 9 Nil 279 Andi 111 Beta 433 Deny 434 Emy 316 Gunawan 518 Indri 521 Jeni Maka : Data baru akan diletakkan di dalam node dalam senarai berantai yg ditunjuk oleh node yg berisi NIM = 111 Tabrakan
menggunakan cara mirip dengan pembentukan rantai Penanganan : 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
Pemasukan : A1, A5, B1, B3, A3, A1 Pemasukan berikutnya : C1, D1, E1, F1, C3 1 2 3 4 5 6 7 8 9 A1 B1 A2 A3 B3 A5 C1 D1 E1 F1 C3 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
Silahkan Coba Program Berikut Project Name = HashLinear Header File Name = HashLin.h Other Class File Name = HashLin.cpp Main Class File Name = main.cpp
Header File (HashLin.h)
Other Class (HashLin.cpp)
Main Class (main.cpp)
Hasil
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. 32 32
33 33
Agenda UAS Mohon dipelajari kembali Materi setelah UTS "P9 - Queue" s/d "P14 - Hash Function" Sifat : Essay Close All
Thanks 4 Participating in My Class C U Next Week SQ - http://sidiq.mercubuana-yogya.ac.id - dnd_07june07@live.com Thanks 4 Participating in My Class C U Next Week 35 35