0% found this document useful (0 votes)
38 views23 pages

Greedy Knapsack

The document describes the knapsack problem and greedy algorithm approach. The knapsack problem involves selecting items to pack in a knapsack of limited capacity to maximize the total benefit without exceeding the weight limit. A recursive greedy algorithm is presented that at each step chooses the item with the highest benefit-to-weight ratio to fill the remaining capacity. Variations like 0/1 knapsack and fractional knapsack are also covered.

Uploaded by

Park Easy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views23 pages

Greedy Knapsack

The document describes the knapsack problem and greedy algorithm approach. The knapsack problem involves selecting items to pack in a knapsack of limited capacity to maximize the total benefit without exceeding the weight limit. A recursive greedy algorithm is presented that at each step chooses the item with the highest benefit-to-weight ratio to fill the remaining capacity. Variations like 0/1 knapsack and fractional knapsack are also covered.

Uploaded by

Park Easy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 23

Greedy Algorithm

Knapsack Problem

08-Nov-16 1
Knapsack Problem
• You have a knapsack that has capacity (weight) C.
• You have several items I1,…,In.
• Each item Ij has a weight wj and a benefit bj.
• You want to place a certain number of copies of
each item Ij in the knapsack so that:
– The knapsack weight capacity is not exceeded and
– The total benefit is maximal.

08-Nov-16 2
Example
Item Weight Benefit

A 2 60

B 3 75

C 4 90

Capacity = 5
08-Nov-16 3
Key question
• Suppose f(w) represents the maximal
possible benefit of a knapsack with weight
w.
• We want to find (in the example) f(5).

08-Nov-16 4
Key observation
• To fill a knapsack with items of weight w, we
must have added items into the knapsack in some
order.
• Suppose the last such item was Ij with weight wi
and benefit bi.
• Consider the knapsack with weight (w- wi).
Clearly, we chose to add Ij to this knapsack
because of all items with weight wi or less, Ij had
the max benefit bi.
08-Nov-16 5
Key observation
• Thus, f(w) = MAX { bj + f(w-wj) | Ij is an
item}.
• This gives rise to an immediate recursive
algorithm to determine how to fill a
knapsack.

08-Nov-16 6
Example
Item Weight Benefit

A 2 60

B 3 75

C 4 90

08-Nov-16 7
f(0), f(1)
• f(0) = 0. Why? The knapsack with capacity
0 can have nothing in it.
• f(1) = 0. There is no item with weight 1.

08-Nov-16 8
f(2)
• f(2) = 60. There is only one item with
weight 60.
• Choose A.

08-Nov-16 9
f(3)
• f(3) = MAX { bj + f(w-wj) | Ij is an item}.
= MAX { 60+f(3-2), 75 + f(3-3)}
= MAX { 60 + 0, 75 + 0 }
= 75.
Choose B.

08-Nov-16 10
f(4)
• f(4) = MAX { bj + f(w-wj) | Ij is an item}.
= MAX { 60 + f(4-2), 75 + f(4-3), 90+f(4-4)}
= MAX { 60 + 60, 75 + f(1), 90 + f(0)}
= MAX { 120, 75, 90}
=120.
Choose A.

08-Nov-16 11
f(5)
• f(5) = MAX { bj + f(w-wj) | Ij is an item}.
= MAX { 60 + f(5-2), 75 + f(5-3), 90+f(5-4)}
= MAX { 60 + f(3), 75 + f(2), 90 + f(1)}
= MAX { 60 + 75, 75 + 60, 90+0}
= 135.
Choose A or B.

08-Nov-16 12
Result
• Optimal knapsack weight is 135.
• Two possible optimal solutions:
– Choose A during computation of f(5). Choose
B in computation of f(3).
– Choose B during computation of f(5). Choose
A in computation of f(2).
• Both solutions coincide. Take A and B.

08-Nov-16 13
Another example
• Knapsack of capacity 50.
• 3 items
– Item 1 has weight 10, benefit 60
– Item 2 has weight 20,benefit 100
– Item 3 has weight 30, benefit 120.

08-Nov-16 14
f(0),..,f(9)
• All have value 0.

08-Nov-16 15
f(10),..,f(19)
• All have value 10.
• Choose Item 1.

08-Nov-16 16
f(20),..,f(29)
• F(20) = MAX { 60 + f(10), 100 + f(0) }
= MAX { 60+60, 100+0}
=120.
Choose Item 1.

08-Nov-16 17
f(30),…,f(39)
• f(30) = MAX { 60 + f(20), 100 + f(10), 120
+ f(0) }
= MAX { 60 + 120, 100+60, 120+0}
= 180
Choose item 1.

08-Nov-16 18
f(40),…,f(49)
• F(40) = MAX { 60 + f(30), 100 + f(20), 120
+ f(10)}
= MAX { 60 + 180, 100+120, 120 + 60}
= 240.
Choose item 1.

08-Nov-16 19
f(50)
• f(50) = MAX { 60 + f(40), 100 + f(30), 120
+ f(20) }
= MAX { 60 + 240, 100+180, 120 + 120}
= 300.
Choose item 1.

08-Nov-16 20
Knapsack Problem Variants
• 0/1 Knapsack problem: Similar to the
knapsack problem except that for each item,
only 1 copy is available (not an unlimited
number as we have been assuming so far).
• Fractional knapsack problem: You can take
a fractional number of items. Has the same
constraint as 0/1 knapsack. Can solve using
a greedy algorithm.
08-Nov-16 21
0/1 Knapsack Algorithm
For w = 0 to C do f[w]=0; (* initialize *)
For j=1 to n do
for w=C downto wj do
if f[w-wj] + bj > f[w] then
f[w] = f[w-wj] + bj

O(n.C) algorithm
08-Nov-16 22
Fractional knapsack
• Much easier
• For item Ij, let rj = bj/wj. This gives you the
benefit per measure of weight.
• Sort the items in descending order of rj
• Pack the knapsack by putting as many of
each item as you can walking down the
sorted list.

08-Nov-16 23

You might also like