COP 4531: Lecture 12

Learning objectives

After this class, you should be able to:

  1. Given a problem, identify if dynamic programming is likely to be effective in solving it.
  2. Given a problem, determine if it satisfies the optimal substructure property.
  3. Given a recursive solution to a problem, derive its time complexity.
  4. Given a recursive solution (with repeated subproblems) to a problem, give an improved algorithm that uses memoization to reduce the time taken.
  5. Prove optimal substructure properties for the Longest Common Subsequence (LCS) problem, and for other similar problems.
  6. Give a recursive solution for the Longest Common Subsequence (LCS) problem, and for other similar problems.
  7. Give a dynamic programming solution for the Longest Common Subsequence (LCS) problem, and for other similar problems.

Reading assignment

  1. Lectures 11-13 slides.
  2. CLR: Sections 15.3, 15.4.
  3. CLR: Chapter 16, page 415.

Exercises and review questions


Last modified: 20 Feb 2017