0 1 knapsack using class notes DP
0 1 knapsack using class notes DP
Consider-
• Knapsack weight capacity = w
• Number of items each having some weight and value = n
• Draw a table say ‘T’ with (n+1) number of rows and (w+1) number of
columns.(n represents number of items and w represents knapsack
capacity)
• Fill all the boxes of 0th row and 0th column with zeroes as shown-
Step-02:
• Start filling the table row wise top to bottom from left to right.
• Use the following formula-
• T (i , j) = max { T ( i-1 , j ) , valuei + T( i-1 , j – weighti ) }
Here, T(i , j) = maximum value of the selected items if we can take items 1 to i and
have weight restrictions of j.
• Problem- For the given set of items and knapsack capacity = 5 kg, find
the optimal solution for the 0/1 knapsack problem making use of
dynamic programming approach
Item Weight Value
1 2 3
2 3 4
3 4 5
4 5 6
Given-
• Knapsack capacity (w) = 5 kg
• Number of items (n) = 4
• Step-01:
• Draw a table say ‘T’ with (n+1) = 4 + 1 = 5 number of rows and (w+1) = 5 + 1 = 6
number of columns.
• Fill all the boxes of 0th row and 0th column with 0.
Step-02:
• Start filling the table row wise top to bottom from left to right using the formula-
• T (i , j) = max { T ( i-1 , j ) , valuei + T( i-1 , j – weighti )
Weigh
Item Value ($)
Finding T(1,1)- t (kg)
1 2 3
We have,
2 3 4
• i=1 3 4 5
• j=1 4 5 6
• (value)i = (value)1 = 3
• (weight)i = (weight)1 = 2
Substituting the values, we get -
• T(1,1) = max { T(1-1 , 1) , 3 + T(1-1 , 1-2) }
• T(1,1) = max { T(0,1) , 3 + T(0,-1) }
• T(1,1) = T(0,1) { Ignore T(0,-1) }
• T(1,1) = 0
Finding T(1,2)- Finding T(1,3)-
We have, • We have,
• i=1 • i=1
• j=3
• j=2
• (value)i = (value)1 = 3
• (value)i = (value)1 = 3
• (weight)i = (weight)1 = 2
• (weight)i = (weight)1 = 2
Substituting the values, we get-
Substituting the values, we get-
• T(1,3) = max { T(1-1 , 3) , 3 + T(1-1 , 3-2) }
• T(1,2) = max { T(1-1 , 2) , 3 + T(1-1 , 2-2) }
• T(1,3) = max { T(0,3) , 3 + T(0,1) }
• T(1,2) = max { T(0,2) , 3 + T(0,0) } • T(1,3) = max {0 , 3+0}
• T(1,2) = max {0 , 3+0} • T(1,3) = 3
• T(1,2) = 3 Item
Weigh
t (kg) Value ($)
1 2 3
2 3 4
3 4 5
4 5 6
Finding T(1,4)- Finding T(1,5)-
We have, We have,
• i=1 • i=1
• j=4 • j=5
• (value)i = (value)1 = 3 • (value)i = (value)1 = 3
• (weight)i = (weight)1 = 2 • (weight)i = (weight)1 = 2
1 2 3 •The last entry represents the maximum possible value that can
2 3 4 be put into the knapsack.
3 4 5 • maximum possible value that can be put into the knapsack = 7.
4 5 6
Identifying Items To Be Put Into Knapsack-
Following Step-03,
• Consider the last column of the table.
• Start scanning the entries from bottom to top.
• On encountering an entry whose value is not same as the
value stored in the entry immediately above it, mark the row
label of that entry.
• After all the entries are scanned, the marked labels represent
the items that must be put into the knapsack.