动态规划求解多段图问题
首先,动态规划的求解思想可以归纳为两个步骤:
1.证明问题满足最优性原理
2.给出递推关系式
*对于最优性原理,我们做如下的解释:
无论过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的状态构成一个最优决策序列。
接下来就是求解多段图问题
多段图G=(V, E)是一个有向图。它具有如下特性:
图中的结点被划分成 k³ 2个不相交的集合Vi ,1£i£k,其中V1和Vk分别只有一个结点 s (源点) 和 t (汇点)。
图中所有的<u, v>均具有如下性质:
若,则vVi+1,1<i<k,且每条边<u, v>均 附有成本c(u, v)。
p从s到t的一条路径成本是这条路径上边的成本和。
p多段图问题是求由s到t的最小成本路径。
多段图问题的最优性原理证明:
假设s,v2,v3,.......,vk-1,t是一条由s到t的最短路径。
再假设从源点s开始,已作出了到结点v2的决策,因此v2就是初始决策所产生的状态。
如果把v2看成是原问题的一个子问题的初始状态,解决这个子问题就是找出一条由v2到t的最短路径。
这条最短路径显然是v2,v3.......,vk-1,t .
如果不是,设v2,q3,.......,qk-1,t是由v2到t的更短路径,则s,v2,q3,.......,qk-1,t是一条比路径s,v2,v3,.......,vk-1,t更短的由s到t的路径,与假设矛盾,因此最优性原理成立。
多段图的递推分析:
向前处理法(forward approach)
从最后阶段开始,以逐步向前递推的方式,列出求解前一阶段决策值的递推关系式,即根据xi+1, ¼, xn的那些最优决策序列来列出求取xi决策值的关系式。
向后处理法(backward approach)
从初始阶段开始,以逐步向后递推的方式,列出求解后一阶段决策值的递推关系式,即根据x1, ¼, xi-1的那些最优决策序列来列出求取xi决策值的关系式。
多段图向前处理递推关系式:
向前处理法:从最后阶段开始,逐步向前递推,根据xi+1, ¼, xn的那些最优
决策序列来列出求取xi决策值的关系式。
设P(i, j)是一条从Vi中的结点j 到汇点t 的最小成本路径,
COST(i, j)表示从结点j 到汇点t这条路径的成本。
根据向前处理方法:
COST(i, j)= min{ c(j, l)+COST(i+1, l)}
其中:lÎVi+1,<j, l>ÎE, c(j, l)表示该边的成本。
多段图向前处理的计算过程:
初始化:对于k段图,当i=k-1时,
如果<j, t>ÎE,有COST(k-1, j)= c(j, t),
如果<j, t>ÏE,有COST(k-1, j)=
多段图向前处理的计算过程:
COST(i, j)=min{ c(j, l)+COST(i+1, l)}
COST(4, 9)=c(9,12)=4
COST(4,10)=c(10,12)=2
COST(4,11)=c(11,12)=5
COST(3,6)=min{c(6,9)+COST(4,9) ,
c(6,10)+COST(4,10)}
=min{6+4, 5+2}=7
COST(3,7)=min{c(7,9)+COST(4,9) , c(7,10)+COST(4,10)}
=min{4+4, 3+2}=5
COST(3,8)=min{c(8,10)+COST(4,10) , c(8,11)+COST(4,11)}
=min{5+2, 6+5}=7
COST(3,6)=7
COST(3,7)=5
COST(3,8)=7
COST(2,2)
=min{c(2,6)+COST(3,6),
c(2,7)+COST(3,7),
c(2,8)+COST(3,8)}
=min{4+7, 2+5, 1+7}=7
COST(2,3)=min{2+7,7+5}=9
COST(2,4)=min{11+7}=18
COST(2,5)=min{11+5,8+7}=15
COST(1,1)
=min{c(1,2)+COST(2,2),
c(1,3)+COST(2,3),
c(1,4)+COST(2,4),
c(1,5)+COST(2,5)}
=min{9+7,7+9,3+18,2+15}=16