Knapsack Dynamic Programming
-
Upload
sam-f-chaerul -
Category
Documents
-
view
285 -
download
24
Embed Size (px)
Transcript of Knapsack Dynamic Programming


Matakuliah : T0034 / Perancangan & Analisis Algoritma
Tahun : 2008
Pertemuan 17
DYNAMIC PROGRAMMING :0/1 KNAPSACK PROBLEM

Bina Nusantara
REVIEW KNAPSACK PROBLEM
• Seorang pencuri memasuki sebuah rumah. Dia membawa tas yang hanya muat mengangkut 6 kg barang. Di dalam rumah terdapat barang A, B, C, D
Barang A beratnya 3 kg, nilainya $6Barang B beratnya 2 kg, nilainya $5Barang C beratnya 5 kg, nilainya $9Barang D beratnya 4 kg, nilainya $8
• 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 Berat Nilai Barang Berat Nilai
{} 0 0 {B,C} 7 14
{A} 3 6 {B,D} 6 13
{B} 2 5 {C,D} 9 17
{C} 5 9 {A,B,C} 10 20
{D} 4 8 {A,B,D} 9 19
{A,B} 5 11 {A,C,D} 12 23
{A,C} 8 15 {B,C,D} 11 22
{A,D} 7 14 {A,B,C,D} 14 28
[buku utama, tabel 7.3]

Bina Nusantara
TEKNIK DP UNTUK KNAPSACKfor w=0 to Wmax do K[0,w]=0end forfor i=1 to n do K[i,0]=0end forfor i=1 to n do for w=0 to Wmax do 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 end forend for
elsebwwkBwkB
wwifwkBwkB
kk
k
)],1[|],1[max(
],1[],[
[buku utama, pseudocode 7.7]

Bina Nusantara
LANGKAH 1n = 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
i\w 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0
2 0
3 0
4 0
[buku utama, ilustrasi 7.14]

Bina Nusantara
LANGKAH 2n = 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 ifelse K[i,w]=K[i-1,w]end if
i\w 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 0 0 6 6 6 6
2 0
3 0
4 0

Bina Nusantara
LANGKAH 3n = 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 ifelse K[i,w]=K[i-1,w]end if
i\w 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 0 0 6 6 6 6
2 0 0 5 6 6 11 11
3 0
4 0

Bina Nusantara
LANGKAH 4n = 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 ifelse K[i,w]=K[i-1,w]end if
i\w 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 0 0 6 6 6 6
2 0 0 5 6 6 11 11
3 0 0 5 6 6 11 11
4 0

Bina Nusantara
LANGKAH 5n = 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 ifelse K[i,w]=K[i-1,w]end if
i\w 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 0 0 6 6 6 6
2 0 0 5 6 6 11 11
3 0 0 5 6 6 11 11
4 0 0 5 6 8 11 13

Bina Nusantara
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=nx=Wwhile K[i,x]>0 do if K[i,x]<>K[i-1,x] then mark item i in the knapsack x=x–w[i] i=i–1 else i=i-1 end ifend while

Bina Nusantara
LANGKAH 6n = 4; W = 6; (b1, b2, b3, b4) = (6, 5, 9, 8); (w1, w2, w3, w4) = (3, 2, 5, 4)
i=nx=Wwhile K[i,x]>0 do if K[i,x]<>K[i-1,x] then mark item i in the knapsack x=x–w[i] i=i–1 else i=i-1 end ifend while
i\w 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 0 0 6 6 6 6
2 0 0 5 6 6 11 11
3 0 0 5 6 6 11 11
4 0 0 5 6 8 11 13
[buku utama, ilustrasi 7.15]

Bina Nusantara
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?