《动态规划法》PPT课件.ppt
《《动态规划法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《动态规划法》PPT课件.ppt(67页珍藏版)》请在三一办公上搜索。
1、第6章 动态规划法,6.1 概 述,6.2 图问题中的动态规划法,6.3 组合问题中的动态规划法,6.4 查找问题中的动态规划法,6.5 实验项目最大子段和问题,6.1 概 述,6.1.1 最优化问题,6.1.2 最优性原理,6.1.3 动态规划法的设计思想,最优化问题:有n个输入,它的解由这n个输入的一个子集组成,这个子集必须满足某些事先给定的条件,这些条件称为约束条件,满足约束条件的解称为问题的可行解。满足约束条件的可行解可能不只一个,为了衡量这些可行解的优劣,事先给出一定的标准,这些标准通常以函数的形式给出,这些标准函数称为目标函数,使目标函数取得极值(极大或极小)的可行解称为最优解,这
2、类问题就称为最优化问题。,6.1.1 最优化问题,例:付款问题:超市的自动柜员机(POS机)要找给顾客数量最少的现金。假定POS机中有n张面值为pi(1in)的货币,用集合P=p1,p2,pn表示,如果POS机需支付的现金为A,那么,它必须从P中选取一个最小子集S,使得(式6.1),如果用向量X=(x1,x2,xn)表示S中所选取的货币,则(式6.2),那么,POS机支付的现金必须满足(式6.3),并且(式6.4),在付款问题中,集合P是该问题的输入,满足式6.1的解称为可行解,式6.2是解的表现形式,因为向量X中有n个元素,每个元素的取值为0或1,所以,可以有2n个不同的向量,所有这些向量的
3、全体构成该问题的解空间,式6.3是该问题的约束条件,式6.4是该问题的目标函数,使式6.4取得极小值的解称为该问题的最优解。,6.1.2 最优性原理,对于一个具有n个输入的最优化问题,其求解过程往往可以划分为若干个阶段,每一阶段的决策仅依赖于前一阶段的状态,由决策所采取的动作使状态发生转移,成为下一阶段决策的依据。从而,一个决策序列在不断变化的状态中产生。这个决策序列产生的过程称为多阶段决策过程。,在每一阶段的决策中有一个赖以决策的策略或目标,这种策略或目标是由问题的性质和特点所确定,通常以函数的形式表示并具有递推关系,称为动态规划函数。,多阶段决策过程满足最优性原理(Optimal Prin
4、ciple):无论决策过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的当前状态,构成一个最优决策序列。如果一个问题满足最优性原理通常称此问题具有最优子结构性质。,6.1.3 动态规划法的设计思想,动态规划法将待求解问题分解成若干个相互重叠的子问题,每个子问题对应决策过程的一个阶段,一般来说,子问题的重叠关系表现在对给定问题求解的递推关系(也就是动态规划函数)中,将子问题的解求解一次并填入表中,当需要再次求解此子问题时,可以通过查表获得该子问题的解而不用再次求解,从而避免了大量重复计算。,动态规划法的求解过程,n=5时分治法计算斐波那契数的过程。,例:计算斐波那契数:,动态
5、规划法求解斐波那契数F(9)的填表过程:,注意到,计算F(n)是以计算它的两个重叠子问题 F(n-1)和F(n-2)的形式来表达的,所以,可以设计一张表填入n+1个F(n)的值。,用动态规划法求解的问题具有特征:能够分解为相互重叠的若干子问题;满足最优性原理(也称最优子结构性质):该问题的最优解中也包含着其子问题的最优解。(用反证法)分析问题是否满足最优性原理:先假设由问题的最优解导出的子问题的解不是最优的;然后再证明在这个假设下可构造出比原问题最优解更好的解,从而导致矛盾。,动态规划法设计算法一般分成三个阶段:(1)分段:将原问题分解为若干个相互重叠的子问题;(2)分析:分析问题是否满足最优
6、性原理,找出动态规划函数的递推式;(3)求解:利用递推式自底向上计算,实现动态规划过程。动态规划法利用问题的最优性原理,以自底向上的方式从子问题的最优解逐步构造出整个问题的最优解。,6.2 图问题中的动态规划法,6.2.1 TSP问题,6.2.2 多段图的最短路径问题,6.2.1 TSP问题,TSP问题是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次然后回到出发城市,并要求所走的路程最短。各个城市间的距离可以用代价矩阵来表示。,设s,s1,s2,sp,s是从s出发的一条路径长度最短的简单回路,假设从s到下一个城市s1已经求出,则问题转化为求从s1到s的最短路径,显然s1,s2,sp,s一
7、定构成一条从s1到s的最短路径。如若不然,设s1,r1,r2,rq,s是一条从s1到s的最短路径且经过n-1个不同城市,则s,s1,r1,r2,rq,s将是一条从s出发的路径长度最短的简单回路且比s,s1,s2,sp,s要短,从而导致矛盾。所以,TSP问题满足最优性原理。,证明TSP问题满足最优性原理,假设从顶点i出发,令d(i,V)表示从顶点i出发经过V中各个顶点一次且仅一次,最后回到出发点i的最短路径长度,开始时,VVi,于是,TSP问题的动态规划函数为:d(i,V)=mincik+d(k,Vk)(kV)(式6.5)d(k,)=cki(ki)(式6.6),这是最后一个阶段的决策,而:d(1
8、,2,3)=minc12+d(2,3),c13+d(3,2)d(2,1,3)=minc21+d(1,3),c23+d(3,1)d(3,1,2)=minc31+d(1,2),c32+d(2,1)这一阶段的决策又依赖于下面的计算结果:d(1,2)=c12+d(2,)d(2,3)=c23+d(3,)d(3,2)=c32+d(2,)d(1,3)=c13+d(3,)d(2,1)=c21+d(1,)d(3,1)=c31+d(1,),从城市0出发经城市1、2、3然后回到城市0的最短路径长度是:d(0,1,2,3)=minc01+d(1,2,3),c02+d(2,1,3),c03+d(3,1,2),而下式可以
9、直接获得(括号中是该决策引起的状态转移):d(1,)=c10=5(10)d(2,)=c20=6(20)d(3,)=c30=3(30),再向前倒推,有:d(1,2)=c12+d(2,)=2+6=8(12)d(1,3)=c13+d(3,)=3+3=6(13)d(2,3)=c23+d(3,)=2+3=5(23)d(2,1)=c21+d(1,)=4+5=9(21)d(3,1)=c31+d(1,)=7+5=12(31)d(3,2)=c32+d(2,)=5+6=11(32)再向前倒退,有:d(1,2,3)=minc12+d(2,3),c13+d(3,2)=min2+5,3+11=7(12)d(2,1,3)
10、=minc21+d(1,3),c23+d(3,1)=min4+6,2+12=10(21),d(3,1,2)=minc31+d(1,2),c32+d(2,1)=min7+8,5+9=14(32)最后有:d(0,1,2,3)=minc01+d(1,2,3),c02+d(2,1,3),c03+d(3,1,2)=min3+7,6+10,7+14=10(01)所以,从顶点0出发的TSP问题的最短路径长度为10,路径是01230。,假设n个顶点用0n-1的数字编号,首先生成1n-1个元素的子集存放在数组V2n-1中,设数组dn2n-1存放迭代结果,其中dij表示从顶点i经过子集Vj中的顶点一次且仅一次,最
11、后回到出发点0的最短路径长度。,动态规划法求解TSP问题的填表过程,显然,算法6.1的时间复杂性为O(2n)。和蛮力法相比,动态规划法求解TSP问题,把原来的时间复杂性是O(n!)的排列问题,转化为组合问题,从而降低了算法的时间复杂性,但它仍需要指数时间。,设顶点之间的代价存放在数组cnn中,动态规划法求解TSP问题的算法如下:,6.2.2 多段图的最短路径问题,设图G=(V,E)是一个带权有向连通图,如果把顶点集合V划分成k个互不相交的子集Vi(2kn,1ik),使得E中的任何一条边(u,v),必有uVi,vVi+m(1ik,1i+mk),则称图G为多段图,称sV1为源点,tVk为终点。多段
12、图的最短路径问题是求从源点到终点的最小代价路径。,由于多段图将顶点划分为k个互不相交的子集,所以,多段图划分为k段,每一段包含顶点的一个子集。不失一般性,将多段图的顶点按照段的顺序进行编号,同一段内顶点的相互顺序无关紧要。假设图中的顶点个数为n,则源点s的编号为0,终点t的编号为n-1,并且,对图中的任何一条边(u,v),顶点u的编号小于顶点v的编号。,设s,s1,s2,sp,t是从s到t的一条最短路径,从源点s开始,设从s到下一段的顶点s1已经求出,则问题转化为求从s1到t的最短路径,显然s1,s2,sp,t一定构成一条从s1到t的最短路径,如若不然,设s1,r1,r2,rq,t是一条从s1
13、到t的最短路径,则s,s1,r1,r2,rq,t将是一条从s到t的路径且比s,s1,s2,sp,t的路径长度要短,从而导致矛盾。所以,多段图的最短路径问题满足最优性原理。,证明多段图问题满足最优性原理,对多段图的边(u,v),用cuv表示边上的权值,将从源点s到终点t的最短路径记为d(s,t),则从源点0到终点9的最短路径d(0,9)由下式确定:d(0,9)=minc01+d(1,9),c02+d(2,9),c03+d(3,9)这是最后一个阶段的决策,它依赖于d(1,9)、d(2,9)和d(3,9)的计算结果,而d(1,9)=minc14+d(4,9),c15+d(5,9)d(2,9)=min
14、c24+d(4,9),c25+d(5,9),c26+d(6,9)d(3,9)=minc35+d(5,9),c36+d(6,9)这一阶段的决策又依赖于d(4,9)、d(5,9)和d(6,9)的计算结果:,d(4,9)=minc47+d(7,9),c48+d(8,9)d(5,9)=minc57+d(7,9),c58+d(8,9)d(6,9)=minc67+d(7,9),c68+d(8,9)这一阶段的决策依赖于d(7,9)和d(8,9)的计算,而d(7,9)和d(8,9)可以直接获得(括号中给出了决策产生的状态转移):d(7,9)=c797(79)d(8,9)=c893(89)再向前推导,有:d(6
15、,9)=minc67+d(7,9),c68+d(8,9)=min6+7,5+3=8(68)d(5,9)=minc57+d(7,9),c58+d(8,9)=min8+7,6+3=9(58)d(4,9)=minc47+d(7,9),c48+d(8,9)=min5+7,6+3=9(48),d(3,9)=minc35+d(5,9),c36+d(6,9)=min4+9,7+8=13(35)d(2,9)=minc24+d(4,9),c25+d(5,9),c26+d(6,9)=min6+9,7+9,8+8=15(24)d(1,9)=minc14+d(4,9),c15+d(5,9)=min9+9,8+9=17
16、(15)d(0,9)=minc01+d(1,9),c02+d(2,9),c03+d(3,9)=min4+17,2+15,3+13=16(03)最后,得到最短路径为03589,长度为16。,下面考虑多段图的最短路径问题的填表形式。用一个数组costn作为存储子问题解的表格,costi表示从顶点i到终点n-1的最短路径,数组pathn存储状态,pathi表示从顶点i到终点n-1的路径上顶点i的下一个顶点。则:costi=mincij+costj(ijn且顶点j是顶点i的邻接点)(式6.7)pathi=使cij+costj最小的j(式6.8),算法6.2主要由三部分组成:第一部分是初始化部分,其时间
17、性能为O(n);第二部分是依次计算各个顶点到终点的最短路径,由两层嵌套的循环组成,外层循环执行n-1次,内层循环对所有出边进行计算,并且在所有循环中,每条出边只计算一次。假定图的边数为m,则这部分的时间性能是O(m);第三部分是输出最短路径经过的顶点,其时间性能是O(n)。所以,算法6.2的时间复杂性为O(n+m)。,6.3 组合问题中的动态规划法,6.3.1 0/1背包问题,6.3.2 最长公共子序列问题,6.3.1 0/1背包问题,在0/1背包问题中,物品i或者被装入背包,或者不被装入背包,设xi表示物品i装入背包的情况,则当xi=0时,表示物品i没有被装入背包,xi=1时,表示物品i被装
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态规划法 动态 规划 PPT 课件

链接地址:https://www.31ppt.com/p-5472803.html