Vous êtes sur la page 1sur 16

Saniati, M.T.

Algoritma greedy adalah salah satu algoritma dengan strategi solusi langsung (direct solution

strategies)
Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan

optimasi.
Persoalan optimasi (optimization problems): 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.

Greedy = rakus, tamak, loba, .


Prinsip greedy adalah: take what you can get now!.
Contoh masalah sehari-hari yang menggunakan prinsip greedy:
Mencari jalur tersingkat dari Bandung ke Surabaya

Memilih mata kuliah untuk setiap semester


Algoritma greedy membentuk solusi langkah per langkah (step by step).
Dengan Greedy setiap langkah dicari keputusan yang terbaik. Keputusan yang telah diambil pada

suatu langkah tidak dapat diubah lagi pada langkah selanjutnya.


Pendekatan greedy memberikan pilihan yang tampaknya terbaik, yaitu pilihan local optimum

pada setiap langkah dengan harapan sisanya mengarah ke solusi global optimum.

Persoalan: Diberikan uang senilai A. Tukar A dengan koin-koin 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

Dengan Greedy: Pada setiap langkah, pilihlah koin dengan nilai sebesar mungkin

dari himpunan koin yang tersisa dengan syarat (kendala) tidak melebihi nilai uang
yang ditukarkan.
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!)

Algoritma greedy disusun oleh elemen-elemen berikut:


Himpunan kandidat : Berisi elemen-elemen pembentuk solusi.
Himpunan solusi : Berisi kandidat-kandidat yang terpilih sebagai solusi persoalan.
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.
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 batas(constraints) yang ada. Kandidat yang
layak dimasukkan ke dalam himpunan solusi, sedangkan kandidat yang tidak layak
dibuang dan tidak pernah dipertimbangkan lagi.
Fungsi obyektif : Fungsi yang memaksimumkan atau meminimumkan nilai solusi

(misalnya panjang lintasan, keuntungan, dan lain-lain).

procedure greedy(input C: himpunan_kandidat; output S : himpunan_solusi)


{ menentukan solusi optimum dari persoalan optimasi dengan algoritma greedy
Masukan: himpunan kandidat C
Keluaran: himpunan solusi S
}
Deklarasi
x : kandidat;
Algoritma:
S{}
{ inisialisasi S dengan kosong }
while (belum SOLUSI(S)) and (C {} ) do
xSELEKSI(C);
{ pilih sebuah kandidat dari C}
C C - {x}
{ elemen himpunan kandidat berkurang satu }
if LAYAK(S {x}) then
SS {x}
endif
endwhile
{SOLUSI(S) sudah diperoleh or C = {} }

Himpunan kandidat: 1, 5, 10, 25


Himpunan solusi: total nilai koin yang dipilih tepat sama jumlahnya dengan nilai uang

yang ditukarkan.
Fungsi seleksi: pilihlah koin yang bernilai tertinggi dari himpunan kandidat yang

tersisa.
Fungsi layak: memeriksa apakah nilai total dari himpunan koin yang dipilih tidak

melebihi jumlah uang yang harus dibayar.


Fungsi obyektif: jumlah koin yang digunakan minimum.

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)

Greedy tidak selalu optimal, mendekati optimal

Misalkan kita mempunyai tiga pelanggan dengan waktu pelayanan masing-masing


t1 = 5, t2 = 10, t3 = 3,
maka enam urutan pelayanan yang mungkin adalah:

Urutan
T
=================================
1, 2, 3:
5 + (5 + 10) + (5 + 10 + 3 )
1, 3, 2:
5 + (5 + 3) + (5 + 3 + 10)
2, 1, 3:
10 + (10 + 5) + (10 + 5 + 3)
2, 3, 1:
10 + (10 + 3) + (10 + 3 + 5)
3, 1, 2:
3 + (3 + 5) + (3 + 5 + 10)
3, 2, 1:
3 + (3 + 10) + (3 + 10 + 5)

= 38
= 31
= 43
= 41
= 29 (optimal)
= 34

Himpunan kandidat:

t1 = 5, t2 = 10, t3 = 3,

Himpunan solusi: urutan semua pelanggan yang harus dilayani.


Fungsi seleksi: pilihlah pelanggan dengan kebutuhan waktu terkecil dari himpunan

kandidat yang tersisa.


Fungsi layak: memeriksa apakah semua pelanggan sudah dilayani.
Fungsi obyektif: jumlah waktu yang dibutuhkan untuk melayani semua pelanggan

minimum.

Persoalan 0/1 Knapsack yaitu melakukan pengambilan beberapa objek untuk dimasukkan

pada suatu wadah/ransel/kresek dengan batasan(constraint) ukuran wadah terbatas.


0/1 object boleh diambil(1) atau tidak(0)
Misalkan barang dilabeli dengan variabel i =1,2,3,4. Berat barang (wi ) dan harga barang
(pi ).
Tinjau persoalan 0/1 Knapsack dengan n = 4.

1
2
3
4

w1 = 6;
w2 = 5;
w3 = 10;
w4 = 5;

p1 = 12
p1 = 15
p1 = 50
p1 = 10

Kapasitas knapsack W = 16

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 heuristiknya dapat digunakan untuk memilih

objek yang akan dimasukkan ke dalam knapsack:


1. Greedy by profit.
Fungsi seleksi, memasukkan objeck ke knapsack dari yang paling tinggi harganya
(menguntungkan).
2. Greedy by weight.
Fungsi seleksi, memasukkan objeck ke knapsack dari yang paling ringan beratnya(semakin
banyak objek).
3. Greedy by density.
Fungsi seleksi, memasukkan objeck ke knapsack dari yang paling besar densitasnya pi /wi
(harga per satuan beratnya mahal).

Kapasitas knapsack W = 16
Properti objek

Greedy by

Solusi
Optimal

wi

pi

pi /wi

profit

weight

density

12

15

10

50

10

Total bobot 15

16

15

15

Total keuntungan 65

37

65

65

Greedy berdasarkan profit dan density memberikan hasil optimal

Ada 5 kota yang harus dikunjungi dan perjalanan dimulai dari kota E (harus kembali lagi)

C
5

4
5

E
3
8

Pada setiap langkah, (fungsi seleksi) pilih kota yang belum pernah dikunjungi yang
mempunyai jarak terdekat.
C

Langkah
Langkah
Langkah
Langkah
Langkah

1: Dari E pergi ke B (Total jarak = 3)


4
2: Dari B pergi ke A (Total jarak = 3 + 6 = 9)
E
3: Dari A pergi ke C (Total jarak = 9 + 5 = 14)
3
4: Dari C pergi ke D (Total jarak = 14 + 4 = 18)
8
5: Dari D kembali lagi ke E (Total jarak = 18 + 8 = 26)

Ada solusi optimal lain :E B D C A E

Panjang = 3 + 7 + 4 + 5 + 5 = 24. (optimal)

A
9

Perjalanan yg dihasilkan dg Greedy: E B A C D E

Panjang = 3 + 6 + 5 + 4 + 8 = 26.(tidak optimal)

Vous aimerez peut-être aussi