Transcript Hashing

STRUKTUR DATA
(HASHING)
Metode Hashing
• Untuk mengatasi kerugian korespondensi satusatu, digunakan hashing
• Untuk mengurangi banyaknya ruang alamat
yang digunakan untuk pemetaan dari key yang
memiliki cakupan yang luas ke nilai alamat yang
memiliki cakupan yang dipersempit
• Untuk itu dibutuhkan fungsi HASH
• Output fungsi HASH adalah home address dari
record yang keynya diproses
• Fungsi : f(key) = address
Macam-macam Fungsi HASH
• Fungsi modulo
• Home address dicari dengan cara mencari
sisa hasil bagi nilai key dengan suatu nilai
tertentu.
• Fungsi: f(key) = key mod n
• Dengan n adalah:
• Banyaknya ruang alamat yang tersedia
• Atau bilangan prima terdekat yang berada di atas
nilai banyak data, setelah itu banyaknya ruang
alamat disesuaikan dengan n
Macam-macam Fungsi HASH
• Fungsi Pemotongan
• Home address dicari dengan memotong nilai key ke
jumlah digit tertentu yang lebih pendek.
• Contoh: NIM yang tadinya 8 digit, dipotong hanya
menjadi 2 digit!
• Fungsi Pelipatan
• Dilakukan pelipatan terhadap record key dengan
bagian yang sama panjang, lalu setiap bagian
dijumlahkan
• NIM 8 digit dibagi dua digit, hingga menjadi 4 buah.
• Misal: 22002521, dibagi 22 00 25 21 kemudian
dijumlahkan: 68
Macam-macam Fungsi HASH
• Fungsi Pengkuadratan
• Home address dicari dengan mengkuadratkan setiap
digit pembentuk key, lalu semua hasilnya dijumlahkan
• Contoh: 22002211, semua digit dikuadratkan dan
dijumlah
• Fungsi Penambahan Kode ASCII
• Jika key bukan kode numerik, home address dicari
dengan menjumlahkan kode ASCII setiap huruf
pembentuk key
• ADE = 65 + 68 + 69 = 192
Collision (Tabrakan)
• Dengan menggunakan hashing, maka
hubungan korespondensi satu-satu
antara record key dengan alamat
record akan hilang
• Selalu ada kemungkinan dimana
terdapat dua buah record dengan key
yang berbeda namun memiliki home
address yang sama = tabrakan
Kriteria Fungsi HASH yang
baik
• Dapat mendistribusikan setiap record secara merata,
sehingga dapat meminimalkan terjadinya tabrakan
• Dapat dieksekusi secara efisien sehingga waktu tidak
habis untuk menghitung home address nya saja
Collision Resolution
• Karena collision dapat dipastikan akan dapat
terjadi, maka output dari suatu fungsi hash
tidak selalu unik, namun hanya berupa
kemungkinan suatu alamat yang dapat
ditempati
• Jika suatu home address sudah ditempati oleh
record lain, maka harus dicarikan alamat lain
• Proses pencarian alamat lain tersebut disebut
collision resolution
Metode Collision Resolution
•
•
•
•
•
Open Addressing
Chaining
Coalesced Hashing
Chained Progressive Overflow
Bucket
Metode Open Addressing
• Alamat alternatif dicari pada alamat-alamat selanjutnya
yang masih kosong
• Cara:
• Linear Probing
• Pencarian dilakukan dengan jarak pencarian tetap
• Quardratic Probing
• Pencarian dilakukan dengan jarak pencarian berubah dengan
perubahan tetap
• Double Hashing
• Pencarian dilakukan menggunakan fungsi hash kedua. Pertama
hash untuk mencari home address, kedua untuk pencarian jika
terjadi collision. Fungsi hash kedua tidak boleh menghasilkan nilai
0
HASHING
• Fungsi hash diimplementasikan untuk menyimpan kode yang cukup besar ke
dalam indeks yang lebih kecil sehingga mempercepat pencarian.
contoh :
Posisi (indeks)
Kode buku
0
1023000
101
4321101
772
1002772
773
7671773
• Tujuan penggunaan fungsi hash adalah agar 2 buah kunci yang
berbeda tidak mempunyai nilai hash yang sama (untuk
menghindari colllision/hash clash)
METODA HASHING
• Dalam implementasi fungsi hash sering digunakan
untuk mengkonversikan himpunan kunci rekaman
menjadi himpunan alamat memori (subskrip dalam
array)
• Aspek yang perlu dipertimbangkan dalam pemilihan
fungsi hash adalah :
a. Fungsi hash harus mudah dan cepat dihitung
b. Fungsi hash sebisa mungkin mendistribusikan
posisi yang dimaksud
Hashing dengan Kunci Modulus N
Home address dicari dengan cara mencari sisa hasil
bagi nilai key dengan suatu nilai tertentu.
Fungsi: f(key) = key mod n
Dengan n adalah:
Banyaknya ruang alamat yang tersedia
Atau bilangan prima terdekat yang berada di atas
nilai banyak data, setelah itu banyaknya ruang
alamat disesuaikan dengan n
Hashing dengan Kunci Modulus N
f (kunci) = kunci mod
N
N = ukuran tabel atau
berkas
N = 12
30
40
50
60
mod
mod
mod
mod
N
N
N
N
=
=
=
=
6
4
2
0
menghasilkan
menghasilkan
menghasilkan
menghasilkan
2
3
4
5
sisa
sisa
sisa
sisa
6
4
2
0
Hashing dengan Kunci
Modulus P
Kunci mod P merupakan variasi fungsi
kunci mod N
f (kunci) = kunci mod P
P = sebagai bilangan prima terkecil
yang lebih besar atau sama dengan N
Untuk N = 12 maka P = 13
30 mod P = 4 menghasilkan 2 sisa 4
40 mod P = 1 menghasilkan 3 sisa 1
Untuk N = 15 maka P = 17
50 mod P = 16 menghasilkan 2 sisa 16
70 mod P = 2 menghasilkan 4 sisa 2
Hashing dengan
pengkuadratan
Fungsi hashing dengan cara pengkuadratan
kunci
Carilah pengkuadratan dari 782
Jawab
F (782) =
Hashing dengan konversi Radix
Kunci 5 6 7 8 dalam Base 13
Hashing Lipatan
Penjumlahan dari susunan lipatan
385
976
421
672
Mengabaikan carry
385
976
421
782
Dengan carry