Skip to content

Dynamic programming

Part 3 of the course, volume 3 of the lecture notes: chapters 16–28.

The principles of dynamic programming and DP algorithms for knapsack problems, lot sizing, coin change and rod cutting: recurrences, pseudocode, complexity and worked tables.

Lecture notes (PDF) Exercises (PDF)

  • 16. Principles of dynamic programming


    Divide, conquer and combine · Problem properties required by DP algorithms · Steps for designing a DP algorithm · The DP algorithms of this module

    Read the chapter · Exercises

Knapsack problems

Lot sizing problems

  • 25. DP for the uncapacitated lot sizing problem


    Notation, model and feasible solutions · A DP algorithm for the ULS

    Read the chapter · Exercises

  • 26. DP for the capacitated lot sizing problem


    Notation, model and feasible solutions · A DP algorithm for the CLS

    Read the chapter · Exercises

Miscellaneous problems

  • 27. DP for the coin change problem


    Instances and feasible solutions · A DP algorithm

    Read the chapter · Exercises

  • 28. DP for the rod cutting problem


    Instances and feasible solutions · A first DP algorithm · A second DP algorithm

    Read the chapter · Exercises