Chapter 11. Dynamic Programming in Discrete Time