Created
Dec 7, 2025
Last Modified
3 months ago

Dynamic Programming & 0/1 Knapsack

Dynamic Programming & 0/1 Knapsack

  • Dynamic programming is used to solve the optimisation problem.

  • Dynamic programming divides the given original problem into smaller, overlapped sub-problems.

  • Stepwise increasing the size of the sub-problem, it starts with the solution of smaller sub-problems and finally reaches the original initial problem. It records the solution of smaller sub-problems in a table.

  • The main idea of this approach is to develop a recurrence relation in which the solution of the current sub-problem relates with the solution of previous smaller sub-problems. This is called the recurrence equation.

  • In this way, the dynamic programming approach achieves the global Optima with the help of local Optima.
    Dynamic programming works in a bottom-up essence and finally solves the original problem.

Applications of Dynamic Programming Approach

  • 0/1 Knapsack problem

  • Optimal Binary Search Tree

Optimal Binary Search Tree is a kind of binary search tree in which the number of key comparisons is minimum in order of successful search of key.


0/1 Knapsack Problem

In 0/1 knapsack problem we have n items of known value and weight, and a knapsack of given capacity.
The objective is to find an optimal subset of the items in order to maximize the total profit earned but under the capacity constraint.

Items:

$Values:

$Weights:

$Capacity of knapsack = M

If fraction of item is selected:

  • profit earned = (not provided in text)

  • weight added to knapsack = (not provided in text)

Total profit earned:

Objective Function

$Capacity Constraint

$where


Dynamic Programming Approach for 0/1 Knapsack

To solve zero-1 knapsack problem with dynamic programming approach, we need to divide the given problem into smaller sub-problems.

Starting from the smallest one, dynamic programming will increase the size of the problem.

Consider the i-th state, a general state in which DP is considering the first i items:

And the available knapsack capacity is , where j can take values from 0 to M.

Let

be the optimal profit earned when we are considering the first i items and available knapsack capacity j.


Two Cases for the i-th Item

Case 1: We cannot include the item into the knapsack

Example: (Not enough Available Space)

Then:

The previous best will continue.


Case 2: We do include the i-th item

Example:

  • or

In this case, the i-th item will only be included if this inclusion maximizes the profit.

Thus we compare:

  • Value if i-th item not included:

  • Value if i-th item included:


Recurrence Relation

Initial Condition
  • (forall)

  • (farall)

Because:

  • When capacity = 0 → profit = 0 (for all items)

  • When items = 0 → profit = 0 (for all capacities)


Maximum Profit Definition

is the maximum profit earned when we consider all the items from 1 to n and the maximum knapsack capacity M.

Our objective is to find:

which represents the maximum profit.


Time Complexity

The complexity of this algorithm depends on the solution table of size:

Thus, the time complexity of the dynamic programming-based 0/1 knapsack algorithm is:


Solution of 0/1 knapsack problem using DPA

Item

Weight

Value

1

1

250

2

2

650

3

3

290

Here:

let ​ be the maximum profit earned when we consider the first i items, and j is the available knapsack capacity


DP Table (0/1 Knapsack)

Final DP Table

i \ j

0

1

2

3

4

0

0

0

0

0

0

1

0

250

250

250

250

2

0

250

650

900

900

3

0

250

650

900

900


Formula

teration i = 1 (Item 1: weight = 1, value = 250)

For j = 1

$

For j = 2

$

For j = 3

$

For j = 4

$


teration i = 2 (Item 2: weight = 2, value = 650)

For j = 1

Item weight > capacity 1 → cannot include.

For j = 2

For j = 3

For j = 4


Iteration i = 3 (Item 3: weight = 3, value = 290)

For j = 1

Weight 3 > capacity 1 → cannot include.

For j = 2

Weight 3 > capacity 2 → cannot include.

For j = 3

For j = 4


Final Maximum Profit


Your Assignment

Item

Weight

Value

1

2

100

2

3

250

3

1

120

4

5

160

Where: Capacity