CS510: ANALYSIS of ALGORITHMS
Kalamazoo College

Spring 1998

Dynamic Programing Summary


Many objects have an inherent left-to-right ordering among their elements, such as characters in a string, elements of a permutation, points around a polygon, or leaves in a search tree. For any optimization problem on such left-to-right objects, dynamic programming will likely lead to an efficient algorithm to find the best solution.

  • Introduction - There are two types of ideas that lead to different types of alogirthms. Dynamic Programming combines the best of both of these algorithmic techniques. The technique systematically considers all possible decisions and always selects the one that proves the best. Everything is considered in such a way that the total amount of work is minimized.

  • Three Components of a Dynamic Programming Solution -
    1. Formulate the answer as a recurrence relation or recursive algorithm.
    2. Show that the number of different values that your recurrence relation calculates is bounded by a (hopefully small) polynomial.
    3. Specify an order of evaluation for the recurrence so you always have the partial results you need available when you need them.


    Kelly Schultz, Kalamazoo College