struktur data fungsi hash

Download Report

Transcript struktur data fungsi hash

• Proses pencarian :
Waktu Pencarian ≈ Jumlah perbandingan
Bagaimana agar waktu pencarian konstan,
artinya tidak tergantung pada jumlah
perbandingan ?
 Fungsi HASH
Fungsi Hash
• Fungsi Hash  mengubah data menjadi
alamat data.
DATA
Fungsi
HASH
ALAMAT
DATA
Alamat
NAMA
KOTA
AMAN
PKY
51
BUSI
SBY
52
CUSI
JKT
…
• Contoh:
A=1, B=2, C=3, … , Z=26,
maka
AMAN = 1+13+1+14 = 29
BUSI = 2+21+19+9 = 51
CUSI = 3+21+19+9 = 52
22
23
24
25
…
28
29
…
50
…
Fungsi HASH
Keuntungan
• Waktu pencarian tetap/konstan
• Tidak tergantung dari besarnya atau jumlah
data
Fungsi HASH
Kelemahan
• “Kolisi”, artinya beberapa data yang berbeda
menghasilkan nilai fungsi hash yang sama.
• Pemilihan ukuran tabel
terlalu kecil  overflow
terlalu besar  pemborosan
• Penghapusan suatu data sulit dilakukan
• Tidak ada hubungan antara letak data dan ketentuan
data, artinya tidak ada hubungan antara satu data
dengan data lainnya  sulit untuk melakukan sorting
Fungsi HASH
• Fungsi HASH terbagi atas 2 macam:
1. Fungsi Hash terbuka (external hashing)
2. Fungsi Hash tertutup
Fungsi Hash Terbuka
• Fungsi hash memperoleh alamat dari
kelompok-kelompok data. Artinya, fungsi hash
tidak menunjuk langsung ke suatu data,
melainkan ke suatu kelas data.
h(x) = 
Fungsi Hash Terbuka
• Jika terdapat N buah data, yang akan
ditempatkan dalam tabel berukuran B, maka
setiap kelas data akan menampung sebanyak
rata-rata N/B buah data.
Fungsi Hash Tertutup
• Data disimpan pada tabel itu sendiri.
• Jika terjadi kolisi, maka dilakukan Rehash,
yaitu melakukan perhitungan fungsi hash lagi
hingga didapatkan posisi T[h(z)] yang kosong.
Bagaimana membuat Fungsi Hash?
Ada 5 Teknik dasar :
1. Konkatenasi
2. Ekstraksi
3. Kompresi
4. Pembagian
5. Perkalian
Konkatenasi
• Alamat diperoleh gabungan huruf dalam data.
Contoh: Jika A=00001, B=00010, C=00011,
D=00100, …, Z=11010
maka THE beralamat 101002+010002+001012
= 2074110
Maka alamat THE adalah 20741
Konkatenasi
Kelemahan
1. Ukuran tabel yang digunakan dapat menjadi
sangat besar yang mengakibatkan
2. Kebutuhan memori banyak
3. Isi tabel berpencar dan banyak tempat
kosong.
Ekstraksi
• Alamat ditentukan dengan mengambil
beberapa bit saja dari bit-bit data lalu
digabungkan.
Contoh: mengambil bit ke-3 huruf pertama
dan dua bit terakhir huruf terakhir
T = 10100
H = 0100
E = 00101
sehingga alamat utk THE = 1012 = 510
Ekstraksi
Kelemahan:
Kemungkinan terjadi kolisi jika huruf-huruf pada
posisi yang diambil nilai bitnya sama.
Misal: THE, TIME, THERE
Atau kata yang berawal huruf T, F, O, D, G, W (bit
ke-3 adalah 1) dan berakhir dengan E, M, Y, A
(2 bit terakhir adalah 01)
Kompresi
• Melibatkan semua bit data, misalnya dengan
menggunakan relasi XOR.
Contoh: T = 10100
H = 01000
E = 00101
XOR
11001 = 2510
Kompresi
Kelemahan:
Prinsip komutatif relasi XOR, yaitu
A xor B = B xor A
Sehingga data-data yang terdiri atas huruf yang
sama akan menghasilkan nilai XOR yg sama juga.
THE = TEH = HET = HTE
IKAL = KALI = AKIL = LAKI = KAIL
PEMBAGIAN
• Pembagian akan mendistribusikan nilai fungsi
hash di dalam suatu selang tertentu.
Contoh : h(z) = z mod m
Hasilnya 0 ≤ h(z) ≤ (m-1)
h(THE) = h(1010001000001012) mod 31
= h(2074110) mod 31
=2
Pembagian
Kelemahan:
• Sangat bergantung pada pemilihan nilai
pembagi m.
• Jika suatu bilangan d sedemikian m mod d = 0
maka h(z) = z mod m = z mod d
Akibatnya nilai fungsi hash tidak terdistribusi
merata, atau terjadi pengelompokan primer.
Pembagian
Pemilihan nilai m :
• m haruslah bilangan prima
• m jangan berbentuk rk ± a, dimana a bernilai
kecil.
Misal k = 5, maka m janganlah bilangan di
sekitar 32, 322 = 1024, 323 = 32768, dsb.
Perkalian
• Fungsi hash dihitung dengan rumus :
h(z) = trunc (m * fraction (z * a)), 0 ≤ a < 1
fungsi ini menghasilkan nilai 0 ≤ h(z) < m
Perkalian
• Penentuan nilai a harus tepat
• Untuk nilai a mendekati 0 atau 1, elemenelemen bernilai kecil akan cenderung
mengelompok dalam suatu cluster.
• Secara teoritis harga a yang baik adalah
a = 0,6180339887
a = 0,3819660113
Resolusi Kolisi
• Pada umumnya, jumlah kemungkinan data
yang akan disimpan lebih banyak
dibandingkan dengan ukuran tabel yang
disediakan sehingga fungsi hash yang sudah
dirancang secara cermat pun tidak mampu
mencegah terjadinya kolisi.
• Resolusi kolisi = proses untuk menunjukkan
posisi yang lain untuk menyimpan data z jika
terjadi kolisi.
Resolusi Kolisi
• Sediakan beberapa tempat pada tiap posisi
tabel. Tempat untuk tiap posisi tabel ini dapat
dilakukan dengan linked list.
• Posisi data z dalam linked list dapat ditentukan
dengan kombinasi nilai z dan indeks list.
Metode ini disebut teknik chaining.
Resolusi Kolisi
Teknik chaining
Teknik Separate Chaining
Resolusi Kolisi
Teknik chaining
110
T[i]
Link[i]
111
112
113
i
0
0
0
114
115
me
0
116
116
117
118
119
0
0
0
of
0
0
Teknik Coalesced Chaining
Resolusi Kolisi
• Teknik Linear Probing
Tanpa mencatat link, melainkan mencari
tempat kosong dari posisi yang ditunjukkan
nilai fungsi hash.