动态归划教程.docx

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录 1、 引言 2、 动态规划的基本原理 2.1多阶段决策过程最优化问题 2.2动态规划的基本概念 2.3使用动态规划解题的必要条件 2.4动态规划的一般步骤 3、 动态规划解题的实际应用 3.1数字三角形 3.2导弹序列 3.3最长公共子序列 3.4排队买票 3.5背包问题系列 3.6乘积最大 3.7石子归并 官方教程 我的讲稿 1、引言 动态规划算法十分重要,其实质是分支思想和解决冗余,因此它与分支法和贪心法类似,他们 都是将问题的实例分解为更小、相似的子问题,但是动态规划又有自己的特点。 贪心法的当前选择可能要以来于已经做出的选择,但不依赖还未做出的选择和子问题,因此他 的特征是由顶向下,一步一步地做出贪心选择,但不足的是,如果当前选择可能要依赖子问题的解 时,则难以通过局部的贪心策略达到全局最优解。相比而言,动态规划则可以处理不具有贪心实质 的问题。 在用分支法解决问题时,由于子问题的数目往往是问题规模的指数函数,因此对时间的消耗太 大。动态规划的思想在于,如果各个子问题不是独立的,不同的子问题的个数只是多项式数量级, 如果我们能够保存已经解决的子问题的答案,而在需要的时候再找出已求得的答案,这样就可以避 免大量的重复计算。由此而来的基本思路是: 用一个表记录所有已解决的自问题的答案,不管该问 题以后是否被用到,只要它被计算过,就将结果填入表中。所以动态规划思想实质是记忆化搜索的 思想。 动态规划的思想是对于贪心法和分支法的一种折衷, 它解决的问题往往不具有贪心算法的实质, 但是各个子问题又不是完全零散的, 这时候我们用一定的空间来换取时间, 就可以提高解题的效率。 动态规划是对最优化问题的一种新的算法设计方法。由于各种问题的性质不同,确定最优解的 条件也互不相同,因而动态规划的设计方法对不同的问题有不同特色的表示方法。 2、动态规划的基本原理 2.1多阶段决策过程最优化问题 在现实生活中,有一类活动的过程,由于他的特殊性,可将过程分成若干个互相联系的阶段, 在它的每一阶段都需要做出决策,从而使整个过程达到最佳的活动效果。因此各个阶段决策的选取 不是任何确定的,它以来于当前面临的状态,又影响以后的发展,当各个阶段决策确定后,就组成 一个决策序列,因而也就确定了整个过程的一条活动路线。这种把问题看作是一个前后关联且具有 链装结构的多阶段过程,被称为多阶段决策问题,这种问题就称为多阶段决策问题。如图所示 决策n阶段n 决策n 阶段n *状态2 例 最短路径问题:如图所示的是一个带权有向的多段图,要求从 简称最短距离)。A到D的最短路径的长度(下面4291055AE542D21812D 例 最短路径问题:如图所示的是一个带权有向的多段图,要求从 简称最短距离)。 A到D的最短路径的长度(下面 4 2 9 10 5 5 A E 5 4 2 D2 1 8 1 2 Di B2 10 C2 6 B3 — 11 C1 3 C3 10 B1 12 图6.1 如果用穷举法,则从 A到E 一共有3X 3X 2=18条不同的路径,逐个计算每条路径的长度,总 共需要进行4X 18=72次加法计算;对18条路径的长度做两两比较,找出其中最短的一条,总共要 进行18-仁17次比较。如果从 A到C的站点有k个,则总共有3k-1 X 2条路径, 用穷举法求最短 路径总共要进行(k+1)3k-1 X 2次加法,3k-1 X 2-1次比较。当k的值增加时,需要进行的加法和比较的 次数将迅速增加。例如当 k=10时,加法次数为433026次,比较39365次。 以上这求从A到E的最短路径问题,可以转化为三个性质完全相同,但规模较小的子问题,即 分别从B1、B2、B3到E的最短路径问题。 记从Bi (i=1,2, 3)到E的最短路径为S(Bi),则从A到E的最短距离S(A)可以表示为: AB^S(B1f 2+S(B1)^ S(A) =min」AB2 +S(B2), = min]5+S(B2)\ [AB3+S(B3), U+s(B3)j 同样,计算S(B1)又可以归结为性质完全相同,但规模更小的问题,即分别求 C1 , C2 , C3到E 的最短路径问题 S(Ci) (i=1,2, 3),而求S(Ci)又可以归结为求 S(D1)和S(D2)这两个子问题。从图1.1.1 可以看出,在这个问题中, S(D1)和S(D2)是以知的,它们分别是: S(D1)=5 , S(D2)=2 因而,可以从这两个值开始,逆向递归计算 S(A)的值。计算过程如下: S(C1) = min *Cdc1dSI—minSD;3+S(D1 S(C1) = min * Cd c1d SI—min SD ;3+S(D1)Lmin 〔9+S(D2)J ‘3 + 5 丿 =8, 3+2: S(C

文档评论(0)

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

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

1亿VIP精品文档

相关文档