Permasalahan tersebut dapat dinyatakan dalam bentuk formal sebagai berikut :
Diberikan n buah objek dengan bobot masing-masing w
1
, w
2
, ..., w
n
dan keuntungan p
1
, p
2
, ..., p
n
. Lalu terdapat sebuah knapsack dengan bobot maksimum K. Solusi dari persoalan diatas dinyatakan dalam vektor n-tupel :
X = {x
1
, x
2
, ..., x
n
} Dimana xi bernilai 1 jika objek ke-i dipilih dan bernilai 0 jika objek ke-i
tidak dipilih. Misal X = {1,0,0} merupakan solusi dimana objek yang dipilih ialah objek ke-1, sedangkan objek ke-2 dan ke-3 tidak dipilih.
Solusi dihasilkan dengan batasan Maksimal
n i
i i
x p
F
1
Dengan kendala
n i
i i
K x
w
1
2.3 Algoritma Greedy
Secara harafiah, greedy berati rakus atau tamak. Algoritma Greedy merupakan algoritma sederhana dan lempang yang paling populer untuk
pemecahan persoalan optimasi maksimum atau minimum. Prinsip greedy adalah “take what you can get now”, yang digunakan dalam konteks positif.
Ada tiga pendekatan dalam menyelesaikan persoalan integer knapsack dengan algoritma Greedy, yaitu:
1. Greedy by profit Pada setiap langkah, knapsack diisi dengan objek yang mempunyai
keuntungan terbesar. Strategi ini memcoba memaksimumkan keuntungan dengan memilih objek yang paling menguntungkan terlebih dahulu.
Pertama kali yang dilakukan adalah mengurutkan secara menurun objek- objek berdasarkan profit-nya. Kemudian baru diambil satu-persatu objek
yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bisa dimasukkan.
2. Greedy by weight
Pada setiap langkah, knapsack diisi dengan objek yang mempunyai berat paling ringan. Strategi ini memcoba memaksimumkan keuntungan
dengan memasukkan sebanyak mungkin objek ke dalam knapsack. Pertama kali yang dilakukan adalah mengurutkan secara menaik objek-
objek berdasarkan weight-nya. Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau tidak
ada objek lagi yang bisa dimasukkan. 3. Greedy by density
Pada setiap langkah, knapsack diisi dengan objek yang mempunyai densitas piwi terbesar. Strategi ini mencoba memaksimumkan ke-
untungan per unit berat terbesar. Pertama kali yang dilakukan adalah mencari nilai profit per unit density dari tiap-tiap objek. Kemudian
objek-objek tersebut diurutkan secara menurun berdasarkan density-nya. Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh
knapsack sampai knapsack penuh atau tidak ada objek lagi yang bisa dimasukkan.
Pemilihan objek berdasarkan salah satu dari ketiga strategi di atas tidak menjamin akan memberikan solusi optimal. Bahkan ada kemungkinan ketiga
strategi tersebut tidak memberikan solusi optimum. Tinjauan persoalan Integer Knapsack dengan n = 3. Misalkan objek-objek
tersebut kita beri nomor 1, 2, 3. Properti setiap objek i dan kapasitas knapsack adalah sebagai berikut:
w
1
= 3; p
1
= 30 w
2
= 2; p
2
= 25 w
3
= 5; p
3
= 20 Kapasitas knapsack W = 8
Maka tabel solusi dengan menggunakan algoritma greedy adalah sebagai berikut:
Properti Objek Greedy by
i w
i
p
i
p
i
w
i
Weight Profit
Density Solusi
Optimal 1
3 30
10 1
1 1
1 2
2 25
12,5 1
1 1
1 3
5 20
4 Total Bobot
5 5
5 5
Total Keuntungan 55
55 55
55
Tabel 2.1 Contoh Solusi menggunakan Algoritma Greedy
Dari tabel diatas, algoritma greedy dengan ketiga strategi yang ada menghasilkan solusi yang optimal yaitu X = {1,1,0}. Artinya objek ke-1 dan
ke-2 dimasukkan ke dalam knapsack, sedangkan objek ke-3 tidak dimasukkan.
2.4 Bubble Sort Exchange Sort