Sistem Berkas 8 Hash Search (komputer)

46
Metode Hash Search Metode Hash Search Agung Dermawan, ST, MM

description

materi teknik informatika

Transcript of Sistem Berkas 8 Hash Search (komputer)

  • Metode Hash SearchAgung Dermawan, ST, MM

    Hash Search

  • Konsep Metode Hash SearchMetode 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 SearchTerdapat 2 jenis metode Hash Search pada umumnya, yakni :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 Search2 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 HashFungsi Close Hash ditentukan sebagai :Untuk index tabel mulai dari 0 s/d N 1H (K) = K mod NUntuk index tabel mulai dari 1 s/d NH (K) = (K mod N) + 1Misalnya 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 = 92H (34212) = 34212 mod 100 = 12

  • Close Hash

    10347

    0

    1

    87492

    43212

    12

    47

    92

    98

    99

    10347 mod 100 = 47

    43212 mod 100 = 12

    87492 mod 100 = 92

  • Close HashJika 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 ResolutionOverflowDouble Hash

  • Linier ResolutionResolusi 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 NHal 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

    0

    1

    K mod N = 3

    A

    B

    K

    2

    3

    4

    5

    6

    7

    8

    9

    10

  • OverflowOverflow 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

    0

    1

    K mod N = 3

    A

    B

    2

    3

    4

    5

    6

    7

    8

    9

    10

    K

    Overflow

    0

    1

    2

    3

    4

    Sequential /Fungsi Hash

  • Double HashDouble 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

    0

    1

    K mod N = 3

    A

    C

    E

    2

    3

    4

    5

    6

    7

    8

    9

    10

    B

    D

    K

    T1

    T2

  • Open HashOpen 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 HashOpen 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 HashPenempatan / 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

    Hash Luar

    Hash Dalam

    0

    1

    N1

    0

    1

    M1

  • Linked List Open HashPenempatan / 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

    0

    1

    N1

  • Kelebihan dan KelemahanClose hash :Kelebihan : Akses data lebih cepatKelemahan : Jumlah data terbatasOpen hash :Kelebihan : Selain akses data lebih cepat, jumlah data tidak dibatasiKelemahan : Waktu akses lebih lama karena banyaknya pointer yang digunakan, yakniJumlah Pointer = Ukuran Tabel + (2 x Ukuran Cell)

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

  • Contoh SoalDiketahui data dengan key 25, 76, 63, 98, 58, 19.Tempatkan data tersebut ke dalam close hash dengan ukuran tabel = 5 dengan penanganan collision :Linier ResolutionOverflow dengan ukuran overflow = 3 dan penempatan overflow dengan fungsi hashDouble HashTempatkan data tersebut ke dalam open hash dengan :Modification Open Hash dengan ukuran hash luar = 3 dan hash dalam = 4Linked List Open Hash dengan ukuran tabel = 3Kemudian tentukan probe.

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

    25

    76

    0

    1

    58

    63

    98

    2

    3

    4

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

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

    K2576639858T11125

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

    25

    76

    0

    1

    63

    19

    2

    3

    4

    58

    98

    Overflow

    0

    1

    2

  • Pembahasan Soal

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

    K257663985819T111221

  • Pembahasan SoalDouble 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 = 3H1 (58) = (3 + 1) mod 5 = 4 (T1)H (19) = 19 mod 5 = 4 (T2)

    25

    76

    0

    1

    63

    58

    2

    3

    4

    98

    19

    T1

    T2

  • Pembahasan Soal

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

    K257663985819T111121

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

  • SISTEM BERKASHash Search*Pembahasan SoalHluar (19) = 19 mod 3 = 1Hdalam (19) = 19 mod 4 = 3Apabila disisipkan lagi key : Hluar (34) = 34 mod 3 = 1Hdalam (34) = 34 mod 4 = 2Hdalam (34) = (2 + 1) mod 4 = 3Hdalam (34) = (3 + 1) mod 4 = 0Hdalam (34) = (0 + 1) mod 4 = 1Hluar (34) = (1 + 1) mod 3 = 2Hdalam (34) = 34 mod 4 = 2Hdalam (34) = (2 + 1) mod 4 = 3

    Hash Search

  • SISTEM BERKASHash Search*Pembahasan Soal

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

    K25766398581934T1111116

    Hash Search

    63

    19

    76

    25

    58

    3

    98

    0

    1

    2

    0

    1

    2

    34

    Hash Luar

    Hash Dalam

  • SISTEM BERKASHash Search*Pembahasan SoalLinked List Open Hash :H (25) = 25 mod 3 = 1H (76) = 76 mod 3 = 1H (63) = 63 mod 3 = 0H (98) = 98 mod 3 = 2H (58) = 58 mod 3 = 1H (19) = 19 mod 3 = 1

    Hash Search

  • SISTEM BERKASHash Search*Pembahasan Soal

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

    K257663985819T121134

    Hash Search

    19

    0

    1

    2

    63

    25

    98

    76

    58

  • SISTEM BERKASHash Search*Perfect Hash FunctionPerfect 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.

    Hash Search

  • SISTEM BERKASHash Search*Perfect Hash FunctionHasil 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 NSize = length of String

    Hash Search

  • SISTEM BERKASHash Search*Algoritma CichelliAlgoritmaTentukan 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).

    Hash Search

  • SISTEM BERKASHash Search*Minimal Perfect HashTabel 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.

    Hash Search

  • SISTEM BERKASHash Search*Contoh SoalTempatkan 9 string berikut ke dalam tabel dengan algoritma Cichelli :DODOWNTOELSEENDIFINTYPEVARWITHDengan subset {0, 1, 2, 3}

    Hash Search

  • SISTEM BERKASHash Search*Pembahasan SoalTentukan frekwensi dari setiap karakter pertama dan terakhir dari setiap string :

    Hitung total frekwensi dari karakter pertama dan terakhir untuk setiap string :

    DOEIFNTVRWH32421111111

    DOD + O3 + 25INI + N2 + 13DOWNTOD + O3 + 25TYPET + E1 + 45ELSEE + E4 + 48VARV + R1 + 12ENDE + D4 + 37WITHW + H1 + 12IFI + F2 + 13

    Hash Search

  • SISTEM BERKASHash Search*Pembahasan SoalUrutkan string berdasarkan total frekwensi secara descending :

    Hitung fungsi G untuk setiap string :ELSE: Length = 4G (E) = 0 H (S)= 4 + G (E) + G (E)= 4 + 0 + 0 = 4{4}

    1ELSE4DOWNTO7IN2END5TYPE8VAR3DO6IF9WITH

    Hash Search

  • SISTEM BERKASHash Search*Pembahasan SoalEND: Length = 3G (D) = 0 H (S)= 3 + G (E) + G (D)= 3 + 0 + 0 = 3{34}DO: Length = 2G (O) = 0 H (S)= 2 + G (D) + G (O)= 2 + 0 + 0 = 2{234}DOWNTO: Length = 6H (S)= 6 + G (D) + G (O) = 6 + 0 + 0 = 6{2346}TYPE: Length = 4G (T) = 0 H (S)= 4 + G (T) + G (E)= 4 + 0 + 0 = 4G (T) = 1 H (S)= 4 + 1 + 0 = 5{23456}

    Hash Search

  • SISTEM BERKASHash Search*Pembahasan SoalIF: Length = 2G (I) = 0; G (F) = 0 H (S)= 2 + G (I) + G (F)= 2 + 0 + 0 = 2G (I) = 1; G (F) = 0 H (S)= 2 + 1 + 0 = 3G (I) = 2; G (F) = 0 H (S)= 2 + 2 + 0 = 4G (I) = 3; G (F) = 0 H (S)= 2 + 3 + 0 = 5G (I) = 3; G (F) = 1 H (S)= 2 + 3 + 1 = 6G (I) = 3; G (F) = 2 H (S)= 2 + 3 + 0 = 7{234567}IN: Length = 2G (N) = 0 H (S)= 2 + G (I) + G (N)= 2 + 3 + 0 = 5G (N) = 1 H (S)= 2 + 3 + 1 = 6G (N) = 2 H (S)= 2 + 3 + 2 = 7G (N) = 3 H (S)= 2 + 3 + 3 = 8{2345678}

    Hash Search

  • SISTEM BERKASHash Search*Pembahasan SoalVAR: Length = 3G (V) = 0; G (R) = 0 H (S)= 3 + G (V) + G (R)= 3 + 0 + 0 = 3G (V) = 1; G (R) = 0 H (S)= 3 + 1 + 0 = 4G (V) = 2; G (R) = 0 H (S)= 3 + 2 + 0 = 5 G (V) = 3; G (R) = 0 H (S)= 3 + 3 + 0 = 6G (V) = 3; G (R) = 1 H (S)= 3 + 3 + 1 = 7G (V) = 3; G (R) = 2 H (S)= 3 + 3 + 2 = 8G (V) = 3; G (R) = 3 H (S)= 3 + 3 + 3 = 9= 9 mod 9 = 0{02345678}

    Hash Search

  • SISTEM BERKASHash Search*Pembahasan SoalWITH: Length = 4G (W) = 0; G (H) = 0 H (S)= 4 + G (W) + G (H)= 4 + 0 + 0 = 4G (W) = 1; G (H) = 0 H (S)= 4 + 1 + 0 = 5G (W) = 2; G (H) = 0 H (S)= 4 + 2 + 0 = 6G (W) = 3; G (H) = 0 H (S)= 4 + 3 + 0 = 7G (W) = 3; G (H) = 1 H (S)= 4 + 3 + 1 = 8G (W) = 3; G (H) = 2 H (S)= 4 + 3 + 2 = 9 = 0G (W) = 3; G (H) = 3 H (S)= 4 + 3 + 3 = 10= 10 mod 9 = 1 {012345678}

    Hash Search

  • SISTEM BERKASHash Search*Pembahasan SoalSehingga diperoleh G-Values adalah :E = D = O = 0T = 1F = 2I = N = V = R = W = 3Hasil akhir pada tabel hash adalah :

    Hash Search

    ELSE

    END

    DO

    DOWNTO

    TYPE

    IF

    IN

    VAR

    WITH

    0

    1

    2

    3

    4

    5

    6

    7

    8

  • SISTEM BERKASHash Search*Tanya Jawab

    Hash Search

    *