Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Hashing Eka, Erick, Reddy
Data Structure Hashing Eka, Erick, Reddy © Sekolah Tinggi Teknik Surabaya
2
Menampung seluruh jenis data
Collection Unik Dictionary List Set Index Associative HashSet Stack SortedSet Queue LinkedList © Sekolah Tinggi Teknik Surabaya
3
Hash Table Juga disebut sebagai Hash Map
Mengimplementasikan associative array Pengindexannya menggunakan Hash Function Pengindexan dimaksudkan untuk menemukan lokasi memori (slot) yang dapat digunakan untuk meletakan pasangan key dan value dari sebuah Hash Map. Idealnya, sebuah Hash Function akan mengembalikan sebuah alamat memori yang unik. Tapi ada kalanya hasil sebuah Hash Function mengembalikan sebuah nilai (slot) yang telah ditempati. Kondisi ini disebut sebagai Hash Collisions. © Sekolah Tinggi Teknik Surabaya
4
Hashing Basic Hash Function (Horner’s Method)
h(Key) = Key mod M dimana M adalah ukuran array Contoh: Key = abcd M = 101 256 x = mod 101 = 84 256 x = mod 101 = 90 256 x = mod 101 = 11 Binary Hex 4 Ascii a b c d © Sekolah Tinggi Teknik Surabaya
5
hash.c int hash(char *v, int M){ int h; int a=117; for (h=0; *v!='\0'; v++){ h=(a * h + *v) % M; } return h; Pikirkan bagaimana untuk menghasilkan hash dari sebuah key sepanjang N ! © Sekolah Tinggi Teknik Surabaya
6
Collision Dengan pendekatan yang sama maka: abcd Hashed 11 dcba Hashed 57 abbc © Sekolah Tinggi Teknik Surabaya
7
Collision Resolution Separate Chaining M jauh lebih kecil dari N
~ N/M keys per table position Letakan key yang bertabrakan dalam list Perlu melakukan pencarian Open Addressing (linear probing, double hashing) M jauh lebih besar dari N Banyak slot kosong Ketika key yang baru bertabrakan, temukan slot kosong Complex collision patterns © Sekolah Tinggi Teknik Surabaya
8
Separate Chaining Oleh H. P. Luhn,
seorang insinyur IBM, di Januari 1953. Contoh: Dengan M = 10 Maka Hash Map mulai dari 0 hingga M-1 Key A S E R C H I N G X M P L Hash (Key) 1 8 5 7 3 9 2 1 2 3 4 5 6 7 8 9 10 = L M N E G H I A X C P R S Ide: Hasil Hash dari sebuah key yang menunjuk pada sebuah alamat yang sama, akan disimpan dalam sebuah list yang terpasang pada alamat yang ditunjuk. © Sekolah Tinggi Teknik Surabaya
9
Separate Chaining (cont)
Cara menentukan M yang optimal: Metode ini tidak dapat menentukan berpa besar alokasi memori yang harus disediakan di awal. Biasanya mempertimbangkan ketersediaan memori. Disarankan tidak terlalu besar untuk efisiensi pencarian. Alokasi yang kecil menyebabkan persebarannya berdekatan. Efisiensi pencarian (sequencial). Biasanya besar M di antara kisaran N/10 hingga sama dengan atau mendekati nilai N. © Sekolah Tinggi Teknik Surabaya
10
Contoh Soal Latihan: Gambarkan kondisi Hash Map saat terjadi collision untuk menyimpan deretan key berikut ini jika panjang table-nya adalah 7! Key S I M P L E T A K Hash (Key) 7 3 5 1 4 © Sekolah Tinggi Teknik Surabaya
11
Linear Probing Logikanya: Setelah melakukan pemeriksaan pada
lokasi h(key), jika penuh maka coba untuk h(key) + 1, jika penuh maka coba untuk h(key) + 2, jika penuh maka coba untuk h(key) + 3 dst © Sekolah Tinggi Teknik Surabaya
12
Linear Probing (cont) Sehingga urutan Probing : dst Pertimbangan:
0th probe = h(key) mod M 1th probe = (h(key) + 1) mod M 2th probe = (h(key) + 2) mod M 3th probe = (h(key) + 3) mod M dst Pertimbangan: M terlalu besar, akan banyak lokasi yang kosong M terlalu kecil, akan tergabung (clusters coalesce) Biasanya M berkisar antara 2N © Sekolah Tinggi Teknik Surabaya
13
Quadratic Probing dst Merupakan pendekatan lain dari Linear Probing
Urutan Probing: 0th probe = h(key) mod M 1th probe = (h(key) + 1) mod M 2th probe = (h(key) + 4) mod M 3th probe = (h(key) + 9) mod M dst x © Sekolah Tinggi Teknik Surabaya
14
Latihan! Dengan menggunakan Quadratic Probing, lakukan hashing untuk deretan key berikut ini. (M = 10) Insert: 89 18 49 58 79 © Sekolah Tinggi Teknik Surabaya
15
Double Hashing Menggunakan 2 metode Hashing
Jika h(key) adalah hashing 1, maka g(key) adalah hashing 2 Sehingga: 0th probe = h(key) mod M 1th probe = (h(key) + g(key)) mod M 2th probe = (h(key) + 2*g(key)) mod M 3th probe = (h(key) + 3*g(key)) mod M dst Jika: h(key) = key mod M g(key) = R – (key mod R) dimana R < M © Sekolah Tinggi Teknik Surabaya
16
Contoh 1 47 2 93 3 10 4 55 5 40 6 76 Insert(76) 76%7 = 6 Insert(93)
93%7 = 2 Insert(40) 40%7 = 5 Insert(47) 47%7 = 5 5-(47%5) = 3 Insert (10) 10%7 = 3 Insert(55) 55%7 = 6 5-(55%5) = 5 1 47 2 93 3 10 4 55 5 40 6 76 © Sekolah Tinggi Teknik Surabaya
17
Open Hashing = Separate Chaining Close Hashing = Open Addressing
Penggunaan Istilah! Open Hashing = Separate Chaining Close Hashing = Open Addressing © Sekolah Tinggi Teknik Surabaya
18
Cara Penggunaan dalam C#
Hashtable ht = new Hashtable(); ht.Add("001", "Zara Ali"); ht.Add("002", "Abida Rehman"); ht.Add("003", "Joe Holzner"); ht.Add("004", "Mausam Benazir Nur"); ht.Add("005", "M. Amlan"); ht.Add("006", "M. Arif"); ht.Add("007", "Ritesh Saikia"); © Sekolah Tinggi Teknik Surabaya
19
continue if (ht.ContainsValue("Nuha Ali")) { Console.WriteLine("This student is already exist"); } else { ht.Add("008", "Nuha Ali"); } // Get a collection of the keys. ICollection key = ht.Keys; foreach (string k in key) { Console.WriteLine(k + ": " + ht[k]); © Sekolah Tinggi Teknik Surabaya
20
Sumber © Sekolah Tinggi Teknik Surabaya
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.