动态规划(Dynamic Programming DP).ppt

上传人:创****公 文档编号:1681144 上传时间:2019-10-22 格式:PPT 页数:60 大小:881KB
返回 下载 相关 举报
动态规划(Dynamic Programming DP).ppt_第1页
第1页 / 共60页
动态规划(Dynamic Programming DP).ppt_第2页
第2页 / 共60页
点击查看更多>>
资源描述

《动态规划(Dynamic Programming DP).ppt》由会员分享,可在线阅读,更多相关《动态规划(Dynamic Programming DP).ppt(60页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、动态规划(Dynamic Programming: DP),宫秀军天津大学计算机科学与技术学院,主要内容,引论基本思想解决方案典型应用0/1 背包问题(0/1 Knapsack)矩阵乘法链问题(Matrix Multiplication Chains)最短路径(All Pairs Shortest Paths)最大非交叉子集问题(Maximum Non-crossing Subset nets: MNS)其他应用最长公共子序列问题(Longest Common Subsequence)隐马尔可夫模型(Hidden Markov Model),一个简单的例子:多段图,最短路(1-3-5-7)上的

2、子路径也是到目的节点7的最短路.例如, (3-5-7)无论最短路的下一跳是2,3,4中的那个节点,其后的路径也应是最短路,1,2,3,4,6,5,7,1,4,6,7,6,5,8,1,2,1,任务描述:找出从起点1到终点7的最短路径,动态规划基本原理,优化原理(Principle of Optimal)优化解包含的子问题的解也是优化的No matter what the first decision, the remaining decisions are optimal with respect to the state that results from this decision动态规划常

3、用来解优化问题动态规划是解决多阶段决策过程最优化的一种方法该方法是由美国数学家贝尔曼(R. E. Bellman)等人在20世纪50年代初提出的。用于解决生产管理、工程技术等方面的许多问题,并建立了运筹学的一个新的分支,即动态规划Bellman在1957年出版了Dynamic Programming一书,是动态规划领域中的第一本著作广泛应用于人工智能、生物信息学等诸多领域,多段图:一般情形,设c(i)为结点i到目的节点e的最短路长度, A(i)为与i相邻的节点集合,有:c(s)为所求最短路径长度c(e)=0 c(i)=minj A(i)c(j)+cost(i, j) six1=0;否则x1=1

4、,c=c-w1。x2: f(2,c)=f(3,c)= x2=0否则x2=1,c=c-w2Xi: f(i,c)=f(i+1,c)= xi=0否则xi=1,c=c-wi该例中,f(2,116)=33f(1,116),所以x1=1. 剩余容量=116-100=16, f(2,16)=18,f(3,16)= 14f(2,16),因此x2=1此时r=16-14=2,不足以放物品3,所以x3= 0,动态规划小结:,一般步骤确定决策序列(Decision sequences)明确问题状态(Problem states)验证优化原理(Principle of optimal)构造、求解优化值递归方程(Recu

5、rrence equation)回溯(traceback)构造优化解(Optimal solution)算法复杂性动态规划递归方程往往不能直接用递归实现, 会引发大量重复计算,算法的计算量将非常可观。最好是用迭代法求解动态规划法列出的递归方程迭代实现需要存贮所有子问题的优化解的值,因此动态规划法设计的算法往往需要较大的存储空间算法的复杂性来自子问题的数目,通常子问题的数目往往很大,动态规划:应用,0/1背包问题矩阵乘法链最短路径网络的无交叉子集,0/1背包问题-设计策略,1. 递归方法2. 权为整数的迭代方法3. 元组方法,递归方法,程序的最坏时间复杂性t(n)t(1)=a;t(n)=2t(n

6、-1)+b (n1),其中a,b为常数求解可得t(n)=(2n),递归方法:例15-5,为了确定f (1,10),调用函数F(1,10)比较F(i+1,y), F(i+1,y-wi)+pi递归调用关系如图树型结构所示:其中每个节点用y值来标记;第j层的节点对应F(j,*);根节点表示F(1,10),而它有左、右子节点,分别对应F(2,10)和F(2,8)。,n=5, c=10p=6,3,5,4,6w=2,2,6,5,4 ,求f (1,10).,10,10,8,10,8,8,6,10,8,4,2,8,6,2,0,10,4,5,8,8,3,2,2,6,3,1,0,递归方法:例15-5(续),通过递

7、归调用树,可以看到程序总共执行了26次递归调用重复计算的节点,如f(3,8),f(4,8), f(4,2), f(5,8), f(5,3), f(5,2) 如果保留以前的计算结果,则可将节点数减至20,因为可以丢弃图中的阴影节点,10,10,8,10,8,8,6,10,8,4,2,8,6,2,0,10,4,5,8,8,3,2,2,6,3,1,0,W取整数时的迭代方法(1),该算法用二维数组f iy来保存各个f 的值因此每个f(i,y) 只计算一次二维数组需(nc)空间该算法的复杂性(nc)-伪多项式算法: c是算法输入的一部分, c的二进制表示的长度为log2c,W取整数时的迭代方法(2),函

8、数Traceback从fiy产生优化的xi值Traceback的复杂性为(n).,上述程序有两个缺点:1)要求物品重量为整数;2)当背包容量c 很大时,例如c2n,程序的复杂性为(n2n).,元组法:元组描述,对于每个i,将f(i, y)的跳跃点以元组(y, f(i, y)形式存于表P(i)中.P(i)中元组(y,f(i, y) 按y的增序排列.元组(a,b)代表一种装物品i,n的方案:以容量a,能得到效益值b.,如何只使用最少的计算从P(i+1)获得P(i)?,元组法:元组合并,令Q=(s,t)|wisc的元组(w,v),元组法:例15-6,P(5)=(0,0), (4,6) ,Q=(5,4

9、),(9,10)合并得:P(4)=(0,0),(4,6),(9,10)计算 Q=(6,5),(10,11) 合并得 P(3)=(0,0),(4,6),(9,10),(10,11)计算 Q=(2,3),(6,9)合并得 P(2)=(0,0),(2,3),(4,6),(6,9),(9,10),(10,11)计算 Q=(2,6),(4,9),(6,12),(8,15)合并得P(1)=(0,0),(2,6),(4,9),(6,12),(8,15)最优效益值为15回溯求解为1,1,0,0,1,设n=5,c=10 p=6,3,5,4,6 w=2,2,6,5,4 求f(1,10),P(i) 中的元组个数至多

10、为P(i+1)中元组个数的2倍.初始P(n)=2,所以: P(i)中的元组个数不超过2(n-i+1)计算Q需O(|P(i+1)|)的时间,合并P(i+1) 和Q需要O(|P(i1)|+|Q|)=O(2|P(i+1)|)的时间.所以计算P(i)需O(2n-i+1)时间 计算所有P(i) 时所需要的总时间O(2n)。存在输入使算法最坏情形为2n量级,元组法:性能分析,矩阵乘法链(Matrix multiPlication Chains: MPC),mn矩阵A与np矩阵B相乘需元素乘法数 mnp 计算三个矩阵A(mn),B(np)和C(pq)的乘积有两种方式:第一种方式中先用A乘以B然后乘以C,这种

11、乘法的顺序可写为(A*B)*C第二种方式为A* (B*C)尽管这两种不同的计算顺序所得的结果相同,但所需元素乘法数却不同第一种方式乘法数:mp(n+q)第一种方式乘法数:nq(m+p),MPC 示例,假定A为1001矩阵,B为1100矩阵,C为1001矩阵,(A*B) *C需乘法数为 1001100100100120000而 A* (B*C) 所需乘法数为1100110011200长度q的矩阵乘法链有指数量级(2q)的可能的相乘方式找一种相乘方式,使得元素乘法数最少,MPC动态规划解,用M(i,j)表示链Mi,Mj (ij)的乘积.假设优化的乘法顺序先计算M(i, k)和M(k+1,j),再将

12、二者相乘则计算M(i,j)的优化乘法顺序在计算M(i,k)和M(k+1,j)时也是优化的考虑5个矩阵的乘法链,其行列数为r =(10, 5, 1, 10, 2, 10),即M1为105的矩阵,等等优化的乘法顺序为(M1M2)(M3M4)M5)=190子链M(3,5)=M3M4M5的优化乘法顺序为 (M3M4)M5),是上述长度5的链的优化解在子链上的乘法顺序,MPC动态规划解(续),设c(i,j)为计算M(i,j)的优化乘法数(优化值),根据优化原理,优化值之间满足:c(i,j)=minik0 return cij;,cij=u;,MPC 迭代算法,函数c 的动态规划递归式可用迭代的方法来求解

13、.若按s = 2, 3, , q-1 的顺序计算 c(i,i+s),每个c 和kay 仅需计算一次.但需很大的存储空间。,MPC 迭代算法:示例,设q = 5和r =(10 , 5 , 1 , 10 , 2 , 10)求解MPC,MPC 迭代程序,时间复杂度,复杂性为O(q3) .计算C(i, i+s)需 (s)时间.对s2,q-1,要 计算q-s个C(i,i+s),时间复杂度为(q-s)s).所以时间复杂度为(q3)计算出kay 后同样可用程序15-6中的Traceback 函数算出相应的最优乘法顺序,最短路径(All Pairs Shortest Paths: APSP),最短路径:假设G

14、为有向图,其中每条边都有一个成本(cost),图中每条有向路径的长度(或成本)定义为该路径上各边的成本之和对于每对顶点(i, j),定义从i 到j 的所有路径中,具有最小长度的路径为从i 到j 的最短路径求每对点间的最短路假定图上无负成本的环路,APSP: 例15-15,如图15-4所示。从顶点1到顶点3的路径有1) 1,2,5,3 2) 1,4,3 3) 1,2,5,8,6,3 4) 1,4,6,3由该图可知,各路径相应的长度为1 0,28, 9,2 7.因而路径3) 是该图中顶点1到顶点3的最短路径。,APSP: 动态规划解,将节点按1到n编号.定义c(i,j,k)=i到j的中间节点编号不

15、超过k的最短路长度.c(i,j,0)=cost(i,j) if G else c(i,j,0)=c(i,i,k)=0 for all kc(i, j, n)是要求的i到j的最短路长度我们建立c(i,j,k)和c(i,j,k-1)之间的递归关系,APSP:递归式,对于任意k0, c(i,j,k)=minc(i, j, k-1), c(i, k, k-1)+ c(k, j, k-1)性质c(i,k,k-1)=c(i,k,k)c(k,j,k)=c(k,j,k-1)如果直接用递归程序求解上式,则计算c(i,j,n)的复杂度极高.利用迭代方法.可将计算c 值的时间减少到O(n3).迭代算法的伪代码如图1

16、5-5所示。,APSP:迭代算法,令C(k)代表矩阵(c(i,j,k)i,j=1,n初始C(0)=(c(i, j),即图的邻接矩阵.算法迭代计算C(k) :对k行k列的元素C(k) (i,k)=C(k-1)(i,k)C(k) (k,j)=C(k-1)(k,j). 对k行k列以外的元素C(k)(i,j)=maxC(k-1)(i, j), C(k-1)(i, k)+C(k-1)(k,j),APSP:改进的递归算法(1),Kayij是从i到j的最短路径中编号最大的节点,通过该节点可以回溯最短路径节点,APSP:改进的递归算法(2),APSP: 例15-17,图15-6a 给出某图的长度矩阵a,15-

17、6b 给出由程序15-9所计算出的c 矩阵,15-6c 为对应的kay值。根据15-6c 中的kay 值,可知从1到5的最短路径是从1到kay15=4的最短路径再加上从4到5的最短路径,因为kay45=0,所以从4到5的最短路径无中间顶点。从1到4的最短路径经过kay14=3。重复以上过程,最后可得1到5的最短路径为:1,2,3,4,5。,APSP:习题(1),APSP:习题(2),C(0)(i, j)=c(i, j)C(1)(3,2)=minC(0)(3,2),C(0)(3,1)+C(0)(1,2)=7C(2)(1,3)=minC(1)(1,3), C(1)(1,2)+C(1)(2,3) =

18、min11,4+2=6C(3)(1,2)=min4,6+7=4C(3)(2,1)=min6,2+3=5,Maximum Noncrossing Subset of Nets:MNS,1 2 3 4 5 6 7 8 9 10,1 2 3 4 5 6 7 8 9 10,每个i 有唯一一个Ci对应,称为网(i,Ci)(i,Ci)与(j,Cj)组成非交叉子网,若(ij) 有(CiCj)定义MNS(i,j)=(u,Cu)| u i Cu j且任何两个子网是非交叉子网size(i,j)=| MNS(i,j)|上图中MNS(5,7)=(4,2)(5,5) size(5,7)=2,i,Ci,MNS:递归关系,

19、MNS 例题1,对上图有: size(1,j)=0, j=1,2,3,4,5,6,7 size(1,j)=1,j=8,9,10 因 C2 =7,所以size(2,j)=0 for j=1,6 size(2,7)=size(1,6)+1=0 size(2,8)=maxsize(1,8),size(1,6)+1=1,1 2 3 4 5 6 7 8 9 10,1 2 3 4 5 6 7 8 9 10,Ci,i,MNS 例题2,MNS:taceback,Nets 按i 编号如果size(i,j)!=size(i-1,j) 则MNS(i,j)包含net i令jCi1;重复上述过程2.,LCS: Long

20、est Common Subsequences,Given two sequences x1 . . m and y1 . . n, find a longest subsequence common to them bothStrategy: Consider prefixes of x and yDefine ci, j = | LCS(x1 . . i, y1 . . j) |Then, cm, n = | LCS(x, y) |.Recursive formulation,ci1, j1 + 1 if xi = yj, maxci1, j, ci, j1 otherwise.,ci,

21、j =,Hidden Markov Model,HMM = (I , O, A, B, )I= i1,.iN:set of stateO = v1,.,vM:set of observationA = aij,aij = p(It+1 = ij |It = ii): transition probability B = bik,bik = p(Ot = vk | It = ii): symbol probability = i, i = p(I1 = ii): init state distributionWhere:I= is the state sequenceO= is the outp

22、ut sequence,Three Problems of HMM,Evaluation: Given model and output sequence O, computing p(O| )Decoding: Given model and output sequence O, to find the state sequence X such that: maximize p(O, I| )Learning Given output sequence O, to find the model such that: maximize p(O, I| ),复习要求,根据优化原理列递归式设计实

23、现递归式的迭代算法(列表)应用0/1背包问题矩阵乘法链求各对点之间的最短路MNS要求会做实例;分析算法的复杂度,课堂练习(1),0/1背包问题: n=4,c=20,w=(10,15,6,9) p=(2,5,8,1) 产生元组集合P(1),P(2),P(3)和该背包问 实例的解证明当重量和效益值均为整数时动态规划算法的时间复杂度为 O(min2n,n1inpi ,nc) 提示:|P(i)| 1+ijnpj,课堂练习(2),子集和数问题:设S=s1,s2,.,sn 为n个正数的集合,试找出和数不超过M且最大的S的子集该问题是NP-难度问题,试用动态规划法设计一算法,练习(3),r=(10,20,5

24、0,1,100),给出优化的乘法顺序和元素乘法数目,练习(4),习题19,T(i,j)=任务i 按第j种方式所需时间(j=1,2)C(i,j)=任务i 按第j种方式所需成本(j=1,2)任务是拓扑排序的,必须先完成任务1才能完成任务2要求在时间t之前完成所有任务且成本最小cost(i,j)任务1到i能在j时间内完成的最小成本cost(1,j)= jT(1,1) =C(1,1) T(1,1)=jT(1,2) =minC(1,1),C(1,2) T(1,2)=j cost(i,j)=mincost(i-1,j-T(i,1)+C(i,1), cost(i-1,j-T(i,2)+C(i,2) 表示在时间j内无法安排前i个任务;,练习(4),上述列递归的方式称为从前向后(backward)也可按书上提示从后向前列递归设n3, T=(2,1,4;3,2,1) C=(1,5,2;2,3,4),t=8 分号前为第一种选择;分号后为第二种选择。计算优化的完成任务的方案。分析算法的复杂性,练习(5),习题20,假定一机器由n种元件组成。现有三个供应商:w(i,j)=供应商j提供的元件i的重量;c(i,j)=供应商j提供的元件i的成本(取整数值);求成本不超过c,机器重量最轻的采购方案同于习题19,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 校园应用

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com