本科-毕业论文---背包问题.doc
- 文档编号:162688
- 上传时间:2022-10-04
- 格式:DOC
- 页数:21
- 大小:365KB
本科-毕业论文---背包问题.doc
《本科-毕业论文---背包问题.doc》由会员分享,可在线阅读,更多相关《本科-毕业论文---背包问题.doc(21页珍藏版)》请在冰豆网上搜索。
滁州学院本科毕业设计
中图分类号:
O224
本科生毕业论文(或设计)
(申请学士学位)
论文题目背包问题的算法思想综述
作者姓名程兵
所学专业名称信息与计算科学
指导教师翟明清
2011年4月30日
学号:
2007211420
论文答辩日期:
2011年月日
指导教师:
(签字)
滁州学院本科毕业设计(论文)原创性声明
本人郑重声明:
所呈交的设计(论文)是本人在导师的指导下独立进行研究所取得的研究成果.除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果.本人完全意识到本声明的法律后果由本人承担.
作者签名:
2011年5月30日
目录
摘要…………………………………………………………………………………………………1
Abstract…………………………………………………………………………………………1
前言…………………………………………………………………………………………………2
背包问题的算法思想综述
摘要:
背包问题是一种组合优化的NP完全问题。
问题的名称来源于如何选择最合适的物品放置于给定背包中。
相似问题经常出现在商业、组合数学,计算复杂性理论、密码学和应用数学等领域中。
传统求解该问题的方法可以概括为精确算法和近似算法,近年来利用近似算法求解背包问题成为重点。
本文总结了背包问题的定义和性质,给出了背包问题不同的算法以及各算法的思想综述。
关键词:
动态规划算法;贪婪算法;遗传算法;蚂蚁算法;回溯法。
Knapsackproblemalgorithmthoughtsummary
Abstract:
TheKnapsackproblemistheNPcompletequestionwhichonekindofcombinationoptimizes.Howdoesthequestionnameoriginatefromchoosesthemostappropriategoodstolayasideinassigningintheknapsack.Thesimilarquestionappearsfrequentlyinthetrade,thecombinatorics,domainsandsooncomputationcomplextheory,cryptologyandappliedmathematics.Thetraditionsolvesthisquestionthemethodtobepossibletosummarizefortheprecisealgorithmandtheapproximatemethod,inrecentyearsusedtheapproximatemethodsolutionknapsackquestiontobecomekey.Thisarticlesummarizedtheknapsackquestiondefinitionandthenature,hasgiventheknapsackquestiondifferentalgorithmaswellasvariousalgorithmsthoughtsummary.
Keywords:
Dynamicprogrammingalgorithm;Greedyalgorithm;Geneticalgorithm;Antalgorithm;Backtracking.
前言
背包问题是在1978年由Merkel和Hellman提出的。
它的主要思路是假定某人拥有大量物品,重量各不同。
此人通过秘密地选择一部分物品并将它们放到背包中来加密消息。
背包中的物品中重量是公开的,所有可能的物品也是公开的,但背包中的物品是保密的。
附加一定的限制条件,给出重量,而要列出可能的物品,在计算上是不可实现的。
背包问题是熟知的不可计算问题,背包体制以其加密,解密速度快而其人注目。
在解决大量的复杂组合优化问题时,它常常作为一个子问题出现,从实际的观点看,许多问题可以用背包问题来描述,如装箱问题,货仓装载,预算控制,存储分配,项目选择决策等,都是典型的应用例子。
随着网络技术的不断发展,背包公钥密码在电子商务中的公钥设计中也起着重要的作用。
然而当问题的规模较大时,得到最优解是极其困难的。
算法是一系列解决问题的清晰指令,一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤,或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。
传统求解该问题的方法可以概括为精确算法和近似算法,其中精确算法有动态规划法、回溯法、分支限界法等,近似算法有遗传算法、贪婪法、粒子群算法、蚁群算法等,由于精确算法的时间复杂性和空间复杂性等缺点,近年来利用近似算法求解背包问题成为重点。
本文主要研究背包问题的总体概况,整理了背包问题的定义、性质、算法技巧等,对各个算法思想进行概括总结,并对各种算法的复杂度进行分析。
1背包问题的概念及算法分析
1.1背包问题的定义
我们有n种物品,物品j的重量为wj,价格为pj。
我们假定所有物品的重量和价格都是非负的。
背包所能承受的最大重量为W。
如果限定每种物品只能选择0个或1个,则问题称为0-1背包问题。
可以用公式表示为:
maximize
subjectto
如果限定物品j最多只能选择bj个,则问题称为有界背包问题。
可以用公式表示为:
maximize
subjectto
如果不限定每种物品的数量,则问题称为无界背包问题。
1.2背包问题算法分析
根据背包问题定义,可以将其转化为如下的约束条件和目标函数:
于是,问题就归结为寻找一个满足约束条件
(1),并使目标函数式
(2)达到最大的解向量。
首先说明一下0-1背包问题拥有最优解。
假设是所给的问题的一个最优解,则是下面问题的一个最优解:
。
如果不是的话,设是这个问题的一个最优解,则,且。
因此,,这说明是所给的0-1背包问题比更优的解,从而与假设矛盾。
背包问题是算法设计分析中的经典问题。
目前,随着计算机算法的不断发展,涌现出大量可用于解决背包问题的算法和思想,背包问题的建模与求解有着广泛的应用前景。
其求解方法主要有三类:
第一类是精确方法,如动态规划、回溯法和分枝一限界法等Η第二类是近似方法,启发式算法,如贪心算法。
第三类是全局优化方法,如遗传算法、蚁群算法、遗传退火进化算法等。
下面将对这三类求解方法进行分析和比较。
2精确算法
2.1动态规划法
动态规划的基本思想:
将一个比较大的问题逐层分解成相对比较小的问题,这些较小的问题一般都可以解决,在这一点与上面提到的贪心算法和分治法很类似,但是动态规划算法有着自身的特点,解决了分治法中相同子问题重复求解的问题。
贪心算法要求找出问题的最佳量度标准,而在现实问题中往往很难找到最佳量度标准,对我们的动态规划法来说,利用了最优子结构,由下向上的方法从子问题的最优解一步一步地构造出整个问题的最优解。
有时动态规划法可以解决贪心算法不能解决的问题。
动态规划算法的每一步决策都是根据前一步的状态参量来决定这一步状态参量的设置,也就是说,从初始状态到最终状态要经过多个过程,经历不同的状态,不断地根据上一步状态决定下一状态,从而形成了一个决策序列,最终将整个问题解决,这就是典型的多段决策的特性。
由上面的动态规划法的介绍,可以看出0/1背包问题,是符合多段决策的特点和具有重叠子问题。
因此,在设计0/1背包问题解决方案时,可以将整个物品放到背包的过程,看成一个取物品的过程。
可以当背包容量为x时,第i个物品导致的最优解为fi(x),显然,fi(M)为整个问题的最优解,M为背包的最大容量,根据动态规划的算法思想,可以得到如下递归方程:
fi(x)=max{fi-1(x),fi-1(x-wi)+pi}
其中i代表第i次决策,0 显然,对xi做出决策后,会出现两种状态: 1)背包的容量还是x,没有发生变化,没有什么效益。 2)背包的容量为x-wi,表示有物品装入,效益增加了pi,即fi=fi-1(x-wi)+pi,当fi>fi-1(x-wi)+wi,则fi=fi-1(x)表示物品i不装入背包的效益比装入还要大,反之fi=fi-1(x-wi)+pi,可见,第i个物品是否装入背包就取决于fi-1(x)和fi-1(x-wi)+pi的大小的过程。 下面对动态规划的算法进行一下相应的算法分析,首先是时间复杂度,从上面算法的执行过程中可以看出假设有Q(n)个子问题,每一个子问题最多需要m次决策,则计算的频率为nm,回溯的频率为n,那么整个过程的算法的时间复杂度为T(n)=nm+n,即为Q(nm)。 然后,我们在看一下另一个考察指标空间复杂度,根据上面的得到的计算频率和回溯频率,根据空间复杂度计算的原则可知为Q(n)。 从上面的分析可以看出动态规划法的时间复杂度和空间复杂度均成直线增长。 在整个计算过程中,选择一种行之有效的决策方法是至关重要的,能够分解成比较容易解决的子问题,是决策设计的最佳标准。 2.2回溯法 回溯其实就是穷举,穷举所有的解,找出解中最优的值。 回溯法在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。 回溯算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。 如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。 否则,进入该子树,继续按深度优先的策略进行搜索。 回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。 回溯法在求解空间树时,只要其左儿子节点时一个可行结点时就进行该左子树,只有右子树包含可行解时才进入右子树,否则就剪去右子树。 回溯法的基本思路是: 确定解空间,建立解空间树,用深度优先搜索算法递归搜索解空间树,并同时注意剪枝。 背包问题的算法思路: 按照物品的单位价值从大到小排序,计算当前节点的上界,搜索左子树,如果右子树包含可行解
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本科 毕业论文 背包 问题