tabrakan hash - Universitas Mercu Buana Yogyakarta

advertisement
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
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
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
Mod
Metode
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
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
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
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
9
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
10
Ketentuan :
diambil digit ke 2, 5 dan 6
– Ex :
4
9
6
9
7
1
1
6
6
Kelebihan :
sangat cepat dalam melakukan
komutasi
Kelemahan :
kunci yang tidak terdistribusi secara
merata
11
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
12
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
32
digit terakhir
dari k1+k2+k3
56
78
13
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
Penanganan
Tabrakan
Pembentukan Rantai
Pengalamatan Buket
Tabr
14
Terjadi
tabrakan
0
hash
2
1
3
12
mod 10
4
5
22
mod 10
6
7
Contoh tabrakan hash
8
9
15
Pengalamatan terbuka
• semua elemen disimpan dalam tabel hash
• Penanganan :
– mencari lokasi terdekat yg masih kosong
Tabr
16
Kosong
Kunci (k)
Alamat hash
k mod 10
279
0
111
1
2
433
3
434
4
Alamat hash
3 -> 433
Data = 463
maka
Alamat hash = 3
5
316
6
7
518
8
9
17
Tempat 463
Kunci (k)
Alamat hash
k mod 10
279
0
111
1
2
433
3
434
4
Kunci 463 hash 3
cara mencari
ruang kosong ->
pemeriksaan linear
(linear probing)
5
316
6
7
518
8
9
pencarian indeks dimulai dari
indeks 3 sampai ditemukan
lokasi yg kosong
(indeks = 5)
18
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
3
433
Deny
4
434
Emy
316
Gunawan
518
Indri
Nama
2
5
6
7
8
9
Tabr
19
521 Mod 10 = 1
0
1
2
3
4
5
6
7
8
9
Ex : Data akan masuk
NIP = 521 Nama = Jeni
279
Andi
Nil
111
Beta
433
Deny
Nil
434
Emy
Nil
521
Jeni
Nil
Nil
Nil
316 Gunawan Nil
Maka :
Data baru akan diletakkan di dalam node
dalam senarai berantai yg ditunjuk oleh
node yg berisi NIM = 111
Nil
518
Indri
Nil
Nil
Tabrakan
20
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
21
Pemasukan :
A1, A5, B1, B3, A3, A1
0
1
2
3
4
5
6
7
8
9
A1
A2
A3
A5
B1
B3
Pemasukan berikutnya :
C1, D1, E1, F1, C3
C1
C3
D1
E1
F1
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
22
Silahkan Coba Program Berikut
•
•
•
•
Project Name = HashLinear
Header File Name = HashLin.h
Other Class File Name = HashLin.cpp
Main Class File Name = main.cpp
23
Header File (HashLin.h)
24
Other Class (HashLin.cpp)
25
26
27
28
29
Main Class (main.cpp)
30
Hasil
31
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
33
Agenda UAS
• Mohon dipelajari kembali Materi setelah
UTS "P9 - Queue" s/d "P14 - Hash
Function"
• Sifat :
– Essay
– Close All
34
Thanks 4 Participating in My Class
C U Next Week
SQ - http://sidiq.mercubuana-yogya.ac.id - [email protected]
35
Download