The Greedy Method 1
The Greedy Method 1
Objective: maximize b (x / w )
iS
i i i
Constraint: x
iS
i W
The Greedy Method 5
Example
Given: A set S of n items, with each item i having
bi - a positive benefit
wi - a positive weight
Goal: Choose items with maximum total benefit but with
weight at most W.
“knapsack”
Solution:
• 1 ml of 5
Items:
1 2 3 4 5 • 2 ml of 3
• 6 ml of 4
Weight: 4 ml 8 ml 2 ml 6 ml 1 ml • 1 ml of 2
Benefit: $12 $32 $40 $30 $50 10 ml
Value: 3 4 20 5 50
($ per ml)
The Greedy Method 6
The Fractional Knapsack
Algorithm
Greedy choice: Keep taking
item with highest value Algorithm fractionalKnapsack(S, W)
(benefit to weight ratio) Input: set S of items w/ benefit bi
Use a heap-based priority and weight wi; max. weight W
queue to store the items, then
the time complexity is O(n log Output: amount xi of each item i
n). to maximize benefit with
weight at most W
Correctness: Suppose there for each item i in S
is a better solution xi 0
there is an item i with higher
value than a chosen item j vi bi / wi {value}
(i.e., vj<vi) , if we replace w0 {current total weight}
some j with i, we get a better while w < W
solution remove item i with highest vi
Thus, there is no better
solution than the greedy one xi min{wi , W w}
w w + min{wi , W w}
The Greedy Method 7
Task Scheduling
Given: a set T of n tasks, each having:
A start time, si
A finish time, fi (where si < fi)
Goal: Perform all the tasks using a minimum number of
“machines.”
Machine 3
Machine 2
Machine 1
1 2 3 4 5 6 7 8 9
Machine 3
Machine 2
Machine 1
1 2 3 4 5 6 7 8 9