260 likes | 780 Views
MANAJEMEN KOLISI. Salah satu fungsi hash adalah akan mendistribusikan data secara merata ke dalam berkas . Jika tujuan tersebut tidak tercapai , salah satu strategi yang bisa diambil adalah mengkombinasikan beberapa fungsi sederhana dalam satu aplikasi .
E N D
Salahsatufungsi hash adalahakanmendistribusikan data secarameratakedalamberkas. Jikatujuantersebuttidaktercapai, salahsatustrategi yang bisadiambiladalahmengkombinasikanbeberapafungsisederhanadalamsatuaplikasi. Fungsi hash menghasilkanbanyak kolisiatausinonimdikatakanmemilikikluster primer. Makin sedikitjumlahkolisi, makinbaikfungsi hashing tersebutkarenamakinsedikitwaktu yang diperukanrekaman yang diinginkandanjugaakanmempertahankan probe atauaksesterhadappenyimpan agar mendekatisatu.
Beberapacara yang dapatditempuhuntukmereduksikolisiadalahmenggantifungsi hashing, ataudenganmereduksi factor-packing. Factor-packing suatuberkasadalahperbandingan (rasio) antarajumlahrekaman yang disimpandalamberkasdengankapasitasberkas, dapatdinyatakansebagaiberikut:
Factor-packing (densitas-packing / factor-loading) mengukurutilitasipenyimpanan. Factor-packing berbandinglurusdenganjumlahkolisi. Jikanilai packing-factor meningkat, makakolisiakanlebihseringterjadi. Menguraginilai factor-packing dengantujuanuntukmengurangijumlahkolisi, membawapadakonsekuensidiperlukannyaruang yang lebihluasuntukmenyimpanjumlahrekaman yang sama. Fenomenapemilihan factor-packing adalahcontohdarisuatu trade-off waktudanruang. Jika factor-packing diperkecil, makadiperlukanruang yang lebihluas, tetapidengandemikiankemungkinanuntukkoliimenjadiberkurangataudengankata lain meningkatkankinerja. Kolisipadaumumnyaakannaiksecaracepatbila factor-packing melebihi 90%.
Mengubahfungsi hashing ataumengubah factor-packing akandapatmengurangikolisi. Akantetapi, padaumumnyatidakakanmengeliminasikolusitersebut. Yang menjadimedoteutamaadlahmetoderesolusikolusiadalahmenempatkanrekamansinonimpadasuatulokasi yang membutuhkan probe tambahan yang minimum dari home-address rekamantersebut. Probe adalahakseskelokasi yang berbeda. Salahsatupenyelesaian yang dapatdilakukanadalahmemberikanpenunjukpadalokasirekamansinonim. Bilaterjadisinonimjamakpadasuatu home-address tertentu, akandibentukrantairekamansinonim. Sebagaicontohadalah R1, R2 dan R3 sinonimdengan home-address r, makarantaisinonimakanberbentuksepertipadagambardibawah :
GambarRantaisinonim Medan penghunglokasi r menunjukpadalokasi s dimanatersimpansinonimpertama, yaitu R2. simbol ^ ataupenunjuknolpadamedanpenghubung t menunjukanakhirdarirantaisinonim.
ResolusiKolisi Coalesed-hashing LICH dan EISCH Progressive Overflow Penggunaan Buckets Pembagian Liner
Coalesed-Hasingadalahmetoderesolusi yang menggunkanpenunjukuntukmenghubungkanelemen-elemendarisebuahrantaisinonim. Coalesed-hasing (kolisi) terjadibilaterdapatusahauntukmenyisipkansebuahrekamandengan home-address yang berbeda. Coalesed-Hashing
Algoritmauntukcoalesed-hasingadalahsebagaiberikut: • Lakukan hashing padasemuakuncirekaman yang akandisimpanuntukmendapatkan home-address ataucalon-address yang mungkinakanditempatiolehrekaman-rekamantersebut. • Jika home-address kosong, sisipkanrekamanpadalokasitersbut, jikarekamanternyatakembar, akhiri program denganpesan “RekamanKembar”, jikatidak: • Carilokasiterakhirrantai-sinonimdenganmengikutipenunjukpadamedanpenghubungsampaimenemukansimbol ^ yang menandakanakhirdarirantai. • Carilokasi paling bawahdalamberkas (ataumemilikialamat paling besar). Jikatidakditemukan, akhiri program denganpesan “BerkasPenuh”. • Sisipkanrekamankedalamlokasi yang kosongsudahteridentifikasidanaturmedan-penghungrekamanterakhirdalamrantai-sinonim agar menunjukkelokasirekaman yang barusajadisisipkan.
LICH dan EISCH Beberapavariandaricoalesed-hasingdapatdiklasifikasikankedalamtigacara: • Mengorganisasiberkas (denganatautanpa overflow) • Menghubungkan item yang terkolosikedalamrantai • Memilihlokasi yang belumadapenghuninya Kolisimungkindapatdireduksidenganmemodifikasiorganisasiberkas. Cara pertamaadalahdenganmemisahkanantara area data primer dengan area data overflow, sehinggamemilikibentuksebagaiberikut:
Area primer adalahruangalamat yang cocokdenganfungsi hash. Overflow (Cellar) adalah area yang hanyaberisirekaman-rekaman yang sinonim. Faktoralamatadalahperbandinganantara area primer denganukuran total berkas. Untukukuranberkas yang tetap, jikafaktoralamatmengecilmakaukuran cellar akanmeningkat, yang berartimereduksikolisi. Akantetapi, karena area primer menjadimengecilmakajumlahkolisiakanmembesar. Kolisi yang lebihbanyakmembawakonsekuensi , makadiperlukannya probe pembacaan yang lebihbesar.
Progressive Overflow Kerugianutamapenggunaancoalesed-hasingadalahdiperlukannyatambahanuntukmedanpenghubung. Untukmenentukanrekaman, makaperludilakukankonversi. Salahsatukonversi yang sederhanaadalahpenggunaan overflow yang progresifatau probing secara linier. Pertimbanganberkasmemilikistruktur yang melingkar, denganlokasipertamaberadatepatsesudahlokasiterakhir. Pencariandilanjutkansampaiditemukan slot yang kosongatausampaiditemukan home-address rekamanuntukkeuda-kalinyamenandakanbahwaberkastelahpenuh. Untukpembacaankembalidilakukan prose yang sama.
Penggunaan Buckets Jumlahpengaksesandapatdireduksidenganmeletakkanlebihdarisaturekamanpadasatualamatpenyimpanan. Kemungkinantersebutdapatdirealisirbiladigunakansistem “buckets” ( disebutjuga “blokatau “halaman”). Jadi, bucket adapatdidefinisikansebagian unit penyimpanan yang beradadiantararekamandenganberkas, jugasebuah unit denganinformasi yang dapatdiaksesdandipindahkanantarperalatanpenyimpanan. Jumlahrekaman yang dapatdiletakkanpadasatu bucket disebut factor-blocking. Jika factor-blocking meningkat, jumlahaksesterhadappenyimpananakanmengecilkarenabeberaparekaman yang berkolisidapatdisimpandalamsatualamat yang sama.
Pembagian Liner Resolusikolisidenganbaikteknikpembagian-linier merupakanvariandari progressive-overfloe. Kalauadaprogerssive-overflow inkremenuntukmenujukelokasiberikutnyaadalahkonstan (1=satu), makapadapembagian linier digunakaninkremen yang bersifatvariabel. Tujuaninkremen yang variabeladalahmereduksipengklusteransekunder yang terjadipada progressive-overflow sehinggajumlah probe untukpembacaankembalijugaberkurang. Tidaksepertirantaicoalessed, sinonimpadapembagian-linier umumnyatidakberadapadarantai probe yang sama. Jika R1, R2 dan R3 adalahsinonimpada home-address h sepertipadagambarberikut, R2 dan R3 biasanyamemilikiinkremen yang berbedamengingatinkremenmerupakanfungsikunci yang akandisisipkan. Karenainkremen yang berbeda, makapengklasteransekunderdapatdireduksi.
Algoritmauntukmetodaresolusikolisidenganpembagian-linier adalahsebagaiberikut: • Hash kunci yang akandisisipkankedalamberkasuntukmemperoleh home-address untukmenyimpanrekaman.\ • Jika home-address kosong, sisipkanrekamankedalamlokasitersebut, jikatidakmaka: • Tentukaninkremendenganmenghitunghasilbagikuncidenganukuranberkas. Jikahasinyanol, makainkremennya = 1 (satu). • Berihargaawalpencacahuntukperhintunganlokasi yang akandicaridengan 1. • Selamajumlahlokasi yang dicarilebihkecildariukuranberkas, maka: • Hitungalamat yang akandicariberikutnyadenganmenambahkaninkrementerhadapalamatterakhirdankemudiancarimodulusnyaterhadapukuranberkas. • Jikaalamattersebuttidakada yang menempati, makasisipkanrekmansertaakhiripenyisipandenganakses.
Jikarekaman yang menempatimemilikikunci yang samadengan yang akandisisipkan, akhiriprosesdenganpesan “rekaman double”. • Tambahkan 1 pad pencacahpencarianlokasi. • Akhiriprosesdenganpesan “BerkasPenuh”. Algoritmatersebutmensyaratkanukuranberkasberupabilangan prima untukmenghindariterjadinyasikluspencarianterhadaprekamanberulang-ulangdankemudianmemberikanindikasibahwarekamansudahpenuh yang padakenyataannyamasihterdapatruang yang belumditempati.