Heap


Heap dibagi 2 yaitu max heap(elemen anak dari node lebih kecil) dan min heap (elemen anak dari node lebih besar) . Heap bisa diimplementasi dengan menggunakan array. Penggunaan heap bisa dalam selection algorithm, Djikstra’s algorithm dan Prim algorithm. Untuk sorting juga ada Heap Sort. Elemen dari heap disimpan secara sekuensial dalam array dari atas ke bawah, kiri ke kanan. Root selalu ditempatkan di index ke 1 untuk memudahkan perhitungan. Cara menentukan node relasi dari node x.
Parent= x/2, left-child = 2 * x, right-child = 2*x+1.
Insert dalam Min-Heap
1.      Taruh node pada index terahir dari array
2.      Upheap node tersebut untuk memperbaiki property heap
*Upheap : mencari elemen atas nya, jika elemen parentnya lebih besar maka elemen tersebut akan ditukar. Proses ini terjadi secara rekursif sampai kondisi tidak memenuhi(mencapai root atau elemen parent lebih kecil).
Delete dalam Min-Heap
1.      Delete elemen di root kemudian pindahkan elemen index terakhir ke posisi root, Downheap root untuk memperbaiki property heap
*Downheap : mencari kedua elemen anak, bandingkan ambil elemen anak dengan nilai yang lebih kecil, proses ini terus berlangsung sampai nilai child lebih besar atau elemen sudah mencapai leaf

Max-Heap memiliki property berkebalikan dengan min-heap tetapi semua operasinya sama saja

Min-Max Heap
Setiap level pada tree selang seling, antara max dan min. Hal ini memudahkan kita mencari nilai min dan max, nilai min terdapat pada root dan max terdapat pada salah satu child nya root
Insert pada Min-Max Heap
1.      Masukkan element baru pada index terakhir heap.
2.      Upheap elemen tersebut. Jika node berada pada level minimum, Terdapat 2 kondisi, jika parent dari node lebih kecil tukar nilai keduanya dan upheapmax dari parentnya jika tidak upheapmin dari node baru tersebut. Jika node berada pada level maksimum. Jika node parent lebih besar maka tukar nilai kedua node dan upheapmin dari parent jika tidak upheapmax dari node baru
*Upheapmin: bandingkan nilai node dengan parentnya jika nilai noded lebih kecil maka tukar kedua node dan lanjut upheapmin pada node grand-parent
*Upheapmax: bandingkan nilai node dengan parentnya jika nilai node lebih besar maka tukar kedua node dan lanjut upheapmax pada node grand-parent
Delete pada Min-Max Heap
1.      Delete elemen terkecil
a.      Tukar root dengan elemen terakhir dari heap
b.      Kurangi jumlah elemen dari heap
c.      Downheapmin dari root
2.      Delete elemen terbesar
a.      Tukar elemen left-child atau right-child  dari root(cari yang lebih  besar) dengan elemen terakhir dari heap
b.      Kurangi jumlah elemen dari heap
c.      Downheapmax dari node tersebut
*Downheapmin
- misal m adalah elemen terkecil pada anak atau cucu dari node yang sekarang.
- Jika m adalah cucu dari node yang sekarang:
-Jika m lebih kecil dari node yang sekarang maka tukar nilainya, Jika m lebih besar dari    parentnya tukar nilai keduanya. Lanjut downheaping dari m
                              - Jika m adalah anak dari node yang sekarang
                                 - Jika m lebih kecil dari node sekarang maka tukar nilai nya
                     * Downheapmax adalah kebalikan dari downheapmin
Tries
Tries(pohon prefix) adalah struktur data tree yang digunakan untuk menyimpan array asosiatif (biasanya string). Kegunaan tries untuk autocomplete, spellchecker pada kamus.
Sifat dari tries: rootnya berisi karakter kosong sehingga anaknya dapat berisi macam-macam alphabet hingga membentuk string


Komentar

Postingan populer dari blog ini

Hash Table

Binary Search Tree (BST)