Chapter 14: Greedy Algorithms. 26 sections.
26 items
The greedy choice property is the fundamental condition that allows a greedy algorithm to produce an optimal solution.
Most greedy algorithms are not proved by directly showing that the greedy solution is optimal.
Many greedy algorithms appear unrelated on the surface.
Interval scheduling is one of the most important greedy problems.
The activity selection problem is historically one of the first optimization problems used to demonstrate the power of greedy algorithms.
Huffman coding is one of the most successful greedy algorithms ever developed.
The fractional knapsack problem is one of the clearest examples of a greedy algorithm producing an optimal solution.
Many scheduling problems ask a simple question: > Given limited time and many competing jobs, which jobs should be performed?
Minimum refueling stops is a greedy scheduling problem disguised as a travel problem.
Many greedy algorithms operate under a simple principle: > A decision is either feasible or infeasible.
Many greedy algorithms begin with a sort.
Many greedy algorithms appear different on the surface.
Many greedy algorithms operate on sorted data and repeatedly make decisions from the extremes of a range.
Many of the most successful graph algorithms are greedy algorithms.
Scheduling problems occupy a special place in algorithm design.
String problems often invite dynamic programming, tries, automata, and hashing.
Many greedy algorithms are remembered by their choice rule: - Choose the earliest finishing interval.
Greedy algorithms are attractive because they make local decisions.
A counterexample is a small input that disproves a proposed algorithm, lemma, or proof idea.
Designing a greedy algorithm is often easier than proving it correct.
Greedy algorithms often have simple control flow.
Throughout this chapter, we have studied a wide variety of greedy algorithms: - Interval scheduling - Activity selection - Huffman coding
Greedy algorithms become easier to recognize after seeing them embedded in complete problems.
The classical greedy algorithms presented earlier in this chapter are often introduced as isolated ideas: - Interval scheduling - Huffman coding - Fractional knapsack
Greedy algorithms are best learned by proving, breaking, and implementing them.
Greedy algorithms are among the most elegant techniques in algorithm design.