This document discusses greedy algorithms and provides an example of the activity selection problem. It can be summarized as: 1. Greedy algorithms make locally optimal choices at each step in the hope that it will lead to a globally optimal solution. They are easier to code but do not always produce an optimal solution. 2. The activity selection problem involves scheduling a maximum number of non-overlapping activities given their start and finish times. The greedy algorithm selects the activity with the earliest finish time at each step. 3. For a problem to be solvable by a greedy approach, it must exhibit the greedy-choice property and optimal substructures - where optimal solutions to sub-problems are contained within an optimal solution to the