Greedy
Greedy
GROUP MEMBERS
Eyob Girma …………..….....001/13
Merachew Mengistu…….….002/13
Alemayehu Negalign ..….…..017/13
Betelhem Teshome ……..…..021/13
Mesfin Teshome…………….008/13
Yeshi Gulilat……………..…036/13
Meron Lemma.......................033/13
Greedy Algorithms
Optimization problem: find the best way to do something.
◦ E.g. match up two strings (LCS problem).
Search techniques look at many possible solutions.
◦ E.g. dynamic programming or backtrack search.
A greedy algorithm
◦ Makes choices along the way that seem the best.
◦ Sticks with those choices.
For some problems, greedy approach always gets optimum.
For others, greedy finds good, but not always best.
◦ If so, it’s called a greedy heuristic or approximation.
For still others, greedy approach can do very poorly.
1
The problem of giving change
Vending machine has huge supply of quarters, dimes and nickels.
Customer needs N cents change (N is multiple of 5).
Machine wants to give out few coins as possible.
Greedy approach:
while (N > 0) {
give largest denomination coin N;
reduce N by value of that coin;
}
Aside: Using division, it could make decisions faster.
Does this return the fewest number of coins?
2
More on giving change
Thm: Greedy algorithm always gives minimal # of
coins.
Proof:
◦ Optimum has 2 dimes.
Quarter and nickel better than 3 dimes .
◦ Optimum has 1 nickel
Dime better than 2 nickels.
◦ Optimum doesn’t have 2 dimes + 1 nickel
It would use quarter instead.
◦ So optimum & greedy have at most $0.20 in non-
quarters.
That is, they give the same number of quarters.
◦ Optimum & greedy give same on remaining $0.20
too.
Obviously.
3
More on giving change
Suppose we run out of nickels, put pennies in instead.
◦ Does greedy approach still give minimum number of
coins?
Formally, the Coin Change problem is:
Given k denominations d1, d2, ... , dk and given N,
find a way of writing N = i1 d1 + i2 d2 + ... + ik dk
such
that i1 + i2 + ... + ik is minimized.
“Size” of problem is k.
Is the greedy algorithm always a good heuristic?
That is, does there exists a constant c s.t. for all
instances of Coin Change, the greedy algorithm
gives at most c times the optimum number of coins?
How do we solve Coin Change exactly?
4
Coin Change by Dynamic
Programming
Let C(N) = min # of coins needed to give N
cents.
Detail: C(0) = 0 and, for N < 0, C(N) = .
Optimal substructure: After an optimal
5
Complexity of Coin Change
Greedy algorithm (non-optimal) takes O(k) time.
Dynamic Programming takes O(kN) time.
◦ This is NOT necessarily polynomial in k.
Better way to define “size” is the number of
bits needed to specify an instance.
With this definition, N can be almost 2 size.
So Dynamic Programming is exponential in
size.
◦ In fact, Coin Change problem is NP-hard.
So no one knows a polynomial-time algorithm
for it.
6
Linear Partition Problem
7
Variant on Linear Partitioning
New goal: partition list of N integers into exactly k
contiguous sublists to so that the maximum sum of a
sublist is as small as possible.
Example: Partition < 16, 7, 19, 3, 4, 11, 6 > into 4
sublists.
◦ We might try 16+7, 19, 3+4, 11+6. Max sum is
16+7=23.
Try out (at board):
◦ Greedy algorithm: add elements until you exceed
average.
◦ Divide-and-conquer: break into two nearly equal sublists.
◦ Reduce to previous problem: binary search on B.
◦ Dynamic programming.
8
Scheduling Unit time Tasks
Given N tasks (N is problem size):
◦ Task i must be done by time di.
◦ Task i is worth wi.
You can perform one task per unit time. If you do it before its
deadline di, you get paid wi.
Problem: Decide what to do at each unit of time.
Aside: This is an off-line scheduling problem: You know
entire problem before making any decisions.
In an on-line problem, you get tasks one-at-a-time, and
must decide when to schedule it before seeing next
task.
Typically, it’s impossible to solve an on-line problem
optimally, and the goal is to achieve at least a certain %
of optimal.
9
Glossary (in case symbols are
weird)
subset element of infinity
for all there exists
big theta big omega summation
>= <= about equal
not equal natural numbers(N)
reals(R) rationals(Q) integers(Z)
10
Thank you !!