- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析PPT-动态规划
动态规划 历史不会重演 6.1 引言 考虑Fibonacci序列F(n) 计算F(7) 计算F(7) The execution of F(7) 计算 F(7) 改进的想法 备忘录 当 F1(i)被计算后,保存它的值 当再次计算F1(i)时,只需要从内存中取出即可 F1(n) 1 if v[n] 0 then 2 v[n] ←F1(n-1)+F1(n-2) 3 return v[n] 再计算F(7) 再计算F(7) 再计算F(7) 再计算F(7) 再计算F(7) 再计算F(7) 再计算F(7) 再计算F(7) 再计算F(7) 再计算F(7) 再计算F(7) 再计算F(7) 再计算F(7) 我们能够做得更好吗? 注意到 使用备忘录虽然可以减少重复计算,但是仍然需要函数调用以及参数,这些会浪费许多时间 ... 事实上,计算F(i),我们只需要计算F(i-1) F(i-2) 改进的想法 以自底向上的方式,即由简单到复杂开始计算 依次计算F(2) (已知F(0)=F(1)=1), F(3), F(4)… 递归 vs 动态规划 方法的总结 写出一个递归公式,这个公式给出了问题与其子问题的解之间的关系 E.g. F(n) = F(n-1) + F(n-2). 用表(通常用数组)记录子问题的解,以便保存和以后的检索 以从最简单问题的解填起,以自底向上的方式填表 这就保证了,当我们求解一个子问题的时候,所有与子相关的子子问题,都可以从表中直接取用,而不必重新计算 6.2 动态规划 动态规划算法常用来求解最优化问题,设计一个动态规划算法通常有以下四个步骤 找出最优解的结构; 递归定义一个最优解的值; 以自底向上的方式(从最简单问题开始入手)计算出最优解的值; 根据计算最优解的值的信息,构造一个最优解。 6.2装配线调度问题 问题描述 有两条装配线,每一条装配线上有n个装配点,将装配线i上的第j个装配点记为Si[j] ,设在该装配点的装配时间为ai[j]。假设要装配一辆汽车,将汽车底盘从进厂点送入装配线i(1或2),需要时间ei。在装配点装配后,如果汽车传送到同一条装配线的装配点进行装配,则传送不需要时间。如果汽车从装配点传送到另一条装配线进行装配,则需要传送时间ti[j] 。汽车在装配点Si[j]装配后,将汽车成品从装配线上取下来,需要花费时间xi 。装配线调度问题是如何确定每一个装配点的装配需要在哪条线上进行,使得当汽车成品出来时,花费的总时间最少。值得注意的是两条装配线的第个装配点都装配同样的汽车部件,只是装配效率不一样。 一个办法 枚举法 在选择装配点时,枚举所有可能的选择 计算每条装配路线所需要的时间,然后选择最好的 缺点: 共有2n条装配路线 当 n很大时,实际上变得不可行 1. 最优解的结构 考虑从进厂到装配点 S1[j]可能的最快路线 如果j = 1:确定花多长时间到 S1[1] 如果 j ≥ 2, 到达S1[j]有两个选择: 过 S1[j-1], 然后到S1[j] 过S2[j-1], 然后到 S1[j] 定理6.1:假定最快装配路线过S1[j-1] 然后到S1[j],则该路线中从进厂到装配点 S1[j-1]的路线一定是最快的 如果最快装配路线过S1[j-2] ,则有同样的结论 Optimal Substructure 一般性:从进厂到装配点S1[j]的最短路线问题的最优解中一定包含了从进厂到装配点S1[j-1]or S2[j-1]的最短路线子问题的最优解. 这就是最优子结构性质,它是一个问题能够用动态规划求解的标志 我们可以利用这个性质由子问题的最优解构造出问题的最优解 2. A Recursive Solution (cont.) 令fi[j] =从进厂到装配点Si[j]的最快装配时间 令 f * 表示问题的最优解,则 当j = 1时 f1[1] = e1 + a1[1] f2[1] = e2 + a2[1] 2. 递归方法 计算 fi[j]( j = 2, 3, …,n, and i = 1, 2) 从进厂到装配点S1[j]的最短路线,只有两种情况: 要么经过S1[j-1]然后直接到S1[j],即 f1[j] = f1[j - 1] + a1[j] 要么经过S2[j-1]然后传送到装配线S1[j], 此时有 f1[j] = f2[j -1] + t2[j-1] + a1[j] 因此,可以选择最小的,即 f1[j] = min(f1[j - 1] + a1[j], f2[j -1] + t2[j-1] + a1[j]) 可以得到递归方程 例如, n=5: 如果按照递归的方式至顶向下求解,则计算量为指数级 3. 计算最优解 当 j
您可能关注的文档
最近下载
- 【2025秋】人教版二年级数学上册教学计划(及进度表).docx VIP
- 热能转换与利用中的节能技术.ppt VIP
- 2024版《亲子关系》PPT课件 .pdf VIP
- 汽车底盘系统检修(张振东)项目2 离合器检修.ppt VIP
- 职业技术学校《医疗器械销售与销售管理实务》课程标准.docx VIP
- 成人2型糖尿病口服降糖药联合治疗专家共识(2025版)解读PPT课件.pptx VIP
- 细胞生物学——细胞分化与基因表达.ppt VIP
- 电子商务客户服务(周艳红第二版) 教案全套 项目1-7.pdf VIP
- 部编人教版九年级语文上册教案(全册).pdf VIP
- 药物化学绪论-幻灯片.ppt VIP
文档评论(0)