0 1 Knapsack
0 1 Knapsack
DYNAMIC PROGRAMMING
SYEDA HIRA FATIMA
NAQVI
ASSISTANT PROFESSOR
IMCS
2
INTRODUCTION
• DYNAMIC PROGRAMMING IS THE MOST POWERFUL DESIGN TECHNIQUE FOR SOLVING OPTIMIZATION
PROBLEMS.
• DIVIDE & CONQUER ALGORITHM PARTITION THE PROBLEM INTO DISJOINT SUBPROBLEMS SOLVE THE
SUBPROBLEMS RECURSIVELY AND THEN COMBINE THEIR SOLUTION TO SOLVE THE ORIGINAL
PROBLEMS.
• DYNAMIC PROGRAMMING IS USED WHEN THE SUBPROBLEMS ARE NOT INDEPENDENT, E.G. WHEN
THEY SHARE THE SAME SUBPROBLEMS. IN THIS CASE, DIVIDE AND CONQUER MAY DO MORE WORK
THAN NECESSARY, BECAUSE IT SOLVES THE SAME SUB PROBLEM MULTIPLE TIMES.
• DYNAMIC PROGRAMMING SOLVES EACH SUBPROBLEMS JUST ONCE AND STORES THE RESULT IN A
TABLE SO THAT IT CAN BE REPEATEDLY RETRIEVED IF NEEDED AGAIN.
• DYNAMIC PROGRAMMING IS A BOTTOM-UP APPROACH- WE SOLVE ALL POSSIBLE SMALL
PROBLEMS AND THEN COMBINE TO OBTAIN SOLUTIONS FOR BIGGER PROBLEMS.
• DYNAMIC PROGRAMMING IS A PARADIGM OF ALGORITHM DESIGN IN WHICH AN OPTIMIZATION
PROBLEM IS SOLVED BY A COMBINATION OF ACHIEVING SUB-PROBLEM SOLUTIONS AND APPEARING3
TO THE "PRINCIPLE OF OPTIMALITY".
CHARACTERISTICS OF DYNAMIC
PROGRAMMING:
• DYNAMIC PROGRAMMING WORKS WHEN A PROBLEM HAS THE FOLLOWING
FEATURES:-
• OPTIMAL SUBSTRUCTURE: IF AN OPTIMAL SOLUTION CONTAINS OPTIMAL
SUB SOLUTIONS THEN A PROBLEM EXHIBITS OPTIMAL SUBSTRUCTURE.
• OVERLAPPING SUBPROBLEMS: WHEN A RECURSIVE ALGORITHM WOULD
VISIT THE SAME SUBPROBLEMS REPEATEDLY, THEN A PROBLEM HAS
OVERLAPPING SUBPROBLEMS.
4
ELEMENTS OF DYNAMIC PROGRAMMING
6
APPLICATIONS OF DYNAMIC PROGRAMMING
• Our objective
• to fill the knapsack with items without crossing the knapsack
weight limit.
• The total benefit is maximize.
10
KNAPSACK PROBLEM:
• There are two versions of knapsack
problem.
11
DIFFERENT TECHNIQUES TO SOLVE 0-1
KNAPSACK PROBLEM:
DYNAMIC PROGRAMMING O (N * CAPACITY)
BRUTE FORCE ALGORITHM O(N*2^N)
GREEDY ALGORITHM O(NLOGN)
BRANCH AND BOUND
GENETIC ALGORITHM
12
• LETS TAKE AN EXAMPLE AND SOLVE THEM
THROUGH DYNAMIC PROGRAMMING:
ite 1 2 3
4
ms
100 20 60
valu 40
es 3 2 4
weights 1
Max capacity
5
13
SOLVING KNAPSACK PROBLEM THROUGH
DYNAMIC PROGRAMMING:
• Create value table v[ i, w] where i (rows) denotes items and
w (columns) denotes weight.
• As there are 4 items so we have 5 rows from 0 to 4.
• Weight limit is 5 so we have 6 columns 0 to 5.
• Fill the first row i =0 with 0 this means when 0 item is
considered then value earned is 0
• Fills the first column w=0 with 0 this means when capacity
of knapsack is 0 then item considered is 0 and value earned
is 0. 14
ALGORITHM (RULES TO FILL TABLE):
for i=0 to N
for w=0 to M
If i=0 || w = 0 then,
V[ i , w ] = 0
else if wt [ i ] <= w then
V [ i , w ] = max (v[ i-1, w ] , val [i] + v [ i-1 , W – wt[ i ] ]
else wt [ i ] > w then ,
V [ i , w ] =V [ i-1 , w ]
15
Return V[ N , M ]
Value Table
16
ITEMS THAT WERE PUT INSIDE THE KNAPSACK
ARE FOUND USING THE FOLLOWING RULE:
18
THE END
19