第3章节 动态规划.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章节 动态规划

第3章 动态规划 学习要点: 理解动态规划算法的概念 掌握动态规划算法的基本要素 (1)最优子结构性质 (2)重叠子问题性质 掌握设计动态规划算法的步骤 (1)找出最优解的性质,并刻划其结构特征。 (2)递归地定义最优值 (3)以自底向上的方式计算出最优值 (4)根据计算最优值时得到的信息,构造最优解。 通过应用范例学习动态规划算法设计策略 (1)矩阵连乘问题; (2)最长公共子序列; (3)最大子段和 (4)凸多边形最优三角剖分; (5)多边形游戏; (6)图像压缩; (7)电路布线; (8)流水作业调度; (9)背包问题; (10)最优二叉搜索树。 动态规划基本步骤 找出最优解的性质,并刻画其结构特征。 递归地定义最优值。 以自底向上的方式计算最优值。 根据计算最优值时得到的信息,构造最优解。 1-3基本步骤。 动态规划算法常用于求解具有某种最优性质的问题. 可能有许多可行解, 希望找到具有最优值的那个解. 若A是一个p*q矩阵,B是一个q*r矩阵,则其乘积C=AB是一个p*r矩阵。如果用标准算法计算C,总共需要pqr次数乘。 步骤四: 构造最优解 动态规划算法的第4步: 构造问题的一个最优解 算法MatrixChain仅给出矩阵连乘积所需的最少数乘次数, 但未给出具体按什么次序做矩阵乘法. 但注意到: MatrixChain已记录了构造一个最优解所需的全部信息: 由s[i,j]中的数k知, 计算矩阵链A[i,j]的最佳方式应在Ak和Ak+1之间断开. A[1:n]=(A[1:s[1,n]])(A[s[1,n]+1:n]) A[1:s[1,n]]=(A[1:s[1,s [1,n]]])(A[s[1,s[1,n]]+1,s[1,n]]) 造此递推, 最终可以确定A[1:n]的最优完全加括号方式, 即构造出问题的一个最优解. 动态规划算法的基本思想 将原问题分解为若干个子问题,先求子问题的解,然后从这些子问题的解得到原问题的解。 子问题的解往往不是相互独立的。在求解的过程中,许多子问题的解被反复地使用。为避免重复计算,动态规划算法采用填表保存子问题的解。 算法用表格保存已求解的子问题的解,无论它是否会被用到。以后遇到该子问题时即可查表取出其解,避免了重复计算。 动态规划算法的基本要素 最优子结构:问题的最优解是由其子问题的最优解所构成的。 重叠子问题:子问题之间并非相互独立的,而是彼此有重叠的。 动态规划算法的基本方法 动态规划算法通常可以按以下几个步骤进行: (1)找出最优解的性质,并刻画其结构特征; (2)递归地定义最优值; (3)以自底向上的方式计算出各子结构的最优值并添入表格中保存; (4)根据计算最优值时得到的信息,构造最优解。 步骤1~3是动态规划算法的基本步骤。 若需要最优解,则必须执行第4步,为此还需要在第3步中记录构造最优解所必需的信息。 子序列 字符串 cnblogs 子序列不一定是连续的 有多少个子序列? 公共子序列 解决字符串的相似度 cnblogs 与 belong 个数不是唯一的,但长度一定是唯一的 解决方案 枚举法 长度为N 的字符串 O(N*2N) 动态规划 3.4 最大子段和 (自学) 分析: 直观上,一个最优调度应使机器M1没有空闲时间,且机器M2的空闲时间最少。 在一般情况下,机器M2上会有机器空闲和作业积压两种情况。 设全部作业的集合为N={1,2,…,n}。S?N是N的作业子集。 通常,机器M1开始加工S中作业时,机器M2还在加工其它作业,要等时间t后才可利用。 将这种情况下完成S中作业所需的最短时间记为T(S, t)。 流水作业调度问题的最优值为T(N, 0)。 在所确定的最优调度的排列中去掉第一个执行作业后,剩下的作业排列仍然还是一个最优调度,即该问题具有最优子结构的性质。 在计算规模为n的作业集合的最优调度时,需多次使用该作业集合的子集合的最优调度,即该问题亦具有高度重复性。 背包问题的应用 一辆货车有固定的载重量C,有n种货物,每种货物i的重量和价格是(wi,vi),运输哪些货物有最大的收益; 一个计算机有内存C,有n个程序,分别耗费内存及其所交费用是(wi,vi),调度哪些程序使得费用最大; 0-1背包问题的形式描述 问题的形式描述是:给定c>0,wi>0,vi>0,1≤i≤n,求n元0-1向量(x1, x2, …, xn),使得 3.10.1 背包问题的最优子结构性质 设(y1, y2, …, yn)是所给0-1背包问题的一个最优解,则(y2, …, yn)是下面对应问题的最优解: 3.10.2 0-1背包问题的递归式 设所给0-1背包问题的子问题 3.10.3 0-1背包问题的递归算法 用二维数组m[i][j]存储

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档