


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验四 用分支限界法实现0-1背包问题一. 实验目的1. 熟悉分支限界法的基本原理。2. 通过本次实验加深对分支限界法的理解。?二. 实验内容及要求内容:给定n种物品和一个背包。物品i的重量是w,其价值为v,背包容量为c。问应该如何选择装入背包的物品,使得装入背包中物品的总价值最大?要求:使用优先队列式分支限界法算法编程,求解0-1背包问题三. 程序列表#inelude <iostream>#include <stack>using namespacestd;#defi ne N100class HeapNode / 定义 HeapNode结点类 publicdoubl
2、e upper, price, weight;/upper为结点的价值上界,price是结点所对应的价值,weight为结点所相应的重量int level, x N;/活节点在子集树中所处的层序号;double MaxBound(int i);double Kn ap();void AddLiveNode( double up, double cp, double cw, bool ch, int level); /up 是价值上界,cp是相应的价值,cw是该结点所相应的重量,ch是ture or falsestack <HeapNod> High; / 最大队 Highdoubl
3、e w N, p N; /把物品重量和价值定义为双精度浮点数double cw, cp, c; /cw为当前重量,cp为当前价值,定义背包容量为 cint n; /货物数量为int main()cout << "请输入背包容量:"<< endl;cin >> c;cout << "请输入物品的个数:II<< en dl;cin >> n;cout << "请按顺序分别输入物品的重量:"<< endl;int i;for (i = 1; i <=
4、 n; i+)cin >> wi;/输入物品的重量cout << "请按顺序分别输入物品的价值:"<< endl;for (i = 1; i <= n; i+)cin >> pi;/输入物品的价值cout << "最优值为:"cout << Knap() << endl; /调用knap函数 输出最大价值return 0;double MaxBound(int k) /MaxBound 函数求最大上界double cleft = c - cw;/ 剩余容量doubl
5、e b = cp;/价值上界while ( k <= n&&w k <= cleft)/以物品单位重量价值递减装填剩余容量cleft -= w k;b += p k;k+;if ( k <= n)b += p k / w k * cleft;/装填剩余容量装满背包return b;/将一个新void AddLiveNode( double up, double cp, double cw, bool ch, int lev)的活结点插入到子集数和最大堆High中HeapNodeoe;be.upper = up;be.price = cp;be.weight =
6、 cw;be.level = lev ;if ( lev <= n)High.push(be);/调用stack头文件的push函数double Knap() /优先队列分支限界法,返回最大价值,bestx返回最优解int i = 1;cw = cp = 0;double bestp = 0; /best 为当前最优值double up = MaxBound(1); / 价值上界/搜索子集空间树while (1)/非叶子结点double wt = cw + wi;if (cp + pi>bestp)bestp = cp + pi;AddLiveNode(up, cp + pi, cw + wi,true , i + 1);up = MaxBou nd(i + 1);if (up >= bestp) /右子数可能含最优解AddLiveNode(up, cp, cw, false , i + 1);if (High.emptyO)return bestp;HeapNodenode =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 照明灯具的乡村照明改善考核试卷
- 游乐设备国际市场趋势分析考核试卷
- 机床制造业商业模式创新与盈利模式考核试卷
- 企业设备更新与技改项目管理考核试卷
- 宝石鉴定的实验室设备与操作规范考核试卷
- 快速消费品包装策略考核试卷
- 上海学校团膳服务合同标准文本
- 借款合同范例广告
- 专业分包项目合同范例
- 残疾人职业规划与生涯发展考核试卷
- 国家司法考试行政法历年真题(含参考答案)
- 地辐热监理实施细则
- 第19课《苏州园林》课件 【备课精研】部编版语文八年级上册
- 应用语言学概论于根元课后练习及答案
- GB 21521-2014复印机、打印机和传真机能效限定值及能效等级
- 中医给药护理-课件
- 食品安全员守则
- 宗教工作中的相关法律法规课件
- 仓鼠英文介绍课件
- 紫杉醇注射液化疗的不良反应与护理课件
- 二、女性青春期保健课件
评论
0/150
提交评论