Heap dan Priority Queue


๐Ÿงญ 1. Pengertian Heap

https://images.openai.com/static-rsc-4/pkbkkss9uHziZRGvSuzBHE7m2VdZVmCiYIBCKNnO_kBvBvxNCBoV5QDbFF8Lyu7PmFzCem6WsFjvMN-yyaRVj6w4_txq78OMai06RSwooSO66DcBTdg_4_GGjqc85clxwsVt-UA9E8CywS1b9na4_18MeTIWl4VtpyGw0d9UguPLHUk75GB3FD9sq1O4BCPM?purpose=fullsize
https://images.openai.com/static-rsc-4/GOdArzpO9Ah2IWpnOzQS4wyAZqzFbE0IKbOEc0Z5ASHxpC2yQ9atibnUJ5mOonnXOUizR0CpeqO1w56dGK64gae1upD1W2DYSvvF18bzJ8PbOwDtfZH6zFXoYTi6dL-bpSo-3guV6m9OlRJQvcdfUbtZbUD1e3Lgq_8zQf_o8frpVxsko1xRCv1ScKX-OVyV?purpose=fullsize
https://images.openai.com/static-rsc-4/wKi23o-FXTB4dbWp9OVWaeQrjhYZTmSCnE28yojIASE2GvEvba6sOHejpT9aVKwK3CjNvEp1irwrtyqJmdhIMRx0eNgdc0c_6l8bTsfrnL84DYKoIkjNhjYshH15qtasWsD1UdrjNOsWrfulaSAO2A6HcNgRhPjRoMccr5X2SPiIRvsZdTK4H0uPSOTsUp6p?purpose=fullsize

7

๐Ÿ“– Definisi

Heap adalah struktur data berbentuk binary tree lengkap (complete binary tree) yang memenuhi aturan khusus:

  • Max Heap: parent โ‰ฅ child
  • Min Heap: parent โ‰ค child

๐Ÿง  Narasi Konseptual

Bayangkan tumpukan prioritas pekerjaan:

  • Pekerjaan paling penting selalu di atas
  • Pekerjaan lain mengikuti aturan prioritas

โžก๏ธ Heap digunakan untuk memastikan data paling prioritas selalu mudah diakses.


๐ŸŽฏ 2. Karakteristik Heap

๐Ÿ“Š Tabel Karakteristik

KarakteristikPenjelasan
BentukComplete Binary Tree
AturanHeap property (min/max)
Akses utamaElemen root
StrukturTidak fully sorted

๐Ÿง  Narasi

Heap bukan struktur yang sepenuhnya terurut, tetapi:

  • Hanya menjamin elemen paling prioritas ada di root

๐ŸŒฒ 3. Jenis Heap


๐Ÿ”น A. Max Heap

https://images.openai.com/static-rsc-4/R9TmNu1M315sk-2cJng8F-ZfZ3_ev11miCpvQ4R0WOpt9-b7akdVoZCwH3ywPjl_pGJEF29v-r-V_vMEeIdvLe6Ii-PbFtraHinR9xt-FF-PMqZttFJfiK-YRuD8s_1D2aWF9YVDZ1SSx7UJXFcXmTqvxce2rOdlKZZvusyowl3C-8gVhAKmJEY5y0WsJ2Lo?purpose=fullsize
https://images.openai.com/static-rsc-4/W81jHg97leo_2oTFUyLzvtQvY1WyEzK8Qgin3I-w_4MMoIUBgu618PQqzv4wX2h9fV4BgEoEaXgYQA7ghzVD3DM0oep5hKVZtAfK8UDo2ftQb5TEE5BYcGyLN6I0J_yGo2VQoOwuOz39ymEsmDfrJhnk-GoDzzpLQ7inOoFqpZyCFY_DhC3DYs3WtD4KAMxX?purpose=fullsize
https://images.openai.com/static-rsc-4/T3gmXW7QUp4hkyzr-P3KQCc3rEg2WGaeW2uako5HIa4i2kimgXd5nBSxzxfYFK79hpbkOZz5wuqUuvOf46KMJWfRnqHiV73IjpuVHNLC9x3zbNUu0lchZc5J3yQkFviYH_nRj4Nuyh6tlXgOrZfuNcfGrxbCvIJYrT59DxQpLyZF-M8iKMuIr0yFTyMUAGDD?purpose=fullsize

7

๐Ÿ“– Konsep

  • Parent selalu lebih besar dari child
  • Root = nilai terbesar

๐Ÿง  Narasi

Seperti sistem ranking:

  • Juara 1 selalu di puncak

๐Ÿ”น B. Min Heap

https://images.openai.com/static-rsc-4/pkbkkss9uHziZRGvSuzBHE7m2VdZVmCiYIBCKNnO_kBvBvxNCBoV5QDbFF8Lyu7PmFzCem6WsFjvMN-yyaRVj6w4_txq78OMai06RSwooSO66DcBTdg_4_GGjqc85clxwsVt-UA9E8CywS1b9na4_18MeTIWl4VtpyGw0d9UguPLHUk75GB3FD9sq1O4BCPM?purpose=fullsize
https://images.openai.com/static-rsc-4/DeXYj8Yfn7ZxkFOrK0QupnwD6lflw5bbczj-mr_vhVas540nQWpBEdo1l7-adnjQ1PnlSx_rJrWuwaET8RVLj3p1Ze6n2HvGkybwkixWU_lshH3-dlMjTnQ8-l1Y4WJmUDAQyKjp2Pl8IwHz1m1CAAU0qrDCkmGveY1y8xR0cYGdUVM0RVN4s_XLk66529nK?purpose=fullsize
https://images.openai.com/static-rsc-4/Vg68BMFIcRdIzDkTxt52sNf73JxfmxpptoYt9WkJD6QXw9UoRY5sjW2jJg06u-RCZfifAbJp4miWpWPkDpDthUENB3ArVrgcp7fEZ5SdMCwUJI8blBoPgFewtkjOjAlT9aIA5bQO93vcSu6-X_4h7oAA_jkDenmAtm8cgrn86GpTe3Dqpn9yqmMqBHIyMDfj?purpose=fullsize

6

๐Ÿ“– Konsep

  • Parent selalu lebih kecil dari child
  • Root = nilai terkecil

๐Ÿง  Narasi

Seperti antrian cepat:

  • Paling kecil (paling prioritas) diproses dulu

๐Ÿงฑ 4. Struktur Heap (Complete Binary Tree)

https://images.openai.com/static-rsc-4/lltaJvMLqWqpbjbDYnEWXRTNnn6SdrD9JqTgs7daXhe2pGzlYrZyR239RJzEEglgTu9hXMUX_Lu0jrZesLCfj3izZ4hzFMjDYfmKjHAvBCKFizwtBwDB-KrNNYFlUSkEt_DKV8MsUZMgFdxKuM9BaLUEx6AzigGAHqMcBKFTR_Y6b6wel7ynceRXTK7Y5_GQ?purpose=fullsize
https://images.openai.com/static-rsc-4/bcB6q8lGjzyHVwmFKzle2gMIdIozwa_bveEWKUHafgS-bibMrmO4Q54kK7ZXV_xb5Mhpuj8PnqySeQvmFcBxmy4EK2yqZex3EotMD2pRXzbzOiTSbQVQqe1CZlZdjPA0CgONHJhlh69huVjFzSQlKOxd1YH98cdNM5_klHl2H7DLEhUyz4q026jJb9lTav0q?purpose=fullsize
https://images.openai.com/static-rsc-4/Jrwrjc6Wy79ESK_Ox9NRR1pQ2BAYI1U_Z7NcyL4mOgUQidLBxo2xdx8ZpkUtdYg_oKEqj7FFHLFsPaFOYKx0BBfGKZDewEZNBx_Gkg1q0txu8S_34lbk_3wToOUUAp8F5tsgO3g1y20V4qrQ0GgvwDWT9Lh0u4e_Kbc05gsu5dlZN-xyeCnYPp_Da8nHxX94?purpose=fullsize

7

๐Ÿ“– Konsep

Heap harus complete binary tree:

  • Semua level penuh
  • Kecuali level terakhir (diisi dari kiri ke kanan)

๐Ÿงฎ 5. Representasi Heap dalam Array

๐Ÿ“Š Rumus Index

HubunganRumus
Parent(i – 1) / 2
Left Child2i + 1
Right Child2i + 2

๐Ÿง  Narasi

Heap tidak perlu pointer:

  • Semua node disimpan dalam array
  • Posisi ditentukan secara matematis

โš™๏ธ 6. Operasi Heap

๐Ÿ“Š Tabel Operasi

OperasiDeskripsiKompleksitas
InsertMenambah elemenO(log n)
Delete (root)Menghapus elemen prioritasO(log n)
PeekMelihat rootO(1)

โž• 7. Insert pada Heap

https://images.openai.com/static-rsc-4/NA8MT3YmbDb2pMzLLV2LfWLQj7scTMbuwKada0rMnyBgDsTy3wQcj2lILJu-88_x-CCJszX-iAlHy8WDPB11Z1pAMj3ZpGs0wdRNcCjUUSj01Scbiih2kW3XP-XG_8U1O7v8aUlkolqeXuryYH6XJ6LJdy5EziDeuU_QLUiE3b8Q_rKZ7stTzVXyFsyHKtw7?purpose=fullsize
https://images.openai.com/static-rsc-4/HALiw0Y6QGqiXR9IuWa_QT36mz72YKVbnXDcMHvS8Gi2-F8yDFUIUEe-OUhKnP20gTOsnkpKXzERdi3_kfwTwkXc_afjnRJwhihZVgvCARrhPkIWU96iocLfg6g6wLeXpD4_BtGFPy8D_swVlue1JDEaDMmxjCLaSh3eU-PrgCKUNOvVirR905TeVChnrKU_?purpose=fullsize
https://images.openai.com/static-rsc-4/O4ZVsmJOLH67yjz1nJIRF-p1IvKpQjvhphwiY-6sodzpg96Pin3dLe2Ews3Kf9Tx7te3mxM9NxZAo4uKecC_0KDxeMbRYANTj4qeMtv8zJkuQsvPcugvO_tVcJP7F4_BsOSKCMQg8j7ApK2vzpnPMC0cpkekbyxifLGb1sVwk9tNIFHSieBGd1qRsukOFF9r?purpose=fullsize

6

๐Ÿ“– Proses

  1. Tambah di posisi terakhir
  2. Bandingkan dengan parent
  3. Tukar jika melanggar aturan
  4. Ulangi (heapify up)

๐Ÿง  Narasi

Seperti anak baru:

  • Masuk ke bawah dulu
  • Naik jika lebih โ€œprioritasโ€

โž– 8. Delete (Heapify Down)

https://images.openai.com/static-rsc-4/7ZmUygt6sqvR27R00wcY53-kcAyNbY7pXfkKsqg2OHy1YjDtlmF9XUGm4ZjeNp5Pt_HEKYkfAa_TU2bqx3HV_ZtJaNRfDLQoYZGF7Lo9O2vfavLv3lcGHlBlEhNju3VrWQ82aH_D7qGkkqpqh4mxrTSdtY-FZPB8jYO3367SnDNcM8qVFFRP9lqhL-sWMDHu?purpose=fullsize
https://images.openai.com/static-rsc-4/C3AkWDmYrdAjn0jvY3LLBdFvmJs1wRl1KBOy9V4Yrj3CbG2ZwSANqMeRaaDBMfGvYac87kO7e6506Gs5uY44NbOQmZ3fuxiEGJzQMCotXEmz2NH9_w2lw3Cn3xCUyydm_7bLW_ftxZw-FEG4HdQnPMn199-G0wJjoBKL8-xOp7X21RFqSQOqbN3tbNEOcomX?purpose=fullsize
https://images.openai.com/static-rsc-4/tzRhrCBIGnoIi5CpeKIvfkHDhid9m3e0z0ayWW2nNL_iOvnVCGTHUww1Lk7jnKX0nCOkVjj-XNxHRTuP7vgelV8Rs2JEps_yBZqBiHi_PmISBJXyfsdkhjjQsnJZNaFE7ZzSekV-MxVeDCLNkIs4OH6uV9ek1iJeBFM3rYyZEiCd5TfytVFUamHlgkEK3x51?purpose=fullsize

7

๐Ÿ“– Proses

  1. Hapus root
  2. Ganti dengan elemen terakhir
  3. Turunkan (heapify down)
  4. Perbaiki struktur heap

๐Ÿง  Narasi

Seperti mengganti pimpinan:

  • Posisi atas diganti
  • Struktur disesuaikan ulang

๐Ÿ” 9. Heapify Process

๐Ÿ“– Definisi

Heapify adalah proses memperbaiki struktur heap agar tetap memenuhi aturan min/max heap.


๐Ÿ“Œ 10. Priority Queue (Antrian Prioritas)

https://images.openai.com/static-rsc-4/W1vtepfcFIHcVrQt3CvdH5KEFsml6AlP2FJVuLq2QmRxN6-EgTj0N3LlMG2w0Oxd5yVYZnOy3wfbiOTlowsrSGhtnK9oHKL7GibKuiOkWa8zCXkmJ4Vs0eNyCEwPW1jT7lu3d1l0JpD_gKz3F6GaZuoDV3wIDHwc--PBsP4PtZAY1HLI-7CByFGy_6EFkUC2?purpose=fullsize
https://images.openai.com/static-rsc-4/fae1YCvVPxC-9UD_ulJsRVk1MmY-dHEh5fKdJpY2MESifVEWsqqD4_WojIzl75Pz7kbMikWj4gMb1I9Q5vo0eM4AKr_GxApryzV-PSrCpSK3lBQ5wcKUya-QyMRCiHnM3RvHAbhEH6wZm57axcN4Us8U47WqQBzsd_n8tpCpSX_z89r8pL9PO9jDa2KhZgUx?purpose=fullsize
https://images.openai.com/static-rsc-4/YForfOibbR02iX-KjqrUVwBbe39gAYQOLOBZxlW3yGcwPPX1jFf5uU0yPT3NihSR0gLI_SXBP6syq8iUNfaa4W93YMkG8UEP5wqW-MKAH_KxT8N3RWSLpzrCn3vn9q6kyUmV7vM0e3rY9o6XLvGcx5ZfC2RyrB6V1yjVLXUDhxjEaiUCfps_WZrnO0-948UR?purpose=fullsize

7

๐Ÿ“– Definisi

Priority Queue adalah struktur data di mana setiap elemen memiliki prioritas, dan elemen dengan prioritas tertinggi diproses terlebih dahulu.


๐Ÿง  Narasi

Berbeda dengan queue biasa:

  • Queue biasa โ†’ FIFO
  • Priority Queue โ†’ berdasarkan prioritas

๐Ÿฅ 11. Contoh Kehidupan Nyata

SistemImplementasi
Rumah sakitPasien darurat duluan
CPU SchedulingProses prioritas tinggi
JaringanPaket data prioritas
GameEvent penting lebih dulu

โš–๏ธ 12. Heap vs Queue vs Stack

๐Ÿ“Š Tabel Perbandingan

StrukturPrinsipAkses
StackLIFOTop
QueueFIFOFront
Priority QueuePriorityRoot (heap)

โฑ๏ธ 13. Kompleksitas Heap

๐Ÿ“Š Tabel Kompleksitas

OperasiKompleksitas
InsertO(log n)
DeleteO(log n)
PeekO(1)

๐Ÿง  14. Kelebihan Heap

๐Ÿ“Œ Narasi

Heap sangat penting karena:

  • Efisien untuk prioritas data
  • Digunakan di algoritma graf
  • Digunakan dalam sistem scheduling

โš ๏ธ 15. Kekurangan Heap

๐Ÿ“Š Tabel

KekuranganPenjelasan
Tidak fully sortedHanya root yang pasti
Akses terbatasTidak bisa random access
KompleksImplementasi agak sulit

๐Ÿงช 16. Studi Kasus Nyata

๐Ÿ“Œ Dijkstra Algorithm

  • Heap digunakan untuk memilih node dengan jarak terkecil

๐Ÿ“Œ Task Scheduling OS

  • Proses prioritas tinggi dijalankan lebih dulu

๐Ÿ’ป 17. Implementasi Sederhana (C++)

#include <queue>
#include <iostream>
using namespace std;int main(){
priority_queue<int> pq; // max heap pq.push(10);
pq.push(5);
pq.push(20); cout << pq.top(); // 20
}

๐Ÿ“š 18. Ringkasan Materi

  • Heap adalah complete binary tree dengan aturan prioritas
  • Ada max heap dan min heap
  • Priority queue menggunakan heap
  • Operasi utama: insert, delete, peek
  • Digunakan dalam sistem real seperti OS dan jaringan

๐Ÿ“ 19. Latihan / Diskusi

โœ๏ธ Soal Teori

  1. Jelaskan heap dan jenisnya
  2. Apa itu priority queue?
  3. Bedakan heap dan queue biasa

๐Ÿ’ป Soal Praktikum

  1. Implementasikan max heap sederhana
  2. Simulasikan priority queue
  3. Tambahkan dan hapus elemen heap

๐ŸŽฏ Penutup

Heap dan Priority Queue adalah struktur data penting untuk sistem berbasis prioritas, terutama dalam:

  • Operating System
  • Networking
  • Artificial Intelligence
  • Graph Algorithm