kapan kita harus berhenti karena telah sampai kepada solusi tetapi penyelesaian masalah akan dilakukan dengan membandingkan solusi pada tiap daun. Dalam
persoalan ini, akan dibandingkan jumlah keuntungan yang diperoleh pada tiap daun dan solusi permasalah merupakan lintasan yang menuju daun yang memiliki
keuntungan terbesar. Dari gambar diatas dapat disimpulkan bahwa solusi permasalahan dibentuk
oleh lintasan yang menuju simpul 13 dan 7 dimana keduanya merupakan solusi yang serupa yaitu memilih barang 2 dengan berat 5 kg , keuntungan 15 dan barang 3
dengan berat 10 kg, keuntungan 50 sebagai solusi permasalahan dan akan menghasilkan keuntungan yang maksimal pada penjualan yaitu sebesar 65.
2.2 Problema Knapsack dengan Algoritma Greedy
Problema knapsack 01 pada bab ini akan dibahas dengan menggunakan strategy greedy. Pendekatan yang digunakan di dalam algoritma greedy adalah membuat
pilihan yang “tampaknya” memberikan perolehan terbaik, yaitu dengan membuat pilihan optimum local local optimum pada setiap langkah dengan harapan bahwa
sisanya mengarah ke solusi optimum global global optimum 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. Dengan algoritma greedy, persoalan knapsack dapat dipecahkan dengan
memasukkan objek satu per satu ke dalam knapsack. Sekali objek dimasukkan ke dalam knapsack, objek tersebut tidak bias dikeluarkan lagi.
Terdapat beberapa strategy greedy yang heuristik yang dapat digunakan untuk memilih objek yang akan dimasukkan ke dalam knapsack.
Universitas Sumatera Utara
2.2.1. 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. Pertama kali yang dilakukan adalah secara menurun objek – objek berdasarkan
profitnya. Kemudian baru diambil satu – persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bias
dimasukkan. Algoritmanya yaitu :
Berdasarkan algoritma diatas maka dapat dihitung komplesitas waktu
asimptotik-nya adalah On
Sebagai data pengujian diberikan data-data untuk w Weight dan P Profit :
Dengan kapasitas knapsack W = 16 procedure Giby Profit var dt3 : arrayData;W : real;
Var i,j: integer
temp: data cW: real
tukar:boolean program
UrutkanDataBerdasarkanProfitdt3 WhilecWWandi=lengthdt3do
ifdt3[i].w=W-cWthen cW
←cW+dt3[i].w dt3[i].status
←True inci
10 5
50 ;
10 15
; 5
12 ;
2
1 4
1 3
1 2
1 1
= =
= =
= =
= =
p w
p w
p w
p w
Universitas Sumatera Utara
Tabel 2.2 Greedy by profit
Properti I w
i
p
i
Piw
i
Status 3 10 50 5 Diambil
2 5 15 3 Diambil
1 6 12 2 Tidak 4 5 10 2 Tidak
2.2.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. Pertama kali yag dilakukan adalah mengurutkan secara menaik objek-objek
berdasarkan weightnya. Kemudian baru diambil satu persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi
yang bias dimasukkan. Algoritma greedy by profit sebagai berikut :
Berdasarkan algoritma di atas maka dapat dihitung komplesitas waktu asimptotik-nya
adalah On
procedure Giby Weight var dt3 : arrayData;W : real; Var
i,j: integer temp: data
cW: real tukar:boolean
program UrutkanDataBerdasarkanWeightdt3
WhilecWWandi=lengthdt3do ifdt3[i].w=W-cWthen
cW
←cW+dt3[i].w dt3[i].status
←True inci
Universitas Sumatera Utara
Sebagai data pengujian diberikan data-data untuk w Weight dan P Profit :
Dengan kapasitas knapsack W = 16
Tabel 2.3 Greedy by weight
Properti I w
i
p
i
piw
i
Status 2 5 15 3
Diambil 4 5 10 2
Diambil 1 6 12 2
Diambil 3 10 50 5 Tidak
2.2.3. Greedy by density
Pada setiap langkah, knapsack diisi dengan objek yang mempunyai densitas terbesar. Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang
mempunyai keuntungan per unit berat terbesar. Pertama kali yang dilakukan adalah mencari nilai profit per unit density dari
tiap-tiap objek. Kemudian objek-objek tersebut diurutkan berdasarkan densitynya. Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh knapsack
sampai knapsack penuh atau sudah tidak ada objek lagi yang bisa dimasukkan. Pemilihan objek berdasarkan salah satu dari ketika strategi di atas tidak
menjamin akan memberikan solusi optimal. Berbeda dengan strategi brute force yang selalu dapat memberikan hasil yang optimal. Tetapi greedy mengurangi jumlah
langkah kompleksitas pencarian. 10
5 50
; 10
15 ;
5 12
; 2
1 4
1 3
1 2
1 1
= =
= =
= =
= =
p w
p w
p w
p w
Universitas Sumatera Utara
Berdasarkan algoritma diat maka dapat dihitung komplesitas waktu
asimptotik-nya adalah On
Sebagai data pengujian diberikan data-data untuk w Weight dan P Profit :
Dengan kapasitas knapsack W = 16
Tabel 2.4 Greedy by density
Properti I w
i
p
i
piw
i
Status 3 10 50 5 Diambil
2 5 15 3 Diambil
4 5 10 2 Tidak 1 6 12 5 Tidak
procedure GbyPW var dt3 : arrayData;W : real; Var
i,j: integer temp: data
cW: real tukar:boolean
program UrutkanDataBerdasarkanWeightdt3
→Mengurutkan data berdasarkan whilecWWandi=lengthdt3do
nilai density yang terbesar ifdt3[i].w=W-cWthen
ke nilai yang terkecil cW
←cW+dt3[i].w dt3[i].status
←True inci
10 5
50 ;
10 15
; 5
12 ;
2
1 4
1 3
1 2
1 1
= =
= =
= =
= =
p w
p w
p w
p w
Universitas Sumatera Utara
Maka, hasil akhirnya kita mendapatkan dta seperti di bawah ini:
Tabel 2.5 Greedy by density
Properti objek Greedy by
i w
i
p
i
p
i
w
i
profit weight Density 1 6 12 2
1 2 5 15 3
1 1
1 3 10 50 5
1 1
4 5 10 2 1
Total bobot 15
16 15
Total keuntungan
65 37 65
2.3 Problema Knapsack dengan Exhaustive Search