Download presentation

Presentation is loading. Please wait.

Published byHana Hincks Modified about 1 year ago

1
Knapsack Problem Section 7.6

2
Problem Suppose we have n items U={u 1,..u n }, that we would like to insert into a knapsack of size C. Each item u i has a size s i and a value v i. A choose a subset of items S U such that

3
Dynamic Programming Solution For 1 j C & 1 I n, let V[i,j] be the optimal value obtained by filling a knapsack of size j with items taken from {u 1,..u i }. Also V[i,0]=0 and V[0,j]=0. Our Goal is to find V[n,C]

4
Recursive Formula

5
Algorithm: Knapsack Input: Knapsack of size C, items U={u 1,..u n }, with sizes s 1,.., s n, and values v 1,.., v n Output: For i 0 to n V[i,0] 0 end for For j 0 to C V[0,j] 0 end for for i 1 to n for j 1 to C V[i,j] = V[i-1,j] if s i j then V[i,j] =max{V[i,j], V[i-1,j- s i ] + v i } end for Return V[n,C]

6
Performance Analysis Time = (nC) Space = (nC) But can be modified to use only (C) space by storing two rows only.

7
How does it work? 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000 0 1 2 3.......................s1...................s2.............................................C 012.....n012.....n 0 0 0 0 0 0 0 0 0 0 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 Copy the above red line here = max{ + v2, }

8
How does it work? 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000 0 1 2 3.......................s1...................s2.............................................C 012.....n012.....n 0 0 0 0 0 0 0 0 0 0 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 Copy the above red line here = max{ + v2, }

9
How does it work? 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000 0 1 2 3.......................s1...................s2.............................................C 012.....n012.....n 0 0 0 0 0 0 0 0 0 0 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 Copy the above red line here = max{ + v2, }

10
How does it work? 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000 0 1 2 3.......................s1...................s2.............................................C 012.....n012.....n 0 0 0 0 0 0 0 0 0 0 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 Copy the above red line here = max{ + v2, }

11
How does it work? 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000000000000000 0 1 2 3.......................s1...................s2.............................................C 012.....n012.....n 0 0 0 0 0 0 0 0 0 0 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 Copy the above red line here = max{ + v2, }

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google