SlideShare a Scribd company logo
Hash TableHash Table
2
TabelTabel
 Tabel mempunyai beberapaTabel mempunyai beberapa fieldsfields (tipe informasi)(tipe informasi)
 Buku telepon mempunyai beberapaBuku telepon mempunyai beberapa fieldfield diantaranya:diantaranya:
nama, alamat, nomor teleponnama, alamat, nomor telepon
 TabelTabel user accountuser account mempunyaimempunyai fieldfield diantaranya id,diantaranya id,
password, dan nama folderpassword, dan nama folder
 Untuk menemukan data/Untuk menemukan data/entryentry yang kita butuhkan dariyang kita butuhkan dari
tabel, kita harus mengetahui nilai dari salah satutabel, kita harus mengetahui nilai dari salah satu
field(bukan semuanya). Field tersebut biasanya disebutfield(bukan semuanya). Field tersebut biasanya disebut
sebagaisebagai keykey
 KeyKey di buku telepon adalah namadi buku telepon adalah nama
 KeyKey di user account adalahdi user account adalah idid
 KeyKey idealnya harus bersifat unik yang berarti bahwaidealnya harus bersifat unik yang berarti bahwa
tidak ada isi daritidak ada isi dari keykey yang bernilai samayang bernilai sama
3
Operasi tabelOperasi tabel
 insertinsert: diberikan sebuah: diberikan sebuah keykey dan nilai,dan nilai,
insert nilai dalam tabelinsert nilai dalam tabel
 findfind: diberikan sebuah: diberikan sebuah keykey, temukan nilai, temukan nilai
yang berhubungan denganyang berhubungan dengan keykey
 removeremove: diberikan sebuah: diberikan sebuah keykey,temukan,temukan
nilai yang berhubungan dengannilai yang berhubungan dengan keykey
kemudian hapus nilai tersebutkemudian hapus nilai tersebut
 getIteratorgetIterator: mengambalikan iterator,yang: mengambalikan iterator,yang
memeriksa nilai satu demi satumemeriksa nilai satu demi satu
4
Bagaimana tabel harusBagaimana tabel harus
diimplementasikan?diimplementasikan?
 Seberapa sering nilai di-Seberapa sering nilai di-insertinsert dan di-dan di-removeremove??
 Berapa banyak jumlahBerapa banyak jumlah keykey yang dipergunakan?yang dipergunakan?
 Bagaimana modelBagaimana model searchingsearching daridari keykey??
 Contoh: apakah pencarian dilakukan terhadap satuContoh: apakah pencarian dilakukan terhadap satu
nilainilai keykey atau langsung dua nilaiatau langsung dua nilai keykey
 Apakah ukuran tabel cukup jika dimasukkan dalamApakah ukuran tabel cukup jika dimasukkan dalam
memori?memori?
 Sampai berapa lama tabel akan dipergunakan?Sampai berapa lama tabel akan dipergunakan?
Pilihan kita tentang bagaimana tabel sebaiknya
direpresentasikan tergantung dari jawaban dari pertanyaan-
pertanyaan dibawah ini
5
TableNode:TableNode: keykey dandan entryentry
 Untuk keperluanUntuk keperluan searching/searching/pencarian,sangat dianjurkanpencarian,sangat dianjurkan
untuk menempatkanuntuk menempatkan keykey dandan entryentry di tempat yangdi tempat yang
terpisah (walaupun nilai dariterpisah (walaupun nilai dari keykey mungkin ada di dalammungkin ada di dalam
entryentry))
“Smith” “Smith”, “124 Hawkers Lane”, “9675846”
“Yeo” “Yeo”, “1 Apple Crescent”, “0044 1970 622455”
key entry
TableNode
6
Implementasi Tabel 1:Implementasi Tabel 1:
unsorted sequential arrayunsorted sequential array
 Array dimana TableNodesArray dimana TableNodes
disimpan tidak berurutandisimpan tidak berurutan
 insertinsert: ditambah di bagian paling: ditambah di bagian paling
belakang array/array yangbelakang array/array yang
terakhir;O(1)terakhir;O(1)
 findfind: Pencarian dilakukan pada: Pencarian dilakukan pada
seluruh key satu kali setiap saat,seluruh key satu kali setiap saat,
ada kemungkinan seluruhada kemungkinan seluruh keykey
dikunjungi; O(dikunjungi; O(nn))
 removeremove: temukan node+hapus: temukan node+hapus
node+ gantikan node yang telahnode+ gantikan node yang telah
dihapus dengan node yangdihapus dengan node yang
terakhir; O(terakhir; O(nn))
0
…
key entry
1
2
3
and so on
7
Implementasi Tabel 2:Implementasi Tabel 2:
sorted sequential arraysorted sequential array
 Array dimana TableNodesArray dimana TableNodes
disimpan berurut berdasarkan keydisimpan berurut berdasarkan key
 insertinsert:ditambah di tempat sesuai:ditambah di tempat sesuai
urutan dari key;O(n)urutan dari key;O(n)
 findfind: Pencarian dilakukan dengan: Pencarian dilakukan dengan
menggunakan algoritma binarymenggunakan algoritma binary
search karena key tersusunsearch karena key tersusun
berurut; O(berurut; O(log nlog n))
 removeremove: temukan node+hapus: temukan node+hapus
node+semua node yang terletak dinode+semua node yang terletak di
bawah node yang dihapusbawah node yang dihapus
dinaikkan satu tingkat; O(dinaikkan satu tingkat; O(nn))
0
…
key entry
1
2
3
and so on
8
Implementasi Tabel 3:Implementasi Tabel 3:
linked list (unsorted or sorted)linked list (unsorted or sorted)
 TableNodes disimpan berurutanTableNodes disimpan berurutan
 insertinsert: ditambah di urutan paling: ditambah di urutan paling
depan; O(1) ataudepan; O(1) atau O(n)O(n) untukuntuk listlist
yang terurutyang terurut
 findfind: cari ke seluruh: cari ke seluruh keykey satu kalisatu kali
setiap saat; O(setiap saat; O(nn) dan masih) dan masih O(n)O(n)
untuk list yang terurutuntuk list yang terurut
 removeremove: temukan node+ hapus: temukan node+ hapus
node menggunakan pemindahannode menggunakan pemindahan
pointer; O(pointer; O(nn))
key entry
and so on
9
Implementasi Tabel 4:Implementasi Tabel 4:
AVL treeAVL tree
 AVL tree, disusun terurutAVL tree, disusun terurut
berdasarkanberdasarkan keykey
 insertinsert: ditambah berdasarkan: ditambah berdasarkan
urutan key; O(logurutan key; O(log nn))
 findfind: menemukan: menemukan keykey; O(log; O(log nn))
 removeremove: temukan node+hapus: temukan node+hapus
node; O(lognode; O(log nn))
key entry
key entry key entry
key entry
and so on
O(log n) is very good…
…but O(1) would be even better!
10
 Suatu array dimanaSuatu array dimana
TableNodes tidak disimpanTableNodes tidak disimpan
secara berurutan. Posisisecara berurutan. Posisi
penyimpanan dihitungpenyimpanan dihitung
berdasarkanberdasarkan keykey dandan hashhash
functionfunction
 Hashed keyHashed key: Hasil dari: Hasil dari
menerapkan suatumenerapkan suatu hashhash
functionfunction padapada keykey
 KeyKey dandan entryentry tersebar ditersebar di
seluruh arrayseluruh array
Implementasi Tabel 5:Implementasi Tabel 5:
hashinghashing
key entry
Key hash
function
array
index
4
10
123
11
 insertinsert: hitung alamat lokasi: hitung alamat lokasi
penyimpanan, insertpenyimpanan, insert
TableNode; O(1)TableNode; O(1)
 findfind: hitung alamat lokasi: hitung alamat lokasi
penyimpanan, masukkanpenyimpanan, masukkan entryentry
ke tabel ; O(1)ke tabel ; O(1)
 removeremove: hitung alamat lokasi: hitung alamat lokasi
penyimpanan,ubah nilai dipenyimpanan,ubah nilai di
dalam alamat tersebut menjadidalam alamat tersebut menjadi
null; O(1)null; O(1)
Implementation 5:Implementation 5:
hashinghashing
key entry
4
10
123
All are O(1) !
12
Contoh Hashing :Contoh Hashing :
Toko BuahToko Buah
 10 detail stok buah, 1010 detail stok buah, 10 posisiposisi tabeltabel
 Nomor stok antara 0-1000Nomor stok antara 0-1000
 Gunakan rumusGunakan rumus hash functionhash function: nomor stok/: nomor stok/
100100
 Bagaimana jika kita memasukkan nomorBagaimana jika kita memasukkan nomor
stok350?stok350?
 Position 3 sudah terisi: terjadiPosition 3 sudah terisi: terjadi collisioncollision
 Collision resolution strategyCollision resolution strategy: insert di lokasi: insert di lokasi
sesudahnya yang masih kosong (metodesesudahnya yang masih kosong (metode
ini dinamakanini dinamakan linear probinglinear probing))
 Diberikan nomor stok lagi, temukan stokDiberikan nomor stok lagi, temukan stok
dengan menggunakandengan menggunakan hash functionhash function, dan, dan
gunakangunakan collision resolution strategycollision resolution strategy jikajika
dibutuhkandibutuhkan
key entry
0
1
2
3
4
5
6
7
8
9
85 85, apples
462 462, pears
912 912, papaya
323 323, guava
350 350, oranges
13
3 Faktor yang Mempengaruhi3 Faktor yang Mempengaruhi
PerformansiPerformansi hashinghashing
 Hash functionHash function
 IdealnyaIdealnya hash functionhash function harus mendistribusikan seluruhharus mendistribusikan seluruh keykey dandan entryentry
secara merata ke seluruh tabelsecara merata ke seluruh tabel
 Hash function harus meminimalisir terjadinyaHash function harus meminimalisir terjadinya collisioncollision, dimana isi dari, dimana isi dari
alamat yang diberikan olehalamat yang diberikan oleh hash functionhash function telah terisitelah terisi
 Collision resolution strategyCollision resolution strategy
 Separate chainingSeparate chaining: merangkaikan beberapa: merangkaikan beberapa key/entrykey/entry di posisidi posisi
masing-masingmasing-masing
 Open addressingOpen addressing: menyimpan: menyimpan key/entrykey/entry di suatu lokasi yang berbedadi suatu lokasi yang berbeda
 Ukuran tabelUkuran tabel
 Terlalu besar akan membuang memori, terlalu kecil akanTerlalu besar akan membuang memori, terlalu kecil akan
memunculkan banyakmemunculkan banyak collisioncollision dan pada akhirnya terpaksa harusdan pada akhirnya terpaksa harus
dilakukandilakukan rehashingrehashing (mencopy data ke tabel yang lebih besar)(mencopy data ke tabel yang lebih besar)
 Memungkinkan diterapkanMemungkinkan diterapkan hash functionhash function pada tabel tersebutpada tabel tersebut
14
MemilihMemilih hash functionhash function::
MMengubahengubah keykey Menjadi Posisi TabelMenjadi Posisi Tabel
 TruncationTruncation
 Abaikan sebagian nilai dariAbaikan sebagian nilai dari keykey dan gunakandan gunakan sebagian yang lainsebagian yang lain
sebagai index dari array (mengkonversi bagiansebagai index dari array (mengkonversi bagian keykey yang non-numeric)yang non-numeric)
 Teknik yang cepat dan sesuai untuk pendistribusian yang merata keTeknik yang cepat dan sesuai untuk pendistribusian yang merata ke
seluruh tabelseluruh tabel
 FoldingFolding
 Memisah beberapa kunci menjadi beberapa bagian dan kombinasikanMemisah beberapa kunci menjadi beberapa bagian dan kombinasikan
dengan cara yang tepatdengan cara yang tepat
 Tidak sepertiTidak seperti truncationtruncation,cara,cara FoldingFolding ini menggunakan seluruh nilaiini menggunakan seluruh nilai
daridari keykey
 Modular arithmetic (digunakan juga oleh truncation & folding)Modular arithmetic (digunakan juga oleh truncation & folding)
 Untuk menjaga agar posisi yang dihitung benar-benar ada dalamUntuk menjaga agar posisi yang dihitung benar-benar ada dalam
tabel,tabel,devidedevide/bagi posisi dengan ukuran dari tabel, dan gunakan/bagi posisi dengan ukuran dari tabel, dan gunakan
sisanya sebagai posisi yang barusisanya sebagai posisi yang baru
15
ContohContoh hash functionshash functions (1)(1)
 TruncationTruncation: siswa mempunyai NIM dengan 8 digit nilai,: siswa mempunyai NIM dengan 8 digit nilai,
gunakan 3 digit yang terakhir sebagai posisi tabelgunakan 3 digit yang terakhir sebagai posisi tabel
 Contoh: NIM 05560078Contoh: NIM 05560078 menjadi 078menjadi 078
 FoldingFolding: Bagi nomor 8 digit menjadi nomor 3: Bagi nomor 8 digit menjadi nomor 3
digit,kemudian tambahkandigit,kemudian tambahkan
 Contoh: 05560078Contoh: 05560078 menjadi 055 + 600 + 78 = 733menjadi 055 + 600 + 78 = 733
 Modular arithmeticModular arithmetic: Jika ukuran tabel 1000,untuk: Jika ukuran tabel 1000,untuk
memastikan posisi yang dihitung ada di dalam range darimemastikan posisi yang dihitung ada di dalam range dari
tabel maka lakukan operasi modulo pada posisi tabeltabel maka lakukan operasi modulo pada posisi tabel
 Contoh : 733 mod 1000 = 733Contoh : 733 mod 1000 = 733
 Contoh : 1250 mod 1000=250Contoh : 1250 mod 1000=250
16
ContohContoh hash functionshash functions (2)(2)
 Gunakan nomor telepon sebagaiGunakan nomor telepon sebagai keykey
 Kode area tidak random, maka tidak akanKode area tidak random, maka tidak akan
mendistribusikan secara merata penyebaran key/entry.mendistribusikan secara merata penyebaran key/entry.
 3 nomor digit terakhir lebih random sehingga lebih3 nomor digit terakhir lebih random sehingga lebih
memungkinkan untuk digunakan sebagai penentu posisimemungkinkan untuk digunakan sebagai penentu posisi
pada tabelpada tabel
 Menggunakan nama sebagaiMenggunakan nama sebagai keykey
 GunakanGunakan full namefull name(nama keseluruhan) daripada(nama keseluruhan) daripada
surnamesurname (nama panggilan)(nama panggilan)
 Koversikan setiap karakter dengan suatu nomorKoversikan setiap karakter dengan suatu nomor
(contoh: a = 1, b = 2)(contoh: a = 1, b = 2)
 Jumlahkan seluruh nomor.Jumlahkan seluruh nomor.
17
Memilih Ukuran Tabel untukMemilih Ukuran Tabel untuk
MeminimalisirMeminimalisir CollisionCollision
 Karena elemen dari tabel terus meningkat, sejatinya jumlahKarena elemen dari tabel terus meningkat, sejatinya jumlah collisioncollision
akan terus meningkat, oleh karena itu ukuran tabel harusakan terus meningkat, oleh karena itu ukuran tabel harus
diperhitungkan sebaik mungkindiperhitungkan sebaik mungkin
 Jika ukuran tabel 100 dan seluruh nilaiJika ukuran tabel 100 dan seluruh nilai hashed keyhashed key dibagi dengandibagi dengan
10, maka akan terjadi banyak10, maka akan terjadi banyak collisioncollision
 Tidak baik jika ukuran tabel dibentuk dari nomor integer ukuranTidak baik jika ukuran tabel dibentuk dari nomor integer ukuran
kecil seperti 2 atau 10kecil seperti 2 atau 10
 UmumnyaUmumnya collisioncollision akan sering terjadi jika:akan sering terjadi jika:
 greatest common divisor (hashed keys, table size) > 1greatest common divisor (hashed keys, table size) > 1
 Oleh karena itu ukuran tabel sebaiknya adalah bilangan prima (gcd =Oleh karena itu ukuran tabel sebaiknya adalah bilangan prima (gcd =
1)1)
Bagaimanapun collision masih mungkin
terjadi,oleh karena itu kita membutuhkan
collision resolution strategy
18
Collision resolution:Collision resolution:
open addressing (1)open addressing (1)
 Linear probingLinear probing: menjumlahkan satu setiap saat [mod dengan: menjumlahkan satu setiap saat [mod dengan
ukuran tabel]ukuran tabel]
 Quadratic probingQuadratic probing: dari posisi aslinya, tambahkan 1, 4, 9, 16,…: dari posisi aslinya, tambahkan 1, 4, 9, 16,…
Probing: Jika posisi tabel yang diberikan oleh hashed key
telah terisi, naikkan/jumlahkan posisi sejumlah
tertentu,sampai bertemu dengan posisi tabel yang nilai di
dalamnya kosong
Gunakan collision resolution strategy jika melakukan insert dan find
(pastikan bahwa kunci yang dicari dan kunci yang didapat cocok)
 double hash: hasil dari linear probing × hasil dari hash function lain
 Dengan open addressing,ukuran tabel harus digandakan sesuai dengan
elemen nomor yang diharapkan
19
Collision resolution:Collision resolution:
open addressing (2)open addressing (2)
 Jika isi tabel banyak yang kosong dan banyak terjadi cJika isi tabel banyak yang kosong dan banyak terjadi collisionollision,,
metodemetode linear probinglinear probing akan menimbulkanakan menimbulkan clustercluster/pengelompokan/pengelompokan
key/entrykey/entry
 Hal ini akan meningkatkan waktu untuk melakukanHal ini akan meningkatkan waktu untuk melakukan insertinsert dandan findfind
1 2 3 4 5 6 7 8
 Jika suatu tabel berukuranJika suatu tabel berukuran nn dan tabel tersebut kosong,makadan tabel tersebut kosong,maka
kemungkinankemungkinan entryentry masuk ke posisi tertentu dalam tabel adalahmasuk ke posisi tertentu dalam tabel adalah 1/1/nn
 Dalam diagram, kemungkinan posisi 2 terisi sesudahnya adalah 2/Dalam diagram, kemungkinan posisi 2 terisi sesudahnya adalah 2/nn
 Jika posisi 2 sudah terisi,kemungkinan posisi 4 terisi sesudahnyaJika posisi 2 sudah terisi,kemungkinan posisi 4 terisi sesudahnya
adalah 4/adalah 4/nn dan kemudian posisi 7 adalah 7/dan kemudian posisi 7 adalah 7/nn
20
Collision resolution:Collision resolution:
open addressing (3)open addressing (3)
 Key/entryKey/entry yang kosong menandai akhir dariyang kosong menandai akhir dari
clustercluster dan dapat digunakan untuk mengakhiridan dapat digunakan untuk mengakhiri
operasioperasi findfind
 Oleh karena itu jika kita menghapusOleh karena itu jika kita menghapus entryentry dalamdalam
clustercluster kita tidak boleh mengosongkan isinyakita tidak boleh mengosongkan isinya
 AgarAgar probingprobing bisa berjalan terus,bisa berjalan terus,entryentry yangyang
dihapus harus ditandai dengan ‘dihapus tetapidihapus harus ditandai dengan ‘dihapus tetapi
clustercluster berlanjut terus’berlanjut terus’
21
Collision resolution:Collision resolution:
open addressing (4)open addressing (4)
 Quadratic probingQuadratic probing adalah solusi dari masalahadalah solusi dari masalah clusteringclustering
 Linear probingLinear probing menambah 1, 2, 3, dst. padamenambah 1, 2, 3, dst. pada original hashed keyoriginal hashed key
 Quadratic probingQuadratic probing menambah 1menambah 122
, 2, 222
, 3, 322
dst. padadst. pada original hashedoriginal hashed
keykey
 Bagaimanapun,jikaBagaimanapun,jika linear probinglinear probing memastikan bahwa semua posisimemastikan bahwa semua posisi
yang kosong akan diperiksa tidak halnya dengan metodeyang kosong akan diperiksa tidak halnya dengan metode quadraticquadratic
probingprobing
 Contoh: ukuran tabel 16 danContoh: ukuran tabel 16 dan original hashed keyoriginal hashed key 3 memberikan3 memberikan
sekuen : 3, 4, 7, 12, 3, 12, 7, 4…sekuen : 3, 4, 7, 12, 3, 12, 7, 4…
 Umumnya dengan menggunakanUmumnya dengan menggunakan quadratic probingquadratic probing, proses, proses insertinsert
akan tidak mungkin dilakukan jika tabel sudah lebih dari setengahakan tidak mungkin dilakukan jika tabel sudah lebih dari setengah
penuhpenuh
 Jika hal ini terjadi perlu dilakukanJika hal ini terjadi perlu dilakukan rehashrehash
22
Collision resolution: chainingCollision resolution: chaining
 Setiap posisi tabel adalahSetiap posisi tabel adalah linked listlinked list
 TambahkanTambahkan keykey andand entryentry dimanapundimanapun
dalam list (lebih mudah dari depan)dalam list (lebih mudah dari depan)
 Keunggulan dibandingkanKeunggulan dibandingkan openopen
addressingaddressing::
 ProsesProses insertinsert dandan removeremove lebihlebih
sederhanasederhana
 Ukuran Array bukan batasan (tetapiUkuran Array bukan batasan (tetapi
harus tetap meminimalisirharus tetap meminimalisir collisioncollision::
buat ukuran tabel sesuai denganbuat ukuran tabel sesuai dengan
jumlahjumlah keykey dandan entryentry yang diharapkan)yang diharapkan)
 Kerugian:Kerugian:
 Overhead pada memory tinggi jikaOverhead pada memory tinggi jika
jumlah entry sedikitjumlah entry sedikit
4
10
123
key entry key entry
key entry key entry
key entry
No need to change position!
23
RehashingRehashing::
memperbesar ukuran tabelmemperbesar ukuran tabel
 Untuk me-Untuk me-rehashrehash::
 Buat tabel baru dengan ukuran dua kali lebih besar dari ukuran semulaBuat tabel baru dengan ukuran dua kali lebih besar dari ukuran semula
(sesuaikan hingga akhirnya ukuran tabel adalah bilangan prima)(sesuaikan hingga akhirnya ukuran tabel adalah bilangan prima)
 Transfer semuaTransfer semua entryentry pada tabel yang lama ke tabel yang baru,denganpada tabel yang lama ke tabel yang baru,dengan
melakukan perhitungan ulang pada posisi tiapmelakukan perhitungan ulang pada posisi tiap entryentry (menggunakan(menggunakan hashhash
functionfunction))
 Kapan kita harus me-Kapan kita harus me-rehashrehash??
 Jika tabel sudah penuhJika tabel sudah penuh
 Dengan menggunakan metodeDengan menggunakan metode quadratic probingquadratic probing, jika tabel sudah, jika tabel sudah
setengah penuh, maka prosessetengah penuh, maka proses insertinsert akan gagalakan gagal
 Mengapa ukuran tabel baru harus dua kali ukuran semula?Mengapa ukuran tabel baru harus dua kali ukuran semula?
 JikaJika nn adalah nomor dari elemen tabel, seharusnya telah terjadi n/2adalah nomor dari elemen tabel, seharusnya telah terjadi n/2
proses insert sebelum dilakukan rehash (jika rehashing dilakukan karenaproses insert sebelum dilakukan rehash (jika rehashing dilakukan karena
tabel penuh)tabel penuh)
 Jadi dengan menambah ukuran tabel dengan 2Jadi dengan menambah ukuran tabel dengan 2nn, harga yang konstan, harga yang konstan
akan didapatkan pada tiap prosesakan didapatkan pada tiap proses insertinsert

More Related Content

PDF
Os2013 lap5-rizqitohopi
PDF
Os2013 lap6-ridwan
PDF
Os2013 lap6-rizqitohopi
PDF
Os2013 lap4-rizqitohopi
PDF
Os2013 lap2-rizqitohopi
PDF
Os2013 lap1-rizqitohopi
PDF
Os2013 lap5-ridwan
PDF
Laporan Praktikum OS
Os2013 lap5-rizqitohopi
Os2013 lap6-ridwan
Os2013 lap6-rizqitohopi
Os2013 lap4-rizqitohopi
Os2013 lap2-rizqitohopi
Os2013 lap1-rizqitohopi
Os2013 lap5-ridwan
Laporan Praktikum OS

What's hot (17)

PPTX
Recursion in Python
PDF
Prak sh6
PPT
Penggunaan Makro Define dan Header dalam Pemograman C++
PDF
Os2013 lap3-rizqitohopi
PPTX
Perulangan dan Array dalam PHP
PPT
Poss upi-python-dasar-part1
DOCX
Fungsi tombol keybord
PDF
Pelatihan Python Dasar Part 2 - POSS UPI
PDF
Os2013 lap4-ridwan
PDF
Praktikum 4B
PPTX
02 struktur-kendali-program
PDF
Pelatihan Python Dasar Part 1 - POSS UPI
PDF
Queue laporan
PPTX
Asd sesi tree part1
PDF
Os2013 lap1-ridwan
PDF
Os2013 lap2-ridwan
PDF
WEB II PHP 07
Recursion in Python
Prak sh6
Penggunaan Makro Define dan Header dalam Pemograman C++
Os2013 lap3-rizqitohopi
Perulangan dan Array dalam PHP
Poss upi-python-dasar-part1
Fungsi tombol keybord
Pelatihan Python Dasar Part 2 - POSS UPI
Os2013 lap4-ridwan
Praktikum 4B
02 struktur-kendali-program
Pelatihan Python Dasar Part 1 - POSS UPI
Queue laporan
Asd sesi tree part1
Os2013 lap1-ridwan
Os2013 lap2-ridwan
WEB II PHP 07
Ad

Viewers also liked (15)

PPTX
How to place a webapp icon on ios homescreen
PPT
Bab 1 abstraksi_tipe_data
PDF
Final presentation
PPT
Bab 4 stack_tumpukan_
PPT
Bab 12 file_manipulation
PPTX
How to place a webapp icon on android homescreen
PPT
Bab 6 singly_linked_list
PPTX
Rólam...
PDF
La noche del Conde, un encuentro con negroni
PDF
Amazon work
PPTX
Web v snative(engl)
PPTX
The Potential Space_film_stills_may_2014_copyright_albert_potrony
PPT
Bab 9 tree
PPT
Bab 5 queue_antrian_
PDF
Toyota brand name
How to place a webapp icon on ios homescreen
Bab 1 abstraksi_tipe_data
Final presentation
Bab 4 stack_tumpukan_
Bab 12 file_manipulation
How to place a webapp icon on android homescreen
Bab 6 singly_linked_list
Rólam...
La noche del Conde, un encuentro con negroni
Amazon work
Web v snative(engl)
The Potential Space_film_stills_may_2014_copyright_albert_potrony
Bab 9 tree
Bab 5 queue_antrian_
Toyota brand name
Ad

Similar to Bab 11 hash_table (7)

PDF
Pertemuan7
PDF
Modul praktikum 11 hashing table
DOC
Praktikum 03 Sistem Basis Data
PPT
9. tabel informasi
PDF
Meeting7 working with bash shell - a-modul
DOCX
Jelaskan dua cara untuk memindahkan kursor
DOCX
Binary search
Pertemuan7
Modul praktikum 11 hashing table
Praktikum 03 Sistem Basis Data
9. tabel informasi
Meeting7 working with bash shell - a-modul
Jelaskan dua cara untuk memindahkan kursor
Binary search

Recently uploaded (20)

PPTX
Ilmu Geologi pertambangan dan peran dalam industri.pptx
PPTX
4. PENERAPAN PENGELOLAAN SUMBER DAYA MANUSIA.pptx
PPTX
PPT mssp arham muthahhari mata kuliah ms
PPTX
TUGAS Pandangan Aksiologi dalam Filsafat Ilmu.pptx
PDF
6. Sosialisasi dan .. Pembentukan KMP.pdf
PPTX
1 Peraturan Perundangan terkait Keselamatan Konstruksi 18.10 - Copy.pptx
PPT
Presentasi Tentang Diagram P-h dan Diagram Psikrometrik.ppt
PDF
Jual GPS Topcon HiPer SR Extended Range Site Receiver
PDF
01. Mengelola Risiko pada Kegiatan IBM Sanitasi.pdf
PPTX
20240805-ppt-pendahuluan-temef-dan-manikin.pptx
PPTX
Seminar Hasil Penelitian Analisis Pegas Daun
PPTX
LAPORAN ANTARA JAKSTRADA PROPINSI NTT.PPT
PPTX
Slide Modul 1 Pengantar SCM PELATIHAN.pptx
PPTX
PRESENTATION PRODUCT KNOWLEDGE Mc-Quay (ID).pptx
PDF
10. MK, EWS dan Lap Fisik_Sanimas_17092024.pdf
PDF
13. Penyusunan RKTL TFL_PK IV Sanimas.pdf
PPTX
KETERAMPILAN KADER - Copy TAHUN 2024.pptx
PDF
03. Konsep Dasar.. Sanimas Rev.1.pptx.pdf
PDF
441817878-K3-Pada-Alat-Berat.pdf pemahaman
PPTX
Data mining mengolah informasi dan menjadikannya dasar pengambilan keputusan
Ilmu Geologi pertambangan dan peran dalam industri.pptx
4. PENERAPAN PENGELOLAAN SUMBER DAYA MANUSIA.pptx
PPT mssp arham muthahhari mata kuliah ms
TUGAS Pandangan Aksiologi dalam Filsafat Ilmu.pptx
6. Sosialisasi dan .. Pembentukan KMP.pdf
1 Peraturan Perundangan terkait Keselamatan Konstruksi 18.10 - Copy.pptx
Presentasi Tentang Diagram P-h dan Diagram Psikrometrik.ppt
Jual GPS Topcon HiPer SR Extended Range Site Receiver
01. Mengelola Risiko pada Kegiatan IBM Sanitasi.pdf
20240805-ppt-pendahuluan-temef-dan-manikin.pptx
Seminar Hasil Penelitian Analisis Pegas Daun
LAPORAN ANTARA JAKSTRADA PROPINSI NTT.PPT
Slide Modul 1 Pengantar SCM PELATIHAN.pptx
PRESENTATION PRODUCT KNOWLEDGE Mc-Quay (ID).pptx
10. MK, EWS dan Lap Fisik_Sanimas_17092024.pdf
13. Penyusunan RKTL TFL_PK IV Sanimas.pdf
KETERAMPILAN KADER - Copy TAHUN 2024.pptx
03. Konsep Dasar.. Sanimas Rev.1.pptx.pdf
441817878-K3-Pada-Alat-Berat.pdf pemahaman
Data mining mengolah informasi dan menjadikannya dasar pengambilan keputusan

Bab 11 hash_table

  • 2. 2 TabelTabel  Tabel mempunyai beberapaTabel mempunyai beberapa fieldsfields (tipe informasi)(tipe informasi)  Buku telepon mempunyai beberapaBuku telepon mempunyai beberapa fieldfield diantaranya:diantaranya: nama, alamat, nomor teleponnama, alamat, nomor telepon  TabelTabel user accountuser account mempunyaimempunyai fieldfield diantaranya id,diantaranya id, password, dan nama folderpassword, dan nama folder  Untuk menemukan data/Untuk menemukan data/entryentry yang kita butuhkan dariyang kita butuhkan dari tabel, kita harus mengetahui nilai dari salah satutabel, kita harus mengetahui nilai dari salah satu field(bukan semuanya). Field tersebut biasanya disebutfield(bukan semuanya). Field tersebut biasanya disebut sebagaisebagai keykey  KeyKey di buku telepon adalah namadi buku telepon adalah nama  KeyKey di user account adalahdi user account adalah idid  KeyKey idealnya harus bersifat unik yang berarti bahwaidealnya harus bersifat unik yang berarti bahwa tidak ada isi daritidak ada isi dari keykey yang bernilai samayang bernilai sama
  • 3. 3 Operasi tabelOperasi tabel  insertinsert: diberikan sebuah: diberikan sebuah keykey dan nilai,dan nilai, insert nilai dalam tabelinsert nilai dalam tabel  findfind: diberikan sebuah: diberikan sebuah keykey, temukan nilai, temukan nilai yang berhubungan denganyang berhubungan dengan keykey  removeremove: diberikan sebuah: diberikan sebuah keykey,temukan,temukan nilai yang berhubungan dengannilai yang berhubungan dengan keykey kemudian hapus nilai tersebutkemudian hapus nilai tersebut  getIteratorgetIterator: mengambalikan iterator,yang: mengambalikan iterator,yang memeriksa nilai satu demi satumemeriksa nilai satu demi satu
  • 4. 4 Bagaimana tabel harusBagaimana tabel harus diimplementasikan?diimplementasikan?  Seberapa sering nilai di-Seberapa sering nilai di-insertinsert dan di-dan di-removeremove??  Berapa banyak jumlahBerapa banyak jumlah keykey yang dipergunakan?yang dipergunakan?  Bagaimana modelBagaimana model searchingsearching daridari keykey??  Contoh: apakah pencarian dilakukan terhadap satuContoh: apakah pencarian dilakukan terhadap satu nilainilai keykey atau langsung dua nilaiatau langsung dua nilai keykey  Apakah ukuran tabel cukup jika dimasukkan dalamApakah ukuran tabel cukup jika dimasukkan dalam memori?memori?  Sampai berapa lama tabel akan dipergunakan?Sampai berapa lama tabel akan dipergunakan? Pilihan kita tentang bagaimana tabel sebaiknya direpresentasikan tergantung dari jawaban dari pertanyaan- pertanyaan dibawah ini
  • 5. 5 TableNode:TableNode: keykey dandan entryentry  Untuk keperluanUntuk keperluan searching/searching/pencarian,sangat dianjurkanpencarian,sangat dianjurkan untuk menempatkanuntuk menempatkan keykey dandan entryentry di tempat yangdi tempat yang terpisah (walaupun nilai dariterpisah (walaupun nilai dari keykey mungkin ada di dalammungkin ada di dalam entryentry)) “Smith” “Smith”, “124 Hawkers Lane”, “9675846” “Yeo” “Yeo”, “1 Apple Crescent”, “0044 1970 622455” key entry TableNode
  • 6. 6 Implementasi Tabel 1:Implementasi Tabel 1: unsorted sequential arrayunsorted sequential array  Array dimana TableNodesArray dimana TableNodes disimpan tidak berurutandisimpan tidak berurutan  insertinsert: ditambah di bagian paling: ditambah di bagian paling belakang array/array yangbelakang array/array yang terakhir;O(1)terakhir;O(1)  findfind: Pencarian dilakukan pada: Pencarian dilakukan pada seluruh key satu kali setiap saat,seluruh key satu kali setiap saat, ada kemungkinan seluruhada kemungkinan seluruh keykey dikunjungi; O(dikunjungi; O(nn))  removeremove: temukan node+hapus: temukan node+hapus node+ gantikan node yang telahnode+ gantikan node yang telah dihapus dengan node yangdihapus dengan node yang terakhir; O(terakhir; O(nn)) 0 … key entry 1 2 3 and so on
  • 7. 7 Implementasi Tabel 2:Implementasi Tabel 2: sorted sequential arraysorted sequential array  Array dimana TableNodesArray dimana TableNodes disimpan berurut berdasarkan keydisimpan berurut berdasarkan key  insertinsert:ditambah di tempat sesuai:ditambah di tempat sesuai urutan dari key;O(n)urutan dari key;O(n)  findfind: Pencarian dilakukan dengan: Pencarian dilakukan dengan menggunakan algoritma binarymenggunakan algoritma binary search karena key tersusunsearch karena key tersusun berurut; O(berurut; O(log nlog n))  removeremove: temukan node+hapus: temukan node+hapus node+semua node yang terletak dinode+semua node yang terletak di bawah node yang dihapusbawah node yang dihapus dinaikkan satu tingkat; O(dinaikkan satu tingkat; O(nn)) 0 … key entry 1 2 3 and so on
  • 8. 8 Implementasi Tabel 3:Implementasi Tabel 3: linked list (unsorted or sorted)linked list (unsorted or sorted)  TableNodes disimpan berurutanTableNodes disimpan berurutan  insertinsert: ditambah di urutan paling: ditambah di urutan paling depan; O(1) ataudepan; O(1) atau O(n)O(n) untukuntuk listlist yang terurutyang terurut  findfind: cari ke seluruh: cari ke seluruh keykey satu kalisatu kali setiap saat; O(setiap saat; O(nn) dan masih) dan masih O(n)O(n) untuk list yang terurutuntuk list yang terurut  removeremove: temukan node+ hapus: temukan node+ hapus node menggunakan pemindahannode menggunakan pemindahan pointer; O(pointer; O(nn)) key entry and so on
  • 9. 9 Implementasi Tabel 4:Implementasi Tabel 4: AVL treeAVL tree  AVL tree, disusun terurutAVL tree, disusun terurut berdasarkanberdasarkan keykey  insertinsert: ditambah berdasarkan: ditambah berdasarkan urutan key; O(logurutan key; O(log nn))  findfind: menemukan: menemukan keykey; O(log; O(log nn))  removeremove: temukan node+hapus: temukan node+hapus node; O(lognode; O(log nn)) key entry key entry key entry key entry and so on O(log n) is very good… …but O(1) would be even better!
  • 10. 10  Suatu array dimanaSuatu array dimana TableNodes tidak disimpanTableNodes tidak disimpan secara berurutan. Posisisecara berurutan. Posisi penyimpanan dihitungpenyimpanan dihitung berdasarkanberdasarkan keykey dandan hashhash functionfunction  Hashed keyHashed key: Hasil dari: Hasil dari menerapkan suatumenerapkan suatu hashhash functionfunction padapada keykey  KeyKey dandan entryentry tersebar ditersebar di seluruh arrayseluruh array Implementasi Tabel 5:Implementasi Tabel 5: hashinghashing key entry Key hash function array index 4 10 123
  • 11. 11  insertinsert: hitung alamat lokasi: hitung alamat lokasi penyimpanan, insertpenyimpanan, insert TableNode; O(1)TableNode; O(1)  findfind: hitung alamat lokasi: hitung alamat lokasi penyimpanan, masukkanpenyimpanan, masukkan entryentry ke tabel ; O(1)ke tabel ; O(1)  removeremove: hitung alamat lokasi: hitung alamat lokasi penyimpanan,ubah nilai dipenyimpanan,ubah nilai di dalam alamat tersebut menjadidalam alamat tersebut menjadi null; O(1)null; O(1) Implementation 5:Implementation 5: hashinghashing key entry 4 10 123 All are O(1) !
  • 12. 12 Contoh Hashing :Contoh Hashing : Toko BuahToko Buah  10 detail stok buah, 1010 detail stok buah, 10 posisiposisi tabeltabel  Nomor stok antara 0-1000Nomor stok antara 0-1000  Gunakan rumusGunakan rumus hash functionhash function: nomor stok/: nomor stok/ 100100  Bagaimana jika kita memasukkan nomorBagaimana jika kita memasukkan nomor stok350?stok350?  Position 3 sudah terisi: terjadiPosition 3 sudah terisi: terjadi collisioncollision  Collision resolution strategyCollision resolution strategy: insert di lokasi: insert di lokasi sesudahnya yang masih kosong (metodesesudahnya yang masih kosong (metode ini dinamakanini dinamakan linear probinglinear probing))  Diberikan nomor stok lagi, temukan stokDiberikan nomor stok lagi, temukan stok dengan menggunakandengan menggunakan hash functionhash function, dan, dan gunakangunakan collision resolution strategycollision resolution strategy jikajika dibutuhkandibutuhkan key entry 0 1 2 3 4 5 6 7 8 9 85 85, apples 462 462, pears 912 912, papaya 323 323, guava 350 350, oranges
  • 13. 13 3 Faktor yang Mempengaruhi3 Faktor yang Mempengaruhi PerformansiPerformansi hashinghashing  Hash functionHash function  IdealnyaIdealnya hash functionhash function harus mendistribusikan seluruhharus mendistribusikan seluruh keykey dandan entryentry secara merata ke seluruh tabelsecara merata ke seluruh tabel  Hash function harus meminimalisir terjadinyaHash function harus meminimalisir terjadinya collisioncollision, dimana isi dari, dimana isi dari alamat yang diberikan olehalamat yang diberikan oleh hash functionhash function telah terisitelah terisi  Collision resolution strategyCollision resolution strategy  Separate chainingSeparate chaining: merangkaikan beberapa: merangkaikan beberapa key/entrykey/entry di posisidi posisi masing-masingmasing-masing  Open addressingOpen addressing: menyimpan: menyimpan key/entrykey/entry di suatu lokasi yang berbedadi suatu lokasi yang berbeda  Ukuran tabelUkuran tabel  Terlalu besar akan membuang memori, terlalu kecil akanTerlalu besar akan membuang memori, terlalu kecil akan memunculkan banyakmemunculkan banyak collisioncollision dan pada akhirnya terpaksa harusdan pada akhirnya terpaksa harus dilakukandilakukan rehashingrehashing (mencopy data ke tabel yang lebih besar)(mencopy data ke tabel yang lebih besar)  Memungkinkan diterapkanMemungkinkan diterapkan hash functionhash function pada tabel tersebutpada tabel tersebut
  • 14. 14 MemilihMemilih hash functionhash function:: MMengubahengubah keykey Menjadi Posisi TabelMenjadi Posisi Tabel  TruncationTruncation  Abaikan sebagian nilai dariAbaikan sebagian nilai dari keykey dan gunakandan gunakan sebagian yang lainsebagian yang lain sebagai index dari array (mengkonversi bagiansebagai index dari array (mengkonversi bagian keykey yang non-numeric)yang non-numeric)  Teknik yang cepat dan sesuai untuk pendistribusian yang merata keTeknik yang cepat dan sesuai untuk pendistribusian yang merata ke seluruh tabelseluruh tabel  FoldingFolding  Memisah beberapa kunci menjadi beberapa bagian dan kombinasikanMemisah beberapa kunci menjadi beberapa bagian dan kombinasikan dengan cara yang tepatdengan cara yang tepat  Tidak sepertiTidak seperti truncationtruncation,cara,cara FoldingFolding ini menggunakan seluruh nilaiini menggunakan seluruh nilai daridari keykey  Modular arithmetic (digunakan juga oleh truncation & folding)Modular arithmetic (digunakan juga oleh truncation & folding)  Untuk menjaga agar posisi yang dihitung benar-benar ada dalamUntuk menjaga agar posisi yang dihitung benar-benar ada dalam tabel,tabel,devidedevide/bagi posisi dengan ukuran dari tabel, dan gunakan/bagi posisi dengan ukuran dari tabel, dan gunakan sisanya sebagai posisi yang barusisanya sebagai posisi yang baru
  • 15. 15 ContohContoh hash functionshash functions (1)(1)  TruncationTruncation: siswa mempunyai NIM dengan 8 digit nilai,: siswa mempunyai NIM dengan 8 digit nilai, gunakan 3 digit yang terakhir sebagai posisi tabelgunakan 3 digit yang terakhir sebagai posisi tabel  Contoh: NIM 05560078Contoh: NIM 05560078 menjadi 078menjadi 078  FoldingFolding: Bagi nomor 8 digit menjadi nomor 3: Bagi nomor 8 digit menjadi nomor 3 digit,kemudian tambahkandigit,kemudian tambahkan  Contoh: 05560078Contoh: 05560078 menjadi 055 + 600 + 78 = 733menjadi 055 + 600 + 78 = 733  Modular arithmeticModular arithmetic: Jika ukuran tabel 1000,untuk: Jika ukuran tabel 1000,untuk memastikan posisi yang dihitung ada di dalam range darimemastikan posisi yang dihitung ada di dalam range dari tabel maka lakukan operasi modulo pada posisi tabeltabel maka lakukan operasi modulo pada posisi tabel  Contoh : 733 mod 1000 = 733Contoh : 733 mod 1000 = 733  Contoh : 1250 mod 1000=250Contoh : 1250 mod 1000=250
  • 16. 16 ContohContoh hash functionshash functions (2)(2)  Gunakan nomor telepon sebagaiGunakan nomor telepon sebagai keykey  Kode area tidak random, maka tidak akanKode area tidak random, maka tidak akan mendistribusikan secara merata penyebaran key/entry.mendistribusikan secara merata penyebaran key/entry.  3 nomor digit terakhir lebih random sehingga lebih3 nomor digit terakhir lebih random sehingga lebih memungkinkan untuk digunakan sebagai penentu posisimemungkinkan untuk digunakan sebagai penentu posisi pada tabelpada tabel  Menggunakan nama sebagaiMenggunakan nama sebagai keykey  GunakanGunakan full namefull name(nama keseluruhan) daripada(nama keseluruhan) daripada surnamesurname (nama panggilan)(nama panggilan)  Koversikan setiap karakter dengan suatu nomorKoversikan setiap karakter dengan suatu nomor (contoh: a = 1, b = 2)(contoh: a = 1, b = 2)  Jumlahkan seluruh nomor.Jumlahkan seluruh nomor.
  • 17. 17 Memilih Ukuran Tabel untukMemilih Ukuran Tabel untuk MeminimalisirMeminimalisir CollisionCollision  Karena elemen dari tabel terus meningkat, sejatinya jumlahKarena elemen dari tabel terus meningkat, sejatinya jumlah collisioncollision akan terus meningkat, oleh karena itu ukuran tabel harusakan terus meningkat, oleh karena itu ukuran tabel harus diperhitungkan sebaik mungkindiperhitungkan sebaik mungkin  Jika ukuran tabel 100 dan seluruh nilaiJika ukuran tabel 100 dan seluruh nilai hashed keyhashed key dibagi dengandibagi dengan 10, maka akan terjadi banyak10, maka akan terjadi banyak collisioncollision  Tidak baik jika ukuran tabel dibentuk dari nomor integer ukuranTidak baik jika ukuran tabel dibentuk dari nomor integer ukuran kecil seperti 2 atau 10kecil seperti 2 atau 10  UmumnyaUmumnya collisioncollision akan sering terjadi jika:akan sering terjadi jika:  greatest common divisor (hashed keys, table size) > 1greatest common divisor (hashed keys, table size) > 1  Oleh karena itu ukuran tabel sebaiknya adalah bilangan prima (gcd =Oleh karena itu ukuran tabel sebaiknya adalah bilangan prima (gcd = 1)1) Bagaimanapun collision masih mungkin terjadi,oleh karena itu kita membutuhkan collision resolution strategy
  • 18. 18 Collision resolution:Collision resolution: open addressing (1)open addressing (1)  Linear probingLinear probing: menjumlahkan satu setiap saat [mod dengan: menjumlahkan satu setiap saat [mod dengan ukuran tabel]ukuran tabel]  Quadratic probingQuadratic probing: dari posisi aslinya, tambahkan 1, 4, 9, 16,…: dari posisi aslinya, tambahkan 1, 4, 9, 16,… Probing: Jika posisi tabel yang diberikan oleh hashed key telah terisi, naikkan/jumlahkan posisi sejumlah tertentu,sampai bertemu dengan posisi tabel yang nilai di dalamnya kosong Gunakan collision resolution strategy jika melakukan insert dan find (pastikan bahwa kunci yang dicari dan kunci yang didapat cocok)  double hash: hasil dari linear probing × hasil dari hash function lain  Dengan open addressing,ukuran tabel harus digandakan sesuai dengan elemen nomor yang diharapkan
  • 19. 19 Collision resolution:Collision resolution: open addressing (2)open addressing (2)  Jika isi tabel banyak yang kosong dan banyak terjadi cJika isi tabel banyak yang kosong dan banyak terjadi collisionollision,, metodemetode linear probinglinear probing akan menimbulkanakan menimbulkan clustercluster/pengelompokan/pengelompokan key/entrykey/entry  Hal ini akan meningkatkan waktu untuk melakukanHal ini akan meningkatkan waktu untuk melakukan insertinsert dandan findfind 1 2 3 4 5 6 7 8  Jika suatu tabel berukuranJika suatu tabel berukuran nn dan tabel tersebut kosong,makadan tabel tersebut kosong,maka kemungkinankemungkinan entryentry masuk ke posisi tertentu dalam tabel adalahmasuk ke posisi tertentu dalam tabel adalah 1/1/nn  Dalam diagram, kemungkinan posisi 2 terisi sesudahnya adalah 2/Dalam diagram, kemungkinan posisi 2 terisi sesudahnya adalah 2/nn  Jika posisi 2 sudah terisi,kemungkinan posisi 4 terisi sesudahnyaJika posisi 2 sudah terisi,kemungkinan posisi 4 terisi sesudahnya adalah 4/adalah 4/nn dan kemudian posisi 7 adalah 7/dan kemudian posisi 7 adalah 7/nn
  • 20. 20 Collision resolution:Collision resolution: open addressing (3)open addressing (3)  Key/entryKey/entry yang kosong menandai akhir dariyang kosong menandai akhir dari clustercluster dan dapat digunakan untuk mengakhiridan dapat digunakan untuk mengakhiri operasioperasi findfind  Oleh karena itu jika kita menghapusOleh karena itu jika kita menghapus entryentry dalamdalam clustercluster kita tidak boleh mengosongkan isinyakita tidak boleh mengosongkan isinya  AgarAgar probingprobing bisa berjalan terus,bisa berjalan terus,entryentry yangyang dihapus harus ditandai dengan ‘dihapus tetapidihapus harus ditandai dengan ‘dihapus tetapi clustercluster berlanjut terus’berlanjut terus’
  • 21. 21 Collision resolution:Collision resolution: open addressing (4)open addressing (4)  Quadratic probingQuadratic probing adalah solusi dari masalahadalah solusi dari masalah clusteringclustering  Linear probingLinear probing menambah 1, 2, 3, dst. padamenambah 1, 2, 3, dst. pada original hashed keyoriginal hashed key  Quadratic probingQuadratic probing menambah 1menambah 122 , 2, 222 , 3, 322 dst. padadst. pada original hashedoriginal hashed keykey  Bagaimanapun,jikaBagaimanapun,jika linear probinglinear probing memastikan bahwa semua posisimemastikan bahwa semua posisi yang kosong akan diperiksa tidak halnya dengan metodeyang kosong akan diperiksa tidak halnya dengan metode quadraticquadratic probingprobing  Contoh: ukuran tabel 16 danContoh: ukuran tabel 16 dan original hashed keyoriginal hashed key 3 memberikan3 memberikan sekuen : 3, 4, 7, 12, 3, 12, 7, 4…sekuen : 3, 4, 7, 12, 3, 12, 7, 4…  Umumnya dengan menggunakanUmumnya dengan menggunakan quadratic probingquadratic probing, proses, proses insertinsert akan tidak mungkin dilakukan jika tabel sudah lebih dari setengahakan tidak mungkin dilakukan jika tabel sudah lebih dari setengah penuhpenuh  Jika hal ini terjadi perlu dilakukanJika hal ini terjadi perlu dilakukan rehashrehash
  • 22. 22 Collision resolution: chainingCollision resolution: chaining  Setiap posisi tabel adalahSetiap posisi tabel adalah linked listlinked list  TambahkanTambahkan keykey andand entryentry dimanapundimanapun dalam list (lebih mudah dari depan)dalam list (lebih mudah dari depan)  Keunggulan dibandingkanKeunggulan dibandingkan openopen addressingaddressing::  ProsesProses insertinsert dandan removeremove lebihlebih sederhanasederhana  Ukuran Array bukan batasan (tetapiUkuran Array bukan batasan (tetapi harus tetap meminimalisirharus tetap meminimalisir collisioncollision:: buat ukuran tabel sesuai denganbuat ukuran tabel sesuai dengan jumlahjumlah keykey dandan entryentry yang diharapkan)yang diharapkan)  Kerugian:Kerugian:  Overhead pada memory tinggi jikaOverhead pada memory tinggi jika jumlah entry sedikitjumlah entry sedikit 4 10 123 key entry key entry key entry key entry key entry No need to change position!
  • 23. 23 RehashingRehashing:: memperbesar ukuran tabelmemperbesar ukuran tabel  Untuk me-Untuk me-rehashrehash::  Buat tabel baru dengan ukuran dua kali lebih besar dari ukuran semulaBuat tabel baru dengan ukuran dua kali lebih besar dari ukuran semula (sesuaikan hingga akhirnya ukuran tabel adalah bilangan prima)(sesuaikan hingga akhirnya ukuran tabel adalah bilangan prima)  Transfer semuaTransfer semua entryentry pada tabel yang lama ke tabel yang baru,denganpada tabel yang lama ke tabel yang baru,dengan melakukan perhitungan ulang pada posisi tiapmelakukan perhitungan ulang pada posisi tiap entryentry (menggunakan(menggunakan hashhash functionfunction))  Kapan kita harus me-Kapan kita harus me-rehashrehash??  Jika tabel sudah penuhJika tabel sudah penuh  Dengan menggunakan metodeDengan menggunakan metode quadratic probingquadratic probing, jika tabel sudah, jika tabel sudah setengah penuh, maka prosessetengah penuh, maka proses insertinsert akan gagalakan gagal  Mengapa ukuran tabel baru harus dua kali ukuran semula?Mengapa ukuran tabel baru harus dua kali ukuran semula?  JikaJika nn adalah nomor dari elemen tabel, seharusnya telah terjadi n/2adalah nomor dari elemen tabel, seharusnya telah terjadi n/2 proses insert sebelum dilakukan rehash (jika rehashing dilakukan karenaproses insert sebelum dilakukan rehash (jika rehashing dilakukan karena tabel penuh)tabel penuh)  Jadi dengan menambah ukuran tabel dengan 2Jadi dengan menambah ukuran tabel dengan 2nn, harga yang konstan, harga yang konstan akan didapatkan pada tiap prosesakan didapatkan pada tiap proses insertinsert