动态规划算法课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《动态规划算法课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 规划 算法 课件
- 资源描述:
-
1、1 动态规划动态规划3.1 动态规划的设计思想动态规划的设计思想3.2 动态规划的设计要素动态规划的设计要素3.3 动态规划算法动态规划算法的典型应用的典型应用 3.3.1 投资问题投资问题 3.3.2 背包问题背包问题 3.3.3 最长公共子序列最长公共子序列LCS 3.3.4 图像压缩图像压缩 3.3.5 最大子段和最大子段和 3.3.6 最优二分检索树最优二分检索树 3.3.7 生生物信息学中的动态规划算法物信息学中的动态规划算法20-1背包问题的建模背包问题的建模一、一、问题描述问题描述:有有n 个物品,它们有各自的重量和价值,现个物品,它们有各自的重量和价值,现有给定容量的背包,如何
2、让背包里装入的物品具有最大的价值有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?总和?二、二、总体思路总体思路:根据动态规划解题步骤(问题抽象化、建根据动态规划解题步骤(问题抽象化、建立模型、寻找约束条件、判断是否满足最优性原理、找大问题立模型、寻找约束条件、判断是否满足最优性原理、找大问题与小问题的递推关系式、填写备忘录表、寻找解组成)找出与小问题的递推关系式、填写备忘录表、寻找解组成)找出0-1背包问题的最优解以及解组成;背包问题的最优解以及解组成;30-1背包问题的建模背包问题的建模实例实例:物品的个数为物品的个数为4个,总重量不超过个,总重量不超过8;i1234重量(重量(
3、w)2345价值(价值(v)34564子问题的界定和计算顺序子问题的界定和计算顺序子问题的界定:有参数子问题的界定:有参数i和和j来界定来界定 i:表示物品的个数表示物品的个数 j :背包总的装重量背包总的装重量原始输入:原始输入:i=4,j=8子问题的计算顺序:子问题的计算顺序:对于给定的对于给定的i=1,看,看j=1,2,3,4.,8的情况的情况; i=2,看,看j=1,2,3,4.,8的情况的情况;50-1背包问题求解过程背包问题求解过程(1) 把背包问题抽象化(把背包问题抽象化(X1,X2,Xn,其中,其中 Xi 取取0或或1,表示第,表示第 i 个物品选或不选),个物品选或不选),V
4、i表示第表示第 i 个物品的价值,个物品的价值,Wi表示第表示第 i 个物品的重量;个物品的重量;(2)建立模型,即求)建立模型,即求max(V1X1+V2X2+VnXn); (3)约束条件,)约束条件,W1X1+W2X2+WnXn总重量;总重量; (4)定义)定义Fi(j):当前背包容量:当前背包容量 j,前,前 i 个物品最佳组合对应个物品最佳组合对应的价值;的价值;6寻找递推关系式,面对当前商品有两种可能性:寻找递推关系式,面对当前商品有两种可能性:第一:包的容量比该商品体积小,装不下,此时的价值与第一:包的容量比该商品体积小,装不下,此时的价值与前前i-1个的价值是一样的,即:个的价值
5、是一样的,即:Fi(j)=Fi-1(j);第二:还有足够的容量可以装该商品,但装了也不一定达第二:还有足够的容量可以装该商品,但装了也不一定达到当前最优价值,所以在装与不装之间选择最优的一个,到当前最优价值,所以在装与不装之间选择最优的一个,即:即:Fi(j)=maxFi-1(j),Fi-1(j-w(i)+v(i);0-1背包问题求解过程背包问题求解过程表示不装第表示不装第i个物品个物品装了第装了第i个商品,背个商品,背包容量减少了包容量减少了w(i),但价值增加了但价值增加了v(i);7由此可以得出递推关系式:由此可以得出递推关系式:(1) j=w(i) :Fi(j)=maxFi-1(j),
6、Fi-1(j-w(i)+v(i) ;0-1背包问题求解过程背包问题求解过程8备忘录表填写:备忘录表填写:0-1背包问题求解过程背包问题求解过程 j i01234567801234考虑初始状考虑初始状态是什么?态是什么?F0(j)=Fi(0)=09备忘录表填写:备忘录表填写:0-1背包问题求解过程背包问题求解过程 j i012345678000000000010203040考虑初始状考虑初始状态是什么?态是什么?F0(j)=Fi(0)=0100-1背包问题求解过程背包问题求解过程具体分析:具体分析:当当i=1时:时: j=1, w(1)=2, j=w(1), F1(2)=maxF0(2),F0(
7、2-2)+v(1) =max0,0+3=3; j=3, w(1)=2, j=w(1), F1(3)=maxF0(3),F0(3-2)+v(1) =max0,0+3=3; j=4, w(1)=2, j=w(1), F1(4)=maxF0(4),F0(4-2)+v(1) =max0,0+3=3; 11备忘录表填写:备忘录表填写:0-1背包问题求解过程背包问题求解过程 j i01234567800000000001003333333203040考虑初始状考虑初始状态是什么?态是什么?F0(j)=Fi(0)=0120-1背包问题求解过程背包问题求解过程当当i=2时:时: j=1, w(2)=3, jw
8、(2), F2(1)=F1(1)=0; j=2, w(2)=3, j=w(2), F2(3)=maxF1(3),F1(3-3)+v(2) =max3,0+4=4; j=4, w(2)=3, j=w(2), F2(4)=maxF1(4),F1(4-3)+v(2) =max3,0+4=4;j=5, w(2)=3, j=w(2), F2(5)=maxF1(5),F1(5-3)+v(2) =max3,3+4=7; 13备忘录表填写:备忘录表填写:0-1背包问题求解过程背包问题求解过程 j i0123456780000000000100333333320034477773040考虑初始状考虑初始状态是什
9、么?态是什么?F0(j)=Fi(0)=014备忘录表填写:备忘录表填写:0-1背包问题求解过程背包问题求解过程 j i012345678000000000010033333332003447777300345789940考虑初始状考虑初始状态是什么?态是什么?F0(j)=Fi(0)=015备忘录表填写:备忘录表填写:0-1背包问题求解过程背包问题求解过程 j i012345678000000000010033333332003447777300345789940034578910如何从备忘如何从备忘录得出问题录得出问题的解?的解?16备忘录表填写:备忘录表填写:0-1背包问题求解过程背包问题求
10、解过程 j i012345678000000000010033333332003447777300345789940034578910如何从备忘如何从备忘录得出问题录得出问题的解?的解?171) 当当Fi(j)=Fi-1(j)时,说明没有选择第时,说明没有选择第i 个商品,则个商品,则回到回到Fi-1(j) ;2) 否则:否则: Fi(j)=Fi-1(j-w(i)+v(i)时,说明装了第时,说明装了第i个个商品,该商品是最优解组成的一部分,随后我们商品,该商品是最优解组成的一部分,随后我们得回到装该商品之前,即回到得回到装该商品之前,即回到Fi-1(j-w(i);3) 一直遍历到一直遍历到i0
11、结束为止,所有解的组成都会结束为止,所有解的组成都会找到。找到。寻解方式:寻解方式:18备忘录表填写:备忘录表填写:0-1背包问题求解过程背包问题求解过程 j i012345678000000000010033333332003447777300345789940034578910第第4个选个选择择第第3个不个不选选第第2个选个选择择第第1个不个不选选解:解:19动态规划算法动态规划算法:0-1背包问题背包问题20动态规划算法动态规划算法:0-1背包问题背包问题21X 的子序列的子序列 Z :设序列:设序列 X, Z, 若存在若存在 X 的元素构成的下标严格递增序列的元素构成的下标严格递增序列
12、使得使得 , 则称则称 Z 是是 X 的的子序列子序列X 与与 Y 的的公共子序列公共子序列 Z :Z 是是 X 和和 Y 的子序列的子序列子序列的长度子序列的长度:子序列的元素个数:子序列的元素个数相关概念相关概念3.3.3 最长公共子序列最长公共子序列 LCS22给定序列给定序列 X=, Y=求求 X 和和 Y 的最长公共子序列的最长公共子序列实例实例问题描述问题描述X: A B C B D A BY: B D C A B A23给定序列给定序列 X=, Y=求求 X 和和 Y 的最长公共子序列的最长公共子序列实例实例问题描述问题描述X: A B C B D A BY: B D C A B
13、 A一个最长公共子序列一个最长公共子序列: B C B A24蛮力算法蛮力算法25子问题边界:子问题边界: X和和Y 起始位置为起始位置为1,X的终止位置是的终止位置是 m,Y 的终止位置是的终止位置是 n,记作,记作 Xi=,Yj=依赖关系:依赖关系: X=, Y=, Z=, 子问题的界定子问题的界定26子问题的依赖关系子问题的依赖关系27令令 X 与与 Y 的子序列的子序列 Xi = , Yj = Ci,j: Xi 与与 Yj 的的 LCS 的长度的长度递推方程递推方程优化函数的递推方程优化函数的递推方程28标记函数:标记函数:Bi, j, 其值为字符其值为字符 、 ,标记函数标记函数算法
14、算法3.4 LCS(X,Y,m,n) 1. for i1 to m do /行行1-4边界情况边界情况 2. Ci,00 3. for i1 to n do 4. C0,i0 5. for i1 to m do 6 for j1 to n do 7. if Xi=Yj 8. then Ci,jCi 1,j 1+1 9. Bi,j 10. else if Ci 1,j Ci,j 1 11. then Ci,jCi 1,j 12. Bi,j 13. else Ci,jCi,j 1 14. Bi,j29动态规划算法伪代码表示动态规划算法伪代码表示初值初值子问题子问题Xi,Yj30利用标记函数构造解利
15、用标记函数构造解算法算法3.5 Structure Sequence(B, i, j)输入:输入:Bi,j输出:输出:X与与Y的最长公共子序列的最长公共子序列 1. if i=0 or j=0 then return /一个序列为空一个序列为空 2. if Bi,j =“ ” 3. then 输出输出Xi 4. Structure Sequence(B, i1, j1) 5. else if Bi,j=“ ” then Structure Sequence (B, i1, j) 6. else Structure Sequence (B, i, j1) 输入:输入:X=, Y=,优化函数函数:
16、优化函数函数:实例的优化函数表实例的优化函数表实例的优化函数表实例的优化函数表01 B2 D3 C4 A5 B6 A01A2B3C4B5D6A7B初始状态是初始状态是什么?什么?实例的优化函数表实例的优化函数表01 B2 D3 C4 A5 B6 A0C0,0=0C0,1=0 C0,2=0 C0,3=0C0,4=0C0,5=0C0,6=01AC1,0=02BC2,0=03CC3,0=04BC4,0=05DC5,0=06AC6,0=07BC7,0=0初始状态是初始状态是什么?什么?实例的优化函数表实例的优化函数表01 B2 D3 C4 A5 B6 A0C0,0=0C0,1=0 C0,2=0 C0,
展开阅读全文