General Methods In Dynamic Programming