Hashing, Hash Table dan Binary Tree
Hashing, Hash Table dan Binary Tree
Hashing
Hashing adalah teknik yang digunakan untuk secara unik mengidentifikasi objek tertentu dari sekelompok objek serupa. Hashing dilakukan dengan membuat fungsi hash. Hasil dari fungsi hash dimasukkan ke dalam hash table.
Hash Table adalah salah satu contoh implementasi linked list dalam data struktur. Hash table digunakan dalam penyimpanan data sementara.
Ada banyak cara untuk hashing string ke sebuah key:
1. Mid-square
2. Division (most common)
3. Folding
4. Digit Extraction
5. Rotating Hash
Contoh hash table yang kurang efisien dan yang efisien:
Contoh yang kurang efisien
Contoh fungsi hash yang efisien:
Sebaik apapun fungsi hash yang kita buat, collision tidak dapat dihindari, oleh karena itu ada banyak teknik untuk menghindari collision:
1. Separate Chaining (Open Hashing)
Separate Chahining adalah teknik yang paling banyak digunakan untuk resolusi tabrakan. Separate Chaining biasanya diimplementasikan menggunakan linked list. Dalam Separare Chaining, setiap elemen dari hash table adalah linked list. Untuk menyimpan elemen ke dalam table hash, kita harus memasukkannya ke linked list tertentu. Jika ada collision (Dua elemen berbeda yang memiliki hash yang sama) maka kita harus menyimpan kedua elemen tersebut ke dalam linked list yang sama.
2. Linear Probing (Open Addressing or Closed Hashing)
Dalam Open Addressing, daripada menggunakan linked list, semua catatan entri disimpan dalam array itu sendiri. Ketika entri baru harus dimasukkan, indeks hash dari nilai hash dihitung dan kemudian array diperiksa (dimulai dengan indeks hash). Jika slot di indeks hash tidak diisi, maka entri dimasukkan ke dalam slot di indeks yang telah di hashed yang lain itu melanjutkan dalam beberapa urutan penyelidikan sampai menemukan slot kosong.
BINARY 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 lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama lainnya (disebut subtree). Untuk jelasnya, di bawah akan diuraikan istilah-istilah umum dalam tree :
A) Predecessor : node yang berada diatas node tertentu.
B) Successor : node yang berada di bawah node tertentu.
C) Ancestor : seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama.
D) Descendant : seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang sama.
Sumber:
https://www.hackerearth.com/practice/data-structures/hash-tables/basics-of-hash-tables/tutorial/
http://new-funday.blogspot.com/2012/12/struktur-data-tree-dan-penjelasaanya.html
Hashing
Hashing adalah teknik yang digunakan untuk secara unik mengidentifikasi objek tertentu dari sekelompok objek serupa. Hashing dilakukan dengan membuat fungsi hash. Hasil dari fungsi hash dimasukkan ke dalam hash table.
Hash Table adalah salah satu contoh implementasi linked list dalam data struktur. Hash table digunakan dalam penyimpanan data sementara.
Ada banyak cara untuk hashing string ke sebuah key:
1. Mid-square
2. Division (most common)
3. Folding
4. Digit Extraction
5. Rotating Hash
Contoh hash table yang kurang efisien dan yang efisien:
Contoh yang kurang efisien
Contoh fungsi hash yang efisien:
Sebaik apapun fungsi hash yang kita buat, collision tidak dapat dihindari, oleh karena itu ada banyak teknik untuk menghindari collision:
1. Separate Chaining (Open Hashing)
Separate Chahining adalah teknik yang paling banyak digunakan untuk resolusi tabrakan. Separate Chaining biasanya diimplementasikan menggunakan linked list. Dalam Separare Chaining, setiap elemen dari hash table adalah linked list. Untuk menyimpan elemen ke dalam table hash, kita harus memasukkannya ke linked list tertentu. Jika ada collision (Dua elemen berbeda yang memiliki hash yang sama) maka kita harus menyimpan kedua elemen tersebut ke dalam linked list yang sama.
2. Linear Probing (Open Addressing or Closed Hashing)
Dalam Open Addressing, daripada menggunakan linked list, semua catatan entri disimpan dalam array itu sendiri. Ketika entri baru harus dimasukkan, indeks hash dari nilai hash dihitung dan kemudian array diperiksa (dimulai dengan indeks hash). Jika slot di indeks hash tidak diisi, maka entri dimasukkan ke dalam slot di indeks yang telah di hashed yang lain itu melanjutkan dalam beberapa urutan penyelidikan sampai menemukan slot kosong.
BINARY 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 lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama lainnya (disebut subtree). Untuk jelasnya, di bawah akan diuraikan istilah-istilah umum dalam tree :
A) Predecessor : node yang berada diatas node tertentu.
B) Successor : node yang berada di bawah node tertentu.
C) Ancestor : seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama.
D) Descendant : seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang sama.
E) Parent : predecessor satu level di atas suatu node.
F) Child : successor satu level di bawah suatu node.
G) Sibling : node-node yang memiliki parent yang sama dengan suatu node.
H) Subtree : bagian dari tree yang berupa suatu node beserat descendatnya dan memiliki semua karakteristik dari tree tersebut.
I) Size : banyaknya node dalam suatu tree.
J) Height : banyaknya tingkatan/level dalam suatu area.
K) Root : satu-satunya node khusus dalam tree yang tidak mempunyai predecessor.
L) Leaf : node-node dalam tree yang tidak memiliki successor.
M) Degree : banyaknya child yang dimiliki oleh suatu node.
Maksimum node yang dapat dimiliki oleh sebuah level k dalam binary tree adalah 2k.
Sumber:
https://www.hackerearth.com/practice/data-structures/hash-tables/basics-of-hash-tables/tutorial/
http://new-funday.blogspot.com/2012/12/struktur-data-tree-dan-penjelasaanya.html
Comments
Post a Comment