OPTIMASI
PENERAPAN ALGORITMA GREEDY PADA
KASUS KNAPSACK 0/1
ALGORITMA GREEDY
Algoritma
greedy
adalah salah satu yang paling banyak digunakan dalam
masalah optimasi.
Greedy
berarti
“
tamak
‟
atau
“
rakus
‟
.
CARA KERJA GREEDY
Bertahap, pada setiap tahap diambil suatu keputusan yang
dianggap terbaik, tanpa memperhitungkan konsekuensi ke
depan. Ini berarti hanya memilih suatu optimum lokal.
Seolah mengatakan:
take what you can get now
greedy
KNAPSACK
A. Pengertian
Knapsack adalah tas atau karung. Karung digunakan untuk memuat
sesuatu. Dan tentunya tidak semua objek dapat ditampung di dalam
karung tersebut. Karung tersebut hanya dapat menyimpan beberapa objek
dengan total ukurannya (weight) lebih kecil atau sama dengan ukuran
kapasitas karung.
B. Manfaat knapsack
RATIONAL KNAPSACK (RK)
• Problem instance: Terdapatn objek, masing-masing dengan bobot wi dan profit pi untuk1 ≤ i ≤ n. W adalah kapasitas knapsack
• Solusi fisibel: vektor(x1 , …, x n ) dengan 0 ≤ xi ≤ 1 untuk 1 ≤ i ≤ n
• Fungsi tujuan:
IDE ALGORITMA GREEDY
Pada setiap tahap, akan diambil jumlah ukuran terbesar yang paling mungkin,
dengan catatan konstrains dipenuhi.
Langkah terhenti bila:
1. Knapsack
penuh, atau
ALGORITMA YANG DIGUNAKAN UNTUK
KNAPSACK 0/1
GREEDY
Greedy By Profit (pi)
Greedy By Weight(wi)
CONTOH PENYELESAIAN DENGAN ALGORITMA
GREEDY
Tinjau persoalan
Integer Knapsack
dengan
n
= 4.
w
1= 2;
p
1= 20
w
2= 5;
p
2= 30
w
3= 10;
p
3= 50
w
4= 5;
p
4= 10
Properti Objek Greedy By Solusi Optimal i Pi Wi Pi/Wi Profit Weight Density
PSEUDO CODE ALGORITMA GREEDY
for i =1 to n do
x[i] = 0 { inisialisasi setiap status pengambilan objek i dengan 0 }
endfor i = 0
TotalBobot = 0 Available = true
while (i <= n) and (Available) do
{ cek objek ke-i }
i = i + 1
if TotalBobot + w[i] <= K then { masukkan objek Ci ke dalam knapsack }
x[i] =1
TotalBobot =TotalBobot + w[i] else
Available = false
x[i] = 0 { objek Ci tidak dimasukkan ke dalam knapsack }
endif endwhile
{ i > n or not Available }
return x
ALGORITMA BRUTE FORCE
Prinsip pencarian solusi permasalahan Integer Knapsack menggunakan algoritma brute force adalah:
1. Mengenumerasikan list semua himpunan bagian dari himpunan dengan n objek
2. Menghitung total keuntungan dari setiap himpunan bagian dari langkah 1
CONTOH PENYELESAIAN DENGAN BRUTE FORCE
Tinjau persoalan
Integer Knapsack
dengan
n =
4.
w
1= 2;
p
1= 20
w
2= 5;
p
1= 30
w
3= 10;
p
1= 50
w
4= 5;
p
1= 10
Kapasitas
knapsack W
= 16
Himpunan Bagian Total Bobot Total Keuntungan