第4章-动态规划课件.ppt
《第4章-动态规划课件.ppt》由会员分享,可在线阅读,更多相关《第4章-动态规划课件.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法设计与分析算法设计与分析授课教师:王秋芬授课教师:王秋芬办公地点:办公地点:7307Email:第四章 动态规划目录目录概述概述矩阵连乘问题矩阵连乘问题凸多边形最优三角剖分凸多边形最优三角剖分最长公共子序列问题最长公共子序列问题加工顺序问题加工顺序问题0-1背包问题背包问题最优二叉查找树最优二叉查找树教学目标理解动态规划的思想理解动态规划的思想掌握动态规划、分治法及贪心法的异同掌握动态规划、分治法及贪心法的异同掌握动态规划的基本要素掌握动态规划的基本要素掌握动态规划的设计步骤掌握动态规划的设计步骤通过实例学习,掌握动态规划设计的策略通过实例学习,掌握动态规划设计的策略学习动态规划的意义学习
2、动态规划的意义动态规划问世以来,在经济管理、生产调度、工程技动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用,例如最短路术和最优控制等方面得到了广泛的应用,例如最短路线、库存管理、资源分配、设备更新、排序、装载等线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。问题,用动态规划方法比用其它方法求解更为方便。虽然动态规划主要用于求解以时间划分阶段的动态过虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地
3、引进时间因素,线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方把它视为多阶段决策过程,也可以用动态规划方法方便地求解,因此研究该算法具有很强的实际意义。便地求解,因此研究该算法具有很强的实际意义。动态规划算法通常用于求解具有某种最优性质的问题,动态规划算法通常用于求解具有某种最优性质的问题,动态规划的解题步骤动态规划的解题步骤(1)分析最优解的性质,刻画最优解的结构特)分析最优解的性质,刻画最优解的结构特征征考察是否适合采用动态规划法。考察是否适合采用动态规划法。(2)递归定义最优值(即建立递归式或动态规)递归定义最优值(即建立递归式或动态规划方程
4、)。划方程)。(3)以自底向上的方式计算出最优值,并记录)以自底向上的方式计算出最优值,并记录相关信息。相关信息。(4)根据计算最优值时得到的信息,构造出最)根据计算最优值时得到的信息,构造出最优解。优解。动态规划的基本要素最优子结构性质最优子结构性质子问题重叠性质子问题重叠性质递归算法求解问题时,每次产生的子问题并不总是新问递归算法求解问题时,每次产生的子问题并不总是新问题,有些子问题出现多次,这种性质称为子问题的重叠题,有些子问题出现多次,这种性质称为子问题的重叠性质。性质。在应用动态规划时,对于重复出现的子问题,只需在第在应用动态规划时,对于重复出现的子问题,只需在第一次遇到时就加以解决
5、,并把已解决的各个子问题的解一次遇到时就加以解决,并把已解决的各个子问题的解储存在表中,便于以后遇到时直接引用,从而不必重新储存在表中,便于以后遇到时直接引用,从而不必重新求解,可大大提高解题的效率。求解,可大大提高解题的效率。自底向上的求解方式自底向上的求解方式矩阵连乘矩阵连乘问题描述问题描述给定给定n个矩阵个矩阵A1,A2,A3,An,其中,其中Ai与与Ai+1(i=1,2,3,n-1)是可乘的。用加括号的是可乘的。用加括号的方法表示矩阵连乘的次序,不同加括号的方法方法表示矩阵连乘的次序,不同加括号的方法所对应的计算次序是不同的。所对应的计算次序是不同的。以【例以【例4-2】为例讲述】为例
6、讲述最优子结构性质分析最优子结构性质分析算法设计算法设计步骤步骤1:确定合适的数据结构。采用数组:确定合适的数据结构。采用数组m来存放各个子问题的最优值,数组来存放各个子问题的最优值,数组s来存放各个子问题的最优决策来存放各个子问题的最优决策;步骤步骤2:初始化。令:初始化。令mii=0,sii0,其中,其中i=1,2,n;步骤步骤3:循环阶段。:循环阶段。步骤步骤3-1:按照递归关系式计算:按照递归关系式计算2个矩阵个矩阵AiAi+1相乘时的最优值并将其存入相乘时的最优值并将其存入mii+1,同时将最优决策记入,同时将最优决策记入sii+1,i=1,2,n-1;步骤步骤3-2:按照递归关系式
7、计算:按照递归关系式计算3个矩阵个矩阵AiAi+1Ai+2相乘时的最优值并将其存入相乘时的最优值并将其存入mii+2,同时将最优决策记入,同时将最优决策记入sii+2,i=1,2,n-2;依此类推,直到依此类推,直到 步骤步骤3-(n-1):按照递归关系式计算:按照递归关系式计算n个矩阵个矩阵A1A2An相乘时的最优值并将其相乘时的最优值并将其存入存入m1n,同时将最优决策记入,同时将最优决策记入s1n。至此,至此,m1n即为原问题的最优值。即为原问题的最优值。步骤步骤4:根据数组:根据数组s记录的最优决策信息来构造最优解。记录的最优决策信息来构造最优解。步骤步骤4-1:递归构造:递归构造A1
8、As1n的最优解,直到包含一个矩阵结束;的最优解,直到包含一个矩阵结束;步骤步骤4-2:递归构造:递归构造As1n+1An的最优解,直到包含一个矩阵结束;的最优解,直到包含一个矩阵结束;步骤步骤4-3:将步骤:将步骤4-1和步骤和步骤4-2递归的结果加括号。递归的结果加括号。构造实例求矩阵求矩阵A1(32)、)、A2(25)、)、A3(510)、)、A4(102)和)和A5(23)连乘的最佳计算次序。)连乘的最佳计算次序。表4-6 实例最优值mij 表4-7 实例最优决策sijmijA1A2A3A4A5sijA1A2A3A4A5A1030160132150A101111A20100120132
9、A20224A30100130A3034A4060A404A50A50算法分析语句语句int t=mik+mk+1j+pi-1*pk*pj;为算法为算法MatrixChain的基本语句,最坏情况下该语句的执行次数为的基本语句,最坏情况下该语句的执行次数为O(n3),故该算法的最坏时间复杂性为,故该算法的最坏时间复杂性为O(n3)。构造最优解的构造最优解的Traceback算法的时间主要取决于递归。最坏算法的时间主要取决于递归。最坏情况下时间复杂性的递归式为:情况下时间复杂性的递归式为:解此递归式得解此递归式得T(n)=O(n)。三角剖分的结构将图将图4-6中的叶子结点中的叶子结点vivi+1与
10、矩阵与矩阵Ai+1(i=0,1,2,3,4)对应,则图对应,则图4-6和图和图4-4所示的二叉树是一样的。因此,所示的二叉树是一样的。因此,n+1边形的三角剖分边形的三角剖分与与n个矩阵连乘的计算次序是一一对应的。可见,个矩阵连乘的计算次序是一一对应的。可见,凸多边形最优剖凸多边形最优剖分问题的解决方法和矩阵连乘问题相似。分问题的解决方法和矩阵连乘问题相似。最优子结构性质分析设设v0vkvn是将是将n+1边形边形P=v0,v1,vn分成三部分分成三部分v0,v1,vk、vk,vk+1,vn和和v0,vk,vn的最佳剖分方法,那么凸多边形的最佳剖分方法,那么凸多边形v0,v1,vk的剖分一定是最
11、优的,的剖分一定是最优的,vk,vk+1,vn的剖分也一定是的剖分也一定是最优的。最优的。设设v0,v1,vn三角剖分的权函数之和为三角剖分的权函数之和为c,v0,v1,vk三角剖分三角剖分的权函数之和为的权函数之和为a,vk,vk+1,vn三角剖分的权函数之和为三角剖分的权函数之和为b,三角,三角形形v0vkvn的权函数为的权函数为w(v0vkvn),则,则c=a+b+w(v0vkvn)。如果如果c是最小的,则一定包含是最小的,则一定包含a和和b都是最小的。如果都是最小的。如果a不是最小的,则不是最小的,则它所对应的它所对应的v0,v1,vk的三角剖分就不是最优的。那么,对于凸多的三角剖分就
12、不是最优的。那么,对于凸多边形边形v0,v1,vk来说,肯定存在最优的三角剖分,设来说,肯定存在最优的三角剖分,设v0,v1,vk的最优三角剖分对应的权函数之和为的最优三角剖分对应的权函数之和为a(aa),用,用a代替代替a得到得到c=a+b+w(v0vkvn),则,则cc,这说明,这说明c对应的对应的v0,v1,vn的三角剖分不的三角剖分不是是最优最优的,产生矛盾。故的,产生矛盾。故a一定是最小的。同理,一定是最小的。同理,b也是最小的。最优子结构也是最小的。最优子结构性质得证。性质得证。最长公共子序列问题基本概念基本概念(1)子序列)子序列给定序列给定序列 X=x1,x2,xn、Z=z1,
13、z2,zk,若,若Z是是X的子序列,当且仅当存在一个严格递增的子序列,当且仅当存在一个严格递增的下标序列的下标序列 i1,i2,ik,对,对j1,2,k有有zj=x。(2)公共子序列)公共子序列给定序列给定序列X和和Y,序列,序列Z是是X的子序列,也是的子序列,也是Y的子序的子序列,则称列,则称Z是是X和和Y的公共子序列。的公共子序列。(3)最长公共子序列)最长公共子序列包含元素最多的公共子序列即为最长公共子序列。包含元素最多的公共子序列即为最长公共子序列。建立最优值的递归关系式设设cij表表示示序序列列Xi和和Yj的的最最长长公公共共子子序序列的长度。则:列的长度。则:算法设计步骤步骤1:确
14、定合适的数据结构。采用数组:确定合适的数据结构。采用数组c来存放各个子问题的最优值,数组来存放各个子问题的最优值,数组b来存放各个子问题最优值的来源。数组来存放各个子问题最优值的来源。数组x1:m和和y1:n分别存放分别存放X序列和序列和Y序列;序列;步骤步骤2:初始化。令:初始化。令ci00,c0j=0,其中,其中0im,0jn;步骤步骤3:循环阶段。根据递归关系式,确定序列:循环阶段。根据递归关系式,确定序列Xi和和Y的最长公共子序列长度;的最长公共子序列长度;步骤步骤3-1:i=1时,求出时,求出c1j,同时记录,同时记录b1j,1jn;步骤步骤3-2:i=2时,求出时,求出c2j,同时
15、记录,同时记录b2j,1jn;依此类推,直到依此类推,直到步骤步骤3-m:i=m时,求出时,求出cmj,同时记录,同时记录bmj,1jn。此时,。此时,cmn便是序列便是序列X和和Y的最长公共子序列长度;的最长公共子序列长度;步骤步骤4:根据二维数组:根据二维数组b记录的相关信息以自底向上的方式来构造最优解;记录的相关信息以自底向上的方式来构造最优解;步骤步骤4-1:初始时,:初始时,i=m,j=n;步骤步骤4-2:如果:如果bij=1,则输出,则输出xi,同时递推到,同时递推到bi-1j-1;如果如果bij=2,则递推到则递推到bij-1;如果如果bij=3,则递推到,则递推到bi-1j;重
16、复执行步骤重复执行步骤4-2,直到,直到i=0或或j=0,此时就可得到序列,此时就可得到序列X和和Y的最长公共子序的最长公共子序列。列。实例构造【例【例4-6】给定序列】给定序列X=A,B,C,B,D,A,B和和Y=B,D,C,A,B,A,求,求它们的最长公共子序列。它们的最长公共子序列。(1)m=7,n=6,将停止条件填入数组,将停止条件填入数组c中,即中,即ci00,c0j=0,其中,其中0im,0jn。(2)当)当i=1时,时,X1=A,最后一个字符为,最后一个字符为A;Yj的的规模从规模从1逐步放大到逐步放大到6,其最后一个字符分别为,其最后一个字符分别为B、D、C、A、B、A;依此类
17、推,直到依此类推,直到i=7。从从i=7,j=6处向前递推处向前递推,找到,找到X和和Y的最长公共子序列为的最长公共子序列为B,C,B,A 最优子结构性质分析将将n个工件的集合看作个工件的集合看作N=1,2,n,设,设P是给定是给定n个工件的个工件的一个最优加工顺序方案,一个最优加工顺序方案,P(i)是该调度方案的第是该调度方案的第i个要调度个要调度的工件的工件(i=1,2,n)。从集合从集合S中的第一个工件开始在机器中的第一个工件开始在机器M1上加工到最后一个上加工到最后一个工件在机器工件在机器M2上加工结束时所耗的时间为上加工结束时所耗的时间为T(S,t)。设集合。设集合S的最优加工顺序中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 规划 课件
限制150内