收藏 分享(赏)

第3讲 动态规划.ppt

上传人:kpmy5893 文档编号:10093777 上传时间:2019-10-09 格式:PPT 页数:45 大小:561.50KB
下载 相关 举报
第3讲 动态规划.ppt_第1页
第1页 / 共45页
第3讲 动态规划.ppt_第2页
第2页 / 共45页
第3讲 动态规划.ppt_第3页
第3页 / 共45页
第3讲 动态规划.ppt_第4页
第4页 / 共45页
第3讲 动态规划.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、常用算法与程序设计 1 常用算法与程序设计 2 6 . 1 一般方法与求解步骤 6 . 2 装载问题 6. 3 插入乘号问题 6. 4 0 - 1 背包问题求解 6. 5 最长子序列探索 6 . 6 最优路径搜索 6 . 7 动态规划与其他算法的比较 常用算法与程序设计 3 3.1 一般方法与求解步骤 动态规划简介 动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法。 20世纪 50年代美国数学家贝尔曼( R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优性原理,创立了解决多阶段过程优化问题的新方法 动态规划。 动态规划问世以来,在经济管理、生产调度、工程技术和

2、最优控制等方面得到了广泛的应用。 常用算法与程序设计 4 3.1.1 一般方法 1. 几个概念 多阶段决策问题,是指这样的一类特殊的活动过程,问题可以分解成若干相互联系的阶段,在每一个阶段都要做出决策,形成一个决策序列,该决策序列也称为一个策略。 对于每一个决策序列,可以在满足问题的约束条件下用一个数值函数(即目标函数)衡量该策略的优劣。多阶段决策问题的最优化求解目标是获取导致问题最优值的最优决策序列(最优策略),即得到最优解。 常用算法与程序设计 5 2. 举例说明 【例 6.1 】 已知 6 种物品和一个可载重量为 60 的背包,物品 i ( i=1,2 , ,6 ) 的 重 量 为iw分

3、别为(15,17,20,12,9,14) , 产 生 的 效 益 为ip分别为(32,37,46,26,21,30) 。在装包时每一件物品可以装入,也可以不装,但不可拆开装。确定如何装包,使所得装包总效益最大。 这就是一个 多阶段决策问题 ,装每一件物品就是一个阶段 ,每一个阶段都要有一个 决策 :这一件物品装包还是不装。 这一装包问题的 约束条件 为6061iiiwx, 目标函数 为1,0,m a x61iiiixpx。 常用算法与程序设计 6 对于这 6 个阶段的问题,如果每一个阶段都面临 2 个选择,则共存在有 2 6 个决策序列。 应用贪心算法,按单位重量的效益从大到小装包,得第 1

4、件与第 6 件物品不装,依次装第 5,3,2,4 件物品,这就 是 一 个 决策序列 , 或 简 写 为 整 数 ix 的 序 列( 0 , 1 , 1 , 1 , 1 , 0 ) ,该策略所得总效益为 130 。 第 1 件与第 4 件物品不装,第 2,3,5,6 件物品装包,或简写为整数 ix 的序列 (0,1,1,0 ,1, 1) ,这一决策序列的总载重量为 60 ,满足约束条件,使 目标函数即装包总效益达最大值 134 ,即 最优值 为 134 ; 因而决策序列 ( 0 , 1 , 1 , 0 , 1 , 1 ) 为 最优决策序列 ,即 最优解 ,这是我们应用动态规划求解的目标。 常用

5、算法与程序设计 7 3. 最优性原理 最优性原理:“作为整个过程的最优策略具有这样的性质,无论过去的状态和决策如何 ,对前面的决策所形成的状态而言 ,余下的诸决策必须构成最优策略”。 也就是说 ,最优决策序列中的任何子序列都是最优的。 最优性原理体现为问题的最优子结构特性。当一个问题的最优解中包含了子问题的最优解时,则称该问题具有最优子结构特性。 最优子结构特性是动态规划求解问题的必要条件。 常用算法与程序设计 8 例如, 求得在数字串 847313926中插入 5个乘号,使乘积最大的最优解为: 8*4*731*3*92*6=38737152 该最优解包含了在 84731中插入 2个乘号使乘积

6、最大为 8*4*731;在 7313中插入 1个乘号使乘积最大为 731*3;在 3926中插入 2个乘号使乘积最大为3*92*6等子问题的最优解,这就是最优子结构特性。 最优性原理是动态规划的基础。任何一个问题,如果失去了这个最优性原理的支持,就不可能用动态规划设计求解。 4. 最优子结构特性 常用算法与程序设计 9 ( 1) 把所求最优化问题分成若干个阶段,找出最优解的性质,并刻划其结构特性。 ( 2) 将问题发展到各个阶段时所处不同的状态表示出来,确定各个阶段状态之间的递推关系,并确定初始(边界)条件。 ( 3) 应用递推求解最优值。 ( 4) 根据计算最优值时所得到的信息,构造最优解。

7、 构造最优解就是具体求出最优决策序列。通常在计算最优值时,根据问题具体实际记录更多的信息,根据所记录的信息构造出问题的最优解。 3.1.2 动态规划求解步骤 常用算法与程序设计 10 3.2 装载问题 【例 6.2 】 有 n 个集装箱要装上两艘载重量分别为 c 1 , c 2 的轮船,其中集装箱 i 的重量为iw, 且 .,21211 Nwccccwinii( 不考虑集装箱的体积 ) 。试求解一个合理的装载方案,把所有 n 个集装箱装上这两艘船。 (1) 问题求解策略 首先将第一艘船尽可能装满; 将剩余的集装箱装上第二艘船。 设装载量为 c1 的船最多可装 m a x c 1 ,如果满足不等

8、式 2111211m a x,1m a x1m a x ccwcccccwniinii则装载问题有解。 常用算法与程序设计 11 (2) 动态规划设计 目标函数: niiiwx1m a x, 约束条件: ),2,1,1,0(,111niNwcxcwxiiniii设 m ( i , j ) 为 船 C1 还有载重量 为 j, 可取 集装箱编号 范围为 :i,i+1, , n 的最大装载重量 值。 则 当 0 j =1;i-) /* 逆推计算 m(i,j) */ for(j=0;j=wi else 不装载 wi; if(所载集装箱重量 m(1,c1) 装载 wn. 常用算法与程序设计 14 3.3

9、 插入乘号问题 【 例 3.3】 在一个由 n个数字组成的数字串中插入 r个乘号 (1r=wn ) mnj=pn; /* 首先计算 m(n,j) */ else mnj=0; for(i=n-1;i=1;i-) /* 逆推计算 m(i,j) */ for(j=0;j=wi 装载 w(i). 其中 cw=c开始, cw=cw-x(i)*w(i). 否则 , x(i)=0,不装载 w(i) 。 最后,所装载的物品效益之和与最优值比较,决定 w(n)是否装载 。 常用算法与程序设计 24 3. 动态规划顺推设计 建立递推关系 设 g(i,j) 为背包容量 j, 可取 物品 范围为 : 1 , 2 ,

10、 i 的最大效益值。 则 当 0 j=w1 ) g1j=p1; /* 首先计算 g(1,j) */ else g1j=0; for(i=2;i=wi 装载 w(i). 其中 cw=c开始, cw=cw-x(i)*w(i). 否则 , x(i)=0,不装载 w(i) 。 最后,所装载的物品效益之和与最优值比较,决定 w(1)是否装载。 常用算法与程序设计 27 3.4.2 二维 0-1背包问题 【例 6.5 】 已知 n 种物品和一个可容纳 c 重量、 d容积的背包,物品 i 的重量为iw,容积为iv,产生的效益为ip。在装包时物品 i 可以装入,也可以不装,但不可拆开装,物 品 i 可产生的效

11、益为ii px,这里 Npwcxiii ,1,0。问如何装包,使效益最大。 本例在上例基础上增加了容积的约束条件。 递推关系: )()(),(,1(),1(m a x ()(0)(0),1(),(ipivkiwjimkjimivkoriwjkjimkjim )()( ivkandiwj 其中 w (i), v(i), p(i) 均为正整数 ,x(i) 0,1, i =1,2, , n 。 常用算法与程序设计 28 【 例 3.6】 给定一个由 n个正整数组成的序列,从该序列中删除若干个整数,使剩下的整数组成非降子序列,求最长的非降子序列。 (1) 建立递推关系 设置 b数组, b(i)表示序列

12、的第 i个数(保留第 i个数)到第 n个数中的最长非降子序列的长度,i=1,2,n 。对所有的 ji,比较当 a(j)a(i) 时的b(j)的最大值,显然 b(i)为这一最大值加 1,表示加上a(i)本身这一项。 因而有递推关系: b(i)=max(b(j)+1 (a(j)a(i),1i=1;i-) max=0;for(j=i+1;jmax) max=bj; bi=max+1; /* 逆推得 bi */ 逆推依次求得 b(n-1),b(1) ,比较这 n-1个值得其中的最大值 lmax,即为所求的最长非降子序列的长度即最优值 。 常用算法与程序设计 30 (3) 构造最优解 从序列的第 1项开始,依次输出 b(i)分别等于lmax,lmax-1,1 的项 a(i),这就是所求的一个最长非降子序列。 (4) 算法复杂度分析 以上动态规划算法的时间复杂度为 O(n2),空间复杂度为 O(n)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报