download

Matakuliah
Tahun
: T0034 / Perancangan & Analisis Algoritma
: 2008
Pertemuan 7
PRIORITY QUEUE & HEAP
PRIORITY QUEUE
• Adalah pengembangan lebih lanjut dari konsep
Queue
– yaitu sebuah queue yang setiap komponennya terdiri
atas (key, value)
• Contoh aplikasi Priority Queue
– Antrian calon penumpang pesawat terbang yang
standby
– Stock market
[buku utama, bab 4.3]
Bina Nusantara
OPERASI PRIORITY QUEUE
•
InsertItem(k,v)
–
•
RemoveMin()
–
•
Mendapatkan nilai value terkecil.
Size()
–
•
Mendapatkan prioritas terkecil.
GetMinValue()
–
•
Mirip operasi POP pada queue biasa, yaitu mendapatkan nilai elemen “paling depan” dalam
antrian (dengan memperhatikan prioritasnya).
GetMinKey()
–
•
Yaitu memasukkan sebuah elemen ke dalam value di mana k adalah key dan v adalah value.
Mendapatkan ukuran besarnya queue.
IsEmpty()
–
Bina Nusantara
Memeriksa apakah queue berisi sesuatu atau tidak.
IMPLEMENTASI PRIORITY QUEUE
• Unsorted List
– InsertItem O(1)
– RemoveKey(), GetMinKey() O(n)
• Sorted List
– InsertItem O(n)
– RemoveKey(), GetMinKey() O(1)
Bina Nusantara
PQ UNTUK SORT
• Selection Sort
– Adalah variasi dari PQ dengan unsorted list
– Menambahkan elemen baru memerlukan waktu O(n)
– Menghilangkan sebuah elemen memerlukan waktu
1+2+3+...+n berarti O(n2)
• Insertion Sort
– Adalah variasi dari PQ dengan sorted list
– Menambahkan elemen baru memerlukan waktu
1+2+3+...+n berarti O(n2)
– Menghilangkan sebuah elemen memerlukan waktu O(n)
Bina Nusantara
HEAP
• Heap adalah sebuah Tree yang
–
–
–
–
Memenuhi syarat Binary Tree secara lengkap
Terdiri atas internal node dan external node
Setiap internal node menyimpan sebuah nilai
Nilai-nilai pada setiap node-nya memenuhi syarat Heap
Minimum atau Heap Maksimum
[buku utama, bab 4.4.2]
Bina Nusantara
MAXIMUM / MINIMUM HEAP
• Heap Maksimum
– jika nilai root lebih besar dari nilai left child dan right child
• Heap Minimum
– jika nilai root lebih kecil dari nilai left child dan right child
• Pembahasan selanjutnya menggunakan Heap
Minimum
Bina Nusantara
MINIMUM HEAP
[buku utama, ilustrasi 4.8]
Bina Nusantara
PRIORITY QUEUE PADA HEAP
[buku utama, ilustrasi 4.10]
Bina Nusantara
OPERASI HEAP
• InsertNode(k)
– Yaitu memasukkan sebuah node baru ke dalam heap.
• RemoveNode
– Yaitu mengambil nilai root node pada heap, menghapus
root node, kemudian mengatur ulang heap.
• Empty
Bina Nusantara
INSERT NODE
[buku utama, ilustrasi 4.11]
Bina Nusantara
REMOVE NODE
[buku utama, ilustrasi 4.12]
Bina Nusantara
HEAP SORT
• Adalah teknik pengurutan data menggunakan sifat-sifat
heap.
• Langkah-langkah :
– Semua bilangan dimasukkan ke heap dengan perintah InsertNode
– Kemudian heap dikosongkan satu per satu dengan perintah
RemoveNode
– Setiap pengosongan, catat hasilnya
– Hasilnya, bilangan sudah berurut
• Misalkan kita memiliki bilangan 21, 45, 15, 30 dan 19 untuk
diurutkan.
[buku utama, bab 5.2.4]
Bina Nusantara
ILUSTRASI HEAP SORT
[buku utama, ilustrasi 5.3]
Bina Nusantara
KOMPLEKSITAS HEAP SORT
• Kompleksitas algoritma Heap Sort terdiri atas
– Kompleksitas membangun heap
– Kompleksitas RemoveNode sampai habis
• Maka kompleksitas Heap Sort
Bina Nusantara
f (n)  (n 2 log n)
LATIHAN
• Buatlah langkah-langkah menurutkan bilanganbilangan 34, 15, 23, 9, 41, 26, 39, 11, 7, 28 dengan
menggunakan Heap Sort!
Bina Nusantara
REVIEW
• Apa yang sudah dipahami?
• Apa yang akan dibahas selanjutnya?
Bina Nusantara