背包问题的算法研究与实现本科.doc
《背包问题的算法研究与实现本科.doc》由会员分享,可在线阅读,更多相关《背包问题的算法研究与实现本科.doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流背包问题的算法研究与实现本科.精品文档.华中师范大学汉口分校本 科 毕 业 论 文0-1背包问题的算法研究与实现院 系:信息科学技术学院 专 业:计算机科学与技术 年 级: 2005级 学 生: 刘念 学 号: 2005911032 指导老师: 宾云峰、杨健 华中师范大学汉口分校学位论文原创性声明本人郑重声明:所呈交的学位论文是本人在导师指导下独立进行研究工作所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。学位论文作者签名: 日期: 年 月
2、日学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密 ,在_年解密后适用本授权书。2、不保密 。(请在以上相应方框内打“”)学位论文作者签名: 日期: 年 月 日导师签名: 日期: 年 月 日目 录内容摘要1关 键 词1ABSTRACT2KEY WORDS21 绪论31.1问题的提出及研究意义31.2 0-1背包问
3、题的算法研究的分析31.3课题的主要研究内容42 0-1背包问题的实现52.1 0-1背包问题在动态规划中的实现52.2 0-1背包问题在回溯法中的实现82.3 0-1背包问题在分枝-限界法中的实现122.4 0-1背包问题在遗传算法中的实现163 解0-1背包问题的算法比较与分析204总结与展望22参考文献23致 谢25内容摘要:背包问题是一个在运筹学领域里常见的典型NP-C难题,也是算法设计分析中的经典问题,对该问题的求解方法的研究无论是在理论上,还是在实践中都具有重要意义。对这个问题的求解已经研究出了不少的经典方法,对该问题的探索和应用研究一直在进行。在先进理论指导下,求解0-1背包问题
4、具有科学、高效、经济、灵活、方便等显著特点。那么要解决背包问题,首要的前提就是设计出好的算法,想求得背包问题的解,就要先设计出算法,本文采用动态规划法,回溯法,分枝-限界法,遗传算法四种方法分别对背包问题、0-1背包问题及简单0-1背包问题进行算法设计和时间复杂度分析,给出具体算法设计和实现过程。并以具体实例详细描述不同方法求解问题解时算法基本思想,然后就解决0-1背包问题对这四种算法进行详细的比较,总结四种方法实现的优缺点并得出结论。如何将背包问题应用于实际问题中,有针对性地设计适合求解实际0-1背包问题的算法,并很好地解决实际问题,是计算机工作者不断思索、研究的一个领域。关 键 词:0-1
5、背包 动态规划 回溯法 分枝-限界法 遗传算法Abstract: Knapsack problem is a typical NP-C problem as well as algorithm design and analysis of the classical problems in the common field of operations research. It is very important to study the solution of the problem, whether in theory or in practice. After some research,
6、 a lot of classical methods solving this problem have been come up with ,and the exploration of this issue and applied research has been ongoing. Under the guidance of advanced theory, there are distinctive features such as scientific, efficient, economic, flexible and convenient features in solving
7、 the 0-1 knapsack problem .So to solve the knapsack problem, the first premise is to design a good algorithm.To seek the solution of knapsack problem, it is necessary to design algorithms using dynamic programming at first. In this paper, four methods such as dynamic programming, backtracking, branc
8、h - Bound method and genetic algorithm respectively aiming at knapsack problem ,0-1 knapsack problem and a simple 0-1 knapsack problem carry out the algorithm design and analysis of time complexity, and give the specific algorithm design and implementation of the process.And descript detailedly the
9、basic idea of algorithm by using specific examples in solving the issue with different ways .And then aiming at solving the 0-1 knapsack problem , compare four algorithms in detail and summarize the advantages and disadvantages of realization of four methods and reach a conclusion.How to apply the k
10、napsack problem into the practical, and to design targeted for the practical algorithms of solving 0-1 Knapsack Problem and to solve the practical problems very well, is an area of computer workers constantly thinking and study. Key words:0-1 knapsack problem dynamic programmi backtracking branch -
11、Bound method genetic algorithm1 绪论1.1问题的提出及研究意义0-1背包问题是计算机科学中的一个非常经典的优化问题。也是被证明了的NP难度问题。它是在1978年由Merkel和Hellman提出的。它的主要思路是假定某人拥有大量物品,重量各不同。此人通过秘密地选择一部分物品并将它们放到背包中来加密消息。背包中的物品中重量是公开的,所有可能选择的物品也是公开的,但背包中的物品是保密的。附加一定的限制条件,给出重量,而要列出可能的物品,在计算上是不可实现的。背包问题是熟知的不可计算问题,背包体制以其加密,解密速度快而其人注目。但是,大多数一次背包体制均被破译了,因此
12、现在很少有人使用它。围绕这个问题的求解方法很多,比如贪婪算法、动态规划、分枝限界、回溯法、遗传算法等等。其中回溯法是常见的一种求解方法。多年来,背包问题吸引了许多理论和实际工作者对此问题作深入的研究,在理论上,尽管背包问题的结构简单,但它却具有组合爆炸的性质,在实际应用中,许多工业问题都可以用背包问题来描述求解,如资金运算、货舱装载、存储分配等都是其典型的应用例子。如何将背包问题应用于实际问题中,并很好地解决实际问题,是计算机工作者不断思索、研究的一个领域。1.2 0-1背包问题的算法研究的分析 0-1背包问题的算法研究主要是通过算法设计与分析知识,设计解决相关问题的尽可能高效的算法并程序实现
13、,而且能够分析算法的复杂性,通过实验进一步领会各种算法设计技术的基本原理,掌握算法设计和分析方法,提高算法设计与分析的应用能力。0-1背包是一类很典型的优化问题,研究它有很重要的实际意义,这不仅是由于它结构简洁,可以作为子问题为研究更复杂的问题奠定理论基础,有很高的理论研究价值,而且由于它是许多实际工程应用问题的种通用化描述,在很多实际问题当中有着非常广泛的应用背景,例如项目决策等。他是最基本的背包问题,即对一个物体要么选用,要么就抛弃,不能将一个物体再继续细分的情况。它包含了背包问题中设计状态、方程的最基本思想,在经济管理、资源分配、投资决策、装载设计等领域有着重要的应用价值。在计算理论中属
14、于NP-C完全问题,其计算复杂度,传统上采用动态规划来求解。背包问题就是在资源有限的条件下,追求总的最大收益的资源有效分配问题。1.3课题的主要研究内容1.3.1背包问题的描述背包问题是整数规划中的一类特殊问题,在现实生活中具有广泛应用。如果能提出求解此问题的有效算法,则具有很好的经济价值和决策价值。问题的一般描述是:旅行者背包登山,背包的最大承重为M,现有n个物品可供选择装入背包,第i个物品莺量为wi,价值为pi,假定物品i的一部分xi(0xi1)放人背包,获得价值为xipi,由于背包最大承重为M,要求装入物品总质量不过超过M,问旅行者应该如何选择物品装入背包,使得装入物品的价值总和达到最大
15、值。背包问题的数学描述如下:要求找到一个n元向量(x1,x2xn),在满足约束条件:情况下,使得目标函数,其中,1in;M0;wi0;pi0。满足约束条件的任何向量都是一个可行解,而使得目标函数达到最大的那个可行解则为最优解1。 1.3.2 0-1背包问题 0-1背包问题的提出给定n 种物品和1个背包。物品i 的重量是wi,其价值为pi,背包的容量为M。问应如何装入背包中的物品,使得装人背包中物品的总价值最大?在选择装人背包的物品时,对每种物品i只有两种选择,即装入背包、不装入背包。不能将物品i 装人背包多次,也不能只装入部分的物品i。该问题称为0-1背包问题。 问题符号化 0-1背包问题的符
16、号化表示是,给定M0, w i 0, pi 0,1in ,要求找到一个n元0-1向量向量(x1,x2xn), X i =0 或1 , 1in, 使得 ,而且达到最大2。2 0-1背包问题的实现2.1 0-1背包问题在动态规划中的实现2.1.1 动态规划的基本原理与分析动态规划算法的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。它把已知问题分为很多子问题,按顺序求
17、解子问题,在每一种情况下,列出各种情况的局部解,按条件从中选取那些最有可能产生最佳的结果舍弃其余。前一子问题为后面子问题提供信息,而减少计算量,最后一个子问题的解即为问题解。采用此方法求解0-1背包问题的主要步骤如下:分析最优解的结构:最有子结构性质;建立递归方程;计算最优值;构造最优解4。动态规划算法的每一步决策都是根据前一步的状态参量来决定这一步状态参量的设置,也就是说,从初始状态到最终状态要经过多个过程,经历不同的状态,不断地根据上一步状态决定下一状态,从而形成了一个决策序列,最终将整个问题解决,这就是典型的多段决策的特性。由上面的动态规划法的介绍,可以看出0-1背包问题,是符合多段决策
18、的特点和具有重叠子问题。因此,在设计0-1背包问题解决方案时,可以将整个物品放到背包的过程,看成一个取物品的过程。 2.2.2 0-1背包问题的实现 最优子结构性质0-1背包问题具有最优子结构性质。设(y1,y2yn)是所给0-1背包问题的一个最优解,则(y2,y3yn)是下面相应子问题的一个最优解:因若不然,设(z2,z3zn)是上述问题的一个最优解,而(y2,y3yn)不是它的最优解,由此可见,且c。因此c这说明(y1,z2zn)是所给0-1背包问题的一个更优解,从而(y1,y2yn)不是所给0-1背包问题的最优解。此为矛盾1。 递归关系设所给0-1背包问题的子问题 的最优值为m(i,j)
19、,即m(i,j)是背包容量为j,可选择物品为i,i+1,n时0-1背包问题的最优值。由0-1背包问题的最优子结构性质,可以建立计算m(i,j)的递归式如下: 算法描述基于以上讨论,当wi(1in)为正整数时,用二维数组m来存储m(i,j)的相应值,可设计解0-1背包问题的动态规划算法Knapsack入下:templatevoid Knapsack(Type v,int w,int c,int n,Type* * m) int jMax=min(wn-1,c); for (int j=0;j=jMax;j+)mnj=0; for (int j=wn;j1;i-) jMax=min(wi-1,c)
20、; for (int j=0;j=jMax;j+)mij=mi+1j;for(intj=wi;j=w1) m1c=max(m1c,m2c-w1+v1);templatevoid Traceback(Type* * m,int w,int c,int n,int x) for (int i=1;i=n;i+) if(mic=mi+1c) xi=0; else xi =1;c-= wi; xn=(mnc)?1:0;1 计算复杂性分析利用动态规划求解0-1背包问题的复杂度为0(minnc,2n。动态规划主要是求解最优决策序列,当最优决策序列中包含最优决策子序列时,可建立动态规划递归方程,它可以帮助高
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 背包 问题 算法 研究 实现 本科
限制150内