Contoh Kasus
Dua pesawat,A dan B, akan mendarat di sebuah bandara
Pesawat A memiliki sisa bahan bakar 1000 liter
Pesawat B memiliki sisa bahan bakar 800 liter
Pesawat A berjarak 3 menit dari bandara
Pesawat B berjarak 6 menit dari bandara
Pesawat mana yang sebaiknya diprioritaskan untuk mendarat? Kenapa?
3
4.
Small Quiz
Berapa tinggiminimal binary tree berikut ini?
Sebuah binary tree memiliki 1 node
Sebuah binary tree memiliki 3 node
Sebuah binary tree memiliki 7 node
Berapa jumlah node maksimal yang mungkin dimiliki oleh sebuah binary tree
dengan ketinggian 0
dengan ketinggian 1
dengan ketinggian 5
4
5.
Contoh Kasus lain
Mendapatkanmost popular (trending) items.
Message queue dalam lingkungan komputasi terdistribusi.
5
6.
Heap
Complete binary tree
Setiapnode memiliki dua anak. Kecuali nodes di level terakhir.
Node baru ditambahkan ke level paling bawah, dari kiri ke kanan
Heap Property
Max Heap atau Min Heap
Max Heap: Nilai di sebuah node harus lebih besar daripada nilai di node
anak
Benar atau Salah: Elemen terbesar dalam Max heap pasti ada di root
6
7.
Representasi Heap
Direpresentasikan menggunakanlist
Root adalah elemen di index 0
Anak kiri dari root diletakkan di index 1
Anak kanan dari root diletakkan di index 2
Anak kiri dari sebuah node dengan index diletakkan di index
Anak kanan dari sebuah node dengan index diletakkan di index
Parent dari sebuah node dengan index ada di index
7
8.
Representasi Heap
Heap denganjumlah node
Semua nodes memiliki child / children mulai dari elemen pertama hingga
elemen
Elemen-elemen yang memiliki child / children hanyalah "setengah" dari
elemen
8
Heap dalam Python
Importmodule heapq .
Minimum heap (elemen terkecil ada di posisi pertama).
import heapq as hp
d1 = [2, 3, 4, 5, 6, 8, 9]
hp.heapify(d1)
d2 = [2, 9, 3, 8, 4, 6, 5]
hp.heapify(d2)
# Menambahkan elemen baru ke dalam heap
hp.heappush(d1, 1)
hp.heappush(d2, 1)
print(d1, d2)
10
11.
Heap dalam Python
#Menghapus elemen dari heap
hp.heappop(d1)
hp.heappop(d2)
print(d1, d2)
heapreplace() sama seperti heappop() diikuti dengan heapppush()
heappushpop() sama seperti heappush() diikuti dengan heappop()
11
12.
Contoh
List mana yangmerupakan heap?
d1 = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]
d2 = [10, 20, 43, 1, 2, 65, 17, 44, 6, 7, 8]
d3 = [4, 1, 3, 2, 16, 9, 10, 14, 8, 7]
import heapq as hp
h1 = []
for d in d1:
hp.heappush(h1, d)
print(h1)
h2 = []
for d in d2:
hp.heappush(h2, d)
print(h2)
12
13.
Heapify
Mulai dari "separuh"heap awal, mundur hingga ke elemen pertama
"separuh" sisanya tidak memiliki anak, pasti ada di posisi leaf
Jika ada susunan yang tidak memenuhi Heap Property, benahi.
Lakukan secara rekursif.
13