算法分析与设计动态规划.ppt
《算法分析与设计动态规划.ppt》由会员分享,可在线阅读,更多相关《算法分析与设计动态规划.ppt(91页珍藏版)》请在三一办公上搜索。
1、第四章 动态规划,2,第四章 动态规划,什么是动态规划多段图最优二分检索树0/1背包问题可靠性设计货郎担问题,3,在实际生活中,有这么一类问题,它们的活动过程可以分为若干个阶段,而且在任一阶段后的行为都依赖于i 阶段的过程状态,而与i 阶段之前的过程是如何达到这种状态的方式无关,这样的过程就构成了一个多阶段决策过程。根据这类问题的多阶段决策的特性,提出了解决这类问题的“最优性原理”,从而创建了最优化问题的一种新的算法设计方法动态规划。,4.1 一般方法,4,在多阶段决策过程的每一个阶段,都可能有多种选择的决策,但必须从中选取一种决策。一旦各种阶段的决策选定之后,就构成了解决这一问题的一个决策序
2、列。决策序列不同,导致的问题结果也不同。动态规划的目标就是要在所有容许选择的决策序列中选取一个会获得问题最优解的决策序列,即最优决策序列。,什么是动态规划,5,最优性原理,最优性原理(Principle of Optimality)过程的最优决策序列具有如下性质:无论过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的状态构成一个最优决策序列。利用动态规划求解问题的前提 1)证明问题满足最优性原理 如果对所求解问题证明满足最优性原理,则说明用动态规划方法有可能解决该问题 2)获得问题状态的递推关系式 获得各阶段间的递推关系式是解决问题的关键。,6,多段图问题,多段图问题,7,
3、多段图问题,多段图G(V,E)是个有向图。它具有如下特性:图中的结点被划分成k 2个不相交的集合Vi,1ik,其中V1和Vk分别只有一个结点s(源点)和 t(汇点)。图中所有的边均具有如下性质:若uVi,则v Vi+1,1ik,且每条边均附有成本c(u,v)。从s到t的一条路径成本是这条路径上边的成本和。多段图问题(multistage graph problem)是求由s到t的最小成本路径。,8,多段图问题,最优性原理对多段图成立假设s,v2,v3,vk-1,t是一条由s到t的最短路径再假设从源点s开始,已作出了到结点V2的决策,因此V2就是初始决策所产生的状态如果把V2看成是原问题的一个子
4、问题的初始状态,解决这个子问题就是找出一条由V2到t的最短路径这条最短路径显然是v2,v3,vk-1,t如果不是,设v2,q3,qk-1,t由V2到t的更短路径,则这条路径肯定比v2,v3,vk-1,t路径短,这与假设矛盾,因此最优性原理成立,9,0/1背包问题,背包问题中的xj限定只能取0或1值,用KNAP(1,j,X)来表示这个问题,效益值,背包容量,则0/1背包问题就是KNAP(1,n,M),10,最优化决策序列的表示,设S0是问题的初始状态。假定要作n次决策xi,1inX1=r1,1,r1,2,r1,pj是x1的可能决策值的集合,而S1,1是在选取决策值r1,j1以后所产生的状态,1j
5、1p1又设F1,j1是相应于状态S1,j1的最优决策序列则相应于S0的最优决策序列就是r1,j1 F1,j1|1j1p1中最优的序列,记作,如果已作了k-1次决策,1k-1n。设x1,xk-1的最优决策值是r1,.,rk-1,他们所产生的状态为S1,Sk-1,11,最优化决策序列的表示,又设Xk=rk,1,rk,2,rk,pk是xk的可能值的集合。Sk,jk是选取rk,jk决策之后所产生的状态,1jkpkFk,jk 是相应于Sk,jk的最优决策序列。因此,相应于Sk-1的最优决策序列是,于是相应于S0的最优决策序列为:r1,rk-1,rk,Fk,12,向前处理法(forward approac
6、h),从最后阶段开始,以逐步向前递推的方式列出求前一阶段决策值的递推关系式,即根据xi+1,xn的那些最优决策序列来列出求取xi决策值的关系式,这就是动态规划的向前处理法向后处理方法(backward approach)就是根据x1,xi-1的那些最优决策序列列出求xi的递推关系式。多段图的向前处理和向后处理0/1背包问题的向前处理和向后处理,13,4.2 多段图,多段图向前处理的算法设P(i,j)是一条从Vi中的节点j 到汇点t 的最小成本路径,COST(i,j)表示这条路径的成本,根据向前处理方法有公式4.5:,14,因为,若 E成立,有COST(k-1,j)=c(j,t),若 E不成立,
7、则有COST(k-1,j)=,所以可以通过如下步骤解式公式(4.5),并求出COST(1,s)。首先对于所有jVk-2,计算COST(k-2,j),然后对所有的jVk-3,计算计算COST(k-3,j)等等,最后计算出计算COST(1,s),多段图的向前处理算法,15,例子中5段图的实现计算步骤:COST(4,9)=4COST(4,10)=2COST(4,11)=5COST(3,6)=min6+COST(4,9),5+COST(4,10)=7COST(3,7)=min4+COST(4,9),3+COST(4,10)=5COST(3,8)=min5+COST(4,10),6+COST(4,11)
8、=7,多段图的向前处理算法,16,COST(2,2)=min4+COST(3,6),2+COST(3,7),1+COST(3,8)=7COST(2,3)=9COST(2,4)=18COST(2,5)=15COST(1,1)=min9+COST(2,2),7+COST(2,3),3+COST(2,4),2+COST(2,5)=16,多段图的向前处理算法,17,例子中5段图的实现计算步骤:在计算每一个COST(i,j)的同时,记下每个状态(结点j)所做出的决策,设为D(i,j),则可容易地求出这条最小成本路径。D(3,6)=10D(3,7)=10D(3,8)=10D(2,2)=7D(2,3)=6D
9、(2,4)=8D(2,5)=8D(1,1)=2 设这条最小成本路径是sl,v2,v3,vk-1,t=12。则可得知:v2D(1,1)2,v3=D(2,D(1,1)=7 和v4D(3,D(2,D(1,1)D(3,7)10,多段图的向前处理算法,18,多段图的向前处理算法,procedure FGRAP(E,k,n,P)real COST(n),integer D(n-1),P(k),r,j,k,nCOST(n)0for jn-1 to 1 by 1 do 设r是一个这样的结点,E且使c(j,r)+COST(r)取小值COST(j)c(j,r)+COST(r)D(j)rrepeatP(1)1;P(
10、k)nfor j2 to k-1 doP(j)D(P(j-1)repeatEnd FGRAPH,计算出COST(j)的值,并找出一条最小成本路径,找出最小成本路径上的第j个结点,19,多段图的向后处理算法,向后处理方法(backward approach)就是根据x1,xi-1的那些最优决策序列列出求xi的递推关系式。,20,多段图的向后处理算法,设BP(i,j)是一条由源点s到Vi中结点j的最小成本路径,BCOST(i,j)表示BP(i,j)的成本,由向后处理方法得到公式4.6:,即由源点s到Vi中结点j的最小成本,等于由源点s到Vi-1中任一结点l 的最小成本加上Vi-1中结点l 到Vi中
11、结点j的边长,所得的所有和中最小的那个值。,21,因为,若 E成立,BCOST(2,j)=c(1,j),若 E不成立,则有BCOST(2,j)=,所以可以通过如下步骤解式公式(4.6),首先对i3计算BCOST,然后对 i4 计算BCOST等,最后计算出BCOST(k,t)。BCOST(2,2)=9;BCOST(2,3)=7;BCOST(2,4)=3;BCOST(2,5)=2;,多段图的向后处理算法,22,1,2,3,4,5,8,7,6,11,10,9,12,s,t,9,7,3,2,4,2,2,7,1,11,11,8,6,5,4,3,5,6,5,2,4,BCOST(3,6)=minBCOST(
12、2,2)+4,BCOST(2,3)+2=9BCOST(3,7)=minBCOST(2,2)+2,BCOST(2,3)+7,BCOST(2,5)+11=11BCOST(3,8)=minBCOST(2,2)+1,BCOST(2,4)+11,BCOST(2,5)+8=10,1,6,3,2,7,2,8,23,1,2,3,4,5,8,7,6,11,10,9,12,s,t,9,7,3,2,4,2,2,7,1,11,11,8,6,5,4,3,5,6,5,2,4,1,6,3,2,7,2,8,BCOST(4,9)=minBCOST(3,6)+6,BCOST(3,7)+4=15BCOST(4,10)=minBCO
13、ST(3,6)+5,BCOST(3,7)+3,BCOST(3,8)+5=14BCOST(4,11)=16,9,10,11,24,1,2,3,4,5,8,7,6,11,10,9,12,s,t,9,7,3,2,4,2,2,7,1,11,11,8,6,5,4,3,5,6,5,2,4,1,6,3,2,7,2,8,9,10,11,BCOST(5,12)=minBCOST(4,9)+4,BCOST(4,10)+2,BCOST(4,11)+5=16,12,25,多段图的向后处理算法,在计算每一个BCOST(i,j)的同时,记下每个状态(结点j)所做出的决策(即,使BCOST(i-1,j)+c(l,j)取最小
14、值的 l 值),设为D(i,j),则可容易地求出这条最小成本路径。,26,对于实例中的最小成本路径如下所示:D(3,6)=3;D(3,7)=2;D(3,8)=2;D(4,9)=6;D(4,10)=6;D(4,11)=8;D(5,12)=10,27,多段图的向后处理算法,Line procedure BGRAP(E,k,n,P)real BCOST(n),integer D(n-1),P(k),r,j,k,nBCOST(1)0for j2 to n do 设r是一个这样的结点,E且使BCOST(r)+c(r,j)取小值BCOST(j)BCOST(r)+c(r,j)D(j)rrepeatP(1)1
15、;P(k)nfor jk-1 to 2 by-1 doP(j)D(P(j+1)repeatEnd BGRAPH,计算出BCOST(j)的值,并找出一条最小成本路径,找出最小成本路径上的第j个结点,28,4.3 每对结点之间的最短路径,复习(略),29,4.4 最优二分检索树,问题的描述1)二分检索树定义 二分检索树是一棵二元树,它或者为空,或者其每个结点含有一个可以比较大小的数据元素,且有:的左子树的所有元素比根结点中的元素小;的右子树的所有元素比根结点中的元素大;的左子树和右子树也是二分检索树。注:二分检索树要求树中所有结点的元素值互异,30,二分检索树,对于一个给定的标识符集合,可能有若干
16、棵不同的二分检索树:,不同形态的二分检索树对标识符的检索性能是不同的。,31,二分检索树,检索一棵二分检索树算法procedure SEARCH(T,X,i)i=Twhile i0 do case:XIDENT(i):i=RCHILD(i)endcaserepeatend REARCH,32,最优二分检索树问题,设给定的标识符集合是a1,a2,an,并假定a1a2 an。设,P(i)是对ai检索的概率,Q(i)是正被检索的标识符X恰好满足:ai Xai+1,0in(设a0=-,an+1=+)时的概率,即一种不成功检索情况下的概率。则 表示所有成功检索的概率 表示所有不成功检索的概率 考虑所有可
17、能的成功和不成功检索情况,共2n+1种可能的情况,有,33,二分检索树,二分检索树(如右图所示)内结点:代表成功检索情况,刚好有n个。外结点:代表不成功检索情况,刚好有n1个。,34,二分检索树的预期成本,预期成本:算法对于所有可能的成功检索情况和不成功检索情况,平均所要做的比较次数。根据期望值计算方法,平均检索成本每种情况出现的概率该情况下所需的比较次数 平均检索成本的构成:成功检索成分不成功检索成分 成功检索:在l级内结点终止的成功检索,需要做l次比较运算(基于二分检索树结构)。该级上的任意结点ai的成本检索的成本分担额为:P(i)*level(ai);其中,level(ai)=结点ai
18、的级数=l,35,二分检索树的预期成本,不成功检索:不成功检索的等价类:每种不成功检索情况定义了一个等价类,共有n+1个等价类Ei(0in)。其中,E0=X|Xa0 Ei=X|aiXai+1(1in)En=X|Xan 若Ei处于l级,则算法需作l-1次迭代。则,l级上的外部结点的不成功检索的成本分担额为:Q(i)*(level(Ei)-1)则预期总的成本公式表示如下:,36,最优二分检索树,最优二分检索树问题:求一棵使得预期成本最小的二分检索树例4.9 标识符集合(a1,a2,a3)=(do,if,stop)。可能的二分检索树如下所示。成 功 检 索:3种 不成功情况:4种,37,最优二分检索
19、树,38,最优二分检索树,1)等概率:P(i)=Q(i)=1/7 cost(a)=15/7 cost(b)=13/7 最优 cost(c)=15/7 cost(d)=15/7 cost(e)=15/7 2)不等概率:P(1)=0.5 P(2)=0.1 P(3)=0.05 Q(0)=0.15 Q(1)=0.1 Q(2)=0.05 Q(3)=0.05 cost(a)=2.65 cost(b)=1.9 cost(c)=1.5 最优 cost(d)=2.15 cost(e)=1.6,39,多阶段决策过程,把构造二分检索树的过程看成一系列决策的结果。决策的策略:决策树根,如果a1,a2,an存在一棵二分
20、检索树,ak是该树的根,则内结点a1,a2,ak-1和外部结点E0,E1,Ek-1将位于根ak的左子树中,而其余的结点将位于右子树中。,40,定义,含义:左、右子树的预期成本左、右子树的根处于第一级 左、右子树中所有结点的级数相对于子树的根测定,而相对于原树的根少1,41,定义,记:则,原二分检索树的预期成本可表示为:COST(T)=P(k)+COST(L)+COST(R)+W(0,k-1)+W(k,n)最优二分检索树:COST(T)有最小值最优性原理成立 若T最优二分检索树,则COST(L)和COST(R)将分别是包含a1,a2,ak-1和E0,E1,Ek-1、及ak1,ak+2,an和Ek
21、,Ek+1,En的最优二分检索(子)树。记由ai+1,ai+2,aj和Ei,Ei+!,Ej构成的二分检索树的成本为C(i,j),则对于最优二分检索树T有,COST(L)=C(0,k-1)COST(R)=C(k,n),42,定义,则,对任何C(i,j)有,向前递推过程:首先计算所有j-i=1的C(i,j)然后依次计算j-i=2,3,n的C(i,j)。C(0,n)=最优二分检索树的成本。初始值 C(i,i)=0 W(i,i)=Q(i),0in,43,用动态归划求最优二分检索树,首先计算所有使得j-i=1的C(i,j)接着计算所有使得j-i=2的C(i,j).如果在这一计算期间,记下每棵Tij树的根
22、R(i,j),那么最优二分检索树就可以由这些R(i,j)构造出来。,44,用动态归划求最优二分检索树,例4.10 设n=4,且(a1,a2,a3,a4)=(do,if,read,while)。设P(1:4)=(3,3,1,1),Q(0:4)=(2,3,1,1,1)(概率值“扩大”了16倍)初始:W(i,i)=Q(i)C(i,i)=0 R(i,i)=0且有,W(i,j)=P(j)+Q(j)+W(i,j-1)j-i=1阶段的计算:W(0,1)=P(1)+Q(1)+W(0,0)=8 C(0,1)=W(0,1)+minC(0,0)+C(1,1)=8 R(0,1)=1 W(1,2)=P(2)+Q(2)+
23、W(1,1)=7 C(1,2)=W(1,2)+minC(1,1)+C(2,2)=7 R(1,2)=2 W(2,3)=P(3)+Q(3)+W(2,2)=3 C(2,3)=W(2,3)+minC(2,2)+C(3,3)=3 R(2,3)=3 W(3,4)=P(4)+Q(4)+W(3,3)=3 C(3,4)=W(3,4)+minC(3,3)+C(4,4)=3 R(3,4)=4,例4.10(P135),45,用动态归划求最优二分检索树,W,C,R计算结果则,C(0,4)=32二分检索树:T04=2=T01(左子树),T24(右子树)T01=1=T00(左子树),T11(右子树)T24=3=T22(左子
24、树),T34(右子树),j,i,46,用动态归划求最优二分检索树,树的形态,47,算法描述,procedure OBST(P,Q,n)/给定n个标识符a1a2an。已知成功检索的概率P(i),不成功检索概率Q(i),0in。算法对于标识符ai+1,aj计算最优二分检索树Tij的成本C(i,j)、根 R(i,j)、权W(i,j)/real P(1:n),Q(0:n),C(0:n,0:n),W(0:n,0:n);integer R(0:n,0:n)for i0 to n-1 do(W(i,i),R(i,i),C(i,i)(Q(i),0,0)/置初值/(W(i,i+1),R(i,i+1),C(i,i
25、+1)(Q(i)+Q(i+1)+P(i+1),i+1,Q(i)+Q(i+1)+P(i+1)repeat/含有一个结点的最优树/(W(n,n),R(n,n),C(n,n)(Q(n),0,0)for m2 to n do/找有m个结点的最优树/for i0 to n-m do ji+m W(i,j)W(i,j-1)+P(j)+Q(j)k区间R(i,j-1),R(i+1,j)中使C(i,l-1)+C(l,j)取最小值的l值/Knuth结论/C(i,j)W(i,j)+C(i,k-1)+C(k,j)R(i,j)k repeat repeat end OBST,48,计算时间,当j-i=m时,有n-m+1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 动态 规划
链接地址:https://www.31ppt.com/p-5451706.html