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