Anda di halaman 1dari 34

Nama : Bagas Singih P (1134010084)

Diajeng Nurul A (1134010086)


Fajar Satriyo (1134010087)
Ghora Vira Z.R (1134010088)
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
MAKSIMUM / 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
HEAP MINIMUM
2

50 4

100 51 20 10
HEAP MAKSIMUM
100

95 99

1 2 45 47
OPERASI HEAP
 Insert Node

Yaitu memasukkan sebuah node baru ke


dalam heap.

 Remove Node

Yaitu mengambil nilai root node pada heap,


menghapus root node, kemudian mengatur
ulang heap.
INSERT NODE
REMOVE NODE
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


HEAP SORT
 Misalkan kita memiliki bilangan 21, 45, 15, 30 dan
19 untuk diurutkan.
Pengertian Priority Queue
 Suatu kontainer yang berisi beberapa item
dimana setiap item memiliki prioritas.
 Kemungkinan setiap item mempunyai
waktu tenggat yang berbeda-beda.
 Item dengan prioritas tertinggi merupakan
item yang akan diproses atau dilayani
selanjutnya.
Sorted Table
 Pengambilan elemen untuk dilayani selalu dari
HEAD
 Penambahan elemen dilakukan sesuai prioritas.
Elemen dalam antrian selalu dalam prioritas,
dengan prioritas lebih tinggi untuk dilayani selalu
lebih “dekat” ke HEAD
 Terdapat tiga alternatif penyimpanan antrian
Alternatif I
 Tabel dengan hanya representasi TAIL adalah indeks
elemen terakhir. HEAD selalu diset =1 jika queue tidak
kosong. Jika queue kosong, maka HEAD=0. Berikut ini
ilustrasi queue tidak kosong dengan 5 elemen
 Algoritma paling sederhana untuk penambahan elemen
 Jika masih ada tempat adalah dengan “memajukan” TAIL.
 Kasus khusus untuk queue kosong karena HEAD harus diset
nilainya menjadi 1
Alternatif I (cont’d)
 Algoritma paling sederhana untuk penghapusan
elemen jika queue tidak kosong ambil nilai elemen
HEAD, geser semua elemen ulai dari HEAD+1 s/d
TAIL(jika ada), kemudian TAIL “mundur”.
 Kasus khusus untuk queue dengan keadaan awal
berelemen 1, yaitu menyesuaikan HEAD & TAIL
dengan DEFINISI. Algoritma ini mencerminkan
pergeseran orang yang sedang mengantri di dunia
nyata tapi tidak EFISIEN
Alternatif II
 Tabel dengan representasi HEAD & TAIL. HEAD
bergerak ketika sebuah elemen dihapus jika queue
tidak kosong. Jika queue kosong maka HEAD=0.
Alternatif II
 Ilustrasi queue tidak kosong, dengan 5 elemen,
kemungkinan pertama HEAD sedang di posisi awal:
Alternatif II (cont’d)
 Ilustrasi queue tidak kosong, dengan 5 elemen,
kemungkinan pertama HEAD tidak berada di posisi
awal. Hal ini terjadi akibat algoritma penghapusan
yang dilakukan
Alternatif II (cont’d)

 Algoritma untuk penambahan elemen = alternatif I:


jika masih ada tempat adalah dengan memajukan
TAIL. Kasus khusus untuk queue kosong karena
HEAD harus diset nilainya menjadi 1. Algoritma =
alternatif I
Alternatif II (cont’d)
 Algoritma untuk penghapusan elemen jika queue
tidak kosong: ambil nilai elemen HEAD, kemudian
HEAD maju. Kasus khusus untuk queue dengan
keadaan awal berelemen 1, yaitu menyesuaikan HEAD
& TAIL dengan DEFINISI.

 Algoritma ini tidak mencerminkan pergeseran orang


yang sedang mengantri dunia nyata, tapi efisien.
Alternatif II (cont’d)
 Namun suatu saat terjadi keadaan queue penuh tetapi
“semu” sebagai berikut:

 Jika keadaan ini terjadi, haruslah dilakukan aksi


menggeser elemen untuk menciptakan ruangan
kosong. Pergeseran dilakukan jika dan hanya jika
Alternatif III
 Tabel dengan representasi HEAD & TAIL “berputar”
mengelilingi indeks tabel dari awal sampai akhir,
kemudian kembali ke awal.

 Jika queue kosong maka HEAD=0. Representasi


memungkinkan tidak perlu lagi ada pergeseran yang
harus dilakukan seperti pada alternatif II pada saat
penambahan elemen
Alternatif III (cont’d)
 Ilustrasi queue tidak kosong dengan 5 elemen dan
HEAD berada di posisi awal:
Alternatif III (cont’d)
 Ilustrasi queue tidak kosong dengan 5 elemen dan
HEAD tidak berada di posisi awal, tetapi “<” atau
“sebelum” TAIL.
Alternatif III (cont’d)
 Ilustrasi queue tidak kosong dengan 5 elemen, HEAD
tidak berada di posisi awal, tetapi “>” atau “sesudah”
TAIL.
Alternatif III (cont’d)
 Algoritma untuk penambahan elemen
 Jika masih ada tempat adalah dengan memajukan
TAIL.
 Jika TAIL sudah mencapai IdxMax maka suksesor
dari IdxMax adalah 1 sehingga TAIL yang baru=1.
 Jika TAIL belum mencapai IdxMax maka
algoritma penambahan elemen = altern II.
 Kasus khusus untuk queue kosong karena HEAD harus
diset nilainya menjadi 1.
Alternatif III (cont’d)
 Algoritma penghapusan elemen
 Jika queue tidak kosong ambil nilai elemen HEAD,
kemudian HEAD maju.
 Penentuan suksesor dari indeks yang sudah diubah/”maju”
dibuat seperti algoritma penambahan elemen.
 Jika HEAD mencapai IdxMax, maka suksesor dari
HEAD =1
 Kasus khusus untuk queue dengan keadaan awal
berelemen 1, yaitu menyesuaikan HEAD & TAIL dengan
DEFINISI.
Alternatif III (cont’d)
 Algoritma ini EFISIEN karena tidak
perlu pergeseran dan seringkali strategi
pemakaian tabel semacam ini disebut
sebagai “circular buffer”, dimana tabel
penyimpan elemen dianggap sebagai
“buffer
Representasi Penyimpanan Priority
Queue
 Tempat penyimpanan antrian dapat diadaptasi dari
salah satu alternatif. Penomoran prioritas dapat
ditentukan, misal:
 Prioritas bernilai 0 s/d PrioMax, dengan 0 untuk
prioritas paling tinggi (ascending)
 Prioritas bernilai 0 s/d PrioMax, dengan 0 untuk
prioritas paling rendah (descending)
 Contoh keadaan queue dengan prioritas 0 s/d 5,
tersusun ascending

 Ilustrasi queue tidak kosong, dengan 5 elemen,


dengan HEAD tidak berada di posisi awal, tetapi
masih “lebih kecil” atau “sebelum” TAIL. Angka(1,0)
berarti nilai informasi yang disimpan adalah 1 dengan
prioritas 0.
ADT Priority Queue (PQ)
 Representasi fisik:
 Tabel kontigu
 Berkait pointer
 Primitif-primitif ADT PQ yang didefinisikan:
 Menentukan apakah suatu PQ kosong atau tidak
(IsEmpty)
 Menentukan apakah suatu PQ telah penuh atau
belum (IsFull)
 Mengirimkan banyaknya elemen PQ (NbElmt)
 Menginisialisasi sebuah PQ kosong( CreateEmpty)
Primitif PQ (cont’d)
 Mengembalikan semua memori PQ, PQ kosong
(dealokasi)
 Menambahkan elemen X pada PQ dengan aturan PQ
(add)
 Menghapus elemen X pada PQ dengan aturan FIFO
(del)

Anda mungkin juga menyukai