gary sham hkoi 2010 greedy, divide and conquer. greedy algorithm solve the problem by the “best”...
TRANSCRIPT
Gary Sham
HKOI 2010
Greedy,Divide and Conquer
Greedy Algorithm
Solve the problem by the “BEST” choice.
To find the global optimal through local optimal choices, and solve the sub-problem.
Example 1: Coins
There are 7 kinds of coins:$0.1, $0.2, $0.5, $1, $2, $5, $10
What is the minimum number needed to pay $18 ?
Use the greatest possible coin every time.
Coins 2There are 7 kinds of coins:
$0.1, $0.2, $0.5, $2, $5, $9, $10
What is the minimum number needed to pay $18 ?
Greedy?$10 + $5 + $2 + $2
Actually……$9 + $9
Example 2: Fractional Knapsack There are N objects, each with weight wi and value
vi. Any amount ( including fractions ) of each item can be taken provided that the total weight does not exceed W.
How much of each item should we take in order to maximize the total value?
Consider vi : wi
0-1 Knapsack problem
Similar to Fractional Knapsack, but you can only choose to pick the whole item or not.
Greedy?
Example 3: Activity
There are n activities, starting at time si and finishing at fi.
Choose the maximum number of activities so that they do not overlap each other.
Greedy?
Example 4: Diamond Chain
To find the maximum interval sum.
When will you choose a negative value?
Example 5: Advertisement
There are n intervals, [ai, bi]
Choosing the minimum number of points {pj} so that each interval contains at least one of the points
Example 6: Egyptian fraction
An Egyptian fraction is a sum of distinct unit fraction
Given a fraction and express it as an Egyptian fraction
Conclusion
Hard to prove or disprove.
Usually easy to code.
Usually efficient.
Try to guess.
Divide and ConquerDivide
Break a problem into sub problem(s)
ConquerSolve all sub problem(s)
CombineSolve the problem using the results of the sub
problem(s)
Example 1: Merge Sort, Quick Sort
1 ~ N
X+1 ~ N1 ~ X
1 ~ Y Y+1 ~ X X+1 ~ Z Z+1 ~ N
1 2 3 N
Example 2: Tower of HanoiFind the minimum number of steps to move N stacks
from Pag0 to Pag2.
How to move N stacks?Move N-1 stacks from Pag0 to Pag1.Move the Nth stack to Pag2.Move N-1 stacks from Pag1 to Pag2.
How to move N-1 stacks?……
Example 3: Big Mod
R = XP mod M
O(P) is easy: XP = X * XP-1
0 P 2≦ ≦ 31 -1 ……
X2N = XN * XN
X2N+1 = X * XN * XN
Example 4: L-pieces
A 2N * 2N square board with 1 hole.
How to place L-pieces to cover it?
What is the sub-problem?
Solution
2N-1 * 2N-1 board with 1 hole
Example 5: Range Maximum QueryGiven N numbers, find the maximum value from ai to
bi.
O(NQ) ?
If we know RMQ(3,7), can we find RMQ(3,10) faster?
RMQ(ai, bi) = MAX( RMQ(ai, ci), RMQ(ci+1, bi) )
Segment Tree
Conclusion
Try to divide the original problem to some easier sub-problems.
You will see some similar ideas in DP.