Recall that Dynamic Programming consists of two parts:

- Optimal Substructure
- Overlapping Subproblems

Greedy Programming also consists of two parts:

- 1.
- Optimal Substructure
- 2.
- Greedy-Choice Property A globally-optimal solution can be obtained by making a locally-optimal (greedy) choice. In other words, the globally optimal solution does not depend on the solution to its subproblems.

A **Greedy Algorithm** starts with a locally-optimal choice, and continues
making locally-optimal choices until a solution is found.