- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规划(DP) 在分治算法中,为了解决一个大问题,我们总是将它分解成两个或更多的小问题,然后分别解决每个小问题,再把各小问题的解答组合起来就得到原来问题的解。小问题通常和原问题本质相似,只是规模小些,一般都可以用递归的方法来解决,如汉诺塔问题和快速排序都是例子。 有些问题当把问题分解成子问题,使之能够从这些子问题的借得到原问题的解时,子问题的数目太多,如果把每个子问题再分解,必将得到更多的子问题,以至于最后解决问题需要耗费指数级的时间。 其实,在这类问题中,子问题的数目只是多项式个,于是在上述算法中,一定有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时简单查一下,这样我们可以避免大量的重复计算 为了实现上述方法,我们用一个数组记录所有已解决的子问题的答案,无论子问题以后是否被用到,只要它被计算过,就将其结果存入数组中,这种方法在程序设计中被称为动态规划(DP) 动态规划简介 动态规划是运筹学的一个分支。它是解决多阶段决策过程最优化问题的一种方法。1951年,美国数学家贝尔曼(R.Bellman)提出了解决这类问题的“最优化原则”,1957年发表了他的名著《动态规划》,该书是动态规划方面的第一本著作。动态规划问世以来,在工农业生产、经济、军事、工程技术等许多方面都得到了广泛的应用,取得了显著的效果。 动态规划简介 动态规划运用于信息学竞赛是在90年代初期,它以独特的优点获得了出题者的青睐。此后,它就成为了信息学竞赛中必不可少的一个重要方法,几乎在所有的国内和国际信息学竞赛中,都至少有一道动态规划的题目。所以,掌握好动态规划,是非常重要的。 动态规划简介 动态规划是一种方法,是考虑问题的一种途径,而不是一种算法。因此,它不像深度优先和广度优先那样可以提供一套模式。它必须对具体问题进行具体分析。需要丰富的想象力和创造力去建立模型求解。 动态规划 思路:用一个数组来记录所有已解决的子问题的答案。无论子问题以后是否被用到,只要它被计算过,就将其结果存入数组中,这种方法在程序设计中被称为动态规划。 相比较分治算法,提高了程序效率。 最短路径问题 如图表示从起点A到终点E之间各点的距离。求A到E的最短路径。 以F(E)表示从A点出发到E点的最短距离。 则F(E)=min(F(D1)+5,F(D2)+3) 即若我们首先求出了F(D1)和F(D2),则F(E)便可迎刃而解了。 同理,要求F(D1)或F(D2),我们要先求出F(C1),F(C2),F(C3).由此类推,我们知道,首先应该把F(A)求出来。而F(A)=0. 整个问题便解决了。 数字三角形(IOI’94) 如下所示一个数字三角形 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 写一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字和最大 每一步可沿直向下或 右斜线向下走 1三角形行数=100 三角形中的数字为整数0,1,,,99 数字三角形(IOI’94) 输入:第一行为一个自然数,表示数字三角形的行数n,接下来的n行表示一个数字三角形 输出:一行一个整数表示最大和 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输出:30 分析 假设从顶至数字三角形的某一位置的所有路径中,所经过的数字总和最大的那条路径我们称之为该位置的最大路径,由于问题规定每一步只能沿直线或右斜线向下走,若要走过某一位置,则其前一位置必为其正上方或左上方两个位置之一。由此可知,当前位置的最优路径必定与其左上方或正上方两个位置的最优路径有关,且来自其中最优的一个 我们用一个两维数组a记录三角形中的数a[I,j]表示数字三角形的第I行第j列的数,再用一个两维数组maxsum记录每个位置的最优路径的数字和。计算maxsum数组可以用逐行递推的方法实现(象杨辉三角) 分析 按三角形的行划分阶段,若行数为 n,则可把问题看做一个n-1个阶段的决策问题。先求出第n-1阶段(第n-1行上各点)到第n行的的最大和,再依次求出第n-2阶段、第n-3阶段……第1阶段(起始点)各决策点至第n行的最佳路径。设:f[i,j]为从第i阶段中的点j至第n行的最大的数字和;则: f[n,j]=a[n,j]?? 1=j=n ??? f[i,j]=max{a[i,j]+f[i+1,j],a[i,j]+f[i+ 1,j+1]}? 1=j=i. ??? f[1,1]即为所求。 动态规划的基本思想 最优子结构 用动态程序设计方法来解决一个问题的第一步是规划一个最优解的结构。我们说一个问题具有最优子结构性质,如果该问题的最优解中包含了一个或多个子问题的最优
您可能关注的文档
最近下载
- 思想政治学科教学新论七章 思想政治学科评价论.ppt VIP
- 2025江西南昌青山湖区城市管理和综合执法局招聘工作人员10人笔试参考题库附答案解析.docx VIP
- 04S519:小型排水构筑物.pdf VIP
- GB50017钢结构设计规范.pdf VIP
- 武汉文化投资发展集团有限公司招聘5名工作人员笔试备考试题及答案解析.docx VIP
- 2023全钒液流电池可靠性评价方法.pdf VIP
- [乐高LEGO 9686动力机械]第14课 摩天轮.pdf VIP
- 英语视听说4英语视听说IV教学大纲.pdf VIP
- 基根-《全球营销(第8版)》英文教辅-第4章.pptx VIP
- 基根-《全球营销(第8版)》英文教辅-第3章.pptx VIP
文档评论(0)