动态规划求解多段图问题

首先,动态规划的求解思想可以归纳为两个步骤:

1.证明问题满足最优性原理

2.给出递推关系式

*对于最优性原理,我们做如下的解释:

无论过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的状态构成一个最优决策序列。


接下来就是求解多段图问题

多段图G=(V, E)是一个有向图。它具有如下特性:

图中的结点被划分成 k³ 2个不相交的集合Vi 1£i£k,其中V1Vk分别只有一个结点 s (源点) t (汇点)

图中所有的<u, v>均具有如下性质:

    若,则v\inVi+11<i<k,且每条边<u, v>均                                                                                                               附有成本c(u, v)

pst的一条路径成本是这条路径上边的成本和

p多段图问题是求st的最小成本路径


多段图问题的最优性原理证明:

假设s,v2,v3,.......,vk-1,t是一条由st的最短路径。

再假设从源点s开始,已作出了到结点v2的决策,因此v2就是初始决策所产生的状态。

如果把v2看成是原问题的一个子问题的初始状态,解决这个子问题就是找出一条由v2t的最短路径。

这条最短路径显然是v2,v3.......,vk-1,t .

如果不是,设v2,q3,.......,qk-1,t是由v2t的更短路径,则s,v2,q3,.......,qk-1,t是一条比路径s,v2,v3,.......,vk-1,t更短的由st的路径,与假设矛盾,因此最优性原理成立。


多段图的递推分析:

向前处理法(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>ÎECOST(k-1, j)= c(j, t)

如果<j, t>ÏECOST(k-1, j)=\infty


多段图向前处理的计算过程:

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

 

  • 12
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值