动态规划3

转载 2006年06月04日 17:49:00

动态规划

最优化原理与无后效性

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

(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]对应的关系就如图右所示。可以很清晰地看出,这两个阶段的关系是“有后效性”的。因为这个图中存在“环路”。对于这个问题是不能像上一个问题那样来解决的。
阶段关系图

动态规划的三大要素

动态规划三要素:问题的阶段,每个阶段的状态以及从前一个阶段转化到后一个阶段之间的递推关系。...
  • adawangyi
  • adawangyi
  • 2015年03月24日 16:51
  • 303

动态规划算法——矩阵连乘问题(java实现)

矩阵连乘问题: 求矩阵A1(5×3)、A2(3×4)、A3(4×7)、A4(7×2)、A5(2×3)和A6(3×6)连乘的最佳计算次序。  算法实现:package practice; /** * ...
  • zimou5581
  • zimou5581
  • 2016年11月05日 13:29
  • 600

动态规划(2):动态规划的三种形式

例:数字三角形(POJ 1163)Language:DefaultThe TriangleTime Limit: 1000MSMemory Limit: 10000KTotal Submissions...
  • sun897949163
  • sun897949163
  • 2016年07月31日 11:41
  • 858

动态规划3-Warshall算法和Floyd算法

上2篇详细分析了动态规划的一些理解,传统的教材上就大概说了下空间换时间,记忆以避免重复计算等。 然后我们在文章中深入的分析和解释了交叠子问题是怎么表现的,最优子结构的表现,多阶段决策(无后效性)的...
  • mengzhejin
  • mengzhejin
  • 2014年07月16日 16:26
  • 1171

动态规划学习系列——划分DP(三)

划分DP第三题,wikioi 1040,送我n个WA~~~题目大意: 这道题题述有着UVA的特色,够废话,其实就是读入一个长度最大200的字符串(不知道为何要分行输入,完全没有意义啊),分成m部分,...
  • fuyukai
  • fuyukai
  • 2015年02月22日 14:13
  • 1065

深度增强学习David Silver(三)——动态规划的planning

本节课主要介绍: 策略评估(Policy Evaluation) 策略迭代(Policy Iteration) 价值迭代(Value Iteration) 动态规划(DP, Dynamic Progr...
  • cs123951
  • cs123951
  • 2017年05月11日 22:17
  • 1242

动态规划——最大乘积

问题描述: 设有一个长度为N 的数字串,要求选手使用K 个乘号将它分成K+1 个部分,找出一种分法,使得这K+1 个部分的乘积最大。 同时,为了帮助选手能够理解题意,主持人还举了如下一个例子: 有一个...
  • clearriver
  • clearriver
  • 2009年05月27日 09:04
  • 5826

【动态规划】凑硬币

算法 推荐阅读:从动态规划新手到专家 上面是在网上看到的一篇好文章,里面有一个凑硬币的问题 如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元? (表面上这道题可以用贪心算法...
  • ww1473345713
  • ww1473345713
  • 2016年04月22日 21:05
  • 1179

矩阵连乘问题的动态规划解法

问题描述: 设要计算矩阵连乘积A0,A1,A2,A3,A4,A5,其中各矩阵的维数分别为: A0:30*15 A1:35*15 A2:15*5 A3:5*10 A4:10*20 A5:20*25...
  • telunsu40
  • telunsu40
  • 2016年10月25日 11:34
  • 772

算法笔记——【动态规划】矩阵连乘问题

问题描述:给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和...
  • u014755255
  • u014755255
  • 2016年01月23日 19:47
  • 2252
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态规划3
举报原因:
原因补充:

(最多只允许输入30个字)