第五章-动态规划详解课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第五章-动态规划详解课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 动态 规划 详解 课件
- 资源描述:
-
1、动态规划动态规划(Dynamic Programming),在),在20 世纪世纪50年代由美国数学家年代由美国数学家Richard Bellman(理查德(理查德.贝尔曼)发明,作为贝尔曼)发明,作为的一种通用方法,对最优化问题提出的一种通用方法,对最优化问题提出,从而创建最优化问题,从而创建最优化问题的一种新算法设计技术的一种新算法设计技术动态规划,它是一种重要的应用数学工具。动态规划,它是一种重要的应用数学工具。至少在计算机科学圈子里,人们不仅用它解决特定类型的最优化问题,至少在计算机科学圈子里,人们不仅用它解决特定类型的最优化问题,而最终把它作为一种而最终把它作为一种通用的通用的算法设
2、计技术,即包括某些非最优化问题。算法设计技术,即包括某些非最优化问题。多阶段决策过程最优化多阶段决策过程最优化:现实世界里有许多问题属于这种情况:它有很多解,应用要求最优解。现实世界里有许多问题属于这种情况:它有很多解,应用要求最优解。穷举法通过找出全部解,再从中选出最优解。这种方法对于那些计算穷举法通过找出全部解,再从中选出最优解。这种方法对于那些计算复杂度很高、计算量很大的问题(如求最佳子集的组合问题),要找出复杂度很高、计算量很大的问题(如求最佳子集的组合问题),要找出一切可能解,所耗费的计算时间可能是不可以接受的。因此,人们为了一切可能解,所耗费的计算时间可能是不可以接受的。因此,人们
3、为了降低求解问题的难度,把求解过程分为降低求解问题的难度,把求解过程分为一系列阶段一系列阶段,各个阶段依次按照,各个阶段依次按照最优性原则计算,最后阶段计算得到最优性原则计算,最后阶段计算得到最优解最优解。包括。包括 分段分段、求解求解 两大步。两大步。求解算法求解算法求解算法求解算法求解算法求解算法:求解算法施加的状态是变化的。:求解算法施加的状态是变化的。当前状态只与其直接前趋状态有关,对其直接当前状态只与其直接前趋状态有关,对其直接前趋状态施加求解算法,成为当前状态。前趋状态施加求解算法,成为当前状态。(Principle of Optimality):对特定问题该原则对特定问题该原则不
4、一定满足(罕见),有必要检查其适用性。不一定满足(罕见),有必要检查其适用性。子实例组成父实例,父实例分解为子实例。子实例组成父实例,父实例分解为子实例。对于某些多阶段决策问题,问题本身没有最优化要求,比如后面要讲到的对于某些多阶段决策问题,问题本身没有最优化要求,比如后面要讲到的求中国象棋马从棋盘上一点移动到另一点的全部路径问题,又如计算裴波求中国象棋马从棋盘上一点移动到另一点的全部路径问题,又如计算裴波那契序列的动态规划算法,它们属于非最优化问题的动态规划法。那契序列的动态规划算法,它们属于非最优化问题的动态规划法。:1.分阶段(级)决策。对最优化问题,用最优性原则设计。分阶段(级)决策。
5、对最优化问题,用最优性原则设计。2.一般采用一般采用(规模减小),(规模减小),(规模增加)。(规模增加)。计算过程是一级一级(一阶段一阶段)地向前推进,直到最终状态。计算过程是一级一级(一阶段一阶段)地向前推进,直到最终状态。问题问题:设有一三角形数塔如图。求一条自塔顶到塔底的路径,该路径上设有一三角形数塔如图。求一条自塔顶到塔底的路径,该路径上 节点值之和最大节点值之和最大。分段分段:每一级台阶自然划分为一个阶段,成为多阶段决策的优化问题。:每一级台阶自然划分为一个阶段,成为多阶段决策的优化问题。无法分段的问题,不能用动态规划法求解。无法分段的问题,不能用动态规划法求解。求解求解:动态规划
6、法求解。自底向上计算,各实例计算满足最优性原则,:动态规划法求解。自底向上计算,各实例计算满足最优性原则,如实例如实例18的子实例为的子实例为12和和7,max(12+6,7+6)=18。5 级级4 级级3 级级2 级级1级级18 27 39 3267 46 6578 73911311874014261582467131211w 输入规模输入规模:为便于分析,选择数塔层数:为便于分析,选择数塔层数k(k0);w 基本操作基本操作:节点值求和运算;:节点值求和运算;增长函数增长函数:加法次数与:加法次数与 k 的关系;的关系;w 效率类别效率类别:没有最佳、最差情况;(都要从塔顶计算到塔底):没
7、有最佳、最差情况;(都要从塔顶计算到塔底)w 增长率(次数)增长率(次数):各层节点数升序:各层节点数升序:1,2,3,4,6,7,8,9,10,.节点总数节点总数 n 升序:升序:1,3,6,10,21,28,36,45,55,.层数层数k(顶为(顶为1):):1,2,3,4,6,7,8,9,10,.路径总数路径总数 t 升序:升序:2,4,8,32,.,t=,k11.穷举法穷举法:T(k)=(k-1)2k-1,k1 ()本例本例k=5,每条路径上,每条路径上5个节点做个节点做4次加法,共次加法,共64次加法。次加法。2.动态规划法动态规划法:(:(层节点数层节点数=层数层数)自底向上计算,
8、自底向上计算,k层加法总数为层加法总数为k-1层节点数层节点数2,有效率计算式:,有效率计算式:T(k)=2(k-1+.+3+2+1)=k(k-1),k1 ()本例加法总数本例加法总数 2(4+3+2+1)=20次,比次,比64次少很多。次少很多。问题问题:在:在mn棋盘上,求马从棋盘上,求马从P点跳到点跳到Q点的所有路径。点的所有路径。PQPQPQPQPQPQ可用回溯法和递归法求解,可用回溯法和递归法求解,但递归法效率但递归法效率很低,栈空间占用很大。很低,栈空间占用很大。问题:问题:n(n1)堆沙子,重量向量堆沙子,重量向量 W=(w1,.wn)。要将它们归并为。要将它们归并为1堆,堆,归
9、并规则:每次只能将相邻归并规则:每次只能将相邻2堆归并为堆归并为1堆,经过堆,经过 n-1 次归并后,次归并后,最终归并为一堆。总代价为归并过程中最终归并为一堆。总代价为归并过程中沙堆质量之和,沙堆质量之和,这个代价最小的归并树称为最小代价子母树。这个代价最小的归并树称为最小代价子母树。分析分析:属于最优化问题,目标为总代价最小。:属于最优化问题,目标为总代价最小。分段分段:显然需要:显然需要 n-1 次归并才能将次归并才能将 n 堆归并为堆归并为 1 堆。自然地可以将每次堆。自然地可以将每次 归并划分为一个阶段,成为多阶段决策问题,尝试动态规划法。归并划分为一个阶段,成为多阶段决策问题,尝试
10、动态规划法。求解求解:(此处采用:(此处采用自底向上自底向上的分析,找规律较简洁)的分析,找规律较简洁)当当 n=2 时:仅一种归并法即时:仅一种归并法即2合合1。当当 n=3 时:有时:有2种归并方法,第一种归并方法如图,种归并方法,第一种归并方法如图,后后2堆。堆。1378f(i,j)从第从第 i 堆到第堆到第 j 堆的代价和。堆的代价和。g(i,j)从第从第 i 堆到第堆到第 j 堆的重量和。堆的重量和。f(1,3)=15+28=(最优结果)(最优结果)=f(,)+g(,3)3级级2级级1级级13781621418n=3时:第二种归并方法,时:第二种归并方法,后后1堆。堆。n=4时:有时
11、:有3大类归并法。大类归并法。后后3堆、堆、后后2堆、堆、后后1堆。堆。因因3堆有堆有2种归并法,所以一共种归并法,所以一共5小类归并法。小类归并法。第第1种情况:种情况:781613f(1,4)=15+31+44=+g(1,4)w不变不变 =f(,)+g(2,)+g(,4)若若f(2,4)越小,则越小,则f(1,4)就越小。就越小。1378f(i,j)从第从第 i 堆到第堆到第 j 堆的代价和。堆的代价和。g(i,j)从第从第 i 堆到第堆到第 j 堆的重量和。堆的重量和。f(1,3)=20+28=f(,)+g(1,)3级级2级级1级级4级级3级级2级级1级级n=4 时:前时:前1堆的第堆的
12、第2种情况。种情况。781613f(1,4)=24+31+44=+g(1,4)w不变不变 =f(,)+g(,4)+g(,4)若若f(2,4)越小,则越小,则f(1,4)就越小。就越小。n=4 时:前时:前2堆情况。堆情况。781613f(1,4)=20+24+44=+g(1,4)若若f(1,2)+f(3,4)越小,越小,f(1,4)就越小就越小4级级3级级2级级1级级3级级2级级1级级n=4 时:前时:前3堆的第堆的第1种情况。种情况。781613n=4 时:前时:前3堆的第堆的第2种情况。种情况。f(1,4)=20+28+44=+g(1,4)w不变不变 =f(,)+g(1,)+g(1,)若若
13、f(1,3)越小,则越小,则f(1,4)就越小。就越小。781613f(1,4)=15+28+44=+g(1,4)w不变不变 =f(,)+g(,3)+g(1,)若若f(1,3)越小,则越小,则f(1,4)就越小。就越小。4级级3级级2级级1级级4级级3级级2级级1级级将将 n=4 归纳为归纳为 3 大类情况:大类情况:f(1,4)=前前1堆堆 前前2堆堆 前前3堆堆将将n=4 计算式推广,对于任意的计算式推广,对于任意的 n(n1),归纳出如下公式:,归纳出如下公式:f(1,n)=前前1堆堆 前前2堆堆 前前3堆堆 .前前n-1堆堆上式称为动态方程,即用方程给出的动态规划算法。很多动态规划算法
14、上式称为动态方程,即用方程给出的动态规划算法。很多动态规划算法不能用方程形式给出,只能是描述性的。不能用方程形式给出,只能是描述性的。F(1,n)在在(13,7,8,16,21,4,18)上的结果上的结果jikkwjikkw实例实例:计算裴波那契数的递归版本。:计算裴波那契数的递归版本。递推式:递推式:n 1,F(0)=0,F(1)=1例如,例如,F(5)计算过程用计算过程用 表示:表示:F(5)F(4)F(3)F(2)F(3)F(1)F(2)F(1)F(0)F(0)F(1)F(2)F(1)F(0)F(1)树中可以看出,计算树中可以看出,计算F(5)时要重复计算时要重复计算F(2)、F(3)显
15、然降低时间效率。此即交叠子问题,显然降低时间效率。此即交叠子问题,F(5)分为分为两个子问题两个子问题 F(4)和和 F(3),F(4)包含了包含了F(3)。动态规划法:自底向上计算动态规划法:自底向上计算依次计算依次计算F(0),F(1),F(2),.,F(n),各次计算结果存入数组,各次计算结果存入数组,最后一个元素就是最后一个元素就是F(n)。用一个。用一个单循环即可简单实现。单循环即可简单实现。(区别于完全最短路径问题)(区别于完全最短路径问题)概念概念:给定一个连通图(有向或者无向),求给定起始顶点到结束顶点:给定一个连通图(有向或者无向),求给定起始顶点到结束顶点 的最短路径,此即
16、单起点(单源)最短路径问题。的最短路径,此即单起点(单源)最短路径问题。完全最短路径完全最短路径 问题问题要求找到从要求找到从每个顶点每个顶点到其他到其他所有顶点所有顶点之间的最短路径。之间的最短路径。分段分段:图示求解过程:红色数字为实例求解结果(最优性原则)图示求解过程:红色数字为实例求解结果(最优性原则)4本例:带权有向图本例:带权有向图23109 67103848965484源点源点收点收点前面我们已经讲过前面我们已经讲过BST的相关算法及特性,本节介绍什么是最优的相关算法及特性,本节介绍什么是最优 BST,以及用动态规划算法来构造以及用动态规划算法来构造 BST。:基于统计先验知识,
展开阅读全文