- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十五章 动态规划
第一节 动态规划的基础
一、动态规划简介
动态规划算法(Dynamic Programming,简称DP)是信息学奥赛中重点考察的基本算法,每年的各类比赛中会
动态规划算法是解决“多阶段决策问题”的一种高效算法,它对每个出现的问题只求解一次,并将其结果保存在一张表中,以后再次遇到相同的问题时,直接从表中索取答案,避免重复计算。正是这种“不做无用功”的求解模式,大大提高了程序的效率。动态规划算法常用于解决统计类问题(统计方案总数)和最优值问题(最大值或最小值),尤其普遍用于最优化问题。
本章主要介绍了动态规划的基本概念、动态规划的问题特征以及求解方法和技巧心得,并通过分析一些典型的题目来说明动态规划类问题的基本解题思路。
二、动态规划的基本概念
下面,我们通过分析一个实例来对动态规划算法有一个初步的认识,并了解阶段、状态、决策等基本概念。
最短路线问题
如图15-1所示,宇宙中存在着大大小小的星球,星球之间存在着纵横交错的飞船通道。梦佳背负着巨大的使命,需要尽快从星球A赶到星球E执行任务。请你帮助她找到一条最短的路线。
图15-1 最短路线图
问题分析:
经过观察,容易发现本问题有一明显的特点,就是在从星球A到星球E的路径上,结点可按从左向右的顺序分为5部分:
第一部分:A;
第二部分:B1,B2;
第三部分:C1,C2,C3,C4;
第四部分:D1,D2,D3;
第五部分:E。
显而易见,想尽快到达星球E,必须始终从左到右单向(也就是按照第一部分到第五部分依次增加的顺序)
既然只能从左向右单向前进,那么从A点到其他任意一点X的最短距离,必然经过且仅经过X左侧的点(设为Y)。因此,如果能提前求得由A到Y的最短距离,那么枚举X的所有前驱点Y,就可以计算出A到X的最短距离。所以,按照空间顺序从左到右的顺序划分阶段,我们就可以按阶段一步步求得从A到E的最短路径了。
算法描述:
定义f[i]为A到i点的最短距离,dis[i,j]为结点i与结点j之间的距离。
我们从第一部分开始从左向右依次求A到其他各点的最短距离,每一部分看成一个阶段,每到一个新的阶段就把相应结点的f[i]值求出来,直到求完第五阶段结点E的f[E],f[E]也就是我们希望得到的答案。
按照上面的思路,下面我们手动模拟,求解点A到点E的最短距离。
第一阶段:[A] = 0;
第二阶段:f[B1] = dis[A,B1] = 5, f[B2] = dis[A,B2] = 3;
第三阶段:f[C1] = f[B1]+dis[B1,C1] = 6,
f[C2] = min{f[B1]+dis[B1,C2] , f[B2]+dis[B2,C2]}= min{5+6,3+8 = 11,
f[C3] = f[B1]+dis[B1,C3] = 5+3 = 8,
f[C4] = f[B2]+dis[B2,C4] = 3+4 = 7;
第四阶段:f[D1] = min{f[C1]+dis[C1,D1] , f[C2]+dis[C2,D1]} = min{6+5,11+5} =11,
f[D2] = f[C1]+dis[C1,D2] = 6+6 = 12,
[D3] = min{f[C3]+dis[C3,D3], f[C4]+dis[C4,D3]} = min{8+8,7+3} = 10;
第五阶段:[E] = min{f[D1]+dis[D1,E], f[D2]+dis[D2,E) ,f[D3]+dis[D3,E]}
= min{11+3, 12+4, 10+3} = 13;
最短路径:A--B2--C4--D3--E;
最短距离:13。
通过上述求解过程,我们可以看出,在本例中,对每一个出现的问题(f[i])只求解一次,不做重复计算,以后再遇到时直接使用,这就是动态规划算法高效的原因,更是学习动态规划算法必须深刻理解的一点。
解决了上述最短路径问题,下面我们了解一下动态规划中常见的几个概念:
1.阶段
阶段是为了方便解决问题人为划分的。把问题的求解过程恰当地按一定顺序分成若干个相互联系的阶段,从而按相对应的次序去求解问题。
阶段一般依据时间或者空间划分,上面的例子就是按照空间来划分阶段的,一共5个阶段,A点是第一阶段,E点是第五阶段。在生活中有许多划分阶段的例子,如计算机的使用,可按照时间顺序划分为打开电源开关、启动计算机、正常使用计算机、用完后关机等几个阶段。
阶段划分是动态规划中最重要的环节,阶段划分不当或者错误,就会导致题目难度剧增或得出错误的结果。因此,正确划分阶段是解决动态规划问题的重中之重。另外,如果一个问题无法划分合适的阶段,那它或许就无法使用动态规划算法解决。
2.状态
通常一个阶段有多个状态,状态可以用一组数来描述。在定义状态时,要做到“不多
您可能关注的文档
最近下载
- 基于国家智慧教育云平台的移动学习环境下的学生自主学习习惯养成研究教学研究课题报告.docx
- 高中思想政治新旧课程比较研究.pdf VIP
- 高一的语文专题训练—辨析并修改病句练习题.docx VIP
- QC成果-浙江中烟技术中心:ZJ112卷烟机VE循环风冷却系统的研制.pdf VIP
- YYT 0472.2-2004 医用非织造敷布试验方法 第2部分 成品敷布.docx VIP
- 猪促黄体生成素的重组表达载体、重组细胞株、制备方法.pdf VIP
- 智慧社区规划设计方案.ppt VIP
- 中压岸电AMP系统的安全操作及管理.pptx
- 一、课程性质与基本理念——2025年版《普通高中课程标准》思想政治(wor.pptx VIP
- 质子治疗与护理.pptx
原创力文档


文档评论(0)