(lecture_05)动态规划(二) ACM课件教程教案.pptVIP

(lecture_05)动态规划(二) ACM课件教程教案.ppt

  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文档。上传文档
查看更多
(lecture_05)动态规划(二) ACM课件教程教案.ppt

ACM 程序设计 计算机学院 刘春英 今天, 你 了吗? AC 每周一星(4): 我爱小芳 第五讲 动态规划(2) (Dynamic programming) 一、HDOJ_1421 搬寝室 Sample Input 2 1 1 3 Sample Output 4 第二感觉: 对于一次操作,显然提的物品重量越接近越好,是不是可以贪心呢? 请思考… 考虑以下情况: 1 4 5 8 什么结论? 详细分析: 从最简单的情况考虑: 2个物品选一对,结论显然 结论? 4个物品选一对?(如何利用前面的知识) 3个物品选一对,… n个物品选一对,… 最终问题:n个物品选k对,如何?(n=2k) 本题算法(略): 哪位同学做个陈述? 二、HDOJ_1058 Humble Numbers Problem Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers. Write a program to find and print the nth element in this sequence 思考: 动态规划的特征体现在什么地方? 算法分析:典型的DP! 1 -? 1 -2=min(1*2,1*3,1*5,1*7) 1 -2 -3=min(2*2,1*3,1*5,1*7) 1 -2 -3 - 4 = min(2*2,2*3,1*5,1*7) 1 -2 -3 - 4 -5= min(3*2,2*3,1*5,1*7) 状态转移方程? F(n)=min(F(i)*2,F(j)*3,F(k)*5,F(m)*7) (ni,j,k,m) 特别的: i,j,k,m 只有在本项被选中后才移动 三、经典问题 最短路径问题 起点 终点 最短 路径 路径长度 V0 V1 无 V2 (V0,V2) 10 V3 (V0,V4,V3) 50 V4 (V0,V4) 30 V5 (V0,V4,V3,V5) 60 求源点到终点的最短路径的算法的基本思想:: 按照最短路径的长度递增的次序依次求得源点到其余各点的最短路径。 … 在这条路径上,必定只含一条弧,并且这条弧的权值最小。 路径长度最短的最短路径的特点: 假设,从源点到顶点V1的最短路径是所有最短路径中长度最短者。 下一条路径长度次短的最短路径的特点: 它只可能有两种情况:或者是直接从源点到该点(只含一条弧); 或者是从源点经过顶点v1,再到达该顶点(由两条弧组成)。 再下一条路径长度次短的路径特点: 它可能有三种情况:或者是直接从源点到该点(只含一条弧); 或者是从源点经过顶点v1,再到达该顶点(由两条弧组成);或者是从源点经过顶点v2,再到达该顶点。 其余最短路径的特点: 它或者是直接从源点到该点(只含一条弧); 或者是从源点经过已求得最短路径的顶点,再到达该顶点。 求最短路径的迪杰斯特拉算法: 0)准备工作: 设置辅助数组Dist,其中每个分量Dist[k] 表示:当前所求得的从源点到其余各顶点 k 的最短路径。 1)在所有从源点出发的弧中选取一条权值最小的弧,即为第一条最短路径。 V0和k之间存在弧 V0和k之间不存在弧 其中的最小值即为最短路径的长度。 2)修改其它各顶点的Dist[k]值。 (为什么?) 具体操作:假设求得最短路径的顶点为u,若 Dist[u]+G.arcs[u][k]Dist[k] 则将 Dist[k] 改为 Dist[u]+G.arcs[u][k]。 3)选出下一条最短路径,重复以上操作,直到求出所有的最短路径。 搞定!!! 说明:求两点之间的最短路径和求一个点到其余所有点的最短路径工作量一样。 练习:模拟求最短路径 终点 从 V0到各终点的D值 i=1 i=2 i=3 i=4 i=5 V1 ∞ V2 10 V3 ∞ V4 30 V5 100 Vj V2 练习:模拟求最短路径 终点 从 V0到各终点的D值 i=1 i=2 i=3 i=4 i=5 V1 ∞ ∞ ∞ ∞ ∞ V2 10 V3 ∞ 60 50 V4 30 30 V5 100 100 90 60 Vj V2 V4 V3 V5 回顾原图:最短路径问题 起点 终点 最短 路径 路径长度 V0 V1 无 V2 (V0,V2) 10 V3 (V0,V4,V3) 50

文档评论(0)

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

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

1亿VIP精品文档

相关文档