Hashing and Hash Tables, Trees & Binary Tree (L)
Session 05
Hasing
Hashing adalah transformasi aritmatik sebuah string dari karakter menjadi nilai yang merepresentasikan string aslinya
Hash Table
Hash table merupakan salah satu struktur data yang digunakan dalam penyimpanan data sementara. Tujuan dari hash table adalah untuk mempercepat pencarian kembali dari banyak data yang disimpan. Hash table menggunakan suatu teknik penyimpanan sehingga waktu yang dibutuhkan untuk penambahan data (insertions), penghapusan data (deletions), dan pencarian data (searching) relatif sama dibanding struktur data atau algoritma yang lain. Kelebihan menggunakan hash table adalah hash table relatif lebih cepat, kecepatan dalam insertsion,deletions relatif sama.
Pada saat kita ingin membuat hash table function ada beberapa hal yang perlu kita perhatikan yaitu ukuran array / table size, key value/nilai yang di dapat dari data(k) , hash value/hash index/indeks yang dituju(h).
Contoh - contoh hash function :
1.Mid-square
2.Division (most common)
3.Folding
4.Digit Extraction
5.Hashing Rotation
1.Mid square
mencari sebuah value dengan cara mengkuadratkan dan kemudian menggunakan jumlah bit yang sesuai dari kotak tengah untuk mendapatkan kunci hash
step :
1.Kuadratkan nilai dari kuncinya (k^2)
2.Meng-extract r bit yang berada di tengah dari hasil yang diperoleh pada langkah pertama
function : h(k) = s
k = key
s = hash key yang diperoleh dengan memilih r bit dari k^2
Contoh mid square
2.Division
Mencari sebuah value menggunakan operator modulus(%). Cara ini adalah cara tersimple untuk menemukan sebuah value dalam hash table.
function : h(z) = z mod M
z = key
m = nilai yang digunakan untuk membagi kunci, biasanya menggunakan bilangan prime, besar dari tabel / besar dari memori yang digunakan.
Contoh division
3.Folding
Metode ini membagi nilai asli ke dalam beberapa bagian, kemudian menambahkan nilai-nilai tersebut, dan mengambil beberapa angka terakhir sebagai nilai hashnya.
step :
1.membagi nilai kunci menjadi beberapa bagian
2.tambahkan bagian-bagiannya
4.Digit Extraction
Metode ini menggunakan cara digit yang ditentukan sebelumnya dari nomor yang diberikan dianggap sebagai alamat hash.
contoh : Misal x = 15,980
jika kita mengekstrak digit 1,2,5 maka kita dapat mendapatkan hash code : 150.
5.Rotation hash
Metode ini menggunakan cara merotasi digit
contoh : alamat hash = 25291
hasil rotasi = 19252
Collision
Collision berarti ada lebih dari satu data yang memiliki hash index yang sama, padahal seperti yang kita ketahui, satu alamat / satu index array hanya dapat menyimpan satu data saja.
Collision(tabrakan pada hash function) bisa saja terjadi, ada dua cara untuk permasalah tersebut yaitu, Linear Probing dan Chaining
1. Linear Probing
Dengan menambahkan suatu interval pada hasil yang diperoleh dari fungsi hash sampai ditemukan lokasi yang belum terisi. Interval yang biasa digunakan adalah
2.Chaining
Metode rantai bisa juga digunakan untuk menyelesaikan tabrakan pada hash function, setiap data yang di dalam array sebenarnya terhubung secara single linked list yang berpasangan.
Tree
Tree merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut Root dan node lain
Konsep tree
DEGREE of TREE = 3
DEGREE of C = 2
HEIGHT = 3
PARENT of C = A
CHILDREN of A = B, C, D
SIBILING of F = G
ANCESTOR of F = A, C
DESCENDANT of C = F, G
istilah-istilah dalam tree :
a.)Root = node yang berada paling atas
b.)Edge = garis yang menghubungkan node
c.)Leaf = node-node yang tidak memilik daun
d.)Degree of node = degree suatu node adalah total subtree
e.)Sibling = node yang mempunyai parent sama
f.)Ancestor = Seluruh node yang terletak sebelum node tertentu dan
terletak pada jalur yang sama.
g.)Descendant = Seluruh node yang terletak sesudah node tertentu
dan terletak pada jalur yang sama.
Binary Tree
Binary tree adalah suatu tree yang selalu mempunyai 2 anak, biasanya ada di kiri dan kanan.Binary tree mempunyai beberapa tipe yaitu, perfect binary tree, balance binary tree, skewed binary tree, dan balance binary tree.
A. Perfect binary tree
Binary tree yang mempunyai kedalaman sama di bagian kiri dan kanan
B.Complete binary tree
Complete binary tree adalah suatu pohon biner yang kedalamannya sebesar n atau n-1 untuk beberapa n. Jadi tidak seperti PBT yang harus sama semuanya, melainkan boleh sama ataupun tidak (namun pada simpul kedua dari terakhir saja). Dan dalam penempatan simpulnya diutamakan yang sebelah kiri yang terpenuhi.
C.Skewed binary tree
Skewed binary tree adalah binary tree yang mempunyai node paling banyak satu, sehingga membuatnya tidak seimbang
D.Balanced Binary Tree
Balanced binary tree adalah suatu pohon biner yang tinggi antara anak sebelah kiri dan kanannya hanya berselisih maksimal satu



















