Knapsack Dynamic Programming
Knapsack Dynamic Programming
Pertemuan 17
DYNAMIC PROGRAMMING :
Setiap barang hanya terdapat 1 buah, dan tidak bisa diambil sebagian. Si pencuri hanya punya pilihan untuk membawa atau meninggalkannya, tidak bisa membawa setengah. Barang apa saja yang harus dibawa si pencuri agar hasilnya maksimal?
[buku utama, bab 7.5]
Bina Nusantara
REPRESENTASI MASALAH n=4 W = 6; (b1, b2, b3, b4) = (6, 5, 9, 8) (w1, w2, w3, w4) = (3, 2, 5, 4)
n adalah banyaknya barang W adalah total berat maksimal yang bisa dibawa bn adalah benefit (keuntungan) dari barang n wn adalah berat barang n
Bina Nusantara
SOLUSI FEASIBLE
Barang {} {A} {B} {C} {D} {A,B} {A,C} {A,D} 0 3 2 5 4 5 8 7 Berat 0 6 5 9 8 11 15 14 Nilai Barang {B,C} {B,D} {C,D} {A,B,C} {A,B,D} {A,C,D} {B,C,D} {A,B,C,D} 7 6 9 10 9 12 11 14 Berat Nilai 14 13 17 20 19 23 22 28
LANGKAH 1
n = 4; W = 6; (b1, b2, b3, b4) = (6, 5, 9, 8); (w1, w2, w3, w4) = (3, 2, 5, 4) for w = 0 to W do K[0,w]=0 for i = 1 to n do K[i,0]=0
[buku utama, ilustrasi 7.14]
i\w 0 1
0 0 0
1 0
2 0
3 0
4 0
5 0
6 0
2
3 4
Bina Nusantara
0
0 0
LANGKAH 2
n = 4; W = 6; (b1, b2, b3, b4) = (6, 5, 9, 8); (w1, w2, w3, w4) = (3, 2, 5, 4) Kondisi : i=1 b[1]=6 w[1]=3
if w[i]<=w then if b[i]+K[i-1,w-w[i]]>K[i-1,w] then K[i,w]=b[i]+K[i-1,w-w[i]] else K[i,w]=K[i-1,w] end if else K[i,w]=K[i-1,w] end if
i\w 0 1
0 0 0
1 0 0
2 0 0
3 0 6
4 0 6
5 0 6
6 0 6
2
3 4
Bina Nusantara
0
0 0
LANGKAH 3
n = 4; W = 6; (b1, b2, b3, b4) = (6, 5, 9, 8); (w1, w2, w3, w4) = (3, 2, 5, 4) Kondisi : i=2 b[2]=5 w[2]=2
if w[i]<=w then if b[i]+K[i-1,w-w[i]]>K[i-1,w] then K[i,w]=b[i]+K[i-1,w-w[i]] else K[i,w]=K[i-1,w] end if else K[i,w]=K[i-1,w] end if
i\w 0 1
0 0 0
1 0 0
2 0 0
3 0 6
4 0 6
5 0 6
6 0 6
2
3 4
Bina Nusantara
0
0 0
11
11
LANGKAH 4
n = 4; W = 6; (b1, b2, b3, b4) = (6, 5, 9, 8); (w1, w2, w3, w4) = (3, 2, 5, 4) Kondisi : i=3 b[2]=9 w[2]=5
if w[i]<=w then if b[i]+K[i-1,w-w[i]]>K[i-1,w] then K[i,w]=b[i]+K[i-1,w-w[i]] else K[i,w]=K[i-1,w] end if else K[i,w]=K[i-1,w] end if
i\w 0 1
0 0 0
1 0 0
2 0 0
3 0 6
4 0 6
5 0 6
6 0 6
2
3 4
Bina Nusantara
0
0 0
0
0
5
5
6
6
6
6
11
11
11
11
LANGKAH 5
n = 4; W = 6; (b1, b2, b3, b4) = (6, 5, 9, 8); (w1, w2, w3, w4) = (3, 2, 5, 4) Kondisi : i=4 b[2]=8 w[2]=4
if w[i]<=w then if b[i]+K[i-1,w-w[i]]>K[i-1,w] then K[i,w]=b[i]+K[i-1,w-w[i]] else K[i,w]=K[i-1,w] end if else K[i,w]=K[i-1,w] end if
i\w 0 1
0 0 0
1 0 0
2 0 0
3 0 6
4 0 6
5 0 6
6 0 6
2
3 4
Bina Nusantara
0
0 0
0
0 0
5
5 5
6
6 6
6
6 8
11
11 11
11
11 13
MEMBACA HASILNYA
Dari tabel TSP diketahui bahwa keuntungan maksimal yang bisa diperoleh adalah $13. Barang apa saja yang harus diambil untuk mendapatkan keuntungan $13? Algoritma untuk mencari barang-barang yang dibawa :
i=n x=W while K[i,x]>0 do if K[i,x]<>K[i-1,x] then mark item i in the knapsack x=xw[i] i=i1 else i=i-1 end if end while
Bina Nusantara
LANGKAH 6
n = 4; W = 6; (b1, b2, b3, b4) = (6, 5, 9, 8); (w1, w2, w3, w4) = (3, 2, 5, 4) i=n x=W while K[i,x]>0 do if K[i,x]<>K[i-1,x] then mark item i in the knapsack x=xw[i] i=i1 else i=i-1 end if end while
[buku utama, ilustrasi 7.15]
i\w 0 1
0 0 0
1 0 0
2 0 0
3 0 6
4 0 6
5 0 6
6 0 6
2
3 4
Bina Nusantara
0
0 0
0
0 0
5
5 5
6
6 6
6
6 8
11
11 11
11
11 13
HASIL Jadi, keuntungan maksimal $13 bisa diperoleh dengan membawa barang kedua (B) dan barang keempat (D). Untuk pendalaman materi, pelajari contoh-contoh lain Knapsack Problem dari buku (kasus 7.3, kasus 7.4 dan kasus 7.5)
Bina Nusantara
LATIHAN Hitung penyelesaian 0/1 Knapsack Problem berikut dengan menggunakan Dynamic Programming !
n = 7; W = 10; (w1, w2, w3, w4, w5, w6, w7) = (5, 2, 3, 6, 4, 3, 2); (b1, b2, b3, b4, b5, b6, b7) = (36, 16, 21, 57, 28, 24, 13) n = 8; W = 9; (w1, w2, w3, w4, w5, w6, w7) = (5, 2, 3, 2, 6, 2, 4, 3); (b1, b2, b3, b4, b5, b6, b7) = (32, 59, 30, 17, 81, 16, 39, 25)
Bina Nusantara
REVIEW Apa yang sudah dipahami? Apa yang akan dibahas selanjutnya?
Bina Nusantara