• Tidak ada hasil yang ditemukan

LAPORAN ALGORITMA DAN STRUKTUR DATA II (1)

N/A
N/A
Protected

Academic year: 2018

Membagikan "LAPORAN ALGORITMA DAN STRUKTUR DATA II (1)"

Copied!
13
0
0

Teks penuh

(1)

MAKALAH “HASH TABLE”

ALGORITMA DAN STRUKTUR DATA II

Disusun Oleh :

Syukur Jaya Mendrofa 201501072

Kelas: C

Dosen Pengampu :

Oskar Ika Adi Nugroho, ST., MT

JURUSAN SISTEM INFORMASI

SEKOLAH TINGGI ILMU KOMPUTER “YOS SUDARSO”

PURWOKERTO

(2)

BAB I

PENDAHULUAN

A. Latar Belakang

Pada metode-metode pencarian yang telah kita pelajari, secara umum banyaknya

pembandingan untuk mencari suatu data atau rekaman yang diinginkan tergantung dari

banyaknya data atau rekaman yang diketahui. Jika sebuah data atau rekaman bisa ditemukan

dengan sekali pemasupan terhadap tabel yang digunakan untuk menyimpan data atau

rekaman tersebut, maka lokasi data atau rekaman dalam tabel hanya tergantung dari kunci

yang digunakan dan tidak tergantung pada kunci yang lain, seperti dalam pohon. Cara yang

paling efisien untuk mengorganisir tabel ini adalah dengan menggunakan larik (array). Jika

kunci berupa integer, kunci tersebut sekaligus bisa digunakan sebagai subskrip dari larik

(array) yang dimaksud.

B. Rumusan Masalah

1. Pengenalan hash table, ukuran hash table (H-size), load factor () dan fungsi hash

table.

2. Metode-metode pada fungsi hash table dan contoh fungsi hash table.

3. Tabrakan pada fungsi hash table.

C. Tujuan

Tujuan dari pembuatan makalah ini adalah :

 Sebagai salah satu tugas dari matakuliah Algoritma dan Struktur Data II.

 Memahami pengertian dari hash table, ukuran hash table (H-size), load factor () dan

fungsi hash table.

(3)

 Mengenal strategi umum untuk menangani collision (tabrakan) pada fungsi hash table.

BAB II

PEMBAHASAN

A. PENGENALAN HASH TABLE

 Hashing digunakan untuk menyimpan data yang cukup besar pada ADT yang disebut

hash table.

Ukuran Hash table (H-size) biasanya lebih besar dari jumlah data yang hendak disimpan.

Load factor

(

)

adalah perbandingan antara data yang disimpan dengan ukuran

hash table.

 Fungsi hash memetakan elemen pada indeks dari hash table.

 Hashing adalah teknik untuk melakukan penambahan, penghapusan dan pencarian

dengan constant average time.

 Untuk menambahkan data atau pencarian, ditentukan key dari data tersebut dan

digunakan sebuah fungsi hash untuk menetapkan lokasi untuk key tersebut.

Hash tables adalah arrays dengan sel-sel yang ukurannya telah ditentukan dan dapat

berisi data atau key yang berkesesuaian dengan data.

 Untuk setiap key, digunakan fungsi hash untuk memetakan key pada bilangan dalam

(4)

Fungsi hash harus memiliki sifat berikut:

 Mudah dihitung.

 Dua key yang berbeda akan dipetakan pada dua sel yang berbeda pada array. (secara

umum tidak bisa berlaku, mengapa? ).

 Dapat dicapai dengan menggunakan direct-address table dimana semesta dari

key relatif kecil.

 Membagi key secara rata pada seluruh sel.

 Sebuah fungsi hash sederhana adalah menggunakan fungsi mod (sisa bagi) dengan

bilangan prima.

 Dapat menggunakan manipulasi digit dengan kompleksitas rendah dan distribusi key

yang rata.

B. METODE-METODE PADA FUNGSI HASH TABLE

1. Metode Melipat (folding)

Metode ini membagi nilai asli ke dalam beberapa bagian, kemudian menambahkan

nilai-nilai tersebut, dan mengambil beberapa angka terakhir sebagai nilai hashnya.

Contoh :

Phone no: 3-group index

7313018 73+13+018 104

5392309 53+92+309 454

(5)

2. Metode Pembagian Bersisa (Modular Arithmetic)

Melakukan konversi data ke bentuk bilangan bulat, dibagi dengan ukuran hash

table, dan mengambil hasil sisa baginya sebagai indeks.

Contoh :

Phone no: 2-group index

3. Metode Transformasi Radiks (radix transformation)

Karena nilai dalam bentuk digital, basis angka atau radiks dapat diganti sehingga

menghasilkan urutan angka-angka yang berbeda. Contohnya nilai desimal (basis 10)

bisa ditransformasikan kedalam heksadesimal (basis 16). Digit atas hasilnya bisa

dibuang agar panjang nilai hash dapat seragam.

4. Metode Pengaturan ulang digit (digit rearrangement)

Metode ini mengubah urutan digit dengan pola tertentu. Contohnya mengambil

digit ke tiga sampai ke enam dari nilai aslinya, kemudian membalikan urutannya dan

menggunakan digit yang terurut terbalik itu sebagai nilai hash. Fungsi hash yang

bekerja dengan baik untuk penyimpanan pada database belum tentu bekerja dengan

baik untuk keperluan kriptografi atau pengecekan kesalahan. Ada beberapa fungsi hash

terkenal yang digunakan untuk keperluan kriptografi. Diantaranya adalah fungsi hash

message-diggest, contohnya MD2, MD4, dan MD5, digunakan untuk menghasilkan

nilai hash dari tanda tangan digital yang disebut messagediggest. Ada pula Secure Hash

7313018 731+3018 3749 % 100 = 49

5392309 539+2309 2848 % 100 = 48

(6)

Algorithm (SHA), sebuah algoritma standar yang menghasilkan message-diggest yang

lebih besar (60-bit) dan serupa dengan MD4.

Cara memilih Fungsi hash :

Sebuah fungsi hash yang bagus memiliki dua kriteria:

1. Harus dapat cepat dihitung.

2. Harus meminimalkan juga collisions yang terjadi.

Contoh fungsi Hash

Fungsi Hash untuk string

X = 128

A3 X3 + A2 X2 + A1 X1 + A0 X0

(((A3 X) + A2) X + A1) X + A0

Hasil dari fungsi hash jauh lebih besar dari ukuran table, sehingga perlu di modulo dengan

ukuran hash table.

Contoh fungsi Hash

int hash(String key, int tableSize)

{

int hashVal = 0;

for (int i=0; i < key.length(); i++) {

hashVal = (hashVal * 128+ key.charAt(i)) % tableSize;

}

return hashVal % tableSize;

(7)

Modulo :

(A + B) % C = (A % C + B % C) % C

(A * B) % C = (A % C * B % C) % C

int hash(String key, int tableSize)

{

int hashVal = 0;

for (int i=0; i < key.length(); i++)

{

hashVal = (hashVal * 37+ key.charAt(i));

}

hashVal %= tableSize;

if (hashVal < 0)

{

hashVal += tableSize;

}

return hashVal;

}

int hash(String key, int tableSize) {

int hashVal = 0;

for (int i=0; i < key.length(); i++)

{

(8)

}

return hashVal % tableSize; }

C. TABRAKAN PADA FUNGSI HASH

Collision Resolution: Penyelesaian bila terjadi collision (tabrakan).

 Dikatakan terjadi collision jika dua buah keys dipetakan pada sebuah sel.

Collision bisa terjadi saat melakukan insertion.

 Dibutuhkan prosedur tambahan untuk mengatasi terjadinya collision.

Ada dua strategi umum untuk menangani collision (tabrakan), yaitu :

1. Closed Hashing (Open Addressing)

 Ide: mencari alternatif sel lain pada tabel.

 Pada proses insertion, coba sel lain sesuai urutan dengan menggunakan fungsi

pencari urutan seperti berikut:

 hi (x) = ( hash (x) + f (i) ) mod H-size f (0) = 0

 Fungsi f digunakan sebagai pengatur strategy collisionresolution.

 Bagaimana bentuk fungsi f ?

Beberapa strategi/alternatif untuk menentukan bentuk fungsi f, yaitu:

1) Linear probing

 Kompleksitas dari teknik ini bergantung pada nilai

(

)

(load factor).

 Definisi

(

)

(load factor) adalah angka antara 0 dan 1 yang digunakan untuk

menaikkan kapasitas tabel hash jika sudah tidak mencukupi untuk menampung

pasangan kunci dan data. Penambahan kapasitas dilakukan sebesar load factor kali

kapasitas semula.:

(9)

(

)

(Load factor) dari T = n/m

 Linear Probing tidak disarankan bila:

(

)

> 0.5

 Linear Probing hanya disarankan untuk ukuran hash table yang ukurannya lebih

besar dua kali dari jumlah data.

2) Quadratic probing

 Menghindari primary clustering dengan menggunakan fungsi:

f(i) = i2

 Menimbulkan banyak permasalahan bila hash table telah terisi lebih dari setengah.

 Perlu dipilih ukuran hash table yang bukan bilangan kuadrat.

 Dengan ukuran hash table yang merupakan bilangan prima dan hash table yang

terisi kurang dari setengah, strategy quadratic probe dapat selalu menemukan lokasi

untuk setiap elemen baru.

 Dapat melakukan increment bila terjadi collision

 Perhatikan bahwa fungsi quadratic dapat dijabarkan sebagai berikut:

f(i) = i2 = f(i-1) + 2 i - 1.

 Menimbulkan second clustering. Elemen-elemen yang menurut perhitungan hash

diletakkan pada lokasi sel yang sama, diarahkan pada sel pengganti yang sama.

3) Double hashing

 fungsi untuk collisionresolution disusun dengan fungsi hash seperti :

f(i) = i * hash2 (x)

(10)

 Harus hati-hati dalam memilih fungsi hash kedua untuk menjamin agar tidak

menghasilkan nilai 0 dan mem-probe ke seluruh sel.

 Salah satu syaratnya ukuran hash table haruslah bilangan prima.

2. Open Hashing (Chaining)

Menyediakan sebuah linked list untuk setiap elemen yang memiliki nilai hash

sama.

Tiap sel pada hash table berisi pointer ke sebuah linked list yang berisikan

data/elemen.

Analisa Open Hashing :

 Untuk pencarian, gunakan fungsi hash untuk menentukan linked

 list mana yang memiliki elemen yang dicari, kemudian lakukan pembacaan

terhadap linked list tersebut.

 Penghapusan dilakukan pada linked list setelah pencarian elemen dilakukan.

 Dapat saja digunakan struktur data lain selain linked list untuk menyimpan

elemen yang memiliki fungsi hash yang sama tersebut.

 Kelebihan utama dari metode ini adalah dapat menyimpan data yang tak terbatas.

(dynamic expansion).

 Kekurangan utama adalah penggunaan memory pada tiap sel.

 Secara umum panjang dari linked list yang dihasilkan sejalan dengan nilai .

 Kompleksitas insertion bergantung pada fungsi hash dan insertion pada

linked-list.

 Untuk pencarian, kompleksitasnya adalah waktu konstan dalam mengevaluasi

fungsi hash + pembacaan list.

(11)

 Average case bergantung pada

(

)

.

 Aturan umum untuk Open Hashing adalah untuk menjaga agar:

(

)

1

.

 Digunakan untuk data yang ukuran-nya dinamic.

Fungsi dan analisa Open Hashing:

 Menambahkan sebuah elemen ke dalam tabel:

Dilakukan dengan menambahkan elemen pada akhir atau awal linked- list yang sesuai

dengan nilai hash.

 Bergantung apakah perlu ada pengujian nilai duplikasi atau tidak.

 Dipengaruhi berapa sering elemen terakhir akan diakses.

Hal-hal lain yang umum dan perlu diperhatikan pada metode closed hashingresolutions: 1. Proses menghapus agak membingungkan karena tidak benar-benar dihapus.

2. Secara umum lebih sederhana dari pada Open Hashing. 3. Bagus bila diperkirakan tidak akan terjadi banyak collision.

4. Jika pencarian berdasarkan fungsi hash gagal, kemungkinan harus mencari/membaca seluruh tabel.

(12)

BAB III

PENUTUP

A. Kesimpulan

Hash tables adalah arrays dengan sel-sel yang ukurannya telah ditentukan dan dapat berisi data atau key yang berkesesuaian dengan data. Hash tables juga merupakan sebuah struktur data yang terdiri atas sebuah tabel dan fungsi yang bertujuan untuk memetakan nilai kunci yang unik untuk setiap record (baris) menjadi angka (hash) lokasi record tersebut dalam sebuah tabel. Keunggulan dari struktur hash table ini adalah waktu aksesnya yang cukup cepat, jika record yang dicari langsung berada pada angka hash lokasi penyimpanannya. Akan tetapi pada kenyataannya sering sekali ditemukan hash table yang

record-recordnya mempunyai angka hash yang sama (bertabrakan). Hashing digunakan sebagai metode untuk menyimpan data dalam sebuah array agar penyimpanan data, pencarian data, penambahan data, dan penghapusan data dapat dilakukan dengan cepat. Ide dasarnya adalah menghitung posisi record yang dicari dalam array, bukan membandingkan

record dengan isi pada array. Fungsi yang mengembalikan nilai atau kunci disebut fungsi

hash (hash function) dan array yang digunakan disebut tabel hash (hash table). Hash table

menggunakan struktur data array asosiatif yang mengasosiasikan record dengan sebuah

field kunci unik berupa bilangan (hash) yang merupakan representasi dari record tersebut.

B. Saran

Puji syukur kepada Tuhan yang maha esa berakhirlah pembahasan hash table dalam

makalah ini. Saya sadar bahwa makalah ini masih jauh dari kata sempurna. Oleh karena itu

kritik dan saran yang kondusif begitu saya harapkan untuk memperbaiki segala kekurangan

dan kesalah saya supaya kedepannya saya dapat membuat makalah yang lebih baik dan

tentunya lebih bermanfaat dan menjadi wadah pengetahuan dan informasi bagi banyak

(13)

DAFTAR PUSTAKA

1. www.academia.edu/25537608/TABEL_HASH_HASH_TABLE

2. https://www.scribd.com/doc/98523911/Pemba-Has-an-Hashing

3. http://en.wikipedia.org/wiki/SHA_hash_functions

4. https://endahpermatasari24.wordpress.com/

Referensi

Dokumen terkait

Array dua dimensi sering digambarkan sebagai sebuah matriks, merupakan perluasan dari array satu dimensi. Jika array satu dimensi hanya terdiri dari sebuah baris dan beberapa

 Sebuah struktur bisa terdiri dari elemen atau record. struktur yang

Berdasarkan dari hasil praktikum dan tugas analisa video hash table yang telah saya kerjakan, saya dapat mengambil kesimpulan hashing digunakan sebagai metode untuk

 Di dalam class Hash dibuat sebuah fungsi pada kelompok public yaitu int Hash.. (string key): kemudian fungsi tersebut di deklarasikan kedalam

Algoritma ini diawali dengan membuat array heap dengan membangun tumpukan dari kumpulan data kemudian memindahkan data dari terbesar ke bagian belakang dari sebuah tabel hasil,

Berdasarkan dari tugas praktikum yang telah saya kerjakan saya dapat menyimpulkan bahwa graph berarah bisa digunakan untuk membuat simpul dan busur beserta bobot dan arah yang

Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik, semikian juga sebaliknya.. Menilai

 Satu atau beberapa atribut yang mempunyai nilai unik sehingga dapat digunakan untuk membedakan data pada suatu baris/record dengan baris lain pada suatu entitas  Macam