2019年动态规划的深入讨论.docVIP

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态规划的深入讨论 东北育才学校 李刚 【关键字】 动态规划、状态 【 摘要】 本文讨论了一种解决问题十分有效的技术——“动态规划”。它较高的解题效率一直受到很大的关注。本文首先对“动态规划”的理论基础进行了讨论。给出了一个用“动态规划”可以解决的问题的两个先决条件:“最优子结构”与“无后效性”。接着,讨论了在实际应用中的两个比较常见的问题:“动态规划”中状态的选定与存储。再通过以上问题的讨论,引出了“动态规划”的基本思维方法:“不做已经做过的工作”以及“动态规划”技术在解决问题中速度惊人的原因——“解决了查看中的冗余,达到了速度的极限”。最后,阐述了解决“动态规划”问题的一般步骤,即“思考,计划,应用”矚慫润厲钐瘗睞枥庑赖賃軔朧碍鳝绢懣硯涛镕頃赎巯驂雞虯从躜鞯烧。 【正文】 一 .引 论 在信息学竞赛中,特别是最近几年,“动态规划”作为一种解题工具,经常被提及。其应用范围愈来愈广,应用程度也愈来愈深。那么,“动态规划”究竟与其它的算法有什么差别?它有什么具体的应用价值呢?本文将对此进行讨论。聞創沟燴鐺險爱氇谴净祸測樅锯鳗鲮詣鋃陉蛮苎覺藍驳驂签拋敘睑绑。 我们先通过一个具体问题认识一下“动态规划”。 〖例1〗:图1中给出了一个地图,地图中每个顶点代表一个城市,两个城市间的连线代表道路,连线上的数值代表道路的长度。现在,我们想从城市A到达城市E,怎样走路程最短,最短路程的长度是多少?残骛楼諍锩瀨濟溆塹籟婭骒東戇鳖納们怿碩洒強缦骟飴顢歡窃緞駔蚂。 假设: Dis[X]为城市X到E的最短路线的长度;(X表示任意一个城市) Map[I,J]表示I,J两个城市间的距离,若Map[I,J]=0,则两个城市不连通。 这个问题我们可以用搜索法来做,程序很容易写出来: Var Se:未访问的城市集合; Function Long(Who:当前访问城市):Integer; :求当前访问城市与城市E的最短距离。酽锕极額閉镇桧猪訣锥顧荭钯詢鳕驄粪讳鱸况閫硯浈颡閿审詔頃緯贾。 Begin If Who=E Then Search:=0 Else Begin Min:=Maxint; For I取遍所有城市 Do If (Map[Who,I]0) And (I In Se) Then Begin Se:=Se-[I]; J:=Map[Who,I]+Long(I); Se:=Se+[I]; If JMin Then Min:=J; End; Long:=Min; End; End; Begin Se:=除A外所有城市的集合; Dis[A]:=Long(A); End. 这个程序的效率如何呢?我们可以看到,每次除了已经访问过的城市外,其他城市都要访问,所以时间复杂度为,这是一个“指数级”的算法,那么,还有没有更好的算法呢?彈贸摄尔霁毙攬砖卤庑诒尔肤亿鳔简闷鼋缔鋃耧泞蹤頓鍥義锥柽鳗铟。 首先,我们来观察一下这个算法。在求从B1到E的最短路径的时候,先求出从C2到E的最短路径;而在求从B2到E的最短路径的时候,又求了一遍从C2到E的最短路径。也就是说,从C2到E的最短路径我们求了两遍。同样可以发现,在求从C1、C2到E的最短路径的过程中,从D1到E的最短路径也被求了两遍。而在整个程序中,从D1到E的最短路径被求了四遍,这是多么大的一个浪费啊!如果在求解的过程中,同时将求得的最短路径的距离“记录在案”,随时调用,那会是多么的方便啊!謀荞抟箧飆鐸怼类蒋薔點鉍杂篓鳐驱數硯侖葒屜懣勻雏鉚預齒贡缢颔。 于是,一个新的思路诞生了,即:由后往前依次推出每个Dis值,直到推出Dis[A]为止。这个思路的确很好,但等等,究竟什么是“由后往前”呢?厦礴恳蹒骈時盡继價骚卺癩龔长鳏檷譴鋃蠻櫓鑷圣绋閼遞

文档评论(0)

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

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

1亿VIP精品文档

相关文档