回溯法求0-1背包问题_第1页
回溯法求0-1背包问题_第2页
回溯法求0-1背包问题_第3页
回溯法求0-1背包问题_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

回溯法求0-1背包问题回溯法求0-1背包问题回溯法求0-1背包问题回溯法求0-1背包问题编制仅供参考审核批准生效日期地址:电话:传真:邮编:《算法设计与分析》实验报告学号:姓名:日期:得分:一、实验内容:用回溯法求解0/1背包问题注:给定种物品和一个容量为的背包,物品的重量是,其价值为,背包问题是如何使选择装入背包内的物品,使得装入背包中的物品的总价值最大。其中,每种物品只有全部装入背包或不装入背包两种选择。二、所用算法的基本思想及复杂度分析:1.回溯法求解背包问题:基本思想:回溯法:为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(boundingfunction)来处死那些实际上不可能产生所需解的活结点,以减少问题的计算量。这种具有限界函数的深度优先生成法称为回溯法。对于有n种可选物品的0/1背包问题,其解空间由长度为n的0-1向量组成,可用子集数表示。在搜索解空间树时,只要其左儿子结点是一个可行结点,搜索就进入左子树。当右子树中有可能包含最优解时就进入右子树搜索。2)复杂度分析:回溯法求解0/1背包问题的时间复杂度为:。空间复杂度:有个物品,即最多递归层,存储物品信息就是一个一维数组,即回溯法求解0/1背包问题的空间复杂度为。2.以动态规划法验证:1)基本思想:令表示在前个物品中能够装入容量为的背包中的物品的最大值,则可以得到如下动态函数:按照下述方法来划分阶段:第一阶段,只装入前1个物品,确定在各种情况下的背包能够得到的最大价值;第二阶段,只装入前2个物品,确定在各种情况下的背包能够得到的最大价值;以此类推,直到第个阶段。最后,便是在容量为的背包中装入个物品时取得的最大价值。2)复杂度分析:动态规划法求解0/1背包问题的时间复杂度为:。三、源程序及注释:#include<iostream>#include<algorithm>usingnamespacestd;structgoods <=C){ ; cp=cp+a[i].v; cx[a[i].sign]=1; ; cp=cp-a[i].v; ign]=0; ign=i; } sort(a,a+n,m); V[i][j]=V[i-1][j]; else V[i][j]=max(V[i-1][j],V[i-1][j-a[i-1].w]+a[i-1].v); j=C; ; } else x[i-1]=0; } returnV[n][C]; ,&a[i].v); } intsum1=KnapSack1(n,a,C,x);实验中用回溯法求0/1背包问题,课本上给出的算法伪代码只能求出背包装入物品的最大总价值,所以我在对物品构造结构体时定义了一个int型变量sign,用来记录所给物品的原始顺序,并在适当位置记录装入和不装入背包,存储求解路径,从而求出原始问题的解向量X。2.在本实验中,本为增强回溯法求解0/1背包问题函数的可移植性,只定义局部变量而不定义全局变量,花费大量时间不断改进调试都未能达到目的,走了各种弯路,最终总是因为函数之间参数无法传递导致运行错误。这让我真正意识到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论