Make locally optimal choices at each step to arrive at a global solution.
A greedy shortest-path algorithm: always expand the nearest unvisited node. Works on non-negative edge weights.
Selects the maximum number of non-overlapping intervals.
Builds an optimal prefix-free encoding tree based on symbol frequencies.