




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、0-1背包问题计科1班朱润华 2012040732方法1 :回溯法一、回溯法描述:用回溯法解问题时,应明确定义问题的解空间。问题的解空间至少包含问题的一个(最优)解。对于0-1背包问题,解空间由长度为n的0-1向量组成。该解空间包含对变量的所有 0-1 赋值。例如 n=3 时,解空间为:( 0, 0 , 0), (0 , 1, 0 ), (0 , 0 , 1) , (1, 0 ,0), (0 , 1 , 1), (1 , 0, 1 ), (1 , 1 , 0), (1 , 1 , 1)然后可将解空间组织成树或图的 形式,0-1背包则可用完全二叉树表示其解空间给定n种物品和一背包。物品i的重量是
2、wi,其价值为vi,背包的容量为 C。问:应如何选择装入背包的物品,使得装入背包中物品 的总价值最大?形式化描述:给定 c 0, wi 0, vi 0 , 1wiwn要求找一 n元向量(x1,x2,xn,), xi 0,1, ?刀wi xi wc,且刀vi xi达最大即一个特殊的整数规划问题。二、回溯法步骤思想描述:0-1背包问题是子集选取问题。0-1背包问题的解空间可以用子集树表示。在搜索解空间树时,只要其左儿子节点是一个可行节点,搜索就进入左子树。当右子树中有可能含有最优解时,才进入右子树搜索。否则,将右子树剪去。设r是当前剩余物品价值总和,cp是当前价值;bestp是当前最优价值。当 c
3、p+r=bestp 时,可剪去右子树。计算右子树上界 的更好的方法是将剩余物品依次按其单位价值排序,然后依次装入物品,直至装不下时,再装入物品一部分而装满背包。例如:对于0-1背包问题的一个实例,n=4,c=7,p=9,10,7,4,w=3,5,2,1 。这4个物品的单位重量价值分别为3,2,3,5,4。以物品单位重量价值的递减序装入物品。先装入物品 4,然后装入物品3和1.装入这3个物品后,剩余的背包容量为1,只能装0.2的物品2。由此得一个解为1,0.2,1,1,其相应价值为22。尽管这不是一个可行解,但可以证明其价值是最优值的上界。因此,对于这个实例,最优值不超过22。在实现时,由Bou
4、nd计算当前节点处的上界。类Knap的数据成员记录解空间树中的节点信息,以减少参数传递调用所需要的栈空间。在解空间树的当前扩展节点处,仅要进入右子树时才计算上界Bound,以判断是否可将右子树剪去。进入左子树时不需要计算上界,因为上界预期父节点的上界相同。三、回溯法实现代码:#include stdafx.h#in clude using n amespace std;templateclass Knaptemplatefriend Typep Kn apsack(Typep ,Typew ,Typew,i nt);private:Typep Boun d(i nt i);void Backt
5、rack(i nt i);Typew c;/背包容量int n;/物品数Typew *w;/物品重量数组Typep *p;/物品价值数组Typew cw;/当前重量Typep cp;/当前价值Typep bestp;/ 当前最后价值;templateTypep Kn apsack(Typep p,Typew w,Typew c,i nt n); template in li ne void Swap(Type &a,Type &b);templatevoid BubbleSort(Type a,int n);int mai n()intn = 4;/物品数int c = 7;/ 背包容量in
6、t p = 0,9,10,7,4;/ 物品价值 下标从1开始int w = 0,3,5,2,1;物品重量 下标从1开始cout背包容量为:ce ndl;cout物品重量和价值分别为:e ndl;for(i nt i=1; i=n; i+)cout(wi,pi);coute ndl;cout背包能装下的最大价值为:K napsack(p,w ,c,n )e ndl;return 0;templatevoid Kn ap:Backtrack(i nt i)if(i n)到达叶子节点bestp = cp;return;if(cw + wi bestp) 进入右子树Backtrack(i+1);tem
7、plate计算上界Typep Kn ap:Bo un d(i nt i)/Typew cleft = c - cw; / 剩余容量Typep b = cp;/以物品单位重量价值递减序装入物品while (i = n & wi = cleft)cleft -= wi;b += pi;i+;/装满背包if (i = n)b += pi/wi * cleft;return b;class Objecttemplatefriend Typep Kn apsack(Typep,Typew ,Typew,i nt); public:int operator =a.d);private:int ID;float d;templateTypep Kn apsack(Typep p,Typew w,Typew c,i nt n) / 为 Knap:Backtrack 初始化Typew W = 0;Typep P = 0;Object *Q = new Object n;for(i nt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45512-2025纺织品定量化学分析聚苯并咪唑纤维与某些其他纤维的混合物
- GB/T 18867-2025电子气体六氟化硫
- 高考语文社会责任试题及答案
- 高考作文情感认知的试题与答案
- 火灾报警的应急预案(3篇)
- 行政法学重要案例分析及试题
- 商场高层火灾应急预案范文(3篇)
- 2025年程序员考试复习秘籍试题及答案
- 2025年法学概论考试的应试准备与试题及答案
- 行政法与公共管理理论的结合剖析试题及答案
- 两癌防治知识宣传课件
- 解读2024年公务员考试试题及答案
- 2025年中国液氢行业发展现状、运行格局及投资前景分析报告齐鲁
- 2025届青海省西宁市大通县高考一模英语试题(原卷版+解析版)
- T-SXAGS 0039-2024 鲜食玉米果穗速冻保鲜加工技术规程
- 砌砖抹灰施工合同范例
- 比亚迪晋级述职报告
- SJG 74-2020 安装工程消耗量定额
- 3.2让素材富有感染力-粤教版B《信息技术》七年级下册教学课件
- 炼油化工建设项目后评价报告 -
- 控制在护理管理中的应用
评论
0/150
提交评论