๐งญ 1. Pengertian Heap
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
| Karakteristik | Penjelasan |
|---|---|
| Bentuk | Complete Binary Tree |
| Aturan | Heap property (min/max) |
| Akses utama | Elemen root |
| Struktur | Tidak fully sorted |
๐ง Narasi
Heap bukan struktur yang sepenuhnya terurut, tetapi:
- Hanya menjamin elemen paling prioritas ada di root
๐ฒ 3. Jenis Heap
๐น A. Max Heap
7
๐ Konsep
- Parent selalu lebih besar dari child
- Root = nilai terbesar
๐ง Narasi
Seperti sistem ranking:
- Juara 1 selalu di puncak
๐น B. Min Heap
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)
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
| Hubungan | Rumus |
|---|---|
| Parent | (i – 1) / 2 |
| Left Child | 2i + 1 |
| Right Child | 2i + 2 |
๐ง Narasi
Heap tidak perlu pointer:
- Semua node disimpan dalam array
- Posisi ditentukan secara matematis
โ๏ธ 6. Operasi Heap
๐ Tabel Operasi
| Operasi | Deskripsi | Kompleksitas |
|---|---|---|
| Insert | Menambah elemen | O(log n) |
| Delete (root) | Menghapus elemen prioritas | O(log n) |
| Peek | Melihat root | O(1) |
โ 7. Insert pada Heap
6
๐ Proses
- Tambah di posisi terakhir
- Bandingkan dengan parent
- Tukar jika melanggar aturan
- Ulangi (heapify up)
๐ง Narasi
Seperti anak baru:
- Masuk ke bawah dulu
- Naik jika lebih โprioritasโ
โ 8. Delete (Heapify Down)
7
๐ Proses
- Hapus root
- Ganti dengan elemen terakhir
- Turunkan (heapify down)
- 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)
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
| Sistem | Implementasi |
|---|---|
| Rumah sakit | Pasien darurat duluan |
| CPU Scheduling | Proses prioritas tinggi |
| Jaringan | Paket data prioritas |
| Game | Event penting lebih dulu |
โ๏ธ 12. Heap vs Queue vs Stack
๐ Tabel Perbandingan
| Struktur | Prinsip | Akses |
|---|---|---|
| Stack | LIFO | Top |
| Queue | FIFO | Front |
| Priority Queue | Priority | Root (heap) |
โฑ๏ธ 13. Kompleksitas Heap
๐ Tabel Kompleksitas
| Operasi | Kompleksitas |
|---|---|
| Insert | O(log n) |
| Delete | O(log n) |
| Peek | O(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
| Kekurangan | Penjelasan |
|---|---|
| Tidak fully sorted | Hanya root yang pasti |
| Akses terbatas | Tidak bisa random access |
| Kompleks | Implementasi 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
- Jelaskan heap dan jenisnya
- Apa itu priority queue?
- Bedakan heap dan queue biasa
๐ป Soal Praktikum
- Implementasikan max heap sederhana
- Simulasikan priority queue
- 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