实验四回溯算法和分支限界法_第1页
实验四回溯算法和分支限界法_第2页
实验四回溯算法和分支限界法_第3页
实验四回溯算法和分支限界法_第4页
实验四回溯算法和分支限界法_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验四 回溯算法和分支限界法0-1背包问题一、实验目的:1、掌握0-1背包问题的回溯算法;2、进一步掌握回溯算法。二、实验内容给定n和物品和一人背包,物品i的重量是wi,其价值为vi,问如何选择装入背包的物品,使得装入背包的物品的总价值最大?三、实验步骤1、代码/ HS_ALG.cpp : Defines the entry point for the console application./#include #include using namespace std;/ 物体结构体typedef structfloat w; /物品重量float p; /物品价值float v; /背包体积

2、int id; /物品个数OBJECT;bool cmp(OBJECT a, OBJECT b /比较两物品体积return a.v>b.v;float knapsack_back(OBJECT ob, float M, int n, bool x /回溯法int i,k;float w_cur, p_total, p_cur, w_est, p_est;bool *y = new booln+1;/ 计算物体的价值重量比for(i=0; i<=n; i+obi.v = obi.p/obi.w;yi = false;/ 按照物体的价值重量比降序排列sort(ob, ob+n, cm

3、p;/ 初始化当前背包中的价值、重量w_cur = p_cur = p_total = 0;/ 已搜索的可能解的总价值初始化k = 0;while(k>=0w_est = w_cur; p_est = p_cur;/ 沿当前分支可能取得的最大价值for( i=k; i w_est += obi.w;if(w_est p_est += obi.p;elsep_est += (M-w_est+obi.w/obi.w*obi.p;break;/ 估计值大于上界if(p_est>p_totalfor(i=k; i if(w_cur+obi.w<=M/ 可装入第i个物体w_cur =

4、w_cur + obi.w;p_cur = p_cur + obi.p;yi = true;else/ 不能装入第i个物体yi = false;break;if(i>=n/ n个物体已经全部装入if(p_cur>p_total/ 更新当前上限p_total = p_cur;k = n;/ 保存可能的解for(i=0; i xi = yi;else/ 继续装入物体k = i+1;else/ 估计值小于上界时while(i>=0&&(!yii-; / 沿着右分支结点方向回溯直到左分支结点if(i<0break; / 到达根结点 算法结束else / 修改当前

5、值w_cur -= obi.w;p_cur -= obi.p;yi = false;k = i+1; / 搜索右分支子树/delete y;return p_total;int main(int n;float m;cout<<"请输入背包载重:"cin>>m;cout<<"请输入物品个数:"cin>>n;OBJECT* ob = new OBJECTn;cout<<"请输入物品的重量、价格:"< for(int i=0; i cin>>obi.w>>obi.p;obi.id = i+1;bool* x = new booln;float v = knapsack_back(ob, m, n, x;cout<<"最优方案:"< for(int i=0; i if(xicout<<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论