Langsung ke konten utama

Heap & Tries {Theory}


HEAP & TRIES
1.       Heap
Dalam ilmu komputer, sebuah heap adalah struktur data yang berdasarkan konsep struktur data pohon. Di heap, juga diterapkan konsep binary tree.
Terdapat 3 jenis heap, diantaranya :
a.     Min heap
Min heap merupakan heap yang node rootnya adalah angka terkecil dan setiap anak dari rootnya selalu lebih kecil daripada parentnya. Biasanya min heap ini, dia ascending ( dari terkecil ke terbesar ).
b.    Max heap
Max heap ini sama seperti min heap, tapi bedanya adalah angka yang berada di root adalah angka terbesar dan max heap ini descending ( dari terbesar ke terkecil ).
c.     Min Max heap
Untuk min max heap ini cukup unik, dimana root dari heap ini merupakan angka terkecil didalam tree nya, tapi angka yang berada dii node anak dari sebuah root merupakan angka paling besar dan berlaku seterusnya sampai ke bawah.
Berikut adalah contoh dari semua heap yang telah dijelaskan.
enter image description here
Untuk menentukan dimana letak parent, left child, dan right child dari heap kita, kita memiliki formula sebagai berikut :
a.       Parent : MyIdx/2;
b.       Left Child : MyIdx*2;
c.       Right Child : (MyIdx*2)+1;
            Sama seperti tree lainnya, kita juga dapat  melakukan insertion dan deletion dalam heap ini. Penjelasannya sebagai berikut :
a.     Min heap & Max heap insertion
Langkah untuk melakukan insertion pada min heap :
1.     Buat node baru di heap paling akhir/ bawah
2.     Masukan nilai di node yang baru dibentuk itu
3.     Bandingkan nilai yang di node baru dengan parentnya
4.     Jika angka pada node baru lebih kecil daripada angka di node parent, maka tukar mereka. Jika angka di node baru lebih besar, diamkan saja
5.     Ulangi langkah 3 dan 4 sampai heap terurut.
Langkah untuk melakukan insertion pada max heap :
1.     Buat node baru di heap paling akhir/ bawah
2.     Masukan nilai di node yang baru dibentuk itu
3.     Bandingkan nilai yang di node baru dengan parentnya
4.     Jika angka pada node baru lebih besar daripada angka di node parent, maka tukar mereka. Jika angka di node baru lebih kecil, diamkan saja
5.     Ulangi langkah 3 dan 4 sampai heap terurut.
b.     Min heap & Max heap deletion
Langkah untuk melakukan deletion pada min heap :
1.     Hilangkan angka pada node root
2.     Pindahkah elemen terakhir ke bagian root
3.     Bandingkan nilai dari node child dengan parentsnya
4.     Jika nilai dari parentnya lebih besar daripada node childnya, maka tukar nilainya
5.     Ulangi langkah 3 dan 4 sampai heap terurut.
Langkah untuk melakukan deletion pada max heap :
1.     Hilangkan angka pada node root
2.     Pindahkah elemen terakhir ke bagian root
3.     Bandingkan nilai dari node child dengan parentsnya
4.     Jika nilai dari parentnya lebih kecil daripada node childnya, maka tukar nilainya
5.     Ulangi langkah 3 dan 4 sampai heap terurut.
c.     Min Max heap insertion
Langkah untuk melakukan insertion pada min max heap :
1.     Tambahkan node baru di akhir heap. Ini mungkin dapat menghancurkan min max heap tree, tapi kita dapat melalukan pengurutan padanya.
2.     Masukan angka pada node baru tersebut.
3.     Lakukan upheap untuk pada elemen yang ada. Namun, upheap pada min max heap sedikit berbeda dengan yang lain.
4.     Jika node baru ada di bagian min :
Jika node parent dari node baru ini lebih kecil daripada node baru, maka swap mereka dan upheapmax dari parentnya, kalau tidak upheapmin node barunya.
5.     Jika node baru ada di bagian max :
Jika node parent dari node baru ini angkanya lebih besar daripada anaknya, maka swap nilai mereka dan upheapmin dari parentsnya. Kalau tidak, upheapmax node barunya.

d.     Min Max heap deletion
Terdapat 2 jenis deletion disini, tergantung pada keinginan user dimana terdapat deletion pada minimum dan deletion pada maximum. Jika deletion pada minimum, lakukan deletion seperti yang ada di min heap. Sedangkan deletion pada max heap, lakukan deletion seperti max heap, tapi disini bandingkan nilai node baru yang ada dengan node max dan pilih diantara node ke 2 atau ke 3 sebagai node max.

2.     Tries
Tries disini sama dengan kebanyakan tree pada umumnya, tapi pada tree yang kita temukan hingga sekarang, mereka mengisinya dengan angka disetiap nodenya. Tapi di tries, kita akan menggunakan dengan next levelnya lagi, yaitu diisi dengan character huruf. Implementasi trie ini bisa anda temukan di game yang seperti susun kalimat, dapat juga ditemukan pada google search dimana kita mengetik 1 huruf, akan keluar recommended yang diberikan oleh google. Misalkan kita mengetik Y, maka dapat ditemukan banyak rekomendasi yang diberikan oleh google.
Seperti itu contoh pencarian di google.



Di trie ini, mereka selalu memiliki 1 parent yang sama dan beberapa jenis cabang di bawahnya. Nah di cabang ini dapat bercabang lagi dan seterusnya. Dan bisa menghasilkan kata yang masuk akal disana.

Sekian penjelasan saya tentang Heap dan Tries ini. Semoga bermanfaat 😊

Komentar

Postingan populer dari blog ini

AVL Tree [Theory]

AVL TREE AVL tree is a self-balancing Binary Search Tree (BST) where the difference between heights of left and right subtrees cannot be more than one for all nodes. For example :    (Left : Correct AVL Tree || Right : Wrong AVL Tree) The reason why right AVL tree is wrong because the above tree is not AVL because differences between heights of left and right subtrees for 8 and 18 is greater than 1. AVL trees have an additional guarantee: The difference between the depth of right and left subtrees cannot be more than one. In order to maintain this guarantee, an implementation of an AVL will include an algorithm to rebalance the tree when adding an additional element would upset this guarantee. AVL trees have a worst case lookup, insert and delete time of O(log n). In AVL Tree, we can perform Insertion and Deletion. ·        Insertion To make sure that the given tree remains AV...

Binary Tree Introduction

BINARY TREE DATA STRUCTURE               A tree whose elements have at most 2 children is called a binary tree. Since each element in a binary tree can have only 2 children, we typically name them the left and right child. PARTS OF NODE IN BINARY TREE : 1.       Data, 2.       Pointer to left child, and 3.       Pointer to right child. THE USED FROM BINARY TREE ARE FOLLOWING : 1.       Manipulate hierarchical data, 2.       Make information easy to search, 3.       Manipulate sort list of data, 4.       Composting digital images for visual effect, 5.       Router Algorithms, and 6.         Form of a multi-stage decision-making (see business chess). TREE’S PART 1. ...