程序设计思路 在动态规划中,可将一个问题的解决方案视为一系列决策的结果,要考察每个最优决策序列中是否包含一个最优子序列。所以在最短路径问题中,假如在的第一次决策时到达了某个节点v,那么不管v 是怎样确定的,此后选择从v 到d 的路径时,都必须采用最优策略。利用最优序列由最优子序列构成的结论,可得到f 的递归式。f ( 1 ,c) 是初始时背包问题的最优解。可使用(1)中所示公式通过递归或迭代来求解f ( 1 ,c)。从f (n, * )开始迭式, f (n, * )由第一个式子得出,然后由第二式递归计算f (i,*) ( i=n- 1,n- 2,⋯ , 2 ),最后得出f ( 1 ,c)。动态规划方法采用最优原则( principle of optimality)来建立用于计算最优解的递归式。所谓最优原则即不管前面的策略如何,此后的决策必须是基于当前状态(由上一次决策产生)的最优决策。由于对于有些问题的某些递归式来说并不一定能保证最优原则,因此在求解问题时有必要对它进行验证。若不能保持最优原则,则不可应用动态规划方法。