A formalism for dynamic programming

We introduce a formal structure for dynamic programming that associates a unique dynamic programming functional equation to every deterministic, separable decision tree representation of the underlying problem. Since, in general, the computational complexity of the resulting functional equation depends on the decision tree chosen, the art of dynamic programming is shown to lie in the choice of decision tree to model the problem. The development is illustrated with alternative formulations of the classic knapsack problem.