Hashing Eka, Erick, Reddy

Slides:



Advertisements
Presentasi serupa
Statistika Deskriptif: Distribusi Proporsi
Advertisements

TURUNAN/ DIFERENSIAL.
Pemrograman Terstruktur
Sistem Operasi (pertemuan 1) Memori Razief Perucha F.A
06 Tugas Praktikum Polymorphism
UNIVERSITAS BUDI LUHUR FAKULTAS TEKNOLOGI INFORMASI HAL : 1 Pemrograman VB.NET Pertemuan 4.
Bulan maret 2012, nilai pewarnaan :
Menempatkan Pointer Q 6.3 & 7.3 NESTED LOOP.
Tugas Praktikum 1 Dani Firdaus  1,12,23,34 Amanda  2,13,24,35 Dede  3,14,25,36 Gregorius  4,15,26,37 Mirza  5,16,27,38 M. Ari  6,17,28,39 Mughni.
Malang,22 November 2012
SOAL ESSAY KELAS XI IPS.
Algoritma dan Struktur Data
ARRAY STATIS DAN DINAMIS
Algoritma Struktur Data
Subprogram Program kecil yang melakukan tugas tertentu dan merupakan bagian dari program secara keseluruhan Keuntungan : Mudah dikodekan Mudah dipahami.
PENGERTIAN INTERRUPT VEKTOR INTERUPSI
BADAN KOORDINASI KELUARGA BERENCANA NASIONAL DIREKTORAT PELAPORAN DAN STATISTIK DISAJIKAN PADA RADALGRAM JAKARTA, 4 AGUSTUS 2009.
LINKED LIST.
BOROBUDUR (4) FAHMI BASYA
Pemrograman Web Perl.
LUAS DAERAH LINGKARAN LANGKAH-LANGKAH :
Dictionary (Icomparable dan IComparer) Eka, Erick, Reddy © Sekolah Tinggi Teknik Surabaya 1.
Linked List BEBERAPA CONTOH SOAL 6.3 & 7.3 NESTED LOOP.
Bab 6B Distribusi Probabilitas Pensampelan
TURUNAN DIFERENSIAL Pertemuan ke
POLA BILANGAN.
Algoritma dan Struktur Data
: : Sisa Waktu.
Nonparametrik: Data Peringkat 2
Proses pencarian : Waktu Pencarian ≈ Jumlah perbandingan Bagaimana agar waktu pencarian konstan, artinya tidak tergantung pada jumlah perbandingan ? 
Lecture 3 State Space Search 2 Erick Pranata © Sekolah Tinggi Teknik Surabaya 1.
Organisasi Berkas Langsung dan Metode Hashing
Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) ‏ 1 Fasilkom UI SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P.
Pemrograman Terstruktur
STRUKTUR DATA (D3) - Review array - Searching (Sequential & Binary)
SLIDE OTOMATIS PINDAH DALAM WAKTU 4-5 MENIT. A:kiriB:kanan Deklarasikan sebuah variabel dengan nama ‘isi’ yang mempunyai type array of double dengan ukuran.
Bulan FEBRUARI 2012, nilai pewarnaan :
AREAL PARKIR PEMERINTAH KABUPATEN JEMBRANA
Lecture 7 Backward Chaining Erick Pranata © Sekolah Tinggi Teknik Surabaya 1.
Quiz struktur data Genap 2013.
Nonparametrik: Data Peringkat 2
Algoritma & Pemrograman
Algoritma & Pemrograman
STRUKTUR DATA (12) organisasi berkas
Pemrograman JAVA (TIB09)
QUEUE (antrian).
Array, Class, Obyek, Method danConstructor.
Algoritma Pergantian Halaman
Soal-Soal Latihan Mandiri
Manajemen Memori STMIK MDP Palembang
Struktur data Stack Bab 2 Buku :.
BAB2 QUEUE 6.3 & 7.3 NESTED LOOP.
11. Set Intruksi : Teknik Pengalamatan
Queue.
Struktur Data List Linear : Linked List (Double Linkedlist)
Algorithm and Data Structures.
Abstract Data Type (C++ and Java)
ORGANISASI BERKAS RELATIF
ORGANISASI BERKAS RELATIF
Struktur Data List Linear : Linked List (Single Linkedlist)
Pemrograman Berorientasi Obyek Lanjut (IT251)
1 Pertemuan 26 Teknik Hashing Matakuliah: T0016/Algoritma dan Pemrograman Tahun: 2005 Versi: versi 2.
Collision Collision merupakan kondisi dimana terdapat lebih dari satu key yang menempati slot address yang sama Collision dapat diminimalisir dengan cara.
P14 Hash Function TIF42/SIF42
STRUKTUR DATA (HASHING).
Organisasi Berkas Langsung dan Metode Hashing
ORGANISASI BERKAS RELATIF
Organisasi Berkas Relatif 2
Methode Hash.
STRUKTUR DATA (HASHING).
Transcript presentasi:

Hashing Eka, Erick, Reddy Data Structure Hashing Eka, Erick, Reddy © Sekolah Tinggi Teknik Surabaya

Menampung seluruh jenis data Collection Unik Dictionary List Set Index Associative HashSet Stack SortedSet Queue LinkedList © Sekolah Tinggi Teknik Surabaya

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

Hashing Basic Hash Function (Horner’s Method) h(Key) = Key mod M dimana M adalah ukuran array Contoh: Key = abcd M = 101 256 x 97 + 98 = 24930 mod 101 = 84 256 x 84 + 99 = 21603 mod 101 = 90 256 x 90 + 100 = 21603 mod 101 = 11 Binary 0110 0001 0110 0010 0110 0011 0110 0100 Hex 6 1 6 2 6 3 4 Ascii a b c d © Sekolah Tinggi Teknik Surabaya

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

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

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

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

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

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

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

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

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

Latihan! Dengan menggunakan Quadratic Probing, lakukan hashing untuk deretan key berikut ini. (M = 10) Insert: 89 18 49 58 79 © Sekolah Tinggi Teknik Surabaya

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

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

Open Hashing = Separate Chaining Close Hashing = Open Addressing Penggunaan Istilah! Open Hashing = Separate Chaining Close Hashing = Open Addressing © Sekolah Tinggi Teknik Surabaya

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

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

Sumber http://courses.cs.washington.edu/courses/cse326/06su/lectures/lecture11.pdf http://www.cs.princeton.edu/courses/archive/spr03/cs226/lectures/hashing.4up.pdf http://en.wikipedia.org/wiki/Hash_table © Sekolah Tinggi Teknik Surabaya