Wednesday, March 11, 2020

Hash Table & Binary Tree


Hash Table

Hashing merupakan cara untuk mencari objek dengan spesifik dari suatu kumpulan objek yang mirip.


Hash table sendiri adalah salah satu struktur data yang terdiri atas sebuah table serta fungsi yang ditujukan untuk memetakan nilai yang unik dari setiap baris (record) menjadi angka (hash) lokasi baris tersebut kedalam sebuah table. Hash table digunakan untuk mempercepat pencarian terhadap data yang telah disimpan. Waktu yang dibutuhkan untuk insertion, deletions, dan searching relative sama dibandingkan dengan struktur data yang lain.

  

Operasi pada hash table :

-   Insert : diberikan sebuah nilai dan key, insert nilai kedalam table
-     Find : diberikan key, untuk menemukan nilai yang terhubung pada key tersebut
-  Remove : diberikan key, kemudian mencari nilai yang terhubung pada key dan menghapus nilai tersebut
getIterator : mengembalikan iterator, yang memeriksa nilai.

Kelebihan Hash table :
-   hash table relative lebih cepat
-   kecepatan insertion, deletion dan searching relative sama

Binary Tree

Binary tree merupakan struktur data yang memiliki bentuk tidak linier, melainkan menggambarkan hubungan hirarki (one to many) antara elemennya. Binary tree memiliki syarat yaitu setiap nodenya hanya boleh memiliki maksimal dua subtree, dan kedua subtree tersebut tidak boleh saling berhubungan.

Binary tree berfungsi untuk menyimpan informasi nama atau bilangan. Dengan membagi data menjadi dua lalu mencari titik tengah sebagai patokkannya(simpul pertama disebut dengan root).

Aturan yang harus dipenuhi :

-   Semua data dibagian kiri subtree node x, selalu lebih kecil dari data yang ada didalam node x itu sendiri.
-   Semua data dibagian kanan subtree dari node x, selalu lebih besar dari data yang ada didalam node x itu sendiri.

Jenis-jenis binary tree :

-  Perfect binary tree : tiap nodenya memiliki dua child (kecuali node terakhir), dan tiap subtree memiliki Panjang path yang sama





-   Complete binary tree : subtree memiliki Panjang yang berbeda, dan selain node terakhir memiliki 0 atau 2 child





-   Skewed binary tree : semua node kecuali node terakhir hanya memiliki 1 child






Hashing table implementation in blockchain

Hashing berguna untuk mengambil input string dengan panjang berapa pun dan memberikan output dengan panjang yang tetap. Dalam konteks crypto currency (seperti Bitcoin), transaksi diambil sebagai input dan dijalankan dengan algoritma hasing yang memberikan out dengan panjang yang tetap (Bitcoin menggunakan SHA-256).




Referensi :

Wednesday, March 4, 2020

Linked List (Stack & Queue)


Stack & Queue


Stack adalah kumpulan elemen data yang disimpan dalam satu lajur linear. Kumpulan data tersebut hanya dapat diakses pada satu tempat saja, yaitu posisi yang paling atas dari tumpukkan tersebut (TOP). Konsep utamanya adalah LIFO (Last In First Out), yaitu data terakhir yang masuk kedalam urutan tersebut akan menjadi data pertama yang dikeluarkan dari kumpulan (seperti pada tumpukkan saat mencuci piring, piring yang ditaruh terakhir akan menjadi piring pertama yang diambil untuk dicuci).

Terdapat 2 operasi yang sering diterapkan dalam struktur data Stack, yaitu Push dan Pop. Beberapa contoh operasi pada Stack :
  • Push : digunakan untuk menambah data pada Stack paling atas.
  • Pop : digunakan untuk mengambil data pada Stack paling atas.
  • Create Stack : membuat Stack baru X, dengan jumlah elemen data kosong.
  • IsFull : untuk mengecek apakah Stack sudah penuh.
  • IsEmpty : untuk mengecek apakah Stack kosong


Sedangkan Queue adalah struktur data linear yang dimana penambahan elemen data disalah satu ujungnya, sedangkan untuk pengurangannya dilakukan pada ujung lainnya. Queue menggunakan konsep FIFO(First In First Out), yaitu data yang pertama kali masuk kedalam urutan merupakan data yang pertama kali akan diakses.

Terdapat 2 operasi yang sering digunakan pada Queue :
  • EnQueue : digunakan untuk memasukkan data kedalam queue.
  • DeQueue : digunakan untuk mengeluarkan data terdepan dari Queue tersebut.





Referensi
https://media.geeksforgeeks.org/wp-content/cdn-uploads/Stack-Queue.png