试验4用分支限界法实现0-1背包问题.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
0-1背包问题用分支限界法实现实验四 一.实验目的 1.熟悉分支限界法的基本原理。 2.通过本次实验加深对分支限界法的理解。 二.实验内容及要求,背包容量为内容:.给定n种物品和一个背包。物品i的重量是w,其价值为v? c。问应该如何选择装入背包的物品,使得装入背包中物品的总价值最大 背包问题0-1要求:使用优先队列式分支限界法算法编程,求解 三.程序列表 #includeiostream #includestack std; using namespace 100 #define N class HeapNode //定义HeapNode结点类 { : publicweightpricedouble upper, price, weight; //upper为结点的价值上界,是结点所对应的价值, 为结点所相应的重量 //]; 活节点在子集树中所处的层序号 Nint level, x[ }; i); intdouble MaxBound( Knap(); double是价值上界, ch, //upint level);booldoubledoubledoublevoid AddLiveNode( up, cp, cw, cwcp是相应的价值,是该结点所相应的重量,ture or falsech是 . . . . //最大队High HeapNodestack High; 把物品重量和价值定义为双精度浮点数 ]; double w[N], p[N// 为当前价值,定义背包容量为c//cwdouble cw, cp, c; 为当前重量,cp //货物数量为 n; int main() int{ endl; 请输入背包容量:cout c; cin endl; cout 请输入物品的个数: n; cin endl; 请按顺序分别输入物品的重量: cout i; int (i = 1; i = n; i++) for //cin w[i]; 输入物品的重量 endl; 请按顺序分别输入物品的价值: cout (i = 1; i = n; i++) for //输入物品的价值 cin p[i]; ; 最优值为: cout 函数 输出最大价值knap//cout Knap() endl; 调用 0; return } k MaxBound(doubleint函数求最大上界//MaxBound ) { cleft = c - cw; double //剩余容量 价值上界//double b = cp; . . . . //以物品单位重量价值递减装填剩余容量 k while (k = nw[] = cleft) { ]; k cleft -= w[ ]; k b += p[ ++; k} = n) (kif 装填剩余容量装满背包] / w[ b += p[kk ] * cleft; // b; return } 将一个新的活结点int lev//) , , , , AddLiveNode(voiddouble updouble cpdouble cwbool ch 插入到子集数和最大堆High中{ be; HeapNode; upbe.upper = ; cp be.price = ; be.weight = cw; be.level = lev = n) if (levHigh.push(be); } 函数调用}//stack头文件的push bestxdouble Knap() //优先队列分支限界法,返回最大价值,返回最优解 { i = 1; int cw = cp = 0; . . . . double //best为当前最优值 bestp = 0; // up = MaxBound(1);价值上界double 搜索子集空间树 // while (1) //非叶子结点{ wt = cw + w[i]; double

文档评论(0)

sandajie + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档