动态规划3

动态规划

最优化原理与无后效性

上面已经介绍了动态规划模型的基本组成,现在需要解决的问题是:什么样的“多阶段决策问题”才可以采用动态规划的方法求解?
    一般来说,能够采用动态规划方法求解的问题必须满足.最优化原理.无后效性原则

(1)动态规划的最优化原理。作为整个过程的最优策略具有如下性质:无论过去的状态和决策如何,对前面的决策所形成的当前状态而言,余下的诸决策必须构成最优策略。
    可以通俗地理解为子问题的局部最优将导致整个问题的全局最优,即问题具有最优子结构的性质,也就是说一个问题的最优解只取决于其子问题的最优解,非最优解对问题的求解没有影响。在例题1最短路径问题中,A到E的最优路径上的任一点到终点E的路径也必然是该点到终点E的一条最优路径,满足最优化原理。下面来讨论另外一个问题。
    【例题2】余数最少的路径。

    如图所示,有4个点,分别是A、B、C、D,相邻两点用两条连线C2k,C2k-1(1≤k≤3)表示两条通行的道路。连线上的数字表示道路的长度。定义从A到D的所有路径中,长度除以4所得余数最小的路径为最优路径。
    求一条最优路径。
【分析】在这个问题中,如果还按照例题1中的方法去求解就会发生错误。按照例题1的思想,A的最优取值可以由B的最优取值来确定,而B的最优取值为(1+3) mod 4 = 0,所以A的最优值应为2,而实际上,路径C1-C3-C5可得最优值为(2+1+1) mod 4 = 0,所以,B的最优路径并不是A的最优路径的子路径,也就是说,A的最优取值不是由B的最优取值决定的,即其不满足最优化原理,问题不具有最优子结构的性质。
    由此可见,并不是所有的“决策问题”都可以用“动态规划”来解决,运用“动态规划”来处理问题 必须满足最优化原理

(2)动态规划的无后效性原则。所谓无后效性原则,指的是这样一种性质:某阶段的状态一旦确定,则此后过程的演变不再受此前各状态及决策的影响。也就是说,“未来与过去无关”,当前的状态是此前历史的一个完整总结,此前的历史只能通过当前的状态去影响过程未来的演变。具体地说,如果一个问题被划分各个阶段之后,阶段 I 中的状态只能由阶段 I+1 中的状态通过状态转移方程得来,与其他状态没有关系,特别是与未发生的状态没有关系,这就是无后效性。从图论的角度去考虑,如果把这个问题中的状态定义成图中的顶点,两个状态之间的转移定义为边,转移过程中的权值增量定义为边的权值,则构成一个有向无环加权图,因此,这个图可以进行“拓扑排序”,至少可以按他们拓扑排序的顺序去划分阶段。
    看一看下面的两个具体例子。
    【例题3】货郎担问题。对于平面给定的n个点,编程确定一条连结各点的、闭合的游历路线问题。图中给出了7个点的情况问题的解。
    【例题4】旅行路线问题。在货郎担问题的基础上,若规定这种游历路线先从最左边开始,严格地由左至右到最右边的点,然后再严格地由右至左到出发点,求整个路程最短的路径长度。图中给出了7个点问题的解。

例3图 货郎担问题
例4图 旅行路线图
【分析】这两个问题看起来很非常相似,但本质上是完全不同的。为了方便讨论,可以将每个顶点标记号码。由于必然经过最右边的顶点7,所以一条路(P1-P2)可以看做两条路(P1-7)与(P2-7)的结合。因此,这个题目的状态可以用两条道路结合的形式表示。可以把这些状态中,两条路中起始顶点相同的状态归于一个阶段,设为阶段[P1,P2]。
    那么,对于旅行路线问题来说,阶段[P1,P2]如果可以由阶段[Q1,Q2]推出,则必须满足的条件就是:Pl < Q1或P2 < Q2。例如,阶段[3,4]中的道路可以由阶段[3,5]中的道路加一条边4—5得出,而阶段[3,5]的状态却无法由阶段[3,4]中的状态得出,因为在旅行路线问题的要求中必须严格地由左到右来旅行。所以如果已经知道了阶段[3,4]中的状态,则阶段[3,5]中的状态必然已知,因此,问题满足无后效性原则,可以考虑用动态规划方法求解。
    而对于货郎担问题,阶段与阶段之间没有什么必然的“顺序”。如道路{3—2—5—7,4—6—7}属于阶段[3,4],可由属于阶段[2,4]的道路{2—5—7,4—6—7}推出;而道路{2—3—6—7,4—5—7}属于阶段[2,4],可由属于阶段[3,4]的道路{3—6—7,4—5—7}推出。如果以顶点表示阶段,推出关系表示边,那么,阶段[3,4]与阶段[2,4]对应的关系就如图右所示。可以很清晰地看出,这两个阶段的关系是“有后效性”的。因为这个图中存在“环路”。对于这个问题是不能像上一个问题那样来解决的。
阶段关系图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值