Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Hashing Eka, Erick, Reddy

Presentasi serupa


Presentasi berjudul: "Hashing Eka, Erick, Reddy"— Transcript presentasi:

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


Download ppt "Hashing Eka, Erick, Reddy"

Presentasi serupa


Iklan oleh Google