Senin, 16 Maret 2020

Hashing dan Binary Tree

Hashing

Hashing adalah suatu teknik yang digunakan untuk menyimpan dan mengakses data pada suatu database. Untuk menyimpan data, teknik ini akan mengubah string yang akan disimpan dalam database menjadi string atau key yang lebih pendek untuk mewakili data yang akan disimpan. String atau key ini disebut hash key. Teknik hashing digunakan karena mencari data dengan hash key akan lebih cepat dan lebih efisien daripada menggunakan value asli data yang dicari.

Hashing dapat dilakukan dengan beberapa cara, yaitu :
  1. Mid-square : Mengkuadratkan dan mengambil value tengah
  2. Division : Membagi value data dengan modulus
  3. Folding : Melipat data menjadi beberapa bagian dan menambahkan
  4. Digit Extraction : Mengambil digit pada data
  5. Rotating Hash : Memutar key yang telah didapat dari metode lain

Hashing sering digunakan dalam blockchain. Blockchain adalah serangkaian data dalam bentuk blok yang diamankan dan diikat satu sama lain menggunakan prinsip kriptografi. Hashing digunakan dalam blockchain salah satunya dikarenakan tingkat keamanannya yang cukup tinggi. Sebagai contoh, bitcoin menggunakan SHA-256 (Secure Hashing Algorithm) . 

Dengan menggunakan SHA-256, sepanjang apapun data yang diinput, hash key yang dihasilkan akan selalu berjumlah 256 bit. Perubahan sekecil apapun pada input akan menghasilkan perubahan yang besar pada hash key. Oleh karena itu, teknik hashing dapat memberikan tingkat keamanan yang tinggi.


Binary Tree

Binary tree adalah tree yang setiap nodenya hanya boleh memiliki cabang maksimal 2.

Binary tree ada beberapa jenis, yaitu :

  1. Perfect binary tree : Setiap level memiliki tinggi yang sama.
  2. Complete binary tree : Binary tree yang hampir semua levelnya terisi.
  3. Skewed binary tree : Setiap node hanya memiliki 1 cabang.
  4. Balanced binary tree : Leaf tidak jauh dari root.