12.1 Discrete Time Dynamic Programming Problems