C语言 动态规划.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 动态规划;10.1 什么是动态规划;7; 如图从A到E共分为4个阶段,即第一阶段从A到B,第二阶段从B到C,第三阶段从C到D,第四阶段从D到E。 除起点A和终点E外,其它各点既是上一阶段的终点又是下一阶段的起点。; 很明显,当某阶段的起点给定时,它直接影响着后面各阶段的行进路线和整个路线的长短。 故此问题的要求是:在各个阶段选取一个恰当的决策,使由这些决策组成的一个决策序列所决定的一条路线,其总路程最短。如何解决这个问题呢? ;决策过程: (1)由目标状态E向前推,可以分成四个阶段,即四个子问题。 D?E C?E B?E A?E (2)策略:每个阶段到E的最省费用为本阶段的决策路径。 ;(3)D1,D2是第一次输入的结点。他们到E都只有一种费用: f(D1)=5 f(D2)=2 ;(4)C1,C2,C3是第二次输入结点,他们到D1,D2各有两种费用。此时应计算C1,C2,C3分别到E的最少费用。 f(C1) =min{C1D1+ f(D1) ,C1D2+ f(D2)}。 计算结果是f(C1)= C1D1+ f(D1)=8 (D1) 同理C2的决策路径计算结果是C2+D2+ E , f(C2)=7 。 同理C3的决策路径计算结果是C3+D2+E,f(C3)=10。;(5)第三次输入结点为B1,B2,而决策输出结点可能为C1,C2,C3。仿前计算可得Bl,B2的决策路径为如下情况。 Bl: B1C1 费用 f(B1)=5+8=13, B2:B2C1 费用 f(B2)= 6+8=14,;(6)第四次输入结点为A,决策输出结点可能为B1,B2。 同理可得决策路径为A:AB2,费用5+14=19 此时才正式确定每个子问题的结点中,那一个结点将在最优费用的路径上。 子问题的决策中,只对同一城市(结点)比较优劣。而同一阶段的城市(结点)的优劣要由下一个阶段去决定。;2、数塔问题 ;用暴力的方法,可以吗?; 这道题如果用枚举法(暴力思想),在数塔层数稍大的情况下(如31),则需要列举出的路径条数将是一个非常庞大的数目(2^30= 1024^3 10^9=10亿)。; 拒绝暴力,倡导和谐~; 从顶点出发时到底向左走还是向右走应取决于是从左走能取到最大值还是从右走能取到最大值,只要左右两道路径上的最大值求出来了才能作出决策。 可见,由下层的子问题可以得到上层的子问题,所以,可从底层开始???层层递进,最后得到最大值。 结论:自顶向下的分析,自底向上的计算。; 如果各个子问题不是独立的,不同的子问题的个数只是多项式量级,如果我们能够保存已经解决的子问题的答案,而在需要的时候再找出已求得的答案,这样就可以避免大量的重复计算。由此而来的基本思路是,用一个表记录所有已解决的子问题的答案,不管该问题以后是否被用到,只要它被计算过,就将其结果填入表中。 ;动态规划的基本步骤 ;(1)找出最优解的性质,并刻画其结构特征。 (2)递归地定义最优值。 (3)以自底向上的方式计算出最优值。 (4)根据计算最优值时得到的信息,构造一个最优解。 其中(1)-(3)步是动态规划算法的基本步骤。在只需要求出最优值的情形,步骤(4)可以省去。若需要求出问题的一个最优解,则必须执行步骤(4)。此时,在步骤(3)中计算最优值时,通常需记录更多的信息,以便在步骤(4)中,根据所记录的信息,快速构造出一个最优解。;动态规划问题的特征;10.3 最长有序子序列;子问题的构造;;实例:;10.4 最长公共子序列;例如,若X={A,B,C,B,D,B,A},Y={B,D,C,A,B,A},则 序列{B,C,A}是X和Y的一个公共子序列,但它不是X和Y的一个最长公共子序列。 序列{B,C,B,A}也是X和Y的一个公共子序列,它的长度为4,而且它是X和Y的一个最长公共子序列,因为X和Y没有长度大于4的公共子序列。 ;给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。 问题:给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最长公共子序列。 ;典型应用;人类基因组计划的研究成果;生物学家对鉴别人类基因和确定他们的功能很感兴趣。因为这对诊断人类疾病和开发新药很有用。 一旦一段基因被确定后,接下来的工作便是确定它的功能,这个工作一般是通过搜索基因数据库来进行的。数据库中存储了很多基因序列及其相应的功能,将返回与新基因序列功能相似的已知序列。 生物学家们假设类似的基因表示类似的功能。确定与待研究基因最相近的一个已知基因对生物试验非常

文档评论(0)

清风老月 + 关注
官方认证
内容提供者

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

认证主体阳春市惠兴图文设计有限公司
IP属地广东
统一社会信用代码/组织机构代码
91441781MA53BEWA2D

1亿VIP精品文档

相关文档