- 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)最优子结构性质 (2)重叠子问题性质 掌握设计动态规划算法的步骤。 (1)找出最优解的性质,并刻划其结构特征。 (2)递归地定义最优值。 (3)以自底向上的方式计算出最优值。 (4)根据计算最优值时得到的信息,构造最优解。 最优化原理 1951年美国数学家R.Bellman等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解决。 同时,提出了解决这类问题的“最优化原理”(Principle?of?Optimality)。 “最优化原理”用数学化的语言来描述:假设为了解决某一优化问题,需要依次作出n个决策D1,D2,…,Dn,如若这个决策序列是最优的,对于任何一个整数k,1 k n,不论前面k个决策是怎样的,以后的最优决策只取决于由前面决策所确定的当前状态,即以后的决策Dk+1,Dk+2,…,Dn也是最优的。(最优子结构性质 )? 最优化原理 ?最优化原理是动态规划的基础。任何一个问题,如果失去了这个最优化原理的支持,就不可能用动态规划方法计算。能采用动态规划求解的问题都需要满足一定的条件:???? (1) 问题中的状态必须满足最优化原理;????(2) 问题中的状态必须满足无后效性。 ?所谓的无后效性是指:“下一时刻的状态只与当前状态有关,而和当前状态之前的状态无关,当前的状态是对以往决策的总结”。 [问题4-1]:存在一个数字三角形,从顶到底有多条路径, 每一步可沿左斜线向下或垂直向下。路径所经过的数字之和称为路径得分,要求求出最小路径得分。 声明部分; 输入a数组,M行N列;//下标从1开始 for (j = 1; j = N; j++) //O(N) D[M][j]=a[M][j]; for (i = M-1; i =1; i--) //自底向上DP { for (j =M-i+1,n=1; n=2*i; j++,n++) D[i][j]=min(D[i+1][j],D[i+1,j-1])+a[i][j]; } coutmin(D[1]); //输出第一行最小值 } 4.1算法总体思想 动态规划设计一般要经历以下几个步骤: 1、划分阶段:按照问题的时间或空间特征,把问题分为若干个阶段。 2、确定状态:将问题发展到各个阶段时所处的各种客观情况用不同的状态表示出来。 3、确定决策并写出状态转移方程:因为决策和状态转移有着天然的联系,状态转移就是根据上一阶段的状态和决策来导出本阶段的状态,所以如果确定了决策,状态转移方程也就可以写出。 4、寻找边界条件:给出的状态转移方程是一个递推式,需要一个递推的终止条件或边界条件。 5、程序设计实现:动态规划的主要难点在于理论上的设计,一旦设计完成,实现部分就会非常简单。 4.1算法总体思想 1、阶段:把问题分成几个相互联系的有顺序的几个环节,这些环节即称为阶段。 2、状态:某一阶段的出发位置称为状态。 3、决策:从某阶段的一个状态演变到下一个阶段某状态的选择。 4、状态转移方程:前一阶段的终点就是后一阶段的起点,前一阶段的决策选择导出了后一阶段的状态,这种关系描述了由k阶段到k+1阶段状态的演变规律,称为状态转移方程。 4.1算法总体思想 动态规划与一般有哪些信誉好的足球投注网站技术最大不同的地方就是记录了已求解过的问题的结果。 子问题的记录: 最重要、最为复杂 状态表示 用一个数、一组数或一个向量来实现状态表示 子问题结果的记录 动态规划算法求解问题的一般思路 【例题4-2】最短路径问题。图中每个顶点代表一个城市,两个城市间的连线代表道路,连线上的数值代表道路的长度。现在,想从城市A到达城市E,怎样走路程最短,最短路程的长度是多少? ? 动态规划算法求解问题的一般思路 【分析】 把从A到E的全过程分成四个阶段,用k表示阶段变量 第1阶段有一个初始状态A,两条可供选择的支路ABl、AB2; 第2阶段有两个初始状态B1、?B2,B1有三条可供选择的支路,B2有两条可供选择的支路……。 用dk(xk,xk+1)表示在第k阶段由初始状态xk到下阶段的初始状态xk+1的路径距离,Fk(xk)表示从第k阶段的xk到终点E的最短距离,利用倒推方法求解A到E的最短距离。 动态规划算法求解问题的一般思路 S1:K=4,有:F4(D1)=3,F4(D2)=4,F4(D3)=3 S2: K=3,有:F3(C1)=min{d3(C1,D1)+F4(D1),d3(C1,D2)+F4(D2)}=min{8,10}=8 F3(C2)=d3(C2,D1)+f4(D1)=5+3=8 F3(C3)=d3(C3,D3)+f4(D3)=8+3=11 F3(C4)=d3(C4,D3)+f4(D3)
文档评论(0)