动态规划求解0-1背包问题

动态规划求解0-1背包问题

ID:39077059

大小:86.19 KB

页数:8页

时间:2019-06-24

动态规划求解0-1背包问题_第1页
动态规划求解0-1背包问题_第2页
动态规划求解0-1背包问题_第3页
动态规划求解0-1背包问题_第4页
动态规划求解0-1背包问题_第5页
资源描述:

《动态规划求解0-1背包问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于MATLAB的0-1背包问题的动态规划求解数学实验论文动态规划算法求解0-1背包问题郭伦(15054053054)指导教师名:郭德龙职称:副教授单位:数学与统计学院专业名称:B15信息与计算科学8基于MATLAB的0-1背包问题的动态规划求解动态规划算法求解0-1背包问题摘要本文主要阐述了基于MATLAB的0-1背包问题动态规划的求解。0-1背包问题(KnapsackProblem,简称KP问题)是一个经典的组合优化问题,具有广泛的实际应用背景,以及在理论研究领域也有其相当的代表性。KP问题的求解,在生活中多有应用,如货源分配、轮船装载、项目选择等等都有它的身影。并且它还常常作为其他

2、相对复杂的组合问题的一个特殊解,但当问题规模过大时,如果想要得到最优解是极其困难的,因此对大规模的0-1背包问题的研究无论是在理论研究领域还是实际应用背景都有其重要的意义。动态规划算法是五种常用的算法之一,通常用于求解具有某种最优性质的问题。其基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计

3、算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。这就是动态规划法的基本思路。具体的动态规划算法多种多样,但它们具有相同的填表格式。由于我们可以用一个表来记录所有8基于MATLAB的0-1背包问题的动态规划求解已解子问题的答案,需要用到的时候直接调用,所以动态规划法又叫“填表法”。关键词:KP问题,0-1背包问题,动态规划,最优解,背包问题,MATLAB,基于MATLAB的0-1背包问题动态规划的求解一.问题重述给定一个容量为C的背包和n个物品,其中物品i的体积为v[i],价值为w[i](i=1,2,3,…n),要

4、从这n个物品中挑选出若干件放入背包,每个物品只能挑选一次,使得放入物品的总体积不超过C,而价值达到最大,并找出一种添放物品的方案。二.模型假设0-1背包问题的为:设xi为一个二进制量,xi=1表示将物品i放入背包,xi=0表示物品不装入背包,问题的目的在于确定一个二进制的数组(x1,x2,x3…xn)使得maxi=1nxiwi即:maxi=1nxiwixi∈(0,1)且i=1nxivi≤C三.符号说明C:背包的容量V:物品的体积W:物品的价值n:物品的数量f:用于状态交换的矩阵8基于MATLAB的0-1背包问题的动态规划求解t:用于输入物品是否装入背包,0表示装入,1表示不装入四.问题分

5、析对于0-1背包问题,每个物品都只有两种选择,装入或者不装入两种,可以用一个二维数组f[i][j]表示物品是否装入背包。我们要做的是找出可以放入背包的物品使得背包内的价值最大,利用递归思想,用子问题定义状态:即f[i][j]表示前i件物品恰放入一个容量为j的背包可以获得的最大价值。则其状态转移方程便是:f[i][j]=max{f[i-1][j],f[i-1][j-v[i]]+w[i]}对于第i个物品,我们可以拿这个物品的体积同背包内剩余的体积相比较,如果背包内剩余的容量大于物品的体积,那么这个物品就可以装入背包,这时我们只要判断装入这个物品后和装入这个物品前的价值哪一个更大,就可以通过这

6、种递归的方式球的背包能装入的最大价值。五.模型建立与求解我们知道,动态规划算法又叫填表法,填表的顺序为自底向上,自左向右,于是我们首先确定第n个物品是否可以被装入背包:ifv(n)<=jf(n,j)=w(n);elsef(n,j)=0;在通过递归公式8基于MATLAB的0-1背包问题的动态规划求解f[i][j]=max{f[i+1][j],f[i+1][j-v[i]]+w[i]}逐个求解出接下来的解,最后将这些局部最优解填入表格中:由表格中的数据我们不难发现能够装入背包的最大价值,那么,接下来我们根据这个表求解出这个最大价值是由哪集中物品装入而得到的:%3、找出装入背包的所有物品j=c;

7、fori=1:n-1iff(i,j)==f(i+1,j)t(i)=0;elset(i)=1;j=j-v(i);endendiff(n,j)==0t(n)=0;else8基于MATLAB的0-1背包问题的动态规划求解t(n)=1;endt于是我们就可以得到这个最优解的“路径”:六.模型的评价与推广不得不说KP问题是一个经典的动态规划模型,它既简单形象容易理解,又在某种程度上揭示动态规划的本质。有多种方法可以处理它,比如分支限界法、回溯

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。