实验四回溯算法和分支限界法

实验四回溯算法和分支限界法

ID:32773939

大小:60.16 KB

页数:8页

时间:2019-02-15

实验四回溯算法和分支限界法_第1页
实验四回溯算法和分支限界法_第2页
实验四回溯算法和分支限界法_第3页
实验四回溯算法和分支限界法_第4页
实验四回溯算法和分支限界法_第5页
资源描述:

《实验四回溯算法和分支限界法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验四回溯算法和分支限界法0-1背包问题、实验冃的1、掌握0・1背包问题的回溯算法;2、进一步掌握回溯算法。二、实验内容给定n和物品和一人背包,物品i的重量是wi,其价值为vi,问如何选择装入背包的物品,使得装入背包的物品的总价值最大?三、实验步骤1、代码//HS_ALGcpp:Definestheentrypointfortheconsoleapplication.//#include#includeusingnamespacestd;//物体结构体typedefstruct{floatw;〃物品重量floatp;〃物品价值floatv;〃背包体积

2、intid;〃物品个数}OBJECT;〃比较两物品体积boolcmp(OBJECTa,OBJECTb){returna.v>b.v;intn,bool}floatknapsack_back(OBJECTob[],floatM,x[]){〃回溯法inti,k;floatw_cur,p_total,p_cur,w_est,p_est;bool*y=newbool[n+l];//计算物体的价值重量比for(i=0;i<=n;i++){ob[i].v=ob[i].p/ob[i].w;y[i]=false;}//按照物体的价值重量比降序排列sort(ob,ob+n,cmp);//初始化当前背包中的价值

3、、重量w_cur=p_cur二p_total=0;k=0;while(k>=0){w_est=w_cur;p_est=p_cur;//沿当前分支可能取得的最大价值for(i=k;ip_total){for(i=k;i

4、i]・wv二M){//可装入第i个物体w_cur=w_cur+ob[i].w;p_cur=p_

5、cur+ob[i].p;y[i]=true;}else{//不能装入第i个物体y[i]=false;break;}}if(i>=n){//n个物体已经全部装入if(p_cur>p_total){//更新当前上限p_total=p_cur;k=n;//保存可能的解for(i=0;i=0)&&(!y[i]))i—;//沿着右分支结点方向回溯直到左分支结点//到达根结点算法结束//修改当前值if(i

6、=ob[i].p;y[i]=false;k=i+1;搜索右分支子树}}}//deletey;returnp_total;}intmain(){intn;floatm;cout«H请输入背包载重cin»m;cout«n请输入物品个数:cin»n;OBJECT*ob二newOBJECT[n];{cout«HW输入物品的重量、价格:H«endl;for(inti=0;i

7、i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。