第4讲动态规划.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4讲动态规划

第4讲 动态规划 我们先来看一个简单的多阶段决策问题。 现有一张地图,各结点代表城市,两结点间连线代表道路,线上数字表示城市间的距离。如图1所示,试找出从结点1到结点10的最短路径。 第一阶段 第二阶段 第三阶段 第四阶段 第五阶段 图1 本问题的解决可采用一般的穷举法,即把从结点1至结点10的所有道路列举出来,计算其长度,再进行比较,找出最小的一条。虽然问题能解决,但采用这种方法,当结点数增加,其运算量将成指数级增长,故而效率是很低的。 我们可以用深度优先搜索法来解决此问题,该问题的递归式为 其中是与v相邻的节点的集合,w(v,u)表示从v到u的边的长度。 具体算法如下: int MinDistance(v) { if (v==E) return 0; else { min=maxint; while(所有没有访问过的节点i) { if(v和i相邻) { 标记i访问过了; t=v到i的距离+MinDistance(i); 标记i未访问过; if (tmin) min=t; } } } } 开始时标记所有的顶点未访问过,MinDistance(A)就是从A到E的最短距离。 这个程序的效率如何呢?我们可以看到,每次除了已经访问过的城市外,其他城市都要访问,所以时间复杂度为O(n!),这是一个“指数级”的算法,那么,还有没有更好的算法呢? 分析图1可知,各结点的排列特征: 可将各结点分为5个阶段; 每个阶段上的结点只跟相邻阶段的结点相连,不会出现跨阶段或同阶段结点相连的情况,如不会出现结点1与结点4连、结点4与结点5连的情况。 除起点1和终点10外,其它各阶段的结点既是上一阶段的终点,又是下一阶段的起点。例如第三阶段的结点4、5、6,它即是上一阶段结点2、3中某结点的终点,又是下一阶段结点7、8、9中某结点的起点。 根据如上特征,若对于第三阶段的结点5,选择1-2-5和1-3-5这两条路径,后者的费用要小于前者。那么考虑一下,假设在所求的结点1到结点10最短路径中要经过结点5,那我们在结点1到结点5之间会取那条路径呢?显然,无论从结点5出发以后的走法如何,前面选择1-3-5这条路都总是会优于1-2-5的。也就是说,当某阶段结点一定时,后面各阶段路线的发展不受这点以前各阶段的影响。反之,到该点的最优决策也不受该点以后的发展影响。 由此,我们可以把原题所求分割成几个小问题,从阶段1开始,往后依次求出结点1到阶段2、3、4、5各结点的最短距离,最终得出答案。在计算过程中,到某阶段上一结点的决策,只依赖于上一阶段的计算结果,与其它无关。例如,已求得从结点1到结点5的最优值是6,到结点6的最优值是5,那么要求到下一阶段的结点8的最优值,只须比较min{6+5,5+5}即可。这样,运用动态规划思想大大节省了计算量。可以看出,动态规划是解决此类多阶段决策问题的一种有效方法。 算法如下: void short_path() { F5[E]=0; for(i=4,i=0,i--) { while(每一个u ∈Sk ) { Fk[u]=无穷大; While(每一个v∈Sk+1∩δ(u)) { if (Fk[u]w(u,v)+Fk+1[v]) Fk[u]:=w(u,v)+Fk+1[v]; } } } 输出F1[A]; } 一、动态规划 1、什么是动态规划 动态规划:与分治法相似,把问题分解按层次分成子问题,直到可以直接求解的子问题,然后一级一级地向上求解。 与分治法的出别在于:动态规划适用有许多重复子问题出现的问题,它保留已求出问题的解。 例如,计算矩阵连乘积。 问题:(1)矩阵相乘的定义 (2)设矩阵的阶分别为 如按计算需要的计算次数为: 50*5*100+50*100*10=75000。 如按计算需要的计算次数为: 50*5*10+5*100*10=7500。 (3)n个矩阵连乘时,怎样规划它们的乘积次序,使得所有的乘法次数最少 2、动态规划中的主要概念,名词术语 阶段:把问题分成几个相互联系的有顺序的几个环节,这些环节即称为阶段。是对整个过程的自然划分。通常根据时间顺序或空间特征来划分阶段,以便按阶段的次序解优化问题。 状态:某一阶段的出发位置称为状态。通常一个阶段包含若干状态。如图1中,阶段3就有三个状态结点4、5、6。 决策:从某阶段的一个状态演变到下一个阶段某状态的选择。 策略:由开始到终点的全过程中,由每段决策组成的决策序列称为全过程策略,简称策略。 状态转移方程:前一阶段的终点就是后一阶段的起点,

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档