The Greedy Method
The Greedy Method 1
Outline and Reading
The Greedy Method Technique (§5.1)
Fractional Knapsack Problem (§5.1.1)
Task Scheduling (§5.1.2)
Minimum Spanning Trees (§7.3) [future lecture]
The Greedy Method 2
The Greedy Method
Technique
The greedy method is a general algorithm
design paradigm, built on the following
elements:
configurations: different choices, collections, or
values to find
objective function: a score assigned to
configurations, which we want to either maximize or
minimize
It works best when applied to problems with the
greedy-choice property:
a globally-optimal solution can always be found by a
series of local improvements from a starting
configuration.
The Greedy Method 3
Making Change
Problem: A dollar amount to reach and a collection of
coin amounts to use to get there.
Configuration: A dollar amount yet to return to a
customer plus the coins already returned
Objective function: Minimize number of coins returned.
Greedy solution: Always return the largest coin you can
Example 1: Coins are valued $.32, $.08, $.01
Has the greedy-choice property, since no amount over $.32 can
be made with a minimum number of coins by omitting a $.32
coin (similarly for amounts over $.08, but under $.32).
Example 2: Coins are valued $.30, $.20, $.05, $.01
Does not have greedy-choice property, since $.40 is best made
with two $.20’s, but the greedy solution will pick three coins
(which ones?)
The Greedy Method 4
The Fractional Knapsack
Problem
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.
If we are allowed to take fractional amounts, then this is
the fractional knapsack problem.
In this case, we let xi denote the amount we take of item i
Objective: maximize ∑b (x / w )
i∈S
i i i
Constraint: ∑x
i∈S
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
Since ∑ bi ( xi / wi ) = ∑ (bi / wi ) xi and weight wi; max. weight W
i∈S i∈S Output: amount xi of each item i
Run time: O(n log n). Why? to maximize benefit with
Correctness: Suppose there weight at most W
is a better solution for each item i in S
xi ← 0
there is an item i with higher
value than a chosen item j vi ← bi / wi {value}
(i.e., vi<vj) but xi<wi and xj>0 w←0 {total weight}
If we substitute some i with j, while w < W
we get a better solution remove item i with highest vi
How much of i: min{wi-xi, xj} xi ← min{wi , W − w}
Thus, there is no better w ← w + min{wi , W − w}
solution than the greedy one
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
The Greedy Method 8
Task Scheduling
Algorithm
Greedy choice: consider tasks
by their start time and use as
few machines as possible with Algorithm taskSchedule(T)
this order.
Input: set T of tasks w/ start time si
Run time: O(n log n). Why? and finish time fi
Correctness: Suppose there is a Output: non-conflicting schedule
better schedule. with minimum number of machines
We can use k-1 machines m←0 {no. of machines}
The algorithm uses k while T is not empty
Let i be first task scheduled
remove task i w/ smallest si
on machine k if there’s a machine j for i then
Machine i must conflict with
schedule i on machine j
k-1 other tasks else
But that means there is no
m←m+1
non-conflicting schedule schedule i on machine m
using k-1 machines
The Greedy Method 9
Example
Given: a set T of n tasks, each having:
A start time, si
A finish time, fi (where si < fi)
[1,4], [1,3], [2,5], [3,7], [4,7], [6,9], [7,8] (ordered by start)
Goal: Perform all tasks on min. number of machines
Machine 3
Machine 2
Machine 1
1 2 3 4 5 6 7 8 9
The Greedy Method 10