0% menganggap dokumen ini bermanfaat (0 suara)
528 tayangan

Knapsack Dynamic Programming

Dokumen tersebut membahas penyelesaian masalah 0/1 Knapsack Problem menggunakan metode dynamic programming. Masalah tersebut adalah memilih barang-barang tertentu dari sekumpulan barang dengan berat dan nilai tertentu untuk mendapatkan nilai maksimal namun tetap memenuhi kapasitas tas. Metode dynamic programming digunakan untuk menyelesaikan masalah ini dengan menghitung solusi submasalah secara rekursif hingga mendapatkan sol

Diunggah oleh

Sam F. Chaerul
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
528 tayangan

Knapsack Dynamic Programming

Dokumen tersebut membahas penyelesaian masalah 0/1 Knapsack Problem menggunakan metode dynamic programming. Masalah tersebut adalah memilih barang-barang tertentu dari sekumpulan barang dengan berat dan nilai tertentu untuk mendapatkan nilai maksimal namun tetap memenuhi kapasitas tas. Metode dynamic programming digunakan untuk menyelesaikan masalah ini dengan menghitung solusi submasalah secara rekursif hingga mendapatkan sol

Diunggah oleh

Sam F. Chaerul
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 16

Matakuliah Tahun

: T0034 / Perancangan & Analisis Algoritma : 2008

Pertemuan 17

0/1 KNAPSACK PROBLEM

DYNAMIC PROGRAMMING :

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 $6 Barang B beratnya 2 kg, nilainya $5 Barang C beratnya 5 kg, nilainya $9 Barang 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 {} {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

[buku utama, tabel 7.3]


Bina Nusantara

TEKNIK DP UNTUK KNAPSACK


for w=0 to Wmax do if wk w B[k 1, w] K[0,w]=0 B[k , w] end for max( B[k 1, w] | B[k 1, w wk ] bk ) else for i=1 to n do K[i,0]=0 end for for 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 for end for [buku utama, pseudocode 7.7]
Bina Nusantara

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

Anda mungkin juga menyukai