Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Hashing Eka, Erick, Reddy © Sekolah Tinggi Teknik Surabaya 1.

Presentasi serupa


Presentasi berjudul: "Hashing Eka, Erick, Reddy © Sekolah Tinggi Teknik Surabaya 1."— Transcript presentasi:

1 Hashing Eka, Erick, Reddy © Sekolah Tinggi Teknik Surabaya 1

2 2 Collection SetList Dictionary Stack Queue Linked List HashSet SortedSet Menampung seluruh jenis data IndexUnik Associative

3 » 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. 3 © Sekolah Tinggi Teknik Surabaya

4 -Basic Hash Function (Horner’s Method) h(Key) = Key mod M dimana M adalah ukuran array Contoh: Key = abcd M = x = mod 101 = x = mod 101 = x = mod 101 = 11 4 © Sekolah Tinggi Teknik Surabaya Binary Hex Asciiabcd

5 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 ! 5 © Sekolah Tinggi Teknik Surabaya

6 Dengan pendekatan yang sama maka: abcd Hashed 11 dcba Hashed 57 abbc Hashed 57 6 © Sekolah Tinggi Teknik Surabaya

7 » 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 7 © Sekolah Tinggi Teknik Surabaya

8 Oleh H. P. Luhn, seorang insinyur IBM, di Januari Contoh: Dengan M = 10 Maka Hash Map mulai dari 0 hingga M-1 8 © Sekolah Tinggi Teknik Surabaya KeyASEARCHINGEXAMPLE Hash (Key) =LMN=E=GHI= AXCPRS= A==E== AE ==

9 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. 9 © Sekolah Tinggi Teknik Surabaya

10 Gambarkan kondisi Hash Map saat terjadi collision untuk menyimpan deretan key berikut ini jika panjang table-nya adalah 7! 10 © Sekolah Tinggi Teknik Surabaya KeySIMPLETASK Hash (Key)

11 » 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 11 © Sekolah Tinggi Teknik Surabaya

12 » Sehingga urutan Probing : 0 th probe = h(key) mod M 1 th probe = (h(key) + 1) mod M 2 th probe = (h(key) + 2) mod M 3 th 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 12 © Sekolah Tinggi Teknik Surabaya

13 » Merupakan pendekatan lain dari Linear Probing » Urutan Probing: 0 th probe = h(key) mod M 1 th probe = (h(key) + 1) mod M 2 th probe = (h(key) + 4) mod M 3 th probe = (h(key) + 9) mod M dst » x 13 © Sekolah Tinggi Teknik Surabaya

14 » Dengan menggunakan Quadratic Probing, lakukan hashing untuk deretan key berikut ini. (M = 10) » Insert: © Sekolah Tinggi Teknik Surabaya

15 » Menggunakan 2 metode Hashing » Jika h(key) adalah hashing 1, maka g(key) adalah hashing 2 » Sehingga: 0 th probe = h(key) mod M 1 th probe = (h(key) + g(key)) mod M 2 th probe = (h(key) + 2*g(key)) mod M 3 th probe = (h(key) + 3*g(key)) mod M dst » Jika: h(key) = key mod M g(key) = R – (key mod R) dimana R < M 15 © Sekolah Tinggi Teknik Surabaya

16 16 © Sekolah Tinggi Teknik Surabaya 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) =

17 Open Hashing = Separate Chaining Close Hashing = Open Addressing 17 © Sekolah Tinggi Teknik Surabaya

18 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"); 18 © Sekolah Tinggi Teknik Surabaya

19 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]); } 19 © Sekolah Tinggi Teknik Surabaya

20 » su/lectures/lecture11.pdf su/lectures/lecture11.pdf » cs226/lectures/hashing.4up.pdf cs226/lectures/hashing.4up.pdf » 20 © Sekolah Tinggi Teknik Surabaya


Download ppt "Hashing Eka, Erick, Reddy © Sekolah Tinggi Teknik Surabaya 1."

Presentasi serupa


Iklan oleh Google