Knapsack
adalah tas atau karung yang digunakan
untuk memasukkan sesuatu, tapi tidak semua barang
bisa ditampung ke dalam karung tersebut. Karung
tersebut hanya dapat menyimpan beberapa objek
dengan total ukurannya (weight)
lebih kecil atau sama dengan ukuran kapasitas karung.
knapsack problem bisa
kita gambarkan, misalnya kita mempunyai sebuah kantong atau tas dengan
kapasitas tertentu sedangkan dihadapan kita terdapat begitu banyak pilihan
barang, maka kita harus memilih barang mana saja yang kira-kira akan kita
ungkut sesuai kapasitas kantong yang kita miliki supaya bisa mendapatkan
keuntungan yang sebesar-besarnya atau maksimal.
Dalam menghadapi masalah seperti di
atas, metode greedy memiliki 3 pilihan strategi pengangkutan, yaitu :
- Greedy by Profit
Strategi ini mengharapkan keuntungan maksimal dengan cara memasukan barang atau objek dengan nilai keuntungan terbesar terlebih dahulu ke dalam kantong atau knapsack. Jadi strategi ini hanya mempertimbangkan jumlah keuntungan dari sekumpulan barang, dengan catatan berat barang yang akan dibawa tidak melebihi kapasitas kantong yang kita miliki. - Greedy by weight
Pada strategi ini, kita berusaha memasukan barang sebanyak-banyaknya kedalam kantong, jadi barang atau objek yang dimasukan terlebih dahulu adalah barang dengan bobot paling ringan terlebih dahulu, dengan harapan dengan banyaknya barang atau objek yang terangkut kita bisa mendapatkan keuntungan sebesar-besarnya. - Greedy by density
Strategi ini mengharapkan keuntungan sebesar-besarnya dengan memasukan barang yang memiliki keuntungan per-unit terbesar (Pi/Wi) terlebih dahulu kedalam kantong.
Tata
cara yang digunakan metode greedy dalam persoalan knapsack ini adalah :
- Masukkan objek satu per-satu ke dalam knapsack. Sekali objek dimasukkan ke dalam knapsack, objek tersebut tidak bisa dikeluarkan lagi.
Contoh kasus 1:
Tinjau persoalan 0/1 Knapsack dengan
n = 4.
w1 = 6; p1 = 12
w2 = 5; p1 = 15
w3 = 10; p1 = 50
w4 = 5; p1 = 10
Kapasitas knapsack W = 16
Solusi dengan algoritma greedy:
Properti
objek
|
Greedy
by
|
Solusi
Optimal
|
|||||
i
|
wi
|
pi
|
pi
/wi
|
profit
|
weight
|
density
|
|
1
|
6
|
12
|
2
|
0
|
1
|
0
|
0
|
2
|
5
|
15
|
3
|
1
|
1
|
1
|
1
|
3
|
10
|
50
|
5
|
1
|
0
|
1
|
1
|
4
|
5
|
10
|
2
|
0
|
1
|
0
|
0
|
Total
bobot
|
15
|
16
|
15
|
15
|
|||
Total
keuntungan
|
65
|
37
|
65
|
65
|
keterangan :
-> 1 = barang dimasukan.
-> 0 = barang tidak dimasukan.
-> 0 = barang tidak dimasukan.
-> pada "profit" diutamakan memasukan jumlah barang agar mendekati keuntungan maksimal.
-> pada "weight" diutamakan memasukan jumlah barang agar mendekati beban maksimal.
-> pada "density" diutamakan memasukan jumlah barang agar mendekati harga keuntungan per-unit barang maksimal.
· Pada contoh diatas, algoritma greedy dengan strategi pemilihan objek
berdasarkan profit dan density memberikan solusi optimal, sedangkan pemilihan
objek berdasarkan berat tidak memberikan solusi optimal.
Kemudian perhatikan contoh berikut ini
Contoh kasus 2:
persoalan knapsack lain dengan
6 objek:
w1
= 100; p1 = 40
w2 = 50; p2 = 35
w3 = 45; p3 = 18
w4 = 20; p4 = 4
w5
= 10; p5 = 10
w6 = 5; p6 = 2
Kapasitas knapsack W = 100
Properti
objek
|
Greedy
by
|
Solusi
Optimal
|
|||||
i
|
wi
|
pi
|
pi
/wi
|
profit
|
weight
|
density
|
|
1
|
100
|
40
|
0,4
|
1
|
0
|
0
|
0
|
2
|
50
|
35
|
0,7
|
0
|
0
|
1
|
1
|
3
|
45
|
18
|
0,4
|
0
|
1
|
0
|
1
|
4
|
20
|
4
|
0,2
|
0
|
1
|
1
|
0
|
5
|
10
|
10
|
1,0
|
0
|
1
|
1
|
0
|
6
|
5
|
2
|
0,4
|
0
|
1
|
1
|
1
|
Total
bobot
|
100
|
80
|
85
|
100
|
|||
Total
keuntungan
|
40
|
34
|
51
|
55
|
-> 1 = barang dimasukan.
-> 0 = barang tidak dimasukan.
-> 0 = barang tidak dimasukan.
-> pada "profit" diutamakan memasukan jumlah barang agar mendekati keuntungan maksimal.
-> pada "weight" diutamakan memasukan jumlah barang agar mendekati beban maksimal.
-> pada "density" diutamakan memasukan jumlah barang agar mendekati harga keuntungan per-unit barang maksimal.
- Pada contoh2, terlihat 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.
Sekian untuk artikel kali ini, semoga bermanfaat ^-^
Sumber referensi :
- http://whitenote03.blogspot.co.id/2016/10/knapsack-problem.html
- http://bloglogika.blogspot.co.id/2011/01/knapsack-problem.html
- https://hendryprihandono.wordpress.com/2009/01/03/knapsack-problem-dengan-algoritma-dan-metode-greedy/
- http://nurmaghany.blogspot.co.id/2012/01/knapsack-algoritma.html
yuhuuu...bermanfaat sekali
BalasHapusmesin pemisah lcd