Langsung ke konten utama

Struktur Data: Hash Table dan Binary Trees

Struktur Data: Hash Table dan Binary Trees

Keduanya merupakan jenis-jenis struktur data yang dapat dibuat. Lalu, apa itu hash table dan binary trees?

1. Hashing dan 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.

Hash table menggunakan memori penyimpanan utama berbentuk array dengan tambahan algoritma untuk mempercepat pemrosesan data. Pada intinya hash table merupakan penyimpanan data menggunakan key value yang didapat dari nilai data itu sendiri. Dengan key value tersebut didapat hash value. Jadi hash function merupakan suatu fungsi sederhana untuk mendapatkan hash value dari key value suatu data.

Cara paling sederhana penggunaan hash table ialah dengan memodulus key valuenya dengan ukuran array yang dimiliki.

hash = key % ukuran

Namun, cara tersebut memiliki kelemahan yaitu akan sering terjadi collision. Collision artinya ada lebih dari satu data yang memiliki hash index yang sama. Untuk itu, perlu dilakukan beberapa implementasi hashing guna mencegah terjadinya collision. Implementasi-implementasi yang dapat dilakukan ialah dengan
  1. Closed hashing
    Closed hashing
    akan mencari alamat lain jika alamat yang dituju sudah terisi. Beberapa teknik closed hashing antara lain

    1. Linear probing
      Linear probing
      akan mencari indeks+1 dari alamat yang telah terisi.
    2. Quadratic probing
      Quadratic probing
      akan mencari alamat baru sesuai dengan rumus yang telah ditentukan sendiri.
    3. Double hashing
      Double hashing
      akan mencari alamat baru dengan melakukan proses hashing lagi.

    Kelemahan dari closed hashing ialah ukuran array yang disediakan harus lebih besar dari data yang tersedia (boros memori).

  2. Open hashing
    Open hashing
    dilakukan dengan cara membuat tabel yang digunakan untuk proses hashing menjadi sebuah array of pointers yang masing-masing pointernya diikuti oleh sebuah linked list.

    Kelemahan dari open hashing ialah penumpukan data (linked list panjang).

Lalu, apa bedanya sistem hashing dengan blockchain?

Blockchain adalah catatan transaksi digital terstruktur, dimana catatan individu, yang disebut blok, dihubungkan bersama dalam satu daftar yang disebut chain (rantai). Blockchain digunakan untuk mencatat transaksi yang dilakukan dengan cryptocurrency seperti Bitcoin dan lain-lain.

Di dalam blockchain, setiap node menyimpan data secara utuh. Hal ini berbeda dengan hashing yang mana datanya tersimpan di dalam node yang berbeda-beda.

2. Binary Trees

Setiap tree yang memiliki elemen sebanyak-banyaknya 2 "anak" disebut sebagai binary tree. Karena setiap elemennya hanya memiliki 2 anak, maka biasanya kedua anak tersebut disebut anak kiri dan anak kanan. Sedangkan Node yang paling atas disebut dengan root (akar).


Node yang paling tinggi disebut parent. Node dengan posisi yang sama disebut sibling. Node dengan posisi paling rendah disebut leaf.


Berikut merupakan contoh pengimplementasian binary tree pada bahasa C.

struct Node {
    int data;
    struct Node *left;
    struct Node *right;
};

struct Node *newNode (int data) {
    struct Node *node = (struct Node*) malloc (sizeof (struct Node));

    node->data = data;

    node->left = NULL;
    node->right = NULL;
    return (node);
}

int main () {
    struct node *root = newNode (1);

    // 2 dan 3 berubah menjadi anak kiri dan kanan dari 1
    root->left = newNode (2);
    root->right = newNode (3);

    // 4 berubah menjadi anak kiri dari 2
    root->left->left = newNode(4);

    getchar ();
}

Referensi

  • https://informatika11d.wordpress.com/2012/11/22/struktur-data-hash-table/
  • https://www.tutorialspoint.com/data_structures_algorithms/hash_data_structure.htm
  • https://www.barantum.com/blog/blockchain-adalah/
  • https://stackoverflow.com/questions/26415908/whats-the-difference-between-distributed-hashtable-technology-and-the-bitcoin-b/36430343
  • https://www.geeksforgeeks.org/binary-tree-set-1-introduction/ 

Komentar

Posting Komentar

Postingan populer dari blog ini

Struktur Data: Binary Search Tree

Struktur Data: Binary Search Tree Apa itu binary search tree (BST) ? BST adalah struktur data pohon biner berbasis node yang memiliki beberapa ciri. Ciri-ciri dari BST adalah: Nilai node yang lebih rendah selalu berada di sebelah kiri subtree . Nilai node yang lebih tinggi selalu berada di sebelah kanan subtree . Setiap subtree juga merupakan sebuah BST. Gambar 1 - Contoh BST Kenapa harus membedakan kiri dan kanan sesuai besaran nilainya? Tujuannya untuk memberikan efisiensi terhadap proses searching (pencarian). Kalau struktur data tree sudah tersusun rapi sesuai aturan mainnya, proses search akan lebih cepat. Penelusuran BST Penelusuran data BST dapat dilakukan dengan 3 cara, yaitu: PreOrder . Cetak data, telusur ke kiri, telusur ke kanan. InOrder . Telusur ke kiri, cetak data, telusur ke kanan. PostOrder . Telusur ke kiri, telusur ke kanan, cetak data. Sebelum itu, pertama-tama harus dipersiapkan dahulu struct yang melambangkan setiap node . Untuk co...

Struktur Data: AVL Tree

Struktur Data: AVL Tree Apa itu AVL Tree? AVL Tree merupakan sebuah BST yang bisa menyeimbangkan dirinya sendiri antara kanan dan kiri. Seimbang di sini maksudnya perbedaan panjang antara kaki kanan dan kaki kiri tree nya tidak lebih dari 1. Contoh gambarnya seperti ini: Nah bisa diliat dari contoh gambar di atas kalo panjang kaki kiri dan kanan nya sama (sejajar). Itu yang disebut AVL Tree. Nah kalo gambar yang itu bukan AVL, kenapa? Karena kaki kiri nya kepanjangan! Terus kalo gitu gimana caranya AVL menyeimbangkan dirinya sendiri? Hayo gimana, kepo ya? Jadi gini, si AVL itu bisa nyeimbangin dirinya sendiri dengan cara melakukan perputaran node di kaki yang terpanjang. Perputarannya sendiri terdiri dari 2 jenis, yaitu single rotation dan heavy double rotation . Single Rotation Single rotation akan dilakukan ketika kaki yang terpanjangnya memiliki arah yang lurus. Maksudnya gimana tuh? Jadi gini, liat gambar di bawah ini: Bisa diliat dari gambar di atas, ka...