top of page
Search

Heap & Tries

  • Writer: michael kurniawan
    michael kurniawan
  • May 20, 2020
  • 3 min read

Max-Min heap


dalam max-min heap, max dan min bergantian pada setiap level

level ganjil memakai max heap

level genap memakai min heap

FFind-Min in Min-Heappertama kita harus tahu dulu apa itu heap

Heap sendiri merupakan complete binary tree berdasarkan struktur data yang memenuhi properti heap.

nah properti apa yang dimiliki heap

- Min Heap

setiap element node lebih kecil dari childrennya.

- Max Heap

setiap element node lebih besar dari childrennya.


pertama kita bahas dulu min heap

seperti yang dijelaskan tadi Min heap setiap element nodenya lebih kecil dari childrennya artinya elemen terbesar terletak di suatu tempat di salah satu leaf node. Heap dapat diimplementasikan menggunakan linked-list, tetapi jauh lebih mudah untuk mengimplementasikan heap dengan array.


berikut contoh dari Min Heap


lalu heap memiliki beberapa aplikasi

1. Priority Queue

- Algoritma Pilihan (menemukan elemen min / maks, median, elemen kth- terbesar, dll).

- Algoritma Dijkstra (menemukan jalur terpendek dalam grafik).

- Algoritma Prim (menemukan pohon rentang minimum).

2. Heap Sort

- An O(n.lg(n)) algorithm.



MIN HEAP

 

PRIORITY QUEUE

Heap adalah implementasi efisien dari priority queue data structure.

- find-min: cari elemen terkecil di heap.

- insert: memasukkan elemen baru ke heap.

- delete-min: hapus elemen terkecil dari heap.

untuk delete-min dan insert sama halnya namanya seperti pop dan push.


ARRAY IMPLEMENTATION

heap biasanya mengimplementasikan dalam bentuk array.

Elemen-elemen disimpan secara berurutan dari indeks 1 ke N dari atas ke bawah dan dari node kiri ke kanan tree.

Root disimpan dalam indeks 1

(kami membiarkan indeks 0 kosong / tidak digunakan, untuk tujuan kenyamanan).

Cara menghitung index bisa seperti ini

anggap current node adalah sebuah index x maka

parent(x) = x/2

left-child(x) = 2*x

right-child(x) = 2*x+1

Inilah mengapa kita menggunakan indeks 1 sebagai root, jika tidak

hubungan tidak akan muncul.


Find-Min in Min-Heap

untuk mencari nilai minimum dalam min heap bisa dilakukan dengan

int findmin() {return data[1];}


INSERTION IN MIN-HEAP

insert untuk min-heap ada 2 cara yaitu

1. Upheap

Masukkan node seperti biasa, lalu bandingkan dengan node di atasnya (parent) bila parent nilai nya lebih besar, tukar. Setelah ditukar lakukan hal yang sama dengan node diatasnya. Berhenti ketika node yang diatas nya sudah lebih kecil.

2. Downheap

Masukkan node seperti biasa, mulai dari node root, bandingkan dengan left dan right child, bila lebih kecil, tukar node nya dengan node yang lebih kecil. lanjutkan terus dan berhenti bila node dibawahnya.


Heap Complexity

find-min: O (1)

insert: O (log (n))

delete-min: O (log (n))

insert dan delete-min tergantung pada ketinggian tree, yang

adalah log (n), ketinggian binary tree lengkap.


MAX HEAP

 

Setiap elemen node lebih besar dari elemen childnya.

Ini menyiratkan bahwa elemen terbesar terletak di root pohon.

Max-heap memiliki prinsip yang sama dengan min-heap dan dapat digunakan untuk membuat queue priority yang perlu menemukan elemen terbesar alih-alih yang terkecil.


MIN-MAX HEAP

dalam max-min heap, max dan min bergantian pada setiap level

Setiap elemen pada level genap / ganjil lebih kecil dari semua childnya (level min).

Setiap elemen pada level ganjil / genap lebih besar dari semua childnya (level maksimal).


INSERTION PADA MIN-MAX HEAP

masukkan node seperti biasa,

bila node ada di min heap:

- jika node parent lebih kecil, tukar node sekarang dengan node parent, lalu cek grand parent dari nodenya, bila lebih kecil, tukar.

bila node ada di max heap:

- jika node parent lebih besar, tukar node sekarang dengan node parent, lalu cek grand parent dari nodenya, bila lebih besar, tukar.


DELETION PADA MIN-MAX HEAP

Penghapusan elemen terkecil

- Ganti root dengan elemen terakhir di heap.

- Kurangi jumlah elemen dalam tumpukan.

- Downheapmin dari root.

Penghapusan elemen terbesar

- Ganti child kiri atau child kanan root (tergantung mana yang lebih besar) dengan elemen terakhir di heap.

- Kurangi jumlah elemen dalam tumpukan.

- Downheapmax dari node.


TRIES

 

Tries (prefix tree) adalah struktur data tree terurut yang digunakan untuk menyimpan array asosiatif (biasanya string)

Istilah TRIE berasal dari kata RETRIEVAL, karena mencoba dapat menemukan satu kata dalam kamus dengan hanya awalan kata.





Nama : Antonio Michael Kurniawan

NIM : 2301924063

 
 
 

Comments


About  Me
 

Hello, My name is Antonio Michael Kurniawan. I am currently studying in binus majoring in game application and technology. In this blog I will post about the tasks about data structure.

  • Facebook
  • Twitter

© 2023 by Antonio Michael Kurniawan. Proudly created with Wix.com

Contact

You can contact me via email michaelkurniawan137@gmail.com

Thanks for submitting!

bottom of page