main page  —  CS 566 Efficient Algorithms

Unit 12: Dynamic Programming

This unit covers the algorithm design technique dynamic programming. Specifically, we will cover the common steps in designing dynamic programming algorithms, and we will discuss a number of examples, including

  • matrix-chain multiplication,
  • making change,
  • the Bellman-Ford algorithm,
  • optimal binary search trees,
  • edit distance.

Learning outcomes

  1. Be able to apply the DP paradigm to solve new problems.

Material

  • slides
  • lecture notes

  • Video 12-1 (2025-01-21): §12.1 Introduction
    (last year’s video due to snow storm)

  • Video 12-2 (2025-01-27): §12.2 Matrix-Chain Multiplication
    (last year’s video due to snow storm)

  • Video 12-3 (2025-01-27): §12.3 Greedy as DP
    (last year’s video due to snow storm)

  • Video 12-4 (2025-01-27): §12.4 Bellman-Ford
    (last year’s video due to snow storm)

  • Video 12-5 (2026-01-27): §12.4 Bellman-Ford implementation

  • Video 12-6 (2026-01-27): §12.5 Change-making by DP

  • Video 12-7 (2026-01-27): §12.6 Optimal binary search trees

  • Video 12-8 (2026-01-27): §12.7 Edit distance


Further reading and sources

The presentation of dynamic programming follows

and takes inspiration from


Unit 11  ⋅  Syllabus  ⋅  Unit 13