链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1004
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程最优化的
数学方法。最优化原理,把多阶段过程转化为一系列单阶段问题逐个求解,创立了解决
这类过程优化问题的新方法——动态规划。
在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联
系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。因
此各个阶段决策的选取不能任意确定,它依赖于当前面临的状态,又影响以后的发展。
当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条活动路
线。这种把一个问题看做是一个前后关联具有链状结构的多阶段过程就称为多阶段决策
过程,这种问题称为多阶段决策最优化问题。每个阶段中,都求出本阶段的各个初始状
态到过程终点的最短路径和最短距离,当逆序倒推到过程起点时,便得到了全过程的最
短路径及最短距离,同时附带得到了一组最优结果。
多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于
当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的,故
有“动态”的含义,称这种解决多阶段决策最优化问题的方法为动态规划方法。
动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算
法。不象前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰
的解题方法。动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不
同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特
色的解题方法,而不存在一种万能的动态规划,可以解决各类最优化问题。因此在学习
时,除了要对基本概念和方法正确理解外,必须具体问题具体分析处理,以丰富的想象
力去建立模型,用创造性的技巧去求解。根据上例分析和动态规划的基本概念,可以得
到动态规划的基本模型如下: