STRATEGI ALGORITMA
Topik 2:
GREEDY
Outline
1. Permasalahan optimasi
2. Algoritma greedy
4. Penjadwalan kerja
8. Pemampatan data
Contoh:
Tersedia koin-koin 1, 5, 10, dan 25 (tidak terbatas banyaknya).
Uang senilai 32 dapat ditukar dengan cara berikut:
32 = 1 + 1 + . . . + 1 (32 koin)
32 = 5 + 5 + 5 + 5 + 10 + 1 + 1 (7 koin)
32 = 10 + 10 + 10 + 1 + 1 (5 koin)
. . . dan seterusnya
Minimum:
32 = 25 + 5 + 1 + 1 (4 koin)
◦ Contoh 2:
Tersedia tak hingga banyak koin-koin 10, 7, dan 1. Jika kita ingin
menukarkan uang bernilai 15,
∑
n
T = xi
i=1
t1 = 5, t2 = 10, t3 = 3
t1 = 5, t2 = 10, t3 = 3
Deklarasi
x : pengguna
S : himpunan_ pengguna
Algoritma
S ← {}
while (C ̸= {}) do
x← pengguna dengan ti terkecil
C← C - {x}
S← S ∪ {x}
endwhile
return S
∑
n ∑
i
tp j
i=1 j=1
X = {x1 , x2 , . . . , xn }
Maximasi
∑
n
F = pi x i
i=1
dengan batasan
∑
n
w i xi ≤ K
i=1
◦ Greedy by weight
◦ Greedy by density
◦ Greedy by density
pi
Keuntungan per unit berat (densitas) dari objek i = .
wi
Deklarasi
i, tot : integer
x : himpunan_ solusi
Algoritma
for i ← 1 to n do
x[i] ← 0 {inisialisasi himpunan solusi}
endfor
i ← 1
tot ← 0
while (tot ≤ K) and (i ≤ n) do
if (tot + C.w[i] ≤ K) then
x[i]← 1
tot← tot + C.w[i]
endif
i← i + 1
endwhile
return x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 43
Kompleksitas greedy untuk 0/1 knapsack problem
X = {x1 , x2 , . . . , xn }
0 ≤ xi ≤ 1
Maximasi
∑
n
F = pi x i
i=1
dengan batasan
∑
n
w i xi ≤ K
i=1
0 ≤ xi ≤ 1
pi
Keuntungan per unit berat (densitas) dari objek i = .
wi
Teorema:
Jika p1 /w1 ≥ p2 /w2 ≥ . . . ≥ pn /wn , maka algoritma greedy dengan
strategi pemilihan objek berdasarkan pi /wi terbesar menghasilkan
solusi yang optimum.
Maximasi ∑
F = pi
i∈J
kemungkinan solusi.
kemungkinan solusi.
kemungkinan solusi.
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 layak
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 layak
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
3 3
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
3 3 tidak layak
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
3 3 - 80 tidak layak
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
3 3 - 80 tidak layak
4 2 - 80 tidak layak
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
3 3 - 80 tidak layak
4 2 - 80 tidak layak
Solusi: {4, 1}
Contoh:
Sebuah berkas yang berisi 100.000 karakter dengan frekuensi
kemunculan alfabet di dalam data sebagai berikut:
Alfabet a b c d e f
Frekuensi 45% 13% 12% 16% 9% 5%
Contoh:
Sebuah berkas yang berisi 100.000 karakter dengan frekuensi
kemunculan alfabet di dalam data sebagai berikut:
Alfabet a b c d e f
Frekuensi 45% 13% 12% 16% 9% 5%
a 0,45
b 0,13
c 0,12
d 0,16
e 0,09
f 0,05
a 0,45
b 0,13
c 0,12
d 0,16
e 0,09
f 0,05
a 0,45
b 0,13
c 0,12
d 0,16
e 0,09
0,14
f 0,05
a 0,45
b 0,13
c 0,12
d 0,16
e 0,09
0,14
f 0,05
a 0,45
b 0,13
0,25
c 0,12
d 0,16
e 0,09
0,14
f 0,05
a 0,45
b 0,13
0,25
c 0,12
d 0,16
e 0,09
0,14
f 0,05
a 0,45
b 0,13
0,25
c 0,12
d 0,16
0,30
e 0,09
0,14
f 0,05
a 0,45
b 0,13
0,25
c 0,12
d 0,16
0,30
e 0,09
0,14
f 0,05
a 0,45
b 0,13
0,25
c 0,12
0,55
d 0,16
0,30
e 0,09
0,14
f 0,05
a 0,45
b 0,13
0,25
c 0,12
0,55
d 0,16
0,30
e 0,09
0,14
f 0,05
a 0,45
b 0,13
1,00
0,25
c 0,12
0,55
d 0,16
0,30
e 0,09
0,14
f 0,05
a 0,45
b 0,13
1,00
0,25
c 0,12
0,55
d 0,16
0,30
e 0,09 0
0,14
f 0,05 1
a 0,45
b 0,13 0
1,00
0,25
c 0,12 1
0,55
d 0,16
0,30
e 0,09 0
0,14
f 0,05 1
a 0,45
0
b 0,13 0
1,00
0,25
0
c 0,12 1 1
0,55
d 0,16
0
1
0,30
e 0,09 0
0,14
1
f 0,05 1
d 0,16
0
1
0,30
e 0,09 0
0,14
1
f 0,05 1
d 0,16
0
1
0,30
e 0,09 0
0,14
1
f 0,05 1
d 0,16
0
1
0,30
e 0,09 0
0,14
1
f 0,05 1
d 0,16
0
1
0,30
e 0,09 0
0,14
1
f 0,05 1
d 0,16
0
1
0,30
e 0,09 0
0,14
1
f 0,05 1
d 0,16
0
1
0,30
e 0,09 0
0,14 1
f 0,05 1
d 0,16
0
1
0,30
e 0,09 0
0,14 1
f 0,05 1
d 0,16
0
1 ‘ada’
0,30 → ‘01100’
e 0,09 0
0,14
1
f 0,05 1
d 0,16
0
1 ‘ada’
0,30 → ‘01100’
e 0,09 0
0,14
1 ‘10001010’
1
→ ‘baca’
f 0,05
A
3
5
7 4
5
E B
3
2
6 4
D C
4
D C
4