Anda di halaman 1dari 46

Metode Hash Search

Agung Dermawan,
ST, MM

Konsep Metode Hash Search


Metode Hash Search merupakan salah satu metode
penempatan dan pencarian data yang dilakukan
secara langsung (Direct Access).
Setiap data pada metode Hash Search dapat
ditemukan dengan sekali pemasukan terhadap tabel
yang digunakan untuk menyimpan data tersebut,
karena lokasi data dalam tabel hanya tergantung
pada key yang digunakan dan tidak tergantung pada
key yang lain seperti pada tree.

Konsep Metode Hash Search


Terdapat 2 jenis
umumnya, yakni :

metode

Hash

Search

pada

Close Hash (Hash Tertutup) : Ukuran tabel terbatas


sehingga jumlah data yang dapat ditempatkan juga
terbatas.
Open Hash (Hash Terbuka) : Ukuran tabel terbatas, tetapi
setiap index dari tabel memanfaatkan linked list untuk
menempatkan data sehingga jumlah data tidak terbatas.

Secara umum fungsi Hash (H) adalah fungsi untuk


mengkonversi himpunan key (K) menjadi himpunan
alamat (L).
H (K) = L

Konsep Metode Hash Search


2 aspek penting dalam pemilihan fungsi Hash :
Fungsi Hash (H) harus mudah dan cepat dicari atau
dihitung.
Fungsi Hash (H) sebisa mungkin dapat mendistribusikan
posisi alamat (L) secara uniform, sehingga banyaknya
tabrakan (Collision)
yang
mungkin
terjadi dapat
diminimalkan.

Close Hash
Fungsi Close Hash ditentukan sebagai :
Untuk index tabel mulai dari 0 s/d N 1
H (K) = K mod N
Untuk index tabel mulai dari 1 s/d N
H (K) = (K mod N) + 1
Misalnya L terdiri dari 100 alamat mulai dari index 0, maka
untuk menyimpan data 10347, 87492, dan 34212 adalah :
H (10347) = 10347 mod 100 = 47
H (87492) = 87492 mod 100 = 92
H (34212) = 34212 mod 100 = 12

Close Hash

Close Hash
Jika 2 buah data atau lebih dengan key yang berbeda
tetapi memiliki alamat hash yang sama, maka akan
terjadi tabrakan (Collision).
Solusi untuk mengatasi collision pada hash disebut
Collision Resolution.
Collision Resolution dapat dilakukan dengan 3
strategi, yakni :

Linier Resolution
Overflow
Double Hash

Linier Resolution
Resolusi linear memanfaatkan nilai H (K) yang
sebelumnya untuk mencari alamat kosong dengan
menghitung nilai hash yang baru (Rehashing).
Hi (K) = (Hi 1 (K) + 1) mod N
Hal ini dilakukan hingga ditemukan tempat kosong
untuk menampung K atau sampai dilakukan
penelusuran 1 kali lintasan ukuran tabel dan tidak
ditemukan tempat kosong karena tabel telah penuh.

Linier Resolution

Overflow
Overflow mengatasi / mengurangi frekwensi
tabrakan dengan membagi tabel menjadi 2 buah
yakni tabel Utama dan tabel Overflow, dengan
ketentuan ukuran tabel Utama harus lebih besar
dibandingkan ukuran tabel Overflow.
Penempatan / pencarian data diprioritaskan pada
tabel Utama, jika terjadi tabrakan maka dilakukan
penempatan / pencarian pada tabel Overflow.
Penempatan / pencarian pada Tabel Overflow dapat
dilakukan secara sequential atau menggunakan
fungsi Hash yang baru.

Overflow

Double Hash
Double Hash mirip dengan Overflow, bedanya
ukuran ke-2 tabel adalah sama. Ke-2 tabel dapat
diberi nama T1 dan T2.
Penempatan / pencarian data diprioritaskan pada T1,
jika terjadi tabrakan, maka cek ke T2. Apabila posisi
pada T2 juga terjadi tabrakan, maka dilakukan Linier
Resolution dengan mengecek alamat pada T1 dan T2
hingga diperoleh tempat kosong atau tabel telah
penuh.

Double Hash

Open Hash
Open
Hash
atau
pengandengan
(Chaining)
merupakan strategi lain yang digunakan untuk
mengatasi kemungkinan terjadi tabrakan terhadap
alamat hash. Open hash memanfaatkan prinsip
linked list yang dipasangkan pada setiap alamat
hash.
Setiap alamat hash merupakan kepala tunggal dari
linked list untuk menyimpan data dengan alamat
yang sama.

Open Hash
Open Hash terdiri dari 2 bentuk, yakni :
Modification Open Hash : Terdiri atas Hash Luar dan Hash
Dalam, dimana Hash Luar merupakan tabel alamat hash dan
Hash Dalam untuk menyimpan data. Pada Open Hash
Modifikasi ini, data yang disimpan masih terbatas karena
ukuran Hash Dalam terbatas.
Linked List Open Hash : Semua data akan disimpan ke
dalam linked list yang ditunjukkan oleh alamat hash. Data
yang dapat disimpan tidak terbatas.

Modification Open Hash


Penempatan / pencarian data dimulai dari fungsi
hash dari hash luar, kemudian fungsi hash dari hash
dalam. Jika terjadi tabrakan, maka lakukan Linear
Resolution terhadap hash dalam.
Apabila tabel hash dalam dari alamat hash luar yang
ditunjuk telah penuh, maka lakukan Linear
Resolution terhadap hash luar.

Modification Open Hash

Linked List Open Hash


Penempatan / pencarian data dilakukan dengan
fungsi hash untuk mendapatkan alamat hash.
Alamat hash yang telah diperoleh akan menunjukkan
dimana data akan disisipkan.
Penyisipan data dapat dilakukan secara sisip depan
atau sisip belakang.

Linked List Open Hash

Kelebihan dan Kelemahan


Close hash :
Kelebihan : Akses data lebih cepat
Kelemahan : Jumlah data terbatas

Open hash :
Kelebihan : Selain akses data lebih cepat, jumlah data tidak
dibatasi
Kelemahan : Waktu akses lebih lama karena banyaknya
pointer yang digunakan, yakni
Jumlah Pointer = Ukuran Tabel + (2 x Ukuran Cell)

Probe
Probe digunakan untuk menentukan besar efisiensi
fungsi
hash
dengan
mengukur
banyaknya
perbandingan Key yang diperlukan untuk mencari
alamat dari data.

Jumlah Perbandingan Data

Pr obe
Ukuran Tabel

Contoh Soal
Diketahui data dengan key 25, 76, 63, 98, 58, 19.
Tempatkan data tersebut ke dalam close hash dengan
ukuran tabel = 5 dengan penanganan collision :
Linier Resolution
Overflow dengan ukuran overflow = 3 dan penempatan
overflow dengan fungsi hash
Double Hash

Tempatkan data tersebut ke dalam open hash dengan :


Modification Open Hash dengan ukuran hash luar = 3 dan hash
dalam = 4
Linked List Open Hash dengan ukuran tabel = 3

Kemudian tentukan probe.

Pembahasan Soal
Linier Resolution :
H (25) = 25 mod 5 = 0
H (76) = 76 mod 5 = 1
H (63) = 63 mod 5 = 3
H (98) = 98 mod 5 = 3
H1 (98) = (3 + 1) mod 5 = 4
H (58) = 58 mod 5 = 3
H1 (58) = (3 + 1) mod 5 = 4
H2 (58) = (4 + 1) mod 5 = 0
H3 (58) = (0 + 1) mod 5 = 1
H4 (58) = (1 + 1) mod 5 = 2

Pembahasan Soal
H (19) = 19 mod 5 = 4
H1 (19) = (4 + 1) mod 5 = 0
H2 (19) = (0 + 1) mod 5 = 1
H3 (19) = (1 + 1) mod 5 = 2
H4 (19) = (2 + 1) mod 5 = 3
H5 (19) = (3 + 1) mod 5 = 4 {Ditolak karena tabel penuh}
K

25

76

63

98

58

Probe = (1 + 1 + 1 + 2 + 5) / 5 = 10 / 5 = 2

Pembahasan Soal
Overflow :
H (25) = 25 mod 5 = 0
H (76) = 76 mod 5 = 1
H (63) = 63 mod 5 = 3
H (98) = 98 mod 5 = 3 (Overflow)
HO (98) = 98 mod 3 = 2
H (58) = 58 mod 5 = 3 (Overflow)
HO (58) = 58 mod 3 = 1
H (19) = 19 mod 5 = 4

Pembahasan Soal
K

25

76

63

98

58

19

Probe = (1 + 1 + 1 + 2 + 2 + 1) / 5 = 8 / 5 = 1,6

Pembahasan Soal
Double Hash :
H (25) = 25 mod 5 = 0 (T1)
H (76) = 76 mod 5 = 1 (T1)
H (63) = 63 mod 5 = 3 (T1)
H (98) = 98 mod 5 = 3 (T2)
H (58) = 58 mod 5 = 3
H1 (58) = (3 + 1) mod 5 = 4 (T1)
H (19) = 19 mod 5 = 4 (T2)

Pembahasan Soal
K

25

76

63

98

58

19

Probe = (1 + 1 + 1 + 1 + 2 + 1) / 5 = 7 / 5 = 1,4

Pembahasan Soal
Modification Open Hash :
Hluar (25) = 25 mod 3 = 1
Hdalam (25) = 25 mod 4 = 1
Hluar (76) = 76 mod 3 = 1
Hdalam (76) = 76 mod 4 = 0
Hluar (63) = 63 mod 3 = 0
Hdalam (63) = 63 mod 4 = 3
Hluar (98) = 98 mod 3 = 2
Hdalam (98) = 98 mod 4 = 2
Hluar (58) = 58 mod 3 = 1
Hdalam (58) = 58 mod 4 = 2

Pembahasan Soal
Hluar (19) = 19 mod 3 = 1
Hdalam (19) = 19 mod 4 = 3

Apabila disisipkan lagi key :


Hluar (34) = 34 mod 3 = 1
Hdalam (34) = 34 mod 4 = 2
Hdalam (34) = (2 + 1) mod 4 = 3
Hdalam (34) = (3 + 1) mod 4 = 0
Hdalam (34) = (0 + 1) mod 4 = 1
Hluar (34) = (1 + 1) mod 3 = 2
Hdalam (34) = 34 mod 4 = 2
Hdalam (34) = (2 + 1) mod 4 = 3
SISTEM BERKAS

Hash Search

30

Pembahasan Soal

25

76

63

98

58

19

34

Probe = (1 + 1 + 1 + 1 + 1 + 1 + 6) / 4 = 12 / 4 = 3

SISTEM BERKAS

Hash Search

31

Pembahasan Soal
Linked List Open Hash :
H (25) = 25 mod 3 = 1
H (76) = 76 mod 3 = 1
H (63) = 63 mod 3 = 0
H (98) = 98 mod 3 = 2
H (58) = 58 mod 3 = 1
H (19) = 19 mod 3 = 1

SISTEM BERKAS

Hash Search

32

Pembahasan Soal

25

76

63

98

58

19

Probe = (1 + 2 + 1 + 1 + 3 + 4) / 6 = 12 / 6 = 2

SISTEM BERKAS

Hash Search

33

Perfect Hash Function


Perfect Hash Function merupakan metode hash yang
tidak akan mengalami tabrakan (collision).
Digunakan untuk data-data dalam jumlah besar dan
tidak akan mengalami penyisipan atau perubahan
nilai dalam jangka waktu lama.
Umumnya Perfect Hash Function digunakan untuk
data-data yang berupa string.

SISTEM BERKAS

Hash Search

34

Perfect Hash Function


Hasil dari alamat hash tidak akan menyisakan
tempat kosong pada tabel hash sehingga disebut
sebagai Minimal Perfect Hash.
Salah satu algoritma untuk mencari fungsi minimal
perfect hash untuk string adalah algoritma Cichelli.
H (S) = (size + G (1st char) + G (last char)) mod N
Size = length of String

SISTEM BERKAS

Hash Search

35

Algoritma Cichelli
Algoritma
Tentukan frekwensi dari setiap karakter pertama dan
terakhir dari setiap string.
Hitung total frekwensi dari karakter pertama dan terakhir
untuk setiap string.
Urutkan string berdasarkan total frekwensi secara
descending.
Tentukan nilai dari fungsi G untuk setiap karakter pertama
dan terakhir dari setiap string.
Tentukan alamat hash H, jika terjadi tabrakan, maka kembali
ke langkah sebelumnya dan tambahkan nilai fungsi G (nilai
fungsi G harus sesuai dengan himpunan subset yang telah
diketahui sebelumnya).
SISTEM BERKAS

Hash Search

36

Minimal Perfect Hash


Tabel hash dinyatakan valid / sah apabila tidak ada
ruang kosong atau tabrakan.
Tabrakan muncul jika ada 2 string atau lebih dimana
karakter pertama dan terakhir untuk string tersebut
adalah sama serta panjang string adalah sama,
misalnya DoublE dan DeletE.
Penanganan tabrakan dapat dilakukan dengan 2 cara
yakni :
Memanfaatkan fungsi G untuk alternatif sembarang karakter
ke-3 dari string selain karakter pertama dan terakhir.
Memisahkan string menjadi 2 string.

SISTEM BERKAS

Hash Search

37

Contoh Soal
Tempatkan 9 string berikut ke dalam tabel dengan
algoritma Cichelli :
DO
DOWNTO
ELSE
END
IF
IN
TYPE
VAR
WITH
Dengan subset {0, 1, 2, 3}

SISTEM BERKAS

Hash Search

38

Pembahasan Soal
Tentukan frekwensi dari setiap karakter pertama dan
terakhir dari setiap string :
D

Hitung total frekwensi dari karakter pertama dan


terakhir untuk setiap string :
DO

D + O 3 + 2 5 IN

I+N

2+1 3

DOWNTO D + O 3 + 2 5 TYPE

T+E 1+4 5

ELSE

E + E 4 + 4 8 VAR

V+R 1+1 2

END

E + D 4 + 3 7 WITH

W+H 1+1 2

IF

I+F

SISTEM BERKAS

2+1 3
Hash Search

39

Pembahasan Soal
Urutkan string berdasarkan total frekwensi secara
descending :
1 ELSE

4 DOWNTO 7 IN

2 END

5 TYPE

8 VAR

3 DO

6 IF

9 WITH

Hitung fungsi G untuk setiap string :


ELSE
: Length = 4
G (E) = 0 H (S)

SISTEM BERKAS

= 4 + G (E) + G (E)
=4+0+0=4

Hash Search

{4}

40

Pembahasan Soal
END
: Length = 3
G (D) = 0 H (S)
= 3 + G (E) + G (D)
= 3 + 0 + 0 = 3 {34}
DO : Length = 2
G (O) = 0 H (S)
= 2 + G (D) + G (O)
= 2 + 0 + 0 = 2 {234}
DOWNTO : Length = 6
H (S)
= 6 + G (D) + G (O) = 6 + 0 + 0 = 6
{2346}
TYPE
: Length = 4
G (T) = 0 H (S)
= 4 + G (T) + G (E)
=4+0+0=4
G (T) = 1 H (S)
= 4 + 1 + 0 = 5 {23456}

SISTEM BERKAS

Hash Search

41

Pembahasan Soal
IF

: Length = 2
G (I) = 0; G (F) = 0 H (S)

= 2 + G (I) + G (F)
=2+0+0=2
=2+1+0=3
=2+2+0=4
=2+3+0=5
=2+3+1=6
= 2 + 3 + 0 = 7 {234567}

G (I) = 1; G (F) = 0 H (S)


G (I) = 2; G (F) = 0 H (S)
G (I) = 3; G (F) = 0 H (S)
G (I) = 3; G (F) = 1 H (S)
G (I) = 3; G (F) = 2 H (S)
IN
: Length = 2
G (N) = 0 H (S)
= 2 + G (I) + G (N)
=2+3+0=5
G (N) = 1 H (S)
=2+3+1=6
G (N) = 2 H (S)
=2+3+2=7
G (N) = 3 H (S)
=2+3+3=8
SISTEM BERKAS

Hash Search

{2345678}
42

Pembahasan Soal
VAR
: Length = 3
G (V) = 0; G (R) = 0 H (S)
G (V) = 1; G (R) = 0 H (S)
G (V) = 2; G (R) = 0 H (S)
G (V) = 3; G (R) = 0 H (S)
G (V) = 3; G (R) = 1 H (S)
G (V) = 3; G (R) = 2 H (S)
G (V) = 3; G (R) = 3 H (S)

SISTEM BERKAS

Hash Search

= 3 + G (V) + G (R)
=3+0+0=3
=3+1+0=4
=3+2+0=5
=3+3+0=6
=3+3+1=7
=3+3+2=8
=3+3+3=9
= 9 mod 9 = 0 {02345678}

43

Pembahasan Soal
WITH
: Length = 4
G (W) = 0; G (H) = 0 H (S)
G (W) = 1; G (H) = 0 H (S)
G (W) = 2; G (H) = 0 H (S)
G (W) = 3; G (H) = 0 H (S)
G (W) = 3; G (H) = 1 H (S)
G (W) = 3; G (H) = 2 H (S)
G (W) = 3; G (H) = 3 H (S)

SISTEM BERKAS

Hash Search

= 4 + G (W) + G (H)
=4+0+0=4
=4+1+0=5
=4+2+0=6
=4+3+0=7
=4+3+1=8
=4+3+2=9=0
= 4 + 3 + 3 = 10
= 10 mod 9 = 1 {012345678}

44

Pembahasan Soal
Sehingga diperoleh G-Values adalah :
E=D=O=0
T=1
F=2
I=N=V=R=W=3
Hasil akhir pada tabel hash adalah :

SISTEM BERKAS

Hash Search

45

Tanya Jawab

SISTEM BERKAS

Hash Search

46