Algoritma greedy digunakan untuk memecahkan masalah optimasi dengan memilih solusi secara langkah demi langkah, dimana setiap langkah memilih alternatif terbaik berdasarkan fungsi seleksi. Algoritma ini tidak selalu menghasilkan solusi optimal global meskipun memberikan hasil yang mendekati optimal. Contoh penerapannya adalah masalah penukaran uang dan knapsack.
2. Pengantar
Algoritma Greedy sering digunakan untuk
memecahkan persoalan optimasi (optimization
problems) yaitu persoalan yang menuntut
pencarian solusi optimum.
Persoalan optimasi ada dua macam:
Maksimasi (maximization)
Minimasi (minimization)
Solusi optimum (terbaik) adalah solusi yang
bernilai minimum atau maksimum dari
sekumpulan alternatif solusi yang mungkin.
3. Pengantar
Elemen persoalan optimasi:
Kendala/batasan (constraints)
fungsi objektif(atau fungsi optiamsi)
Solusi yang memenuhi semua kendala disebut
solusi layak (feasible solution).
Solusi layak yang mengoptimumkan fungsi
optimasi disebut solusi optimum.
4. Pengantar
Algoritma greedy merupakan metode yang paling
populer untuk memecahkan persoalan optimasi.
Greedy = rakus, tamak, ….
Prinsip greedy adalah: “take what you can get
now!”.
Contoh masalah sehari-hari yang menggunakan
prinsip greedy:
Memilih beberapa jenis investasi (penanaman modal)
Mencari jalur tersingkat dari satu kota ke kota lain
Memilih jurusan di Perguruan Tinggi
5. Pengantar
Algoritma greedy membentuk solusi langkah per
langkah (step by step).
Terdapat banyak pilihan yang perlu dieksplorasi pada
setiap langkah solusi. Oleh karena itu, pada setiap
langkah harus dibuat keputusan yang terbaik dalam
menentukan pilihan. Keputusan yang telah diambil pada
suatu langkah tidak dapat diubah lagi pada langkah
selanjutnya.
Pendekatan yang digunakan di dalam algoritma greedy
adalah membuat pilihan yang “tampaknya” memberikan
perolehan terbaik, yaitu dengan membuat pilihan
optimum lokal (local optimum) pada setiap langkah
dengan harapan bahwa sisanya mengarah ke solusi
optimum global (global optimum).
6. Pengantar
Algoritma greedy adalah algoritma yang
memecahkan masalah langkah per langkah,
pada setiap langkah:
1. mengambil pilihan yang terbaik yang dapat
diperoleh pada saat itu tanpa memperhatikan
konsekuensi ke depan (prinsip “take what you can
get now!”)
2. berharap bahwa dengan memilih optimum lokal
pada setiap langkah akan berakhir dengan optimum
global.
Pada setiap langkah diperoleh optimum lokal.
Bila algoritma berakhir, kita berharap
optimum lokal menjadi optimum global.
7. Contoh: Penukaran Uang
Diberikan uang senilai A. Tukar A dengan koinkoin uang yang ada. Berapa jumlah minimum koin
yang diperlukan untuk penukaran tersebut?
Contoh: tersedia koin-koin 1, 5, 10, dan 25
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
) hanya 4 koin
8. Contoh: Penukaran Uang
Strategi greedy yang digunakan adalah:
Pada setiap langkah, pilihlah koin dengan nilai
sebesar mungkin dari himpunan koin yang
tersisa dengan syarat (kendala) tidak
melebihi nilai uang yang ditukarkan.
9. Contoh: Penukaran Uang
Tinjau masalah menukarkan uang 32 dengan
koin 1, 5, 10, dan 25:
Langkah 1: pilih 1 buah koin 25 (Total = 25)
Langkah 2: pilih 1 buah koin 5 (Total = 25 + 5 =
30)
Langkah 3: pilih 2 buah koin 1 (Total =
25+5+1+1= 32)
Solusi: Jumlah koin minimum = 4 (solusi
optimal)
10. Contoh: Penukaran Uang
Pada setiap langkah di atas kita memperoleh
optimum lokal, dan pada akhir algoritma kita
memperoleh optimum global (yang pada contoh
ini merupakan solusi optimum).
11. Skema Umum Algoritma Greedy
Algoritma greedy disusun oleh elemen-elemen
berikut:
1. Himpunan kandidat.
Berisi elemen-elemen pembentuk solusi.
2. Himpunan solusi.
Berisi kandidat-kandidat yang terpilih sebagai
solusi persoalan.
3. Fungsi seleksi (selection function).
Memilih kandidat yang paling memungkinkan
mencapai solusi optimal. Kandidat yang sudah
dipilih pada suatu langkah tidak pernah
dipertimbangkan lagi pada langkah selanjutnya.
12. Skema Umum Algoritma Greedy
4. Fungsi kelayakan (feasible).
Memeriksa apakah suatu kandidat yang telah
dipilih dapat memberikan solusi yang layak, yakni
kandidat tersebut bersama-sama dengan
himpunan solusi yang sudah terbentuk tidak
melanggar kendala (constraints) yang ada.
Kandidat yang layak dimasukkan ke dalam
himpunan solusi, sedangkan kandidat yang tidak
layak dibuang dan tidak pernah dipertimbangkan
lagi.
5. Fungsi obyektif.
Fungsi yang memaksimumkan atau meminimumkan
nilai solusi (misalnya panjang
lintasan, keuntungan, dan lain-lain).
13. Elemen Algoritma Greedy (pada
masalah penukaran uang)
1. Himpunan kandidat: himpunan koin yang
merepresentasikan nilai 1, 5, 10, 25, paling
sedikit mengandung satu koin untuk setiap nilai.
2. Himpunan solusi: total nilai koin yang dipilih tepat
sama jumlahnya dengan nilai uang yang
ditukarkan.
3. Fungsi seleksi: pilih koin yang bernilai tertinggi
dari himpunan kandidat yang tersisa.
4. Fungsi layak: memeriksa apakah nilai total dari
himpunan koin yang dipilih tidak melebihi jumlah
uang yang harus dibayar.
5. Fungsi obyektif: jumlah koin yang digunakan
minimum.
14. Keterbatasan Algoritma Greedy
Kadang-kadang optimum global merupakan solusi
sub-optimum atau pseudo-optimum. Alasan:
Algoritma greedy tidak beroperasi secara
menyeluruh terhadap semua alternatif solusi yang
ada
Pemilihan fungsi SELEKSI: Mungkin saja terdapat
beberapa fungsi SELEKSI yang berbeda, sehingga
kita harus memilih fungsi yang tepat jika kita
ingin algoritma bekerja dengan benar dan
menghasilkan solusi yang benar-benar optimum
15. Keterbatasan Algoritma Greedy
Karena itu, pada sebagian masalah algoritma
greedy tidak selalu berhasil memberikan solusi
yang benar-benar optimum.
Jika jawaban terbaik mutlak (benar-benar
optimum) tidak diperlukan, maka algoritma greedy
sering berguna untuk menghasilkan solusi yang
mendekati (approximation) optimum, daripada
menggunakan algoritma yang lebih rumit untuk
menghasilkan solusi yang eksak.
Bila algoritma greedy optimum, maka
keoptimalannya itu dapat dibuktikan secara
matematis
16. Pemecahan Masalah dengan Algoritma
Greedy
Strategi greedy yang digunakan dalam memilih
koin berikutnya:
Pada setiap langkah, pilihlah koin dengan nilai sebesar
mungkin dari himpunan koin yang tersisa dengan
syarat tidak melebihi nilai uang yang ditukarkan.
Agar pemilihan koin berikutnya optimal, maka
perlu mengurutkan himpunan koin dalam urutan
yang menurun.
Apakah algoritma greedy untuk masalah
penukaran uang ini selalu menghasilkan solusi
optimum? Jawabannya: tidak selalu, bergantung
pada koin mata uang yang digunakan.
17. Contoh: Penukaran Uang
Koin: 5, 4, 3, dan 1
Uang yang ditukar = 7.
Solusi dengan algoritma greedy:
7=5+1+1
(3 koin) tidak optimal
Solusi yang optimal: 7 = 4 + 3 ( 2 koin)
18. Contoh: Penukaran Uang
Koin: 10, 7 dan 1
Uang yang ditukar = 15.
15 = 10 + 1 + 1 + 1 + 1 + 1 (6 koin)
Solusi yang optimal: 15 = 7 + 7 + 1
(hanya 3 koin)
19. Contoh: Penukaran Uang
Koin: 15,10, dan 1
Uang yang ditukar = 20.
20 = 15 + 1 + 1 + 1 + 1 + 1
(6 koin)
Solusi yang optimal: 20 = 10 + 10
(2 koin)
21. Knapsack Problem menggunakan
algoritma Greedy
Algoritma Greedy:
Masukkan objek satu per satu ke dalam knapsack.
Sekali objek dimasukkan ke dalam knapsack, objek
tersebut tidak bisa dikeluarkan lagi.
Terdapat beberapa strategi greedy yang dapat
digunakan untuk memilih objek yang akan
dimasukkan ke dalam knapsack:
1. Greedy by Profit
2. Greedy by Weight
3. Greedy by Density
22. 1.
Knapsack Problem menggunakan
algoritma Greedy
Greedy by profit.
Pada setiap langkah, knapsack diisi dengan objek yang
mempunyai keuntungan terbesar. Strategi ini mencoba
memaksimumkan keuntungan dengan memilih objek yang paling
menguntungkan terlebih dahulu.
2. Greedy by weight.
Pada setiap langkah, knapsack diisi dengan objek yang
mempunyai berat paling ringan. Strategi ini mencoba
memaksimumkan keuntungan dengan memasukkan sebanyak
mungkin objek ke dalam knapsack.
3. Greedy by density.
Pada setiap langkah, knapsack diisi dengan objek yang
mempunyai densitas, pi/wi terbesar. Strategi ini mencoba
memaksimumkan keuntungan dengan memilih objek yang
mempunyai keuntungan per unit berat terbesar.
23. Knapsack Problem menggunakan
algoritma Greedy
Pemilihan objek berdasarkan salah satu
dari ketiga strategi greedy tidak
menjamin akan memberikan solusi
optimal. Bahkan ada kemungkinan ketiga
stategi tersebut tidak memberikan
solusi optimum.
24. Knapsack Problem menggunakan
algoritma Greedy
Contoh:
persoalan 0/1 Knapsack dengan n = 4.
w1 = 6; p1 = 12
w2 = 5; p2 = 15
w3 = 10; p3 = 50
w4 = 5; p4 = 10
Kapasitas knapsack W = 16
25. Knapsack Problem menggunakan
algoritma Greedy
Solusi dengan algoritma greedy
Properti objek
i
1
2
3
4
wi
pi
pi /wi
6
12
2
5
15
3
10
50
5
5
10
2
Total bobot
Total keuntungan
Greedy by
Solusi
profit weight density Optimal
0
1
1
0
15
65
1
1
0
1
16
37
0
1
1
0
15
65
0
1
1
0
15
65
26. Knapsack Problem menggunakan
algoritma Greedy
Pada contoh tersebut, algoritma greedy
dengan strategi pemilihan objek
berdasarkan profit dan density
memberikan solusi optimal, sedangkan
pemilihan objek berdasarkan berat tidak
memberikan solusi optimal.
28. Knapsack Problem menggunakan
algoritma Greedy
Solusi dengan algoritma greedy
i
1
2
3
4
5
6
Properti objek
wi
pi
pi /wi
100 40
0,4
50
35
0,7
45
18
0,4
20
4
0,2
10
10
1,0
5
2
0,4
Total bobot
Total keuntungan
Greedy by
profit weight density
1
0
0
0
0
0
100
40
0
0
1
1
1
1
80
34
0
1
0
1
1
1
85
51
Solusi
Optimal
0
1
1
0
0
0
100
55
29. Knapsack Problem menggunakan
algoritma Greedy
Pada contoh ini, algoritma greedy dengan
ketiga strategi pemilihan objek tidak
berhasil memberikan solusi optimal.
Solusi optimal permasalah ini adalah X =
(0, 1, 1, 0, 0, 0) dengan total keuntungan
= 55.
32. Fractional Knapsack
Solusi dengan algoritma greedy
i
1
2
3
Properti objek
wi
pi
pi /wi
18 25
1,4
15 24
1,6
10 15
1,5
Total bobot
Total keuntungan
Greedy by
profit weight density
1
2/15
0
20
28,2
0
2/3
1
20
31,0
0
1
1/2
20
31,5
33. Knapsack Problem menggunakan
algoritma Greedy
Penyelesaian persoalan knapsack yang memakai
strategi pemilihan objek berdasarkan pi/wi
terbesar memberikan keuntungan yang maksimum
(optimum).
Solusi optmal persoalan knapsack di atas adalah X
= (0, 1, 1/2) yang memberikan keuntungan
maksimum 31,5.
Agar proses pemilihan objek berikutnya
optimal, maka kita perlu mengurutkan objek
terlebih dahulu berdasarkan pi/wi dalam urutan
yang menurun, sehingga objek berikutnya yang
dipilih adalah objek sesuai dalam urutan itu.