Discrete State Dynamic Programming