download

Matakuliah
Tahun
Versi
: T0026/Struktur Data
: 2005
: 1/1
Pertemuan 18
Deap
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Mahasiswa dapat menghasilkan program
modular untuk mengimplementasikan ADT
deap
2
Outline Materi
•
•
•
•
Pengertian dan kegunaan deap
contoh deap
operasi pada deap
contoh implementasi program deap
3
DEAP
Definisi
Deap : double-ended heap, dengan karakteristik s.b.b. :
•
Root tidak memiliki elemen
•
Left Subtree merupakan minimum heap.
•
Right Subtree merupakan maksimum heap.
•
Jika subtree kanan tidak kosong maka, i adalah node pada subtree
kiri. j adalah node yang berkoresponden pada subtree kanan. Jika j
tidak ada maka node yang menjadi j adalah node pada subtree
kanan yang berkoresponden dengan parent dari i. Isi data (key) dari
node I harus lebih kecil atau sama dengan isi data pada node j
(key)
4
DEAP
5
45
10
15
8
19
9
25
30
40
20
minimum heap
maximum heap
Let i be in min heap.
Corresponding node j of i in max heap
j = i + 2log i - 1
if (j > n), then j = j/2

2
5
Representation
6
Insertion
•
•
•
Karena Deap adalah sebuah heap maka setiap kali dilakukan
insert, data yang baru akan dimasukan pada array paling akhir.
Setelah insert lakukan pembandingan dengan coresponden node
agar syarat sebuah heap tetap terjaga
Lakukan Heapify pada kedua Heap (Min Heap dan Max Heap)
7
Insertion
Insert(4)
5
45
10
15
8
19
9
25
30
I
20
40
4
J
J<I
tukar posisi!
8
Insertion
Insert(4)
5
45
10
15
8
4
9
I
25
30
20
40
19
J
19 posisi sudah benar
4 posisi lebih kecil dari parent tukar posisi!!
9
Insertion
Insert(4)
5
45
4
15
8
10
9
I
25
30
20
40
19
J
4 masih lebih kecil dibandingkan parent
tukar posisi!!!
10
Insertion
Insert(4)
4
45
5
15
8
10
9
25
30
I
20
40
19
J
Selesai
11
Insertion
Algorithm
12
Deletion
• Proses Delete pada Deap hanya terdiri dari 2 macam
delete yaitu Delete Min dan Delete Max
• Setelah dilakukan Delete maka posisi root dari tiap Heap
akan diisi dengan child yang paling kecil (jika Min Heap)
child paling besar (jika Max Hep). Proses ini terus
berlangsung sampai menuju leaf
• Jika telah mencapai leaf pindahkan node paling atas dari
array ke index leaf yang kosong
• Bandingkan dengan coresponden nodenya. Jika tidak
sesuai tukar
• Lakukan heapify
13