ImageVerifierCode 换一换
格式:DOCX , 页数:5 ,大小:15.68KB ,
资源ID:11597868      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-11597868.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验用分支限界法实现背包问题.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

实验用分支限界法实现背包问题.docx

1、实验用分支限界法实现背包问题实验四 用分支限界法实现0-1背包问题1.实验目的1.熟悉分支限界法的基本原理。2.通过本次实验加深对分支限界法的理解。?2.实验内容及要求内容:给定n种物品和一个背包。物品i的重量是w,其价值为v,背包容量为c。问应该如何选择装入背包的物品,使得装入背包中物品的总价值最大 ?要求:使用优先队列式分支限界法算法编程,求解 0-1背包问题3.程序列表#inelude #include using namespacestd;#defi ne N100class HeapNode / 定义 HeapNode结点类 publicdouble upper, price, we

2、ight;/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 High; / 最大队 Highdouble w N, p N; /把物品重量和价值定义为双精度浮点数dou

3、ble cw, cp, c; /cw为当前重量,cp为当前价值,定义背包容量为 cint n; /货物数量为int main()cout 请输入背包容量: c;cout 请输入物品的个数:II n;cout 请按顺序分别输入物品的重量: endl;int i;for (i = 1; i wi; /输入物品的重量cout 请按顺序分别输入物品的价值: endl;for (i = 1; i pi; /输入物品的价值cout 最优值为:;cout Knap() endl; /调用knap函数 输出最大价值return 0;double MaxBound(int k) /MaxBound 函数求最大上

4、界double cleft = c - cw; / 剩余容量double 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

5、= cp;be.weight = cw;be.level = lev ;if ( lev 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 = High.top(); / 取下一扩展结点High.pop();cw = no de.weight;cp = no de.price;up = no de.upper;i = nodeevel;四实验结果

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2