《动态规划经典问题》.pdfVIP

  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文档。上传文档
查看更多
《动态规划经典问题》.pdf

动态规划经典问题 刘汝佳 目录 一、最长公共子序列O(mn) 二、最优排序二叉树O(n3) 三、最长上升子序列O(nlogn) 四、最优三角剖分O(n3) 五、最大m子段和O(mn) n n 六、0-1背包问题O(min{nc, 2 , n1.44 }) 七、最优排序二叉树O(n2) 八、最优合并问题O(nlogn) 一、最长公共子序列 • Longest Common Subsequence(LCS) 分析 • 考虑前缀x[1..i]和y[1..j], 定义 c[i,j] = |LCS(x[1..i], y[1..j])| • 则c[m,n] = |LCS(x, y)|. 递推公式为 • 很直观. 考虑x[i]=y[j] 的情形: 关键点一: 最优子结构 • 为了使用动态规划, 问题需具备最优子结构 (Optimal Substructure) 直接书写的程序 递归树分析 关键点二: 重叠子问题 • 为了让动态规划确实发挥功效, 问题应该包含尽 量多的重叠子问题(overlapping subproblems) 解决方法: 记忆化 • 注意memoization不是memorization 自底向上递推 空间优化 • 如果只需要最优值, 可以用滚动数组实现 • 按照i递增的顺序计算, d[i,j]只和d[i-1,j]和 d[i,j-1] 以及d[i-1,j-1]有关系,因此只需要保 留相邻两行, 空间复杂度为O(min{m,n}) • 更进一步的, 可以只保留一行, 每次用单独 的变量x保留d[i-1,j], 则递推方程为 If(i==j) d[j]=x; else { x = d[j]; d[j]=max{d[j-1], d[j]} }; 变形. 回文词 • 给一个字符串a, 保持原字符的顺序不变, 至 少要加几个字符才能变成回文词? • 例: abfcbfa afbcfcbfa 分析 • 红、绿色表示原字符, 白色为新增字符 • 显然, s和s’在任何一个位置不可能都是白色(不 需要加那个字符!) • 应该让红色字符尽量多! 相当于求s和逆序串s’ 的LCS, 让LCS中的对应字符(红色)对齐, 中间的 每个绿色字符都增加一个字符和它相等 二、最优排序二叉树 • 给n个关键码和它们的频率,构造让期望比 较次数最小的排序二叉树 分析 • 定理:最优排序二叉树的子树也是最优排 序二叉树 • 给出关键码-频率对照表(升序排列) • 问题:把哪个关键码做为根?则左右子树 可以递归往下做 A B C D E F G H I J K L M N O P .. 23 10 8 12 30 5 14 18 20 2 4 11 7 22 22 10 .. 分析 • 用递归来思考,但用递推来做 • 先考虑两个结点的情形 分析 • 可以用矩阵来保存结果 • C[j,k]表示从j 到k的关键码组成的最优排序二叉树 • Root[j,k]记录这棵排序二叉树的根

文档评论(0)

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

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

1亿VIP精品文档

相关文档