动态规划最优化原理与无后效性
来源:互联网 发布:温州seo 编辑:程序博客网 时间:2024/06/11 20:46
原文地址:
http://www.jzsyz.jzedu.cn/xxjs/Suanfa/dtguihua/index.htm
上面已经介绍了动态规划模型的基本组成,现在需要解决的问题是:什么样的“多阶段决策问题”才可以采用动态规划的方法求解?
一般来说,能够采用动态规划方法求解的问题必须满足.最优化原理和.无后效性原则。
(1)动态规划的最优化原理。作为整个过程的最优策略具有如下性质:无论过去的状态和决策如何,对前面的决策所形成的当前状态而言,余下的诸决策必须构成最优策略。
可以通俗地理解为子问题的局部最优将导致整个问题的全局最优,即问题具有最优子结构的性质,也就是说一个问题的最优解只取决于其子问题的最优解,非最优解对问题的求解没有影响。在例题1最短路径问题中,A到E的最优路径上的任一点到终点E的路径也必然是该点到终点E的一条最优路径,满足最优化原理。下面来讨论另外一个问题。
【例题2】余数最少的路径。
求一条最优路径。
【分析】在这个问题中,如果还按照例题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个点问题的解。
【分析】这两个问题看起来很非常相似,但本质上是完全不同的。为了方便讨论,可以将每个顶点标记号码。由于必然经过最右边的顶点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]中的状态必然已知,因此,问题满足无后效性原则,可以考虑用动态规划方法求解。
- 动态规划最优化原理与无后效性
- 最优化原理与无后效性
- uva 11552 无后效性的动态规划
- 动态规划中的最有子结构和无后效性
- 动态规划(4):消除后效性
- 什么是无后效性?
- 后及性、无前溯性与无后效性——马尔可夫过程“无后效性”回溯谈
- 动态规划的基本概念和最优化原理
- (动态规划DP)面试题:求数组中两个数的最大差值(只能下标大的减去下标小的)符合无后效性
- hdu 5035 指数分布无后效性
- hdu3466_01背包变形 理解无后效性
- 最短路径-动态规划-无
- 关于Bellman最优化原理和动态规划的个人理解
- 动态规划与递推——动态规划是最优化算法 ( 转自2004chen)
- 用动态规划解决两个装配站最优化问题
- POJ 3017 单调队列+最值优化 的动态规划
- ZOJ2676动态规划优化
- 动态规划 斜率优化
- 常用限制input的方法
- 2015/03/31 百度广告事业部面试基础问答
- 习题2—13
- Mirantis OpenStack HA
- POJ 2142 The Balance(exgcd应用)
- 动态规划最优化原理与无后效性
- TableAdapter和DataAdapter有何区别
- 大数相加算法
- 为什么要写个人博客?
- 队列的图文解析 和 对应3种语言的实现(C/C++/Java)
- Spring集成Ibatis详细介绍
- sql server调优之浅见
- Hdu 大数运算
- 超链接<a>