Greedy Algorithm--Algorithms
Largest Number:
Find
max digit
Append it to the number
Remove it from the list of digits
Repeat while there are digits in the list
car fueling:
Refill at the the closest gas station
Refill at the farthest reachable gas station
Go until there is no fuel
MinRefills(x |
numRefills ←0,currentRefill←0 while currentRefill≤n: lastRe ll ←currentRe ll while (currentRefill≤nand x[currentRefill+1]−x[lastRefill]≤L): currentRefill ←currentRefill+1 if currentRefill==lastRefill: return IMPOSSIBLE if currentRefill≤n: numRefills ←numRefills return numRefills |
For unsorted data, Sort in O(n log n) + greedy in O(n)
Greedy Algorithm
While knapsack is not fullChoose item i with maximumvi/wi
If item fits into knapsack, take all of it
Otherwise take so much as to fill the knapsack
Return total value and amounts taken
Knapsack(W,w1,v1,...,wn,vn) |
A ←[0,0,...,0],V← 0 repeat ntimes: if W= 0: return (V,A) select iwith wi>0and maxvi/Wj a ←min(wi,W) V ←V +a vi/wi wi← wi−a,A[i]← A[i]+a,W← W−a return (V,A) |
Better:
Knapsack(W,w1,v1,...,wn,vn) |
A ←[0,0,...,0],V← 0 for ifrom 1to n: if W= 0: return (V,A) a ←min(wi,W) V ←V +a vi/wi wi← wi−a,A[i]← A[i]+a,W← W−a return (V,A) |