**1.** Characterize the structure of an optimal solution.

**2.** Recursively define the value of an optimal solution.

**3.** Compute the value of an optimal solution in a bottom-up fashion.

**4.** Construct an optimal solution from computed information.