一级目录
6.1 一般方法
- 多阶段决策过程:问题的活动过程可以分为若干个阶段,而且在任一阶段后的行为都仅依赖于该i阶段后的过程状态,而与i阶段之前的过程如何达到这种状态的方式无关,这样的过程就构成一个多阶段决策过程。
- 最优性原理:多阶段过程的最优决策序列具有性质:无论过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的状态构成一个最优决策序列。
动态规划的目标就在于:在所有容许选择的决策序列中选取一个获得问题最优解的决策序列,即最优决策序列。
动态规划的求解步骤(最优决策序列): - 得是多阶段决策问题。
- 满足最优性原理。
- 写出递归关系式。
证明最优性原理
6.2 多段图
多段图的定义:
向前处理法
向前处理法(forward approach):从最后阶段开始,以逐步向前递推的方式,列出求解前一阶段决策值的递推关系式,即i根据xi+1, …, xn的那些最优决策序列来列出求取xi决策值的关系式。
P(i,j),COST(i,j),c(j,l),D(i,j)的定义
解题步骤:
多段图的向前处理算法6.1
算法6.1FGRAPH
- COST(j)表示结点j到终点的最小成本.
- D(j)用来表示 从节点j到终点的最小成本路径上结点j的决策。
- P用来保存最小成本路径上结点
算法6.1 时间复杂度和空间复杂度
向后处理法
从初始阶段开始,以逐步向后递推的方式,列出求解后一阶段决策值的递推关系式,即根据x1, …, xi-1的那些最优决策序列来列出求取xi决策值的关系式。
BP(i,j)、BCOST(i,j)
多段图的向后处理算法6.2
算法6.2BGRAPH
向前处理和向后处理的区别
向前处理:
- 已知结点j+1,…,汇点r的P\COST\求结点j。
- 编程时使用邻接表(看结点j能够到达的点)来实现。
向后处理:
- 已知起点s,…,j-1的P\COST\求结点j。
- 编程时使用逆邻接表(看哪些节点能够到达结点j)来实现。