书签 分享 收藏 举报 版权申诉 / 31
上传文档赚钱

类型动态规划之01背包概要课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5215142
  • 上传时间:2023-02-17
  • 格式:PPT
  • 页数:31
  • 大小:350.17KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《动态规划之01背包概要课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    动态 规划 01 背包 概要 课件
    资源描述:

    1、1 学习要点学习要点:n理解动态规划算法的概念。理解动态规划算法的概念。n掌握动态规划算法的基本要素掌握动态规划算法的基本要素(1 1)最优子结构性质)最优子结构性质(2 2)重叠子问题性质)重叠子问题性质n掌握设计动态规划算法的步骤。掌握设计动态规划算法的步骤。(1)(1)找出找出最优解最优解的性质,并刻划其结构特征。的性质,并刻划其结构特征。(2)(2)递归地定义最优值。递归地定义最优值。(3)(3)以以自底向上自底向上的方式计算出最优值。的方式计算出最优值。(4)(4)根据计算最优值时得到的信息,构造最优解。根据计算最优值时得到的信息,构造最优解。2n动态规划法的定义:在求解问题中,对于

    2、动态规划法的定义:在求解问题中,对于每一步决策每一步决策,列出各种,列出各种可能的局部解可能的局部解,再,再依据某种依据某种判定条件判定条件,舍弃那些肯定不能得,舍弃那些肯定不能得到最优解到最优解的局部解,在每一步都经过筛选,的局部解,在每一步都经过筛选,以每一步都是最优解来保证以每一步都是最优解来保证全局全局是最优解。是最优解。n动态规划通常应用于最优化问题,即动态规划通常应用于最优化问题,即做出做出一组选择以达到一个最优解一组选择以达到一个最优解。关键是存储。关键是存储子问题子问题的每一个解,以备它的每一个解,以备它重复出现重复出现。3n动态规划算法与分治法类似,其基本思想动态规划算法与分

    3、治法类似,其基本思想也是将待求解问题分解成若干个子问题。也是将待求解问题分解成若干个子问题。n但是经但是经分解得到的子问题往往不是互相分解得到的子问题往往不是互相独立的独立的。不同子问题的数目常常只有多。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子项式量级。在用分治法求解时,有些子问题被重复计算了许多次。问题被重复计算了许多次。4n 问题问题4-14-1:存在一个数字三角形,从顶到底有多:存在一个数字三角形,从顶到底有多条路径,条路径,每一步可沿每一步可沿左斜线向下或垂直向下左斜线向下或垂直向下。路径。路径所经过的数字之和称为路径得分,要求求出最小路所经过的数字之和称为路径得分

    4、,要求求出最小路径得分。径得分。n状态表示状态表示1-1 1-1 用一元组用一元组D D(X X)描述问题,)描述问题,D D(X X)表)表示从顶到达第示从顶到达第X X层的得分。但是一元组层的得分。但是一元组D D(X X)描述的子问题不能满足最优子)描述的子问题不能满足最优子结构性质,因为结构性质,因为D D(X X)的最优解可能)的最优解可能不包含子问题不包含子问题D D(X-IX-I)的最优解。这)的最优解。这样,动态规划方法是无法在状态表示样,动态规划方法是无法在状态表示1-11-1上应用。上应用。动态规划对状态表示的要求动态规划对状态表示的要求 5n状态表示状态表示 1-2 1-

    5、2 用二元组用二元组D D(X X,Y Y)描述问题,)描述问题,D D(X X,Y Y)表示到达第)表示到达第X X层第层第Y Y个位置时的得分,那么个位置时的得分,那么 D D(X X,Y Y)的最优解包)的最优解包含了子问题含了子问题D D(X+1X+1,Y Y)或)或D D(X+1X+1,Y-1Y-1)的最优解,)的最优解,状态转移方程为状态转移方程为 :D D(X X,Y Y)=minD(X+1,Y),D(X+1,Y-1)+AX,Y=minD(X+1,Y),D(X+1,Y-1)+AX,Y D D(4 4,*)=A4,=A4,*6D(i,j)1234567816725668363455

    6、3438123812D(X,Y)=min D(X+1,Y),D(X+1,Y-1)+AX,Y 7声明部分;声明部分;输入输入a数组数组,M行行N列;列;/下标从下标从1开始开始for(j=1;j=1;i-)/自底向上自底向上DP for(j=M-i+1,n=1;n=2*i;j+,n+)Dij=min(Di+1j,Di+1,j-1)+aij;coutmin(D1);/输出第一行最小值输出第一行最小值8D(i,j)123456781112343436566649136897D(X,Y)=min D(X-1,Y),D(X-1,Y+1)+AX,Y 9动态规划设计一般要经历以下几个步骤:动态规划设计一般要

    7、经历以下几个步骤:1 1、划分、划分阶段阶段:按照问题的时间或空间特征,把问题:按照问题的时间或空间特征,把问题分为若干个阶段。分为若干个阶段。2 2、确定、确定状态状态:将问题发展到各个阶段时所处的各种:将问题发展到各个阶段时所处的各种客观情况用不同的状态表示出来。客观情况用不同的状态表示出来。3 3、确定决策并写出、确定决策并写出状态转移方程状态转移方程:因为决策和状态:因为决策和状态转移有着天然的联系,状态转移就是根据上一阶段转移有着天然的联系,状态转移就是根据上一阶段的状态和决策来导出本阶段的状态,所以如果确定的状态和决策来导出本阶段的状态,所以如果确定了决策,状态转移方程也就可以写出

    8、。了决策,状态转移方程也就可以写出。4 4、寻找、寻找边界条件边界条件:给出的状态转移方程是一个递推:给出的状态转移方程是一个递推式,需要一个式,需要一个递推的终止条件或边界条件递推的终止条件或边界条件。5 5、程序设计实现:动态规划的主要难点在于理论上、程序设计实现:动态规划的主要难点在于理论上的设计,一旦设计完成,实现部分就会非常简单。的设计,一旦设计完成,实现部分就会非常简单。101 1、阶段:把问题分成几个相互联系的有顺序的几、阶段:把问题分成几个相互联系的有顺序的几个个环节环节,这些环节即称为阶段。,这些环节即称为阶段。2 2、状态:某一阶段的出发、状态:某一阶段的出发位置位置称为状

    9、态。称为状态。3 3、决策:从某阶段的一个状态演变到下一个阶段、决策:从某阶段的一个状态演变到下一个阶段某状态的某状态的选择选择。4 4、状态转移方程:前一阶段的终点就是后一阶段、状态转移方程:前一阶段的终点就是后一阶段的起点,前一阶段的决策选择导出了后一阶段的状的起点,前一阶段的决策选择导出了后一阶段的状态,这种关系描述了由态,这种关系描述了由k k阶段到阶段到k+1k+1阶段状态的演变阶段状态的演变规律,称为状态转移方程。规律,称为状态转移方程。11n动态规划与一般搜索技术最大不同的地方就是动态规划与一般搜索技术最大不同的地方就是记录了已求解过的问题的结果。记录了已求解过的问题的结果。n子

    10、问题的记录:子问题的记录:q最重要、最为复杂最重要、最为复杂q状态表示状态表示q用一个数、一组数或一个向量来实现状态表示用一个数、一组数或一个向量来实现状态表示n子问题结果的记录子问题结果的记录12n找出最优解的性质,并刻划其结构特征。找出最优解的性质,并刻划其结构特征。n递归地定义最优值递归地定义最优值。n以以自底向上自底向上的方式计算出最优值。的方式计算出最优值。n根据计算最优值时得到的信息,构造最优根据计算最优值时得到的信息,构造最优解。解。在动态规划中,可将一个问题的解决方案视为一在动态规划中,可将一个问题的解决方案视为一系列决策的结果。不同的是,在贪婪算法中,每系列决策的结果。不同的

    11、是,在贪婪算法中,每采用一次贪婪准则便做出一个不可撤回的决策,采用一次贪婪准则便做出一个不可撤回的决策,而在动态规划中,还要考察每个最优决策序列中而在动态规划中,还要考察每个最优决策序列中是否包含一个最优子序列。是否包含一个最优子序列。13动态规划设计的一般模式:动态规划设计的一般模式:for k=阶段最小值阶段最小值 to 阶段最大值阶段最大值 do /顺推每一个阶段顺推每一个阶段 for i=状态最小值状态最小值 to 状态最大值状态最大值 do /枚举阶段枚举阶段k的每一个状态的每一个状态 for j=决策最小值决策最小值 to 决策最大值决策最大值 do /枚举阶段枚举阶段k中状态中状

    12、态i可选择的每一种决策可选择的每一种决策fik=min(max)fik-1+aik-1,jk-1|ik-1通过决策通过决策jk-1可达可达ik14某个问题的最优解包含着其子问题的最优解某个问题的最优解包含着其子问题的最优解。这种性。这种性质称为质称为最优子结构性质最优子结构性质。例如图中,若路线例如图中,若路线I和和J是是A到到C的最的最优路径,则根据最优化原理,路线优路径,则根据最优化原理,路线J必是从必是从B到到C的最优路线。的最优路线。用反证法证明:假设有另一路径用反证法证明:假设有另一路径J是是B到到C的最优路径,则的最优路径,则A到到C的的路线取路线取I和和J比比I和和J更优,矛盾。

    13、从更优,矛盾。从而证明而证明J必是必是B到到C的最优路径。的最优路径。最优子结构是问题能用动态规划算最优子结构是问题能用动态规划算法求解的前提。法求解的前提。15递归算法求解问题时,每次产生的子问题并不递归算法求解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次。总是新问题,有些子问题被反复计算多次。这这种性质称为种性质称为子问题的重叠性质子问题的重叠性质。动态规划算法对每一个子问题只解一次,而后动态规划算法对每一个子问题只解一次,而后将其解保存在一个表格中,当再次需要解此子问将其解保存在一个表格中,当再次需要解此子问题时,只是简单地用常数时间查看一下结果。题时,只是简单地用常

    14、数时间查看一下结果。通常不同的子问题个数随问题的大小呈多项式增通常不同的子问题个数随问题的大小呈多项式增长。因此用动态规划算法只需要多项式时间,从而长。因此用动态规划算法只需要多项式时间,从而获得较高的解题效率。获得较高的解题效率。16备忘录方法的控制结构与直接递归方法的控制备忘录方法的控制结构与直接递归方法的控制结构相同,区别在于备忘录方法结构相同,区别在于备忘录方法为每个解过的子为每个解过的子问题建立了备忘录问题建立了备忘录以备需要时查看,避免了相同以备需要时查看,避免了相同子问题的重复求解。子问题的重复求解。步骤:步骤:为每个问题建立一个记录项,初值设为一个特为每个问题建立一个记录项,初

    15、值设为一个特殊值(表未求解)殊值(表未求解)每个待求解子问题,首先查记录项,有解答则每个待求解子问题,首先查记录项,有解答则直接选取,否则求解该子问题。直接选取,否则求解该子问题。17问题描述问题描述给定给定n种物品和一背包。物品种物品和一背包。物品i的重的重量是量是wi,其价值为,其价值为vi,背包的容量为,背包的容量为C。问。问应如何选择装入背包的物品,使得装入背包应如何选择装入背包的物品,使得装入背包中物品的总价值最大中物品的总价值最大?0-1背包问题是一个特殊的整数规划问题。背包问题是一个特殊的整数规划问题。niiixv1maxnixCxwiniii1,1,01181、减小规模、减小规

    16、模m(i,j)是背包容量为是背包容量为j,可选择物品为,可选择物品为i,i+1,n时时0-1背包问题的最优值。背包问题的最优值。m(i+1,j)可选择物品为可选择物品为i+1,n时时0-1背包问背包问题的最优值。题的最优值。m(n,j)可选择物品为可选择物品为n时时0-1背包问题的最优值。背包问题的最优值。规模已经为规模已经为1nnnwjwjvjnm00),(192、推导递归式,判断第、推导递归式,判断第i件?件?1)不放,背包当前产生价值仍为)不放,背包当前产生价值仍为m(i+1,j);2)放入,调整背包容量)放入,调整背包容量j-wi,背包当前产,背包当前产生价值为生价值为 m(i+1,j

    17、-wi)+vi20m(i,j)是背包容量为是背包容量为j,可选择物品为,可选择物品为i,i+1,n时时0-1背包问题的最优值。背包问题的最优值。由由0-1背包问题的最优子结构性质,可以建立背包问题的最优子结构性质,可以建立计算计算m(i,j)的递归式如下的递归式如下:iiiiwjwjjimvwjimjimjim0),1(),1(),1(max),(nnnwjwjvjnm00),(void KnapSack(int v,int w,int c,int n,int m11)int jMax=min(wn,c);for(j=0;jjMax;j+)/当当 0=jwn时时,m(n,j)=0 mnj=0;

    18、for(j=wn;j=wn时时,m(n,j)=vnmnj=vn;for(i=n-1;i=1;i-)/DP int jMax=min(wi,c);for(j=0;jjMax;j+)/m(i,j)=m(i+1,j)当当0=jwi mij=mi+1j;for(j=wi;j=wn mij=max(mi+1j,mi+1j-wi+vi);cout2n时,算法需要时,算法需要(n2n)计算时间。计算时间。m(i,j)值值0 1 2 3 4 5 6 7 8 9 1012345N=5,c=10,w=2,2,6,5,4,v=6,3,5,4,6m(i,j)是背包是背包容量为容量为j,可选,可选择物品为择物品为i,i

    19、+1,n时时0-1背包问题的背包问题的最优值最优值24用倒推法来求出每种物品是否选中。选中用倒推法来求出每种物品是否选中。选中1,2,5三件物三件物品,最高价值品,最高价值15,总重,总重8。void traceback(int m11,int w,int c,int n,int x)for(i=1;i0?1:0);N=5,c=10,w=2,2,6,5,4,v=6,3,5,4,6251、减小规模、减小规模m(i,j)是背包容量为是背包容量为j,可选择物品为,可选择物品为1,2,3.i时时0-1背包问题的最优值。背包问题的最优值。m(i+1,j)可选择物品为可选择物品为1,2,3.i,i+1时时

    20、0-1背包问背包问题的最优值。题的最优值。m(1,j)可选择物品为可选择物品为1时时0-1背包问题的最优值。背包问题的最优值。规模已经为规模已经为1111(1,)00jwvmjjw262、推导递归式,判断是否放入第、推导递归式,判断是否放入第i件?件?1)不放,背包当前产生价值仍为)不放,背包当前产生价值仍为m(i-1,j);2)放入,调整背包容量)放入,调整背包容量j-wi,背包当前产生,背包当前产生价值为价值为 m(i-1,j-wi)+Vimax(1,),(1,)(,)0(1,)iiiijwm ij m ijwvm i jjwm ij111(1,)00jwvmjjw27N=5,c=10,w

    21、=2,2,6,5,4,v=6,3,5,4,6m(i,j)01234567891010066666666620066999999930066999911111440066999101113145006699121215151528某工厂预计明年有某工厂预计明年有A,B,C,D四个新四个新建项目,每个项目的投资额建项目,每个项目的投资额 wk及其及其投资后的收益投资后的收益 vk如下表所示。投资如下表所示。投资总额为总额为30万元,问如何选择项目才万元,问如何选择项目才能使总收益最大。能使总收益最大。n上述问题的静态规划模型如下:上述问题的静态规划模型如下:项目项目wkvkA1512B108C12

    22、9D85 项入选项入选项未入选项未入选 1 030)(maxkkxxwxvxfkkkkkkk291、描述该问题的最优解、描述该问题的最优解 若若x1 x2.xn是使总收益最大的最优解是使总收益最大的最优解(xi 0,1),此时总投,此时总投资额为资额为C,投资项目的选择范围为,投资项目的选择范围为1n,我们将这个最优解记为,我们将这个最优解记为m1c;则则x2 x3.xn也必定是在总投资额为也必定是在总投资额为c-w1x1(当当x1=0时为时为c,x1=1时为时为c-w1),投资项目的选择范围为,投资项目的选择范围为2n时的子问题的最优解,时的子问题的最优解,我们将其记为我们将其记为m2c-w

    23、1x1;此时我们需要证明这一结论,用反证法即可。此时我们需要证明这一结论,用反证法即可。证明:证明:假设假设x2 x3.xn不是当前状态的最优解,则必定存在一个解不是当前状态的最优解,则必定存在一个解z2 z3.zn为最优解,这样对于整个问题的最优解就应该是为最优解,这样对于整个问题的最优解就应该是x1 z2 z3.Zn。这显然与这显然与x1 x2.xn为最优解相矛盾,故假设不成立,为最优解相矛盾,故假设不成立,得证。得证。2、递归定义最优解、递归定义最优解若我们把投资总额为若我们把投资总额为j,投资项目的选择范围为,投资项目的选择范围为in时时的问题的最优解定义为的问题的最优解定义为mij;

    24、显然,按照第一步的模式,显然,按照第一步的模式,m1c的子问题的最优解的子问题的最优解为为m2c-w1x1,那么,那么mij的子问题的最优解就应该为的子问题的最优解就应该为mi+1j-wixi;于是我们可以把这个问题递归定义为:于是我们可以把这个问题递归定义为:mij=maxmi+1j,mi+1j-wi+vi(这两项是由(这两项是由xi的两种的两种取值不同而来的)取值不同而来的)再根据再根据j的取值范围我们便可以得到这个问题的递归的取值范围我们便可以得到这个问题的递归式:式:iiiiwjwjjimvwjimjimjim011,1maxnnnwjwjvjnm00边界条件为:313、以自底向上的方式计算出最优值、以自底向上的方式计算出最优值void KnapSack(int v,int w,int c,int n,int m11)int jMax=min(wn-1,c);for(j=0;j=jMax;j+)mnj=0;for(j=wn;j1;i-)int jMax=min(wi-1,c);for(j=0;j=jMax;j+)mij=mi+1j;for(j=wi;j=w1)m1c=max(m1c,m2c-w1+v1);

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:动态规划之01背包概要课件.ppt
    链接地址:https://www.163wenku.com/p-5215142.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库