第6章动态规划法.ppt
《第6章动态规划法.ppt》由会员分享,可在线阅读,更多相关《第6章动态规划法.ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法设计与分析算法设计与分析第六章第六章 动态规划法动态规划法6.1 概概 述述 6.2 图问题中的动态规划法图问题中的动态规划法6.3 组合问题中的动态规划法组合问题中的动态规划法6.4 查找问题中的动态规划法查找问题中的动态规划法历史及研究问题历史及研究问题动态规划是运筹学的一个分支,动态规划是运筹学的一个分支,20世纪世纪50年代初美国年代初美国数学家数学家R.E.Bellman等人在研究多阶段决策过程的优化等人在研究多阶段决策过程的优化问题时,提出了著名的最优性原理,把多阶段过程转化问题时,提出了著名的最优性原理,把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程为一系列
2、单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法优化问题的新方法动态规划。动态规划。多阶段决策问题:求解的问题可以划分为一系列相互多阶段决策问题:求解的问题可以划分为一系列相互联系的阶段,在每个阶段都需要做出决策,且一个阶段联系的阶段,在每个阶段都需要做出决策,且一个阶段决策的选择会影响下一个阶段的决策,从而影响整个过决策的选择会影响下一个阶段的决策,从而影响整个过程的活动路线,求解的目标是选择各个阶段的决策是整程的活动路线,求解的目标是选择各个阶段的决策是整个过程达到最优。个过程达到最优。动态规划主要用于求解以时间划分阶段的动态过程的动态规划主要用于求解以时间划分阶段的动态过程的优化
3、问题,但是一些与时间无关的静态规划(如线性规优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),可以人为地引进时间因素,把它视划、非线性规划),可以人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。为多阶段决策过程,也可以用动态规划方法方便地求解。动态规划是考察问题的一种途径,或是求解某类问题动态规划是考察问题的一种途径,或是求解某类问题的一种方法。的一种方法。动态规划问世以来,在经济管理、生产调度、工程技动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、术和最优控制等方面得到了广泛的应用。例如最短路线、库存
4、管理、资源分配、设备更新、排序、装载等问题,库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比其它方法求解更为方便。用动态规划方法比其它方法求解更为方便。6.1 概概 述述 6.1.1最优化问题最优化问题6.1.2最优性原理最优性原理6.1.3动态规划法的设计思想动态规划法的设计思想付付款款问问题题:超超市市的的自自动动柜柜员员机机(POS机机)要要找找给给顾顾客客数数量量最最少少的的现现金金。例例如如,要要找找4元元6角角现现金金,如如果果POS机机送送出出一一大大堆堆硬硬币币,比比如如46个个1角角钱钱,就就让让人人笑笑话话了了,而最好找而最好找2个个2元、元、1个个5角和角
5、和1个个1角。角。假假定定POS机机中中有有n张张面面值值为为pi(1in)的的货货币币,用用集集合合P=p1,p2,pn表表示示,如如果果POS机机需需支支付付的的现现金金为为A,那么,它必须从那么,它必须从P中选取一个最小子集中选取一个最小子集S,使得使得(式(式6.1)如果用向量如果用向量X=(x1,x2,xn)表示表示S中所选取的货币,中所选取的货币,则则(式(式6.2)6.1.1最优化问题最优化问题那么,那么,POS机支付的现金必须满足机支付的现金必须满足 (式(式6.3)集合集合P是该问题的输入,满足式是该问题的输入,满足式6.1的解称为可行解,式的解称为可行解,式6.2是解的表现
6、形式,因为向量是解的表现形式,因为向量X中有中有n个元素,每个元个元素,每个元素的取值为素的取值为0或或1,所以,可以有,所以,可以有2n个不同的向量,所有个不同的向量,所有这些向量的全体构成该问题的解空间,式这些向量的全体构成该问题的解空间,式6.3是该问题是该问题的约束条件,式的约束条件,式6.4是该问题的目标函数,使式是该问题的目标函数,使式6.4取得取得极小值的解称为该问题的最优解。极小值的解称为该问题的最优解。并且并且 (式(式6.4)该问题有该问题有n个输入,它的解由这个输入,它的解由这n个输入的一个子集组成,个输入的一个子集组成,这个子集必须满足某些事先给定的条件,这些条件称为这
7、个子集必须满足某些事先给定的条件,这些条件称为约束条件约束条件,满足约束条件的解称为问题的,满足约束条件的解称为问题的可行解可行解。满足。满足约束条件的可行解可能不只一个,为了衡量这些可行解约束条件的可行解可能不只一个,为了衡量这些可行解的优劣,事先给出一定的标准,这些标准通常以函数的的优劣,事先给出一定的标准,这些标准通常以函数的形式给出,这些标准函数称为形式给出,这些标准函数称为目标函数目标函数,使目标函数取,使目标函数取得极值(极大或极小)的可行解称为最优解,这类问题得极值(极大或极小)的可行解称为最优解,这类问题就称为就称为最优化问题最优化问题。6.1.2最优性原理最优性原理基本概念:
8、基本概念:状态:表示每个阶段开始时,问题或系统所处的客观状态:表示每个阶段开始时,问题或系统所处的客观状况。状态既是该阶段的某个起点,又是前一个阶段的状况。状态既是该阶段的某个起点,又是前一个阶段的某个终点。通常一个阶段有若干个状态。某个终点。通常一个阶段有若干个状态。状态无后效性:如果某个阶段状态给定后,则该阶段状态无后效性:如果某个阶段状态给定后,则该阶段以后过程的发展不受该阶段以前各阶段状态的影响,也以后过程的发展不受该阶段以前各阶段状态的影响,也就是说状态具有马尔科夫性。就是说状态具有马尔科夫性。适于动态规划法求解的问题具有状态的无后效性适于动态规划法求解的问题具有状态的无后效性 策略
9、:各个阶段决策确定后,就组成了一个决策序列,策略:各个阶段决策确定后,就组成了一个决策序列,该序列称之为一个策略。由某个阶段开始到终止阶段的该序列称之为一个策略。由某个阶段开始到终止阶段的过程称为子过程,其对应的某个策略称为子策略。过程称为子过程,其对应的某个策略称为子策略。6.1.2最优性原理最优性原理对对于于一一个个具具有有n个个输输入入的的最最优优化化问问题题,其其求求解解过过程程往往往往可可以以划划分分为为若若干干个个阶阶段段,每每一一阶阶段段的的决决策策仅仅依依赖赖于于前前一一阶阶段段的的状状态态,由由决决策策所所采采取取的的动动作作使使状状态态发发生生转转移移,成成为为下下一一阶阶
10、段段决决策策的的依依据据。如如图图6.16.1所所示示,S S0 0是是初初始始状状态态,依依据据此此状状态态作作出出决决策策P P1 1,按按照照P P1 1所所采采取取的的动动作作,使使状状态态转转换换为为S S1 1,依依据据状状态态S S1 1作作出出决决策策P P2 2,按按照照P P2 2所所采采取取的的动动作作,使使状状态态S S1 1转转换换为为S S2 2,经经过过一一系系列列的的决决策策和和状状态态转转换换,到到达达最最终终状状态态S Sn n,从从而而,一一个个决决策策序序列列在在不不断断变变化化的的状状态态中中产产生生。这这个个决决策策序序列列产产生生的的过程称为多阶段
11、决策过程。过程称为多阶段决策过程。S0P1P2Pn图图6.1多阶段决策过程多阶段决策过程S1S2Sn-1Sn最优性原理最优性原理(Optimal Principle):无论决策过程的初始状态和):无论决策过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的当前初始决策是什么,其余的决策都必须相对于初始决策所产生的当前状态,构成一个最优决策序列。换言之,在多阶段决策中,各子问状态,构成一个最优决策序列。换言之,在多阶段决策中,各子问题的解只与它前面的子问题的解相关,而且各子问题的解都是相对题的解只与它前面的子问题的解相关,而且各子问题的解都是相对于当前状态的最优解,整个问题的最
12、优解是由各个子问题的最优解于当前状态的最优解,整个问题的最优解是由各个子问题的最优解构成。如果一个问题满足最优性原理通常称此问题具有构成。如果一个问题满足最优性原理通常称此问题具有最优子结构最优子结构性质。性质。最优性原理最优性原理u无论过程的初始状态和初始决策是什么,其余的决无论过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的状态构成一个最优策都必须相对于初始决策所产生的状态构成一个最优决策序列。决策序列。u原理告诉我们,一个最优问题的任何实例的最优解原理告诉我们,一个最优问题的任何实例的最优解是由该实例的子实例的最优解组成。是由该实例的子实例的最优解组成。u一般来说,
13、如果所求解问题对于最优性原理成立,一般来说,如果所求解问题对于最优性原理成立,则说明用动态规划方法有可能解决该问题。而解决问则说明用动态规划方法有可能解决该问题。而解决问题的关键在于获取各阶段问的递推关系式。题的关键在于获取各阶段问的递推关系式。6.1.3动态规划法的设计思想动态规划法的设计思想动态规划法将待求解问题分解成若干个相互重叠的子问动态规划法将待求解问题分解成若干个相互重叠的子问题,每个子问题对应决策过程的一个阶段,一般来说,题,每个子问题对应决策过程的一个阶段,一般来说,子问题的重叠关系表现在对给定问题求解的递推关系子问题的重叠关系表现在对给定问题求解的递推关系(也就是动态规划函数
14、)中,将子问题的解求解一次并(也就是动态规划函数)中,将子问题的解求解一次并填入表中,当需要再次求解此子问题时,可以通过查表填入表中,当需要再次求解此子问题时,可以通过查表获得该子问题的解而不用再次求解,从而避免了大量重获得该子问题的解而不用再次求解,从而避免了大量重复计算。为了达到这个目的,可以用一个表来记录所有复计算。为了达到这个目的,可以用一个表来记录所有已解决的子问题的解,这就是动态规划法的设计思想。已解决的子问题的解,这就是动态规划法的设计思想。具体的动态规划法是多种多样的,但他们具有相同的填具体的动态规划法是多种多样的,但他们具有相同的填表形式。表形式。原问题的解原问题的解原问题原
15、问题图图6.3动态规划法的求解过程动态规划法的求解过程填填表表子问题子问题1子问题子问题2子问题子问题n划分阶段:划分阶段:按照问题的时间或空间特征,把问题分为若干个阶段。按照问题的时间或空间特征,把问题分为若干个阶段。选择状态:选择状态:将问题发展到各个阶段时所处于的各种客观情况用不同将问题发展到各个阶段时所处于的各种客观情况用不同的状态表示出来。的状态表示出来。确定决策并写出状态转移方程:确定决策并写出状态转移方程:状态转移就是根据上一阶段的状态和决策来导出本阶段状态转移就是根据上一阶段的状态和决策来导出本阶段的状态。的状态。写出规划方程(包括边界条件):写出规划方程(包括边界条件):动态
16、规划的基本方程是规划方程的通用形式化表达式。动态规划的基本方程是规划方程的通用形式化表达式。动态规划算法的基本步骤动态规划算法的基本步骤可以用动态规划法求解的问题除了能够分解为相互重叠的可以用动态规划法求解的问题除了能够分解为相互重叠的若干子问题外,还要满足最优性原理(也称最优子结构性若干子问题外,还要满足最优性原理(也称最优子结构性质),这类问题具有如下特征:该问题的最优解中也包含质),这类问题具有如下特征:该问题的最优解中也包含着其子问题的最优解。在分析问题是否满足最优性原理时,着其子问题的最优解。在分析问题是否满足最优性原理时,通常先假设由问题的最优解导出的子问题的解不是最优的,通常先假
17、设由问题的最优解导出的子问题的解不是最优的,然后再设法说明在这个假设下可构造出比原问题最优解更然后再设法说明在这个假设下可构造出比原问题最优解更好的解,从而导致矛盾。好的解,从而导致矛盾。动动态态规规划划法法利利用用问问题题的的最最优优性性原原理理,以以自自底底向向上上的的方方式式从从子子问问题题的的最最优优解解逐逐步步构构造造出出整整个个问问题题的的最最优优解解。应应用用动态规划法设计算法一般分成三个阶段:动态规划法设计算法一般分成三个阶段:(1 1)分段:将原问题分解为若干个相互重叠的子问题;)分段:将原问题分解为若干个相互重叠的子问题;(2 2)分分析析:分分析析问问题题是是否否满满足足
18、最最优优性性原原理理,找找出出动动态态规规划划函数的递推式;函数的递推式;(3 3)求解:利用递推式自底向上计算,实现动态规划过程。)求解:利用递推式自底向上计算,实现动态规划过程。6.2图问题中的动态规划法图问题中的动态规划法6.2.1TSP问题问题6.2.2多段图的最短路径问题多段图的最短路径问题6.2.1TSP问题问题TSP问题问题是指旅行家要旅行是指旅行家要旅行n个城市,要个城市,要求各个城市求各个城市经历经历且且仅经历仅经历一次然后回到一次然后回到出出发发城市,并要求所走的路程最短。城市,并要求所走的路程最短。各个城市各个城市间间的距离可以用代价矩的距离可以用代价矩阵阵来表来表示,如
19、果示,如果(i,j)E,则则cij。假设从顶点假设从顶点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)从城市从城市0出发,经城市出发,经城市1、2、3然后回到城市然后回到城市0的最短路的最短路径长度是:径长度是:d(0,1,2,3)=minc01+d(1,2,3),c02
20、+d(2,1,3),c03+d(3,1,2)这这是是最最后后一一个个阶阶段段的的决决策策,它它必必须须依依据据d(1,2,3)、d(2,1,3)和和d(3,1,2)的计算结果,而:的计算结果,而:d(1,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
21、(2,1)=c21+d(1,)d(3,1)=c31+d(1,)而而下下式式可可以以直直接接获获得得(括括号号中中是是该该决决策策引引起起的的状状态态转转移移):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)再
22、向推导,有:再向推导,有:d(1,2,3)=minc12+d(2,3),c13+d(3,2)=min2+5,3+11=7(12)d(2,1,3)=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,路路径径是是0123
23、0。假设对假设对n n个顶点分别用个顶点分别用0 0n-1n-1的数字编号,考虑从顶点的数字编号,考虑从顶点0 0出发求解出发求解TSPTSP问题的填表形式。首先,按个数为问题的填表形式。首先,按个数为1 1、2 2、n-1n-1的顺序生成的顺序生成1 1n-1n-1个元素的子集存放在数组个元素的子集存放在数组V2n-1V2n-1中,例如当中,例如当n=4n=4时,时,V1=1,V2=2,V3=3,V4=1,2,V5=1,3,V1=1,V2=2,V3=3,V4=1,2,V5=1,3,V6=2,3,V7=1,2,3V6=2,3,V7=1,2,3。设数组。设数组dn2n-1存放迭代结果,存放迭代结
24、果,其中其中dij表示从顶点表示从顶点i经过子集经过子集Vj中的顶点一次且仅一次,最后中的顶点一次且仅一次,最后回到出发点回到出发点0的最短路径长度。首先,根据式的最短路径长度。首先,根据式6.6将数组将数组d的第的第0列初列初始化,然后根据式始化,然后根据式6.5逐列计算,其填表过程如图所示。逐列计算,其填表过程如图所示。ji1231,21,32,31,2,30101586726951033121114图6.7动态规划法的填表过程设顶点之间的代价存放在数组cnn中,动态规划法求解TSP问题的算法如下:算法算法6.1TSP问题问题1for(i=1;in;i+)/初始化第初始化第0列列di0=c
25、i0;2for(j=1;j2n-1-1;j+)for(i=1;i=0;i-)2.1对顶点对顶点i的每一个邻接点的每一个邻接点j,根据式根据式6.7计算计算costi;2.2根据式根据式6.8计算计算pathi;3输出最短路径长度输出最短路径长度cost0;4.输出最短路径经过的顶点:输出最短路径经过的顶点:4.1i=04.2循环直到循环直到pathi=n-14.2.1输出输出pathi;4.2.2i=pathi;动态规划法求解多段图的最短路径问题的算法动态规划法求解多段图的最短路径问题的算法6.3 6.3 组合问题中的动态规划法组合问题中的动态规划法 6.3.1 0/16.3.1 0/1背包问
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 章动 规划
限制150内