bab i - asanisembiring.files.wordpress.com  · web viewmodel pengalamatan ini kemungkinan masih...

29
Sistem Berkas BAB VI ORGANISASI FILE LANGSUNG VI.1. LOKASI INFORMASI Proses pencarian lokasi record dari suatu file tergantung bagaimana penataan organisasi file. Organisasi file langsung sering disebut dengan Random access file langsung yang digunakan untuk menyusun record sedemikian hingga probe setiap record konstan atau satu, sehingga :f(key) merujuk ke alamat record. Dengan demikian setiap kunci berubah menjadi alamat dengan menggunakan fungsi hash, dimana key adalah alamat unik. Penempatan dilakukan dengan fungsi tertentu untuk meletakkan suatu record pada tempat yang sudah ada. Perhatikan diagram berikut dalam gambar 6.1. KONVERSI KEY TERHADAP ALAMAT UNIK Dalam melakukan konversi field maka harus memiliki primary key dalam alamat penyimpanan yang unik dan harus memperhitungkan apakah terdapat kemungkinan composite (dapat diuraikan) dengan suatu formula : Lokasi A[i] = + m x s ; dimana : A : Suatu array dari beberapa dimensi i : Tipe elemen : Lokasi elemen pertama dalam array m : Jumlah elemen berdasarkan standar order s : Ukuran (dalam unit alamat) suatu elemen dari suatu array Contoh : Untuk mengkonversi informasi ke dalam alamat unik pada sistem penerbangan maka nomor penerbangan dari 1 sampai 999 ingin melakukan reservasi setiap tahun dengan sejumlah hari dari 1 sampai 365. Nomor penerbangan dan Bahan Ajar Kuliah : Sinar Sinurat, ST 1 Key Space Address Space 0 0 999-9- 9999 999-9- 9999 Gambar 6.1. Korespondensi antara key dan alamat

Upload: lyxuyen

Post on 20-Mar-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

BAB VIORGANISASI FILE LANGSUNG

VI.1. LOKASI INFORMASIProses pencarian lokasi record dari suatu file tergantung bagaimana penataan

organisasi file. Organisasi file langsung sering disebut dengan Random access file langsung yang digunakan untuk menyusun record sedemikian hingga probe setiap record konstan atau satu, sehingga :f(key) merujuk ke alamat record. Dengan demikian setiap kunci berubah menjadi alamat dengan menggunakan fungsi hash, dimana key adalah alamat unik.

Penempatan dilakukan dengan fungsi tertentu untuk meletakkan suatu record pada tempat yang sudah ada. Perhatikan diagram berikut dalam gambar 6.1.

KONVERSI KEY TERHADAP ALAMAT UNIKDalam melakukan konversi field maka harus memiliki primary key dalam

alamat penyimpanan yang unik dan harus memperhitungkan apakah terdapat kemungkinan composite (dapat diuraikan) dengan suatu formula :

Lokasi A[i] = + m x s ; dimana :A : Suatu array dari beberapa dimensii : Tipe elemen : Lokasi elemen pertama dalam arraym : Jumlah elemen berdasarkan standar orders : Ukuran (dalam unit alamat) suatu elemen dari suatu array

Contoh :Untuk mengkonversi informasi ke dalam alamat unik pada sistem penerbangan

maka nomor penerbangan dari 1 sampai 999 ingin melakukan reservasi setiap tahun dengan sejumlah hari dari 1 sampai 365. Nomor penerbangan dan hari dalam 1 tahun disambung untuk menentukan lokasi record berisi reservasi penerbangan, sehingga :

Lokasi = nomor penerbangan || hari pada tahun tersebut ( || concatenation sambung ). Alamat akan memiliki range dari 001001 sampai dengan 999366.

KONVERSI KEY KE ALAMAT AKTUAL (PROBABLE)Konversi ini butuh suatu fungsi dengan memetakan nilai key ke dalam

pembawa nilai alamat. Konversi ini merujuk fungsi hash yang memerlukan nilai key ganda ke dalam nilai alamat tunggal dengan formula :

Hash (key) adalah alamat aktual dengan inisial alamat yang dapat diketahui pada pelokasian suatu record dalam tabel dikenal home address.

Beberapa fungsi yang memetakan key ke dalam range alamat diterima tetapi ditolak jika fungsi :- Menyebarkan key diantara alamat-alamat- Eksekusi tidak efisien

Bahan Ajar Kuliah : Sinar Sinurat, ST1

Key Space Address Space

0 0

999-9-9999 999-9-9999

Gambar 6.1. Korespondensi antara key dan alamat

Page 2: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Suatu tabrakan (Collision) terjadi saat 2 key dalam alamat yang sama, hashing kemudian dimuat dengan memperhatikan 2 aspek :- Fungsi Hash : mengubah key menjadi alamat- Metode mengatasi tabrakan (collision resolution)

Contoh :Data = 3 13 23 15 16 26 27 37 47 50Menggunakan 13 tempat, berarti : key (3 s/d 50) address (0 s/d 12) maka

|key| >> |address| dimana |x| adalah panjang/jarak key x

VI.2. FUNGSI HASHFungsi hash akan membentuk tabel hash digunakan untuk

mengimplementasikan kamus dalam waktu konstan per operasi. Tabel hash mendukung pemanggilan dan penghapusan pada beberapa item yang sudah dinamai sebelumnya.

Dalam mengimplementasikan tabel hash yang menggunakan array dengan inisialisasi indeks-indeks tertentu maka pelaksanaan proses data dengan memetakan item-item ke dalam indeks dikenal fungsi hash .

f(key) = key mod N ; N adalah ukuran tabel danf(key) = key mod P ; P adalah bilangan prima terkecil (P N)

Contoh : Diberikan data sebagai berikut : 3 13 23 15 16 26 27 37 47 50

maka pemetaan hashing langsung ke alamat tertentu :Indeks : 0 1 2 3 4 5 6 7 8 9 10 11 12Key : 13 26 15 3 16 27 47 23 37 50Jumlah N = 13

f(3) = 3 mod 13 = 3 ; probe = 1 kalif(13) = 13 mod 13 = 0 ; probe = 1 kalif(23) = 23 mod 13 = 10 ; probe = 1 kalif(15) = 15 mod 13 = 2 ; probe = 1 kalif(16) = 16 mod 13 = 3 ; probe = 1 kali ; terjadi tabrakan (collision) ;

untuk mengatasinya gunakan Resolution Linier Probing, jika i berisi data maka lakukan i+1 else i+2 dan seterusnya sampai menemukan ruang kosong, sehingga : probe = 2 kali

f(key) = ((fi-1(key))+1) mod N, jadif(16) = (3+1) mod 13 = 4 f(26) = 26 mod 13 = 0 ; terjadi collision, maka f(26) = (0+1) mod 13 = 1 probe = 2 kalif(27) = 27 mod 13 = 1 ; terjadi collision

f(27) = (1+1) mod 13 = 2 ; terjadi collisionf(27) = (2+1) mod 13 = 3 ; terjadi collisionf(27) = (3+1) mod 13 = 4 ; terjadi collisionf(27) = (4+1) mod 13 = 5 ; probe = 5 kali

Bahan Ajar Kuliah : Sinar Sinurat, ST2

f

Page 3: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

f(37) = 37 mod 13 = 11 ; probe = 1 kalif(47) = 47 mod 13 = 8 ; probe = 1 kalif(50) = 50 mod 13 = 11 ; terjadi collision

f(50) = (11+1) mod 13 = 12 ; probe = 2 kali berdasarkan data di atas bahwa jumlah data 10 buah, jumlah bucket (hole) = N = 13 saat penyisipan data terjadi probe sebanyak 17 kali, sehingga rata-rata probe = 17/10 = 1,7 kali.

Bandingkan dengan pemetaan file sequential sebagai berikut :Indeks : 0 1 2 3 4 5 6 7 8 9 Key : 3 13 23 15 16 26 27 37 47 50Jumlah N = 10Rata-rata probe = (1+10)/2 = 11/2 = 5.5

Berdasarkan data di atas dapat disimpulkan bahwa :- Pemetaan file sequential lebih lambat dibandingkan dengan pemetaan file langsung- Efisiensi tempat untuk pemetaan file secara langsung 10/13 sedangkan pemetaan

file sequential 10/10Mode waktu akses dapat dilihat pada :- Fungsi- Pengakses

Perlu diketahui bahwa semakin kecil tempat/ jumlah bucket maka kemungkinan tabrakan akan semakin besar. Sedangkan fungsi hash untuk load faktor merupakan faktor muatan yaitu pembanding antara.

Jika jumlah perbandingan terisi dengan jumlah tempat yang tersedia maka akan semakin kecil faktor muatan untuk memperkecil terjadinya tabrakan. Untuk menghindari/ memperkecil tabrakan adalah :- Perbesar tempat- Ganti fungsi resolusi misalnya +2.Hal penting lainnya adalah alat-alat yang mempengaruhi tabrakan antara lain :- Ukuran key- Fungsi resolusi

Hubungan antara key dan address menjadi n-1 sehingga key (n) address,dimana n key dapat memperoleh alamat yang sama. Linier address terjadi bila satu alamat terisi maka key akan lompat terhadap key berikutnya (linier probing).

Contoh : 2 12 22 32 42 Data ini diolah dengan metodologi :

(a) Bucket (b)=10, f(key) = key mod 10 akan selalu tabrakan(b) Bucket (b) = 7, f(key) = key mod 7 (bilangan prima) maka address akan merata

dengan :2 mod 7 = 2 12 mod 7 = 5 22 mod 7 = 132 mod 7 = 4 42 mod 7 = 0

perlu diperhatikan bahwa tidak selamanya penambahan kapasitas dapat memperbaiki waktu akses/ probe tergantung pada :

(a) Fungsi hash(b) Fungsi Resolusi (mengurangi tabrakan)(c) Load factor = jumlah record yang ada (load density) pada ruang yang ada(d) Distribusi dari key, misalnya :

i. 2,3,5,7,11ii. 2,3,4,5,6

Bahan Ajar Kuliah : Sinar Sinurat, ST3

f

Page 4: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Jika pada bagian I dan ii diberi fungsi f(key) = key mod 6 maka pada bagian i akan sering terjadi, dan ii key address terletak tepat pada tempatnya (data terletak rapat) dan hubungan hubungan key dan address i-1 dimana record yang memiliki address yang sama maka hasil address semuanya menjadi 0

(e) Urutan key, jika ada 2 fungsi yang mempunyai rata-rata tabrakan yang sama maka diambil fungsi yang memiliki standard deviasi kecil.

ALOKASI FUNGSI HASH- Fungsi hash yang digunakan harus cepat dan dapat mendistribusikan key secara

merata dalam tempat tersebut (jangan ada home address yang sering ditempati, dimana home address lain tidak sampai terdapat rantai yang terlalu panjang untuk menghindari terlalu sering tabrakan)

- Beberapa kemungkinan untuk menghindari tabrakan :(1) h(x) = x mod N ; n adalah jumlah blok/ media simpan yang digunakan(2) h(x0 = x mod P ; P adalah bilangan prima dengan modulo tetap +1

jika P maka addressnya diluar blok jatuh pada modulo + 2(3) Truncation, misalnya :

Indeks : 123 45 6789 123 45 6789Data : 111-11-1111 s/d 999-99-9999Jumlah data 1000 (dengan tujuan agar tempat cukup)Dalam memilih kombinasi key 111-11-1111 s/d 99-99-9999 sedemikian hingga digit key berkisar 4 digit maksimal dan dapat menentukan posisi load factor untuk melakukan posisi pengaksesan.

(4) Folding, jenis-jenis folding ada 2 yaitu :(a) Boundary (batas), yaitu melipat dengan batas misalnya :

Sehingga diperoleh 3 bagian folding yaitu :

3 2 14 5 69 8 7 +

(b) Shifting (pergeseran), adalah suatu proses pergeseran atau pemotongan, misalnya :

9 5 0 8 2 0 1 2 3 +(1) 8 9 3

carry

Carry dapat ditambahkan pada digit terakhir agar diperoleh hasil yang lebih baik dan hasilnya menjadi :

8 9 3 1 + 8 9 4

Bahan Ajar Kuliah : Sinar Sinurat, ST4

1 2 3 4 5 6 7 8 9

9 5 0 8 2 0 1 2 3

Page 5: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Perlu diperhatikan bahwa tidak semua carry harus ditambahkan pada digit terakhir,

contoh : (1) 8 9 9 8 9 9 1 +

9 0 0 (dengan shifting terjadi perubahan pada semua angka)

x1 = left (key,3) =

x2 = mid (key, 4, 3) =

x3 = right (key,3) =

x = val (x1) + val (x2) + val (x3)

dimana val untuk mengubah character menjadi numericFolding dapat digunakan untuk mengubah string menjadi integer agar dapat

dijumlahkan.

KUNCI NON NUMERIK (ALPHABETIK)Kunci dapat berupa string, char sebagai contoh :

Anggota (nama, tanggal_lahir, tanggal_nikah, umur) jika dipilih field nama sebagai key (primary key). Pemilihan primary key dilakukan berdasarkan pertimbangan bahwa field tersebut dapat mengidentifikasikan record secara unik. Untuk mengubah key (nama) menjadi integer antara 000 ... 999 digunakan formula :

Address = Ascii (left(key,1)) + Ascii (right(key,1)) mod 1000Model pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan :

Misalnya : Susilo Yudoyono Sandi Yanto

maka untuk menghindari tabrakan (rantai yang paling panjang) digunakan formula :

Misalnya nama terdapat 30 character maka L = 30/2 = 15 (pekerjaan berkurang Y2)berikut diberikan algoritma sebagai berikut :

function Hash (key : string) : integerbegin

Address = 0i = 1while (i length (key)) dobegin

address = address + ascii (key(i))i = i + 2

endhash = address mod 1000

end

VI.3. COLLISION RESOLUTION

Bahan Ajar Kuliah : Sinar Sinurat, ST5

Address = Ascii (key i)L

i=1Address = Ascii (key i)

Y2

i=1atau

Page 6: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Perbaikan collision ini mempengaruhi baik tidaknya file yang akan digunakan dengan fungsi tertentu. Collision resolution merupakan fungsi atau metode khusus yang digunakan mengatasi tabrakan (koalisi), dengan :- Koalisi dapat terjadi pada saat sisip dan cari- Jika Home Address sama maka alamat aktual berbeda- Key N-1 alamat. Alamat sebenarnya record tersebut adalah alamat aktual dan

alamat yang ditempati oleh N record yang sama adalah home address.- Jika tabrakan terjadi kita akan melakukan hashing lagi atau dinamakan Rehashing

yaitu mencari alamat yang lain dengan menggunakan fungsi hash lain dimana fungsinya sama dengan fungsi hash yang pertama, address akan tetap / tidak berpindah.

Perhatikan diagram berikut pada gambar 6.2.

Suatu fungsi dimasukkan ke dalam h atau diolah dengan hash akan memperoleh alamat.

- Fungsi hash digunakan pada saat cari dan sisip

Contoh Kasus :Selesaikan dengan quadratic probing kasus berikut :Diberikan key-key yang akan diinput dalam tabel hash “satu”, “dua”, “tiga”, “empat”, “lima”, “enam”, “tujuh”, “delapan”, “sembilan”, “sepuluh”.

Spesifikasi :- Jumlah blok/bucket (ukuran hash) = 17 (indeks 0 sampai dengan 16)- Fungsi hash h(x) berdasarkan metode perkalian dengan A = 0.618- Fungsi ordinal () total bilangan alpabetik dari huruf-huruf pada key (“a”=1,

“b”=2, “c”=3, ..., “z” = 26)- Collision dipecahkan dengan cara rehashing dengan fungsi

h2(x,i) = -i * ((ord*(x)%5)+1) sehingga penempatan probing ke i adalah hi(x) = h1(x) + h2(x) dengan i =1,2,3, …

Tunjukkan urutan penempatan key-key tersebut dalam tabel dan berapa jumlah collision yang terjadi pada masing-masing penempatan key.

Bahan Ajar Kuliah : Sinar Sinurat, ST6

collisionh tempatkan / selesai

rehash

address

h address no

yes

Gambar 6.2. bagan alur Rehashing

Page 7: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Jawab :

Tabel 6.1. Konversi alpabetik dengan fungsi ordinalOrd() Ordinal * A Fractional (AK)Ord(satu) = 19+1+20+21 = 61 61 * 0.618 = 32,698 0.698Ord(dua) = 4 + 21 + 1 = 26 26 * 0.618 = 16.068 0.068Ord(tiga) = 20 + 9 + 7 + 1 = 37 22.866 0.866Ord(empat) = 5 + 13 + 16 + 1 + 20 = 55 33.990 0.990Ord(lima) = 12 + 9 + 13 + 1 = 35 22.630 0.630Ord(enam) = 5 + 14 + 1 + 13 = 33 20.394 0.394Ord(tujuh) = 20 + 21 + 10 + 21 + 8 = 80 49.440 0.440Ord(delapan) = 4+5+12+1+16+1+14=53 32.754 0.754Ord(sembilan) = 19+5+13+2+9+12+1+14=75 46.350 0.350Ord(sepuluh) = 19+5+16+21+12+21+8=102 63.036 0.036

Sebelum melakukan fungsi rehashing terhadap keseluruhan hasil ordinal huruf-huruf dari masing-masing item data diatas maka dapat dilakukan dengan fungsi floor (pendekatan pembulatan nilai ke bawah) pada fungsi hash H(x), seperti pada tabel 6.2. berikut :

Tabel 6.2. Fungsi rehashingFungsi hashH(x) = m.frac(AK)

RehashingH2(x,i) = -i * ((ord(x) % 5) + 1)

H(satu) = 17 * 0.698 = 11H(dua) = 17 * 0.068 = 1H(tiga) = 17 * 0.866 = 14H(empat) = 17 * 0.990 = 16H(lima) = 17 * 0.630 = 10H(enam) = 17 * 0.394 = 6H(tujuh) = 17 * 0.440 = 7H(delapan) = 17 * 0.754 = 12H(sembilan) = 17 * 0.350 = 5H(sepuluh) = 17 * 0.036 = 0

H2(x,1) = -1 * (61 % 5 + 1) = -2H2(x,2) = -2 * (26 % 5 + 1) = -4H2(x,3) = -3 * (37 % 5 + 1) = -9H2(x,4) = -4 * (55 % 5 + 1) = -4H2(x,5) = -5 * (35 % 5 + 1) = -5H2(x,6) = -6 * (33 % 5 + 1) = -24H2(x,7) = -7 * (80 % 5 + 1) = -7H2(x,8) = -8 * (53 % 5 + 1) = -32H2(x,9) = -9 * (75 % 5 + 1) = -9H2(x,10) = -10 *(102 % 5 + 1) = -30

Tabel ini tidak menunjukkan adanya collision.Tabel 6.3. Penempatan probing

i Key H(x) H2(x) Penempatan probingH’(x) = H(x) + H2*(x,i)

12345678910

SatuDua TigaEmpatLimaEnamTujuhDelapanSembilanSepuluh

111141610671250

-2-4-9-4-5-24-7-32-9-30

111141610671250

Bahan Ajar Kuliah : Sinar Sinurat, ST7

SepuluhDua

SembilanEnamTujuh

LimaSaturdayDelapan

Tiga

empat

012345678910111213141516

Gambar 6.3. Rehashing

Page 8: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Beberapa kemungkinan dari collision resolution adalah :

(1) Linier resolution (+1 atau next) dengan kondisi tetap berputarMisalnya :

Keadaan ini tidak akan memungkinkan karena akan tetap berulang (infinity loop) dan rehashing pun tidak berguna.

(2) Quadratic resolutionProses quadratic posisi sekarang, kemudian di modulokan. Misalnya B = 1000Hash address (x) = 5 dimana 52 mod 1000 = 25Jika B = 10 maka 52 mod 10 = 5 dan 51 mod 10 = 5 dan seterusnya akan tetap berada di tempat sama (tidak bergerak), untuk menghindari ini digunakan :h(x) = y dan h2(x) = (y2 + y) mod B, Contoh : B = 10 dan Y = 5 maka 52 mod 10 = 5 dan (52 +5) mod 10 = 0 sehingga hi(x) = (hi-1 (x) + P) mod P dimana P = 1,2,3, ...

(3) Linked list pointer

Bahan Ajar Kuliah : Sinar Sinurat, ST8

789

X 1 baris2346

Catatan :Kemungkian infinity loop karena walau semua tempat terisi yang seharusnya menyatakan semua tempat terisi akan tetapi proses berlanjut (seperti jarum jam)

Gambar 6.4. Linier resolution

yx

Blok utama

Blok overflow

keyAlamat aktual

Gambar 6.5. Blok utama dan overflow

Page 9: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Dua buah key yang mempunyai suatu address yang sama dinamakan home address (sinonim) dan rangkaian sinonim adalah rantai dimana makin panjang rantai maka makin lama waktu address.

Untuk mengatasi tabrakan terdapat berbagai cara (resolusi) yang digunakan yang pada prinsipnya tergantung organisasi tabel hash yang digunakan.Tabel hash dapat diorganisir dengan cara :(a) Bucket (tabel) digunakan langsung untuk menyimpan record yang mendapat home

address pertama dan record-recor yang menabrak(b) Bucket dibagi 2 yaitu primary dan overflow dengan cara :

- Implementasi array- Scanning dilakukan dari awal (resolusi linier)- Record-record yang ada di bucket linier adalah record-record yang tidak

pernah menabrak tetapi sering ditabrak- Primary adalah yang pertama sekali mendapat home address- Biasanya primary lebih banyak overflow

Misalnya h(x) = y maka h2(x) = (y2 + y) mod B atau hi(x) = (hi-1(x) + P) mod B ; dimana p = 1,2,3…Hash function mengevaluasi H kemudian mencoba H2+12 ; H2+22 ;H2+32; …; H2+n2 ; dengan qwadratic probing dapat diselesaikan dilakukan dengan 2 cara :Cara I :

Maka h(x) x mod 7 dengan demikian :

Bahan Ajar Kuliah : Sinar Sinurat, ST9

2 3 5 7 11 13 17 19 23 29

0 1 2 3 4 5 6 7 8 9 Terdapat 10 blok/bucketPrimer 7 blok/ bucketAverflow 3 blok/ bucket

Langsung home address

h(2) = 2 mod 7 = 2h(3) = 3 mod 7 = 3h(5) = 5 mod 7 = 5h(7) = 7 mod 7 = 0h(11) = 11 mod 7 = 4h(13) = 13 mod 7 = 6h(17) = 17 mod 7 = 3h(19) = 19 mod 7 = 5h(23) = 23 mod 7 = 2h(29) = 29 mod 7 = 1

collision

7

2923115

13

7

1923

0123456

012

collision

collision

collision

sikuensial

Gambar 6.6. Qaudratic probing

Page 10: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

berarti :

Cara II :

Tabel 6.4. Proses infinitive probingIndeks Key Modulo Address Probe Collision

123456

7

89

H(2)H(3)H(5)H(7)H(11)H(13)H(13)H(17)H(17)H(19)H(23)H(23)H(23)H(23)…..

2 %102 %105 %107 %1011 %1013 %10(13+12) %1017 % 10(17 + 12) %10 19 % 1023 % 10(23+12)%10(23+22)%10(23+32)%10……

23571347893472……

11111111111111….

1

1

1111……

Sehingga untuk sikuensi data diatas apabila diselesaikan dengan quadratic probing akan terjadi collision yang tidak terbatas (infinity) seperti pada item data 23 (tabel 6.4)

Sehingga diperoleh kesimpulan bahwa penggunaan tabel hash yang dibagi menjadi 2 bucket (primer dan overflow) masih lebih baik dibandingkan dengan 1 bucket (primer).

Untuk mengukur efisiensi dan dan address factor adalah :

Efisiensi = tempat yang dipakai / tempat yang dimiliki x 100%

Address factor = jumlah primer / jumlah total tempat x 100%

Contoh :

Bahan Ajar Kuliah : Sinar Sinurat, ST10

Total probe = 16 kali

Key : 2 3 5 7 11 13 17 19 23 29

Probe (kali) : 1 1 1 1 1 1 2 3 4 1

Rata-rata probe = 16/10 = 1,6 2 kali

Collision terjadi sebanyak 6 kali

2 3 5 7 11 13 17 19 23 29 0 1 2 3 4 5 6 7 8 9

Terdapat 10 blok/bucket

11 2 3 13 5 7 17 9

0 1 2 3 4 5 6 7 8 9

Gambar 6. 7. Infinitive Probing

Page 11: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Jumlah primer = 100 dan overflow = 10 maka address factor = 100/110 x 100% = 90,9 % sedangkan home address yang

mungkin adalah besaran jumlah primer.

(c) Bucket (table) terbagi 2 yaitu primer dan overflow dengan implementasi primer dan overflow yang ditunjuk oleh pointer.

Hal-hal yang perlu :- Penggunaan implementasi pointer, dari yang lainnya karena pointer

langsung menuju tempat tertentu tanpa melalui blok-blok yang lain.- Pada implementasi pointer, jika terjadi tabrakan pada overflow maka dapat

dilakukan resolusi linier dan tidak mungkin lagi dilemparkan pada bucket primer

(d) Tabel hash (array[0..n-1] of pointer)(1) - Merupakan modifikasi cara yang ketiga

- Digunakan untuk menghindari tabrakan yang masih terjadi bila tempat sudah kosong

- Hanya untuk menyimpan pointer yang akan menuju suatu blok yang akan diisi

- Pointer terhadap array sama dengan hash yang berisi array terhadap pointer dan berisi array dari record

- Kelemahannya adalah semakin banyak tempat yang kosong (tidak terisi)

Bahan Ajar Kuliah : Sinar Sinurat, ST11

12n-1

Pointer

Primer

Overflow

Gambar 6.8. Bucket dengan pointer

01n-1

01

m

01

m

pointer

Gambar 6.9. Hash tabel dengan pointer

Page 12: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

- Jika semua blok sudah terisi / sudah terpakai maka efisiensinya adalah :Jumlah tempat = n + n x m x P x 1 byte = n (mP + 1) byte dimana P adalah panjang recordBlok yang terisi = n x P byteEfisiensi tempat = nP / (nPm + n) x 100%Contoh : n =1000, m=10, p=100, jumlah record = 100 dan memiliki home address yang berbeda, berarti :Jumlah tempat = n x n x m x P = 100 + (100 x 10 x 1000) = 100 byteBlok yang terisi = n x P = 100 x 100 = 10.000Efisiensi tempat = 10.000 / 100.000 x 100% = 9,8 %

(2) - Pointer pertama adalah pointer yang ditentukan dan tidak pernah menabrak- Pointer yang berikutnya pernah menabrak minimal satu kali- Mneyimpan pointer terhadap rangkaian- Penggunaan akan lebih baik jika rangkaian pointernya sama panjang- Kelemahannya tergantung pada banyaknya pointer yang dipakai- Keuntungannya : tidak mungkin terjadi tabrakan, pointer dapat digunakan

atau tidak digunakan tidak masalah sebab sudah disediakan.

Cara menghitung jumlah pointer yang dipakai untuk n buckets dan N record dimana 1 data merepresentasi 1 pointer dan jumlah pointer = N + nContoh : 10 record dan 2 bucket maka pointer yang dipakai = 10 + 2 = 12 kemungkinannya adalah : 0 – 10 , 1 – 9, 2 – 8, 3 – 7, 4 – 6, 5 – 5

(e) Double hashBertujuan untuk memperkecil masing-masing tabrakan menjadi satu kali dan rata-rata 2 key = 1 home address

Bahan Ajar Kuliah : Sinar Sinurat, ST12

Hash table

Gambar 6.10. Hash tabel dengan linked list

01

n

Gambar 6.11. Double hashing

Page 13: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

VI.4. METODE BRENT’SSemua metode resolution dianggap sebagai metode statik yang mengakses

semua item berdasarkan alamat. Kemudian bagaimana dengan metode dinamik, salah satu item akan disimpan sekali pemindahan dan metode juga berlaku untuk beberapa item dengan batasan-batasan tertentu terhadap record-record yang tidak tersimpan dalam home address. Keputusan untuk penambahan proses dengan menyisip salah satu item ke dalam tabel hanya sekali akan tetapi pngambilan boleh beberapa kali.

Primary probe chain dari satu record adalah sekuensi lokasi yang dipesan selama penyisipan atau pemanggilan suatu record. Misalnya primary probe chain pada 39 berisi 3 posisi P1, P2 dan P3 yang berhubungan terhadap alamat-alamat. Posisi awal P1 untuk primary probe chain adalah home address.

P1 6 (28)P2 9 (29)P3 1 (empty)

Saat ke tiga posisi dipesan sebelum lokasi kosong ditemukan maka 3 probe dibutuhkan untuk pemanggilan, kemudian 39 dapat disisip pada home addressnya sendiri, jadi 1 probe yang perlu untuk pemanggilan.

Dari contoh di atas kapan dibolehkan untuk memindahkan 28 ? Dengan mencoba memindahkan 28 ke lokasi berikutnya probe chain (28) menjadi :

P1 6 (28) 8 (empty)P2 9 (29)P3 1 (empty)

Pemindahan suatu record dari primary probe chain disebut secondary probe chain (merepresentasi horijontal line) yang berisi 1 entry saat posisi awal yang dipesan adalah empty.

Pada posisi P (empty) jika 28 dipindah terhadapnya 2 probe kemudian akan dibutuhkan terhadap lokasi 28 tetapi akan mengosongkan lokasi 6 sehingga 39 dapat disimpan dan hanya 1 probe yang perlu untuk menemukan 39, 28 butuh 1 lagi probe untuk mengambil 39 yang akan membutuhkan 2 probe yang lebih kecil untuk jaringan pengurangan dari 1 probe oleh pemindahan 28. Perhatikan diagram berikut pada gambar 6.12.

Bahan Ajar Kuliah : Sinar Sinurat, ST13

Q1 P1,1 Q1 P1,2 Q1 P1,3 Q1 P1,4

Q2 P2,1 Q2 P2,2 Q2 P2,3

Q3 P3,1 Q3 P3,2

Q4 P4,1

P1Q

P2Q

P3Q

P4QP5Q

Gambar 6.12. Metode Brent’s, probe chain dan ordernya

Page 14: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Contoh :Penyimpanan record dengan suatu bucket misalnya : 27, 18, 29, 28, 39, 13, dan 16 dengan menggunakan fungsi hash.Hash (key) = key mod 11 dan fungsi penambah : i(key) = hasil bagi (key/11) mod 11 sehingga :27 mod 11 = 5 terjadi probe 1 kali18 mod 11 = 7 terjadi probe 1 kali29 mod 11 = 7 terjadi collision sehingga 7 + 2 = 9 terjadi 2 kali probe ( i=1, j=1

nilai s pada penyisipan data 29 adalah 2)28 mod 11 = 6 terjadi probe 1 kali39 mod 6 = 6 terjadi collision sehingga kita mencoba untuk memindahkan

dengan i=1 dan j=1 untuk perhitungan nilai s artinya mencoba memindahkan home address 6 satu offset selama probe chain atau dalam kasus ini kita coba memindahkan 28 ke lokasi 8 disebabjkan lokasi 8 kosong dan terjadi probe 2 kali oleh karena itu sisipkan nilai data 39 langsung ke lokasi 6 kemudian pengurangan jumlah probe dengan 1.

13 mod 11 = 2 terjadi probe 1 kali16 mod 11 = 5 terjadi collision, pertama hitung nilai x dari 6 berapa banyak

kombinasi pada i+j lebih kecil dari 6 ? adalah 10. Dengan i=1, j=1 kita mencoba untuk memindahkan ke yang pertama atau home address pada probe chain dari 16 ke posisi berikutnya, khususnya 27 ke lokasi 7 dari lokasi 5 dan home address 7 terisiUntuk i=1 dan j=2 coba pindahkan 27 ke lokasi 9 (posisi ini terisi)Untuk i=2 dan j=1 pindahkan posisi kedua pada probe chain 16, pada kasus ini data 39 yaitu 9 (juga terjadi kegagalan).Selanjutnya i=1 dan j=3 coba pindahkan 27 ke lokasi 0, lokasi tersebut kosong dan lakukan penyisipan maka posisi 5 kosong dan langsung diisikan nilai 16.

Perhatikan diagram berikut pada tabel 6.5. Tabel 6.5. Order data dengan probe chain

Indeks Key012345678910

27-13--1639182829-

Bahan Ajar Kuliah : Sinar Sinurat, ST14

Page 15: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

VI.5. PERFECT HASHINGDikatakan perfect hashing (hashing sempurna) jika ada fungsi h sedemikian

yang dapat mengubah key menjadi alamat unik.H (key) alamat unik

Jika h sedemikian maka tidak diperlukan resolusi dan probe=1. Fungsi perfect hashing adalah memetakan key ke dalam alamat unik jika range alamat potensial adalah sama dengan bilangan key dan fungsi tersebut perfect hashing function minimal (dalam ruang).

Contoh 1 :Data : Ani, Budi, Cahyono, anto, Boris, Cynthia; jika digunakan ukuran bucket=10 maka h(x) = y mod 10 ; dimana y adalah bilangan bulat dari konversi karakter menjadi numeric. Perhatikan tabel 6.6. berikut : Tabel 6.6. Konversi karakter menjadi decimal

Char Decimal Char DecimalABCDE

6566676869

FG

….….Z

7071….….90

Sehingga : h(Ani) = (65+78+73) mod 10 = 216 mod 10 = 6h(Budi) = (66+85+68+73) mod 10 = 292 mod 10 = 2h(Cahyono) = (67+65+72+89+79+78+79) mod 10 = 529 mod 10 = 9 h(Anto) = (65+78+84+79) mod 10 = 306 mod 10 = 6 terjadi collisionh(Boris) = (66+79+82+73+83) mod 10 = 383 mod 10 = 3h(Cynthia) = (67+89+78+84+72+73+65) mod 10 = 528 mod 10 = 8

Contoh 2 :Data: Boris, Becker, Andre Agassi, Pete Sampras, Michael Chang, Thomas Muster,

Stefen Edberg, Goran Ivanisevic, Todd martin, Michael StickUkuran bucket = 10 ; pengujian akan dilakukan :

(1) h(x) = ascii (c1(x)) mod 10 ; akan terjadi collision karena terdapat beberapa inisial nama yang sama

(2) h(x) = (ascii (c1(x)) + ascii (cn(x)) mod 10h(1) = (66+82) mod 10 = 8h(2) = (65+13) mod 10 = 8 terjadi collision

(3) h(x) = asii(ci(x)) mod 10h(1) = (66+79+82+73+83+66+69+67+75+69+82) mod 10 = 1h(2) = (65+78+68+82+69+65+83+83+73) mod 10 = 2h(3) = (80+69+84+69+83+65+77+80+82+65+83) mod 10 = 7h(4) = (77+73+67+72+65+69+76+67+72+65+78+71) mod 10 = 2 terjadi collisiondan seterusnya

(4) h(x) = (h0(x) + h1(x) + h2(x)) mod 10 ; dimana h0 = length (x) ; h1 = ascii(c1(x)) dan h2(x) = ascii(c2(x))h(1) = (12+66+82) mod 10 = 0h(2) = (12+65+73) mod 10 = 0 terjadi collision

Bahan Ajar Kuliah : Sinar Sinurat, ST15

|x| i=1

Page 16: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

(5) h(x) = (h0(x) + h1(x) + h2(x)) mod 10h0 = length (x) ; h1 = T(c1(x)) ; h2 = T(cn(x))T adalah frekwensi / jumlah masing-masing karakter yang terdapat dalam tabel, perhatikan tabel 6.7. berikut :

Tabel 6.7. Tabel asciiHuruf Frekuensi Huruf Frekuensi

ABCDEFGHIJKLMN

1336412145901264

OPQRSTUVWXYZ

4108107120000

h(1) = (12+3+8) mod 10 = 3h(2) = (12+13+9) mod 10 = 4h(3) = (12+1+10) mod 10 = 3 terjadi collision

(6) Kurangi load faktor (menambah ukuran tabel)Tambah ukuran key = 11 sehingga :h(x) = (h0(x) + h1(x) + h2(x)) mod 10h(1) = (12+3+8) mod 11 = 2h(2) = (12+13+9) mod 11 = 3h(3) = (12+1+10) mod 11 = 2 terjadi collisionmaka penambahan ukuran keytidak mempengaruhi tabrakan (collision)

(7) Diberikan tabel sebagai load factor pada tabel 6.8. berikut :Tabel 6.8. Load factor

Huruf Kode Ascii Frekuensi KodeABCDEFGHIJKLMNOP

65666768697071727374757677787980

133641214590126441

78697372817175778274767883828381

Bahan Ajar Kuliah : Sinar Sinurat, ST16

Page 17: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

QRSTUVWXYZ

81828384858687888990

06107120000

81889391868887888990

h(x) = (h0(x) + h1(x) + h2(x)) mod 10 ; dimana h0 = length (x) ; h1 = kode(c1(x)) dan h2(x) = kode(c2(x))h(1) = (12+69+90) mod 10 = 1h(2) = (12+78+82) mod 10 = 2h(3) = (12+81+93) mod 10 = 6h(4) = (13+83+75) mod 10 = 1 Terjadi collision

VI.6. OPEN HASHING (OPEN ADDRESSING)Open hashing (open addressing) digunakan untuk menyimpan pointer dengan

array dan linked list. Misalnya :Const B = NType data = record

Item : tipe dataNext : ^data

EndHash = array[0..B-1] of ^data

Fungsi yang digunakan adalah h(x) = f(x) mod B. Perhatikan diagram berikut dalam gambar 6.13

Pada open hashing bahwa pencarian dilakukan secara sequential dan jika tidak ditemukan akan dicari pada posisi next.

Keuntungan menggunakan open hashing adalah :(1) Kemungkinan penuh tidak ada(2) Collision tidak masalah disebabkan pointer menyediakan 1 tempat kosong untuk

data dimana item data pertama mendapat home address menjadi awal mata rantai dan yang terakhir menjadi ujung mata rantai

Kelemahannya adalah :

Bahan Ajar Kuliah : Sinar Sinurat, ST17

item

item item

item

n

0array

Gambar 6.13. Open addressing

Page 18: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

(1) Banyaknya pointer akan menghabiskan lokasi penyimpanan, jumlah pointer = N x B byte dimana N adalah jumlah data dan B adalah bucket dan biasanya untuk memperpendek mata rantai dilakukan dengan menambah bucket dan penyisipa dilakukan diujung rantai agar lebih cepat dan dapat digunakan stack dimana penyisipan dilakukan diawal pada posisi top (dengan metode First In First Out = FIFO)

(2) Cara pencarian dalam mata rantai secara sequentialHal-hal yang perlu diperhatikan dalam memilih struktur file adalah :

(1) Besar tempat yang digunakan(2) Waktu akses untuk pencarian, penyisipan dan penghapusan

HAPUS DATA DALAM LINKED LISTUntuk menghapus data penelusuran dilakukan dengan dengan menempatkan

posisi diawal list sampai ditemukan item data yang dicari. Misalnya Hapus (c, list)

Algoritmanya adalah :Data.item = ’c’Data.^next = data.^next.^next

Probe rata-rata dari open hashing (PR) adalah PR = 1 + N / B ; N adalah jumlah data dan B adalah bucket. Modifikasi untuk memperbaiki kelemahan pointer digunakan untuk menunjuk array data (menunjuk ke lokasi bucket). Kelemahannya adalah sulit untuk menentukan berapa besar bucket array yang harus disediakan. Perhatikan diagram berikut dalam gambar 6.14.

Bubble sort = N2 (jumlah data)

VI. 7. ALGORITMA CICHELLI’S

Bahan Ajar Kuliah : Sinar Sinurat, ST18

a b c d

012345

ArrayA10 A20 A30 A40 A50

A15 A25 A35 A45 A55

Gambar 6.14. Pointer merujuk array

Page 19: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Dalam algorima cichelli’s terdapat komponen-komponen fungsi yaitu :h0 = length (key) , h1 = first_character (key) , h2 = last_character (key) dan g = T(x) dimana T adalah nilai yang tergabung dengan karakter individu yang terdapat pada key dan untuk proses ini tersedia kode reserve word bahasa pemrograman pascal. Perhatikan tabel 6.9 berikut :

Tabel 6.9. Nilai character pada reserve word pascalCharacter Nilai Character Nilai Character Nilai

ABCDEFGHIJ

111511015315130

KLMNOPQRST

015151301501466

UVWXYZ

14106060

Dalam algoritma Cichelli’s juga menggunakan fungsi perfect hashing. Contoh 1:

Begin terdiri dari 5 karakter, gunakan tabel 4.9. untuk menyelesaikan P.hash (begin) sehingga : P.hash (begin) = 5 + T(h1(key)) + T(h2(key))

= 5 + T (b) + T(n)= 5 + 15 + 13= 33

berarti keyword begin disimpan pada lokasi alamat 33, total reserve word pascal sebanyak 36 . Jumlah reserve word ada sebanyak 36 buah dan butuh waktu 40 menit berarti dari contoh di atas bahwa nilai hash berkisar dari 2 sampai dengan 37 untuk set data yang merupakan fungsi perfect hash minimal.

Contoh 2 :Digunakan algoritma Cichelli’s untuk menyelesaikan sikuensi cat, ant, dog,

gnat, chimp, rat, toad. Asumsikan nilai maksimum yang boleh diberikan terhadap karakter adalah 4. Hal-hal yang perlu diperhatikan :

- Jika tidak dapat menemukan solusi menggunakan 4 coba dengan nilai yang lebih besar.

- Jika nilai maksimum juga masih kecil berarti tidak memiliki solusi- Jika nilai maksimum sangat besar kita tidak akan menemukan solusi

maksimalFrekuensi karakter pertama dan terakhir adalah a=1, c=2, d=2, g=2, p=1, r=1, t=5 sehingga :cat 7ant 6dog 4gnat 7chimp 3rat 6toad 7

Bahan Ajar Kuliah : Sinar Sinurat, ST19

Page 20: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

Berikutnya kita mengurut key dalam order menurun berdasarkan jumlah frekuensi untuk menentukan frekuensi karakter pertama dan terakhir. Langkah berikutnya adalah mengecek order untuk melihat jika beberapa key yang memiliki karakter awal dan akhir yang ditunjukkan pada deretan key sebelumnya dicatat bahwa d dan g dari dog dengan memindahkan “dog” ke posisi sebelumnya dengan “gnat” (urutan ke tiga) sehingga :

toad 7gnat 7dog 4cat 7rat 6ant 6chimp 3

berikan nilai karakter t dan d pertama dengan nilai zero (0) dan toad pada hash ke lokasi 4 maka : t=0, d=0 (sebagai inisial) sehingga P.hash (toad) = 4

Kemudian g dalam gnat dengan zero (0) akan terjadi hash komplit di lokasi 4 kemudian menambahkan nilai dengan 1 kemudian hash berada pada lokasi 5 dimana t=0, d=0, g=1 sehingga :

P.hash (toad) = 4 P.hash(gnat) = 5.Karakter awal dan akhir “dog” pada hash sebelumnya berada pada lokasi 4 dan

hasilnya terjadi hash komplit dengan mengulangi ke key sebelumnya yaitu “gnat” dengan mencoba nilai berikutnya pada g dengan penambahan nilai 2 sehingga : t=0, d=0, g=2 sehingga :

P.hash (toad) = 4 P.hash(gnat) = 6.

dengan melanjutkan langsung terhadap “dog” pada hash berada di lokasi 5 sehingga : t=0, d=0, g=2 sehingga :

P.hash (toad) = 4P.hash(gnat) = 6 P.hash(dog) = 5. Tentukan t=0, d=0, g=2 sehingga : P.hash (toad) = 4P.hash(gnat) = 6P.hash(dog) = 5P.hash(cat) = 3

dengan memberikan nilai r=4 untuk menghindari komplik dengan t=0, d=0, g=2, c=0, r=4 sehingga :

P.hash (toad) = 4P.hash(gnat) = 6P.hash(dog) = 5P.hash(cat) = 3P.hash(rat) = 7

dengan memberikan suatu nilai ke a akan menyebabkan collision dan harus kembali, dengan mencoba t=3 kemudian t=0, d=0, g=3, c=0, r=2 sehingga :

P.hash (toad) = 4P.hash(gnat) = 7P.hash(dog) = 6

Bahan Ajar Kuliah : Sinar Sinurat, ST20

Page 21: BAB I - asanisembiring.files.wordpress.com  · Web viewModel pengalamatan ini kemungkinan masih dapat mengakibatkan tabrakan : Misalnya : Susilo Yudoyono ... Pointer terhadap array

Sistem Berkas

P.hash(cat) = 3P.hash(rat) = 5Kemungkinan akan tetap komplik sewaktu memberikan suatu nilai terhadap a

dan kembali ke awal, dengan memberikan nilai baru terhadap g =4 maka t=0, d=0, g==4m c=4, r=2 a=3 da p=4 sehingga :

P.hash (toad) = 4P.hash(gnat) = 8P.hash(dog) = 7P.hash(cat) = 3P.hash(rat) = 5P.hash(ant) = 6P.hash(chimp) = 9

Bahan Ajar Kuliah : Sinar Sinurat, ST21