Hashing dengan Kunci Modulus N

Download Report

Transcript Hashing dengan Kunci Modulus N

Organisasi berkas langsung
(Hashing)
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