- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
贪婪的动态规划
——浅谈贪心思想在动态规划中的应用
浙江省绍兴县柯桥中学 黄劲松
【关键字】
贪心法,动态规划,状态,时间复杂度
【摘要】
贪心法和动态规划是信息学竞赛中的两种常用算法,本文着重讨论了贪心的思想是如何巧妙的运用到动态规划的解题中的。全文分三个部分,首先讨论了贪心思想运用到动态规划解题中的可行性和必要性,然后就贪心思想在动态规划中的两种基本应用分别做了举例说明,最后总结全文。
【正文】
引言
贪心法和动态规划是信息学竞赛中的常用经典算法,而当某些问题的模型过于复杂的时候,由于状态过于庞大、转移困难等一系列的问题,常规的动态规划难于甚至无从下手。而在这个时候,巧妙的使用贪心思想,将其融入到动态规划的解题中,动态规划便焕发出了新的光彩。
1、贪心思想运用到动态规划中的必要性和可行性
动态规划的原理是:在求解问题的过程中,通过处理位于当前位置和所达目标之间的中间点来找到整个问题的解。整个过程是递归的,每到一个新的中间点都是已访问过的点的一个函数。适合于动态规划法的标准问题必须具有下列特点:
1、整个问题的求解可以划分为若干个阶段的一系列决策过程。
2、每个阶段有若干可能状态。
3、一个决策将你从一个阶段的一种状态带到下一个阶段的某种状态。
4、在任一个阶段,最佳的决策序列和该阶段以后的决策无关。
5、各阶段状态之间的转换有明确定义的费用
在实际的动态规划的解题中,面临着两大困难:一是不知道题目是否可以用动态规划求解;二是即使能够想到用动态规划来求解,但是因为种种因素,算法的效率并不乐观。这个时候,使用贪心思想分析问题,可以让你在山穷水尽疑无路的时候,柳暗花明又一村。
在运用贪心思想的时候,主要是分析出问题的一些本质,或者分析出低效算法的一些冗余。当然,我们要根据题目的特殊信息,合理的运用好贪心思想,才能帮助动态规划发挥其强大的功效。
下文就贪心思想如何解决动态规划面临着的这两大困难分别做了举例说明。
2、贪心思想在动态规划中的应用一: 确立状态
动态规划当中,状态的确立是重点,而在实际的解题过程中,状态的信息往往是隐含的,这个时候,合理的运用贪心思想,可以迅速的从繁芜丛杂的问题背景中巧妙地抽象出状态。我们通过下面的例子来看一看,贪心思想是如何帮助动态规划确立状态的。
例题
题目大意:
池塘里有n片荷叶(1≤n≤1000),它们正好形成一个凸多边形。按照顺时针方向将这n片荷叶顺次编号为1,2,…,n。
有一只小青蛙站在1号荷叶上,它想跳过每片荷叶一次且仅一次(它可以从所站的荷叶跳到任意一片荷叶上)。同时,它又希望跳过的总距离最短。
请你编程帮小青蛙设计一条路线。
算法分析:
问题似乎是一个N个点的TSP问题,但却又是一个特殊的TSP问题——题目中说明,N个点围成了一个凸多边形!
如何合理的运用这个特殊的条件成为了解题的关键。
原始的问题模型很容易使人放弃动态规划,因为状态难以抽象,状态转移也无从着手。但如果从问题特征出发,灵活运用贪心策略,却能巧妙的设计出一种高效的动态规划算法!
先介绍一下TSP问题的一种局部搜索算法——2-最优算法。它从随机的一种可选路径出发(称为路径T),试图去改善它。我们在T中寻找出2条不相交的边,移动这两条边,如果新产生的路径比原来的路径优秀,那么就移动这两条边。这种移动称为2-交换。如图所示:
可以根据这个TSP问题的局部最优算法容易想到,原问题的最短路线中显然不存在相交的边,否则一定可以将这条路线“改进”成一条更优秀的路线。
根据上述结论可以知道:从1出发的第一步只能到2或者n,否则产生的路线一定不会是最优的。
因此,原问题的模型变成了:寻找以1为起点,遍历凸多边形{1..N}中的顶点一次且一次的最短路线。根据上述结论可以知道,如果离开1到达2,接下来的任务是寻找以2为起点,遍历凸多边形{2..N}中的顶点一次且一次的最短路线;如果离开1到达N,接下来的任务是寻找以N为起点,遍历凸多边形{2..N}中的顶点一次且一次的最短路线。这是一个递归的过程!
因此,状态可以这样表示:f[i,L,0]表示从i出发,遍历{i..i+L-1}中的顶点一次且一次的最短距离;f[i,L,1]表示从i+L-1出发,遍历{i..i+L-1}中的顶点一次且一次的最短距离。状态转移方程是:
f[i,L,0] = min{dist(i,i+1)+f[i+1,L-1,0],dist(i,i+L-1)+f[i+1,L-1,1]}
f[i,L,1] = min{dist(i+L-1,i+L-2)+f[i,L-1,1],dist(i+L-1,i)+f[i,L-1,0]}
f[i,1,0] = 0, f[i,1,1] = 0
其中dist(a,b)表示第a个结点和第b个结点之间的欧几里德距离。问题的答案是f[1,n,0]
时间复杂
您可能关注的文档
最近下载
- 2021年企业劳动合同.doc VIP
- 《中国文化概况》带翻译版.pdf VIP
- 600MW给水泵KSB中文指导书1.pdf VIP
- 2022年招标投标(评标评审专家)试题及参考答案200题(一) .pdf VIP
- 应急救援与疏散培训资料.ppt VIP
- 苏教版三年级数学下册作业设计精品案例——《长方形和正方形的周长与面积》.docx VIP
- YonSuite-费控服务初始化指南.pdf VIP
- YonSuite标准解决方案-费控服务方案-Visio版.docx VIP
- 第二届山东省职业技能大赛(健康和社会照护赛项)备考试题(附答案).doc VIP
- 50131-2007 ㊣《自动化仪表工程质量验收规范》.pdf VIP
文档评论(0)