0% found this document useful (0 votes)
86 views16 pages

Knapsack

The document describes the 0/1 knapsack problem and how to solve it using dynamic programming. The 0/1 knapsack problem involves selecting a subset of items to pack in a knapsack without exceeding its weight capacity, where each item is either fully included or not included. The dynamic programming approach builds up a table where each entry represents the maximum value achievable for a given weight. By backtracking through the table, the optimal items to include can be identified. An example problem is worked through step-by-step to demonstrate filling the table and finding the optimal solution.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
86 views16 pages

Knapsack

The document describes the 0/1 knapsack problem and how to solve it using dynamic programming. The 0/1 knapsack problem involves selecting a subset of items to pack in a knapsack without exceeding its weight capacity, where each item is either fully included or not included. The dynamic programming approach builds up a table where each entry represents the maximum value achievable for a given weight. By backtracking through the table, the optimal items to include can be identified. An example problem is worked through step-by-step to demonstrate filling the table and finding the optimal solution.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Knapsack Problem

The knapsack problem is an optimization problem used to illustrate


both problem and solution
Knapsack problem has the following two variants-

• Fractional Knapsack Problem


• 0/1 Knapsack Problem
0/1 Knapsack Problem-

In 0/1 Knapsack Problem,

• As the name suggests, items are indivisible here.


• We can not take the fraction of any item.
• We have to either take an item completely or leave it completely.
• It is solved using dynamic programming approach.
0/1 Knapsack Problem Using Dynamic Programming-

Consider-
Knapsack weight capacity = w
Number of items each having some weight and value = n

0/1 knapsack problem is solved using dynamic programming in the


following steps-
Step-01:
Draw a table say ‘T’ with (n+1) number of rows and (w+1) number of
columns.
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.
This step leads to completely filling the table.

Then, value of the last box represents the maximum possible value that can be put
into the knapsack.
Step-03:

To identify the items that must be put into the knapsack to obtain that
maximum profit,

• 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.
Time Complexity-

• Each entry of the table requires constant time θ(1) for its computation.
• It takes θ(nw) time to fill (n+1)(w+1) table entries.
• It takes θ(n) time for tracing the solution since tracing process traces the n
rows.
• Thus, overall θ(nw) time is taken to solve 0/1 knapsack problem using
dynamic programming.
Problem

Find the optimal solution for the 0/1 knapsack problem making use of
dynamic programming approach. Consider-

Given
n=4
w = 5 kg
(w1, w2, w3, w4) = (2, 3, 4, 5)
(b1, b2, b3, b4) = (3, 4, 5, 6)
Solution-
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 ) }

Finding T(1,1)-

We have,

i=1
j=1
(value)i = (value)1 = 3
(weight)i = (weight)1 = 2
Substituting the values, we get-
n=4
w = 5 kg
T(1,1) = max { T(1-1 , 1) , 3 + T(1-1 , 1-2) } (w1, w2, w3, w4) = (2, 3, 4, 5)
(b1, b2, b3, b4) = (3, 4, 5, 6)

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)-
We have,

i=1
j=2
(value)i = (value)1 = 3
(weight)i = (weight)1 = 2
Substituting the values, we get-

T(1,2) = max { T(1-1 , 2) , 3 + T(1-1 , 2-2) }

T(1,2) = max { T(0,2) , 3 + T(0,0) }

T(1,2) = max {0 , 3+0}

T(1,2) = 3
Finding T(1,4)-

We have,

i=1
j=4
(value)i = (value)1 = 3
(weight)i = (weight)1 = 2

Substituting the values, we get-

T(1,4) = max { T(1-1 , 4) , 3 + T(1-1 , 4-2) }

T(1,4) = max { T(0,4) , 3 + T(0,2) }

T(1,4) = max {0 , 3+0}

T(1,4) = 3
We have,

i=1
j=5
(value)i = (value)1 = 3
(weight)i = (weight)1 = 2

•T (i , j) = max { T ( i-1 , j ) , valuei + T( i-1 , j – weighti ) }

Substituting the values, we get-

T(1,5) = max { T(1-1 , 5) , 3 + T(1-1 , 5-2) }

T(1,5) = max { T(0,5) , 3 + T(0,3) }

T(1,5) = max {0 , 3+0}

T(1,5) = 3
 
Finding T(2,5)-

We have,
i=2
j=5
(value)i = (value)2 = 4
(weight)i = (weight)2 = 3

Substituting the values, we get-

T(2,5) = max { T(2-1 , 5) , 4 + T(2-1 , 5-3) }

T(2,5) = max { T(1,5) , 4 + T(1,2) }

T(2,5) = max { 3 , 4+3 }

T(2,5) = 7
Similarly, compute all the entries.
After all the entries are computed and filled in the table, we get the following table-

The last entry represents the maximum possible value that can be
put into the knapsack.
So, maximum possible value that can be put into the knapsack = 7.

Following Step-04,

We mark the rows labelled “1” and “2”.


Thus, items that must be put into the knapsack to obtain the

You might also like