动态规划 (2)优秀PPT.ppt
《动态规划 (2)优秀PPT.ppt》由会员分享,可在线阅读,更多相关《动态规划 (2)优秀PPT.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、动态规划(2)1第1页,本讲稿共48页动态规划动态规划学习要点学习要点:理解动态规划算法的概念。理解动态规划算法的概念。掌握动态规划算法的基本要素掌握动态规划算法的基本要素最优子结构性质最优子结构性质重叠子问题性质重叠子问题性质掌握设计动态规划算法的步骤。掌握设计动态规划算法的步骤。找出最优解的性质,并刻划其结构特征。找出最优解的性质,并刻划其结构特征。递归地定义最优值。递归地定义最优值。以自底向上的方式计算出最优值。以自底向上的方式计算出最优值。根据计算最优值时得到的信息,构造最优解。根据计算最优值时得到的信息,构造最优解。2第2页,本讲稿共48页n动态规划算法与分治法类似,其基本思想也是将
2、待动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题求解问题分解成若干个子问题算法总体思想算法总体思想nT(n/2)T(n/2)T(n/2)T(n/2)T(n/2)T(n/2)T(n/2)T(n/2)T(n)=3第3页,本讲稿共48页n但是经分解得到的子问题往往不是互相独立的。不同子问题但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。题被重复计算了许多次。算法总体思想算法总体思想nT(n)=n/2T(n/4)T(n/4)T(n/4)T(n/4)T
3、(n/4)T(n/4)T(n/4)T(n/4)n/2T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)n/2T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)n/2T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)4第4页,本讲稿共48页n如果能够保存已解决的子问题的答案,而在需要时再找出如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。式时间算法
4、。算法总体思想算法总体思想n=n/2T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)n/2n/2T(n/4)T(n/4)T(n/4)T(n/4)n/2T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n)5第5页,本讲稿共48页动态规划基本步骤动态规划基本步骤n找出最优解的性质,并刻划其结构特征。找出最优解的性质,并刻划其结构特征。n递归地定义最优值。递归地定义最优值。n以自底向上的方式计算出最优值。以自底向上的方式计算出最优值。n根据计算最优值时得到的信息,构造最优解。根
5、据计算最优值时得到的信息,构造最优解。6第6页,本讲稿共48页(1)单个矩阵是完全加括号的;(2)矩阵连乘积 是完全加括号的,则 可 表示为2个完全加括号的矩阵连乘积 和 的乘积并加括号,即 16000,10500,36000,87500,34500n完全加括号的矩阵连乘积可递归地定义为:完全加括号的矩阵连乘积可递归地定义为:n设有四个矩阵设有四个矩阵 ,它们的维数分别是:,它们的维数分别是:n总共有五种完全加括号的方式总共有五种完全加括号的方式完全加括号的矩阵连乘积完全加括号的矩阵连乘积7第7页,本讲稿共48页矩阵连乘问题矩阵连乘问题n给定给定n n个矩阵个矩阵 ,其中其中 与与 是可乘的,
6、是可乘的,。考察这。考察这n n个矩阵的连乘积个矩阵的连乘积 n由于矩阵乘法满足结合律,所以计算矩阵的连乘可以有许多不同由于矩阵乘法满足结合律,所以计算矩阵的连乘可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。的计算次序。这种计算次序可以用加括号的方式来确定。n若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用全加括号,则可以依此次序反复调用2 2个矩阵相乘的标准算法计个矩阵相乘的标准算法计算出矩阵连乘积算出矩阵连乘积8第8页,本讲稿共48页矩阵连乘问题矩阵连乘问题给定给定n n个矩阵
7、个矩阵A A1 1,A,A2 2,A,An n,其中,其中AiAi与与Ai+1Ai+1是可乘的,是可乘的,i=1i=1,2 2,n-1n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。的数乘次数最少。u穷举法穷举法:列举出所有可能的计算次序,并计算出每一种计算次列举出所有可能的计算次序,并计算出每一种计算次序相应需要的数乘次数,从中找出一种数乘次数最少的计算次序相应需要的数乘次数,从中找出一种数乘次数最少的计算次序。序。算法复杂度分析:算法复杂度分析:对于对于n n个矩阵的连乘积,设其不同的计
8、算次序为个矩阵的连乘积,设其不同的计算次序为P(n)P(n)。由于每种加括号方式都可以分解为两个子矩阵的加括号问题:由于每种加括号方式都可以分解为两个子矩阵的加括号问题:(A1.Ak)(Ak+1(A1.Ak)(Ak+1An)An)可以得到关于可以得到关于P(n)P(n)的递推式如下:的递推式如下:9第9页,本讲稿共48页矩阵连乘问题矩阵连乘问题u穷举法穷举法u动态规划动态规划将矩阵连乘积将矩阵连乘积 简记为简记为Ai:j Ai:j,这里,这里ijij 考察计算考察计算Ai:jAi:j的最优计算次序。设这个计算次序在矩阵的最优计算次序。设这个计算次序在矩阵A Ak k和和A Ak+1k+1之间将
9、矩阵链断开,之间将矩阵链断开,ikjikj,则其相应完全,则其相应完全加括号方式为加括号方式为计算量:计算量:Ai:kAi:k的计算量加上的计算量加上Ak+1:jAk+1:j的计算量,再加上的计算量,再加上Ai:kAi:k和和Ak+1:jAk+1:j相乘的计算量相乘的计算量10第10页,本讲稿共48页n特征:计算特征:计算Ai:jAi:j的最优次序所包含的计算矩阵子的最优次序所包含的计算矩阵子链链 Ai:k Ai:k和和Ak+1:jAk+1:j的次序也是最优的。的次序也是最优的。n矩阵连乘计算次序问题的最优解包含着其子问题的矩阵连乘计算次序问题的最优解包含着其子问题的最优解。这种性质称为最优子
10、结构性质。问题的最最优解。这种性质称为最优子结构性质。问题的最优子结构性质是该问题可用动态规划算法求解的显优子结构性质是该问题可用动态规划算法求解的显著特征。著特征。分析最优解的结构分析最优解的结构11第11页,本讲稿共48页建立递归关系建立递归关系n设计算设计算Ai:jAi:j,1ijn1ijn,所需要的最少数乘次数,所需要的最少数乘次数mi,jmi,j,则,则原问题的最优值为原问题的最优值为m1,n m1,n n当当i=ji=j时,时,Ai:j=AiAi:j=Ai,因此,因此,mi,i=0mi,i=0,i=1,2,i=1,2,n,nn当当ijij时,时,n可以递归地定义可以递归地定义mi,
11、jmi,j为:为:这里这里 的维数为的维数为 的位置只有的位置只有 种可能种可能12第12页,本讲稿共48页计算最优值计算最优值n对于对于1ijn1ijn不同的有序对不同的有序对(i,j)(i,j)对应于不同的子问题。因此,不对应于不同的子问题。因此,不同子问题的个数最多只有同子问题的个数最多只有n由此可见,在递归计算时,许多子问题被重复计算多次。这也是由此可见,在递归计算时,许多子问题被重复计算多次。这也是该问题可用动态规划算法求解的又一显著特征。该问题可用动态规划算法求解的又一显著特征。n用动态规划算法解此问题,可依据其递归式以自底向上的方式进用动态规划算法解此问题,可依据其递归式以自底向
12、上的方式进行计算。在计算过程中,保存已解决的子问题答案。每个子问题行计算。在计算过程中,保存已解决的子问题答案。每个子问题只计算一次,而在后面需要时只要简单查一下,从而避免大量的只计算一次,而在后面需要时只要简单查一下,从而避免大量的重复计算,最终得到多项式时间的算法重复计算,最终得到多项式时间的算法13第13页,本讲稿共48页用动态规划法求最优解用动态规划法求最优解void MatrixChain(int*p,int n,int*m,int*s)for(int i=1;i=n;i+)mii=0;for(int r=2;r=n;r+)for(int i=1;i=n-r+1;i+)int j=i
13、+r-1;mij=mi+1j+pi-1*pi*pj;sij=i;for(int k=i+1;k j;k+)int t=mik+mk+1j+pi-1*pk*pj;if(t 0)return mij;if(i=j)return 0;int u=LookupChain(i,i)+LookupChain(i+1,j)+pi-1*pi*pj;sij=i;for(int k=i+1;k j;k+)int t=LookupChain(i,k)+LookupChain(k+1,j)+pi-1*pk*pj;if(t u)u=t;sij=k;mij=u;return u;17第17页,本讲稿共48页最长公共子序列
14、最长公共子序列若给定序列若给定序列X=xX=x1 1,x,x2 2,x,xm m,则另一序列,则另一序列Z=zZ=z1 1,z,z2 2,z,zk k,是,是X X的子序列是指存在一个严格递增下标序列的子序列是指存在一个严格递增下标序列ii1 1,i,i2 2,i,ik k 使得对于所有使得对于所有j=1,2,j=1,2,k,k有:有:z zj j=x=xi ij j。例如,序列例如,序列Z=BZ=B,C C,D D,BB是序列是序列X=AX=A,B B,C C,B B,D D,A A,BB的子的子序列,相应的递增下标序列为序列,相应的递增下标序列为22,3 3,5 5,77。给定给定2 2个
15、序列个序列X X和和Y Y,当另一序列,当另一序列Z Z既是既是X X的子序列又是的子序列又是Y Y的子的子序列时,称序列时,称Z Z是序列是序列X X和和Y Y的公共子序列。的公共子序列。给定给定2 2个序列个序列X=xX=x1 1,x,x2 2,x,xm m 和和Y=yY=y1 1,y,y2 2,y,yn n,找出,找出X X和和Y Y的最长公共子序列。的最长公共子序列。18第18页,本讲稿共48页最长公共子序列的结构最长公共子序列的结构设序列设序列X=xX=x1 1,x,x2 2,x,xm m 和和Y=yY=y1 1,y,y2 2,y,yn n 的最长公共子序列为的最长公共子序列为Z=z
16、Z=z1 1,z,z2 2,z,zk k ,则,则(1)(1)若若x xm m=y=yn n,则,则z zk k=x=xm m=y=yn n,且,且z zk-1k-1是是x xm-1m-1和和y yn-1n-1的最长公共子序列。的最长公共子序列。(2)(2)若若x xm myyn n且且z zk kxxm m,则,则Z Z是是x xm-1m-1和和Y Y的最长公共子序列。的最长公共子序列。(3)(3)若若x xm myyn n且且z zk kyyn n,则,则Z Z是是X X和和y yn-1n-1的最长公共子序列。的最长公共子序列。由此可见,由此可见,2 2个序列的最长公共子序列包含了这个序列
17、的最长公共子序列包含了这2 2个序列的前缀的最长公个序列的前缀的最长公共子序列。因此,最长公共子序列问题具有共子序列。因此,最长公共子序列问题具有最优子结构性质。最优子结构性质。19第19页,本讲稿共48页子问题的递归结构子问题的递归结构由最长公共子序列问题的最优子结构性质建立子问题最优值的由最长公共子序列问题的最优子结构性质建立子问题最优值的递归关系。用递归关系。用cijcij记录序列和的最长公共子序列的长度。其记录序列和的最长公共子序列的长度。其中,中,X Xi i=x=x1 1,x,x2 2,x,xi i;Yj=yYj=y1 1,y,y2 2,y,yj j。当。当i=0i=0或或j=0j
18、=0时,空序列时,空序列是是X Xi i和和Y Yj j的最长公共子序列。故此时的最长公共子序列。故此时Cij=0Cij=0。其它情况下,由最。其它情况下,由最优子结构性质可建立递归关系如下:优子结构性质可建立递归关系如下:20第20页,本讲稿共48页计算最优值计算最优值 由于在所考虑的子问题空间中,总共有由于在所考虑的子问题空间中,总共有(mn)(mn)个不同的子问题,个不同的子问题,因此,用动态规划算法自底向上地计算最优值能提高算法的效率。因此,用动态规划算法自底向上地计算最优值能提高算法的效率。void LCSLength(int m,int n,char*x,char*y,int*c,
19、int*b)int i,j;for(i=1;i=m;i+)ci0=0;for(i=1;i=n;i+)c0i=0;for(i=1;i=m;i+)for(j=1;j=cij-1)cij=ci-1j;bij=2;else cij=cij-1;bij=3;构造最长公共子序列构造最长公共子序列void LCS(int i,int j,char*x,int*b)if(i=0|j=0)return;if(bij=1)LCS(i-1,j-1,x,b);coutxi;else if(bij=2)LCS(i-1,j,x,b);else LCS(i,j-1,x,b);21第21页,本讲稿共48页算法的改进算法的改进
20、在算法在算法lcsLengthlcsLength和和lcslcs中,可进一步将数组中,可进一步将数组b b省去。事实上,数组省去。事实上,数组元素元素cijcij的值仅由的值仅由ci-1j-1ci-1j-1,ci-1jci-1j和和cij-1cij-1这这3 3个个数组元素的值所确定。对于给定的数组元素数组元素的值所确定。对于给定的数组元素cijcij,可以不借助于,可以不借助于数组数组b b而仅借助于而仅借助于c c本身在时间内确定本身在时间内确定cijcij的值是由的值是由ci-1j-1ci-1j-1,ci-1jci-1j和和cij-1cij-1中哪一个值所确定的。中哪一个值所确定的。如果
21、只需要计算最长公共子序列的长度,则算法的空间需求可如果只需要计算最长公共子序列的长度,则算法的空间需求可大大减少。事实上,在计算大大减少。事实上,在计算cijcij时,只用到数组时,只用到数组c c的第的第i i行和第行和第i-1i-1行。因此,用行。因此,用2 2行的数组空间就可以计算出最长公共子序列的长度。行的数组空间就可以计算出最长公共子序列的长度。进一步的分析还可将空间需求减至进一步的分析还可将空间需求减至O(min(m,n)O(min(m,n)。22第22页,本讲稿共48页凸多边形最优三角剖分凸多边形最优三角剖分用多边形顶点的逆时针序列表示凸多边形,即用多边形顶点的逆时针序列表示凸多
22、边形,即P=vP=v0 0,v,v1 1,v,vn-1n-1 表表示具有示具有n n条边的凸多边形。条边的凸多边形。若若v vi i与与v vj j是多边形上不相邻的是多边形上不相邻的2 2个顶点,则线段个顶点,则线段v vi iv vj j称为多边形称为多边形的一条弦。弦将多边形分割成的一条弦。弦将多边形分割成2 2个多边形个多边形vvi i,v,vi+1i+1,v,vj j 和和vvj j,v,vj+1j+1,v vi i。多边形的三角剖分是将多边形分割成互不相交的三角形的弦的集合多边形的三角剖分是将多边形分割成互不相交的三角形的弦的集合T T。给定凸多边形给定凸多边形P P,以及定义在由
23、多边形的边和弦组成的三角形上的,以及定义在由多边形的边和弦组成的三角形上的权函数权函数w w。要求确定该凸多边形的三角剖分,使得即该三角剖。要求确定该凸多边形的三角剖分,使得即该三角剖分中诸三角形上权之和为最小。分中诸三角形上权之和为最小。23第23页,本讲稿共48页三角剖分的结构及其相关问题三角剖分的结构及其相关问题一个表达式的完全加括号方式相应于一棵完全二叉树,称为表达式一个表达式的完全加括号方式相应于一棵完全二叉树,称为表达式的语法树。例如,完全加括号的矩阵连乘积的语法树。例如,完全加括号的矩阵连乘积(A(A1 1(A(A2 2A A3 3)(A)(A4 4(A(A5 5A A6 6)所
24、所相应的语法树如图相应的语法树如图(a)(a)所示。所示。凸多边形凸多边形vv0 0,v,v1 1,v vn-1n-1 的三角剖分也可以用语法树表示。例如,图的三角剖分也可以用语法树表示。例如,图(b)(b)中凸多边形的三角剖分可用图中凸多边形的三角剖分可用图(a)(a)所示的语法树表示。所示的语法树表示。矩阵连乘积中的每个矩阵矩阵连乘积中的每个矩阵A Ai i对应于凸对应于凸(n+1)(n+1)边形中的一条边边形中的一条边v vi-1i-1v vi i。三角剖分。三角剖分中的一条弦中的一条弦v vi iv vj j,ijij,对应于矩阵连乘积,对应于矩阵连乘积Ai+1:jAi+1:j。24第
25、24页,本讲稿共48页最优子结构性质最优子结构性质凸多边形的最优三角剖分问题有最优子结构性质。凸多边形的最优三角剖分问题有最优子结构性质。事实上,若凸事实上,若凸(n+1)(n+1)边形边形P=vP=v0 0,v,v1 1,v,vn-1n-1 的最优三角剖分的最优三角剖分T T包含三角形包含三角形v v0 0v vk kv vn n,1kn-11kn-1,则,则T T的权为的权为3 3个部分权的个部分权的和:三角形和:三角形v v0 0v vk kv vn n的权,子多边形的权,子多边形vv0 0,v,v1 1,v,vk k 和和vvk k,v,vk+1k+1,v,vn n 的权之和。可以断言
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态规划 2优秀PPT 动态 规划 优秀 PPT
限制150内