贪心法解决背包问题

贪心法解决背包问题

ID:38929209

大小:99.00 KB

页数:7页

时间:2019-06-21

贪心法解决背包问题_第1页
贪心法解决背包问题_第2页
贪心法解决背包问题_第3页
贪心法解决背包问题_第4页
贪心法解决背包问题_第5页
资源描述:

《贪心法解决背包问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、算法分析实验报告贪心法解决背包问题学生姓名:专业:班级:学号:指导教师:2017年6月12日6目录一、实验题目2二、实验目的2三、实验要求2四、实现过程31、实验设计:32、调试分析53、运行结果:64、实验总结:6五、参考文献66一、实验题目贪心法解决背包问题二、实验目的1)以背包问题为例,掌握贪心法的基本设计策略。2)熟练掌握各种贪心策略情况下的背包问题的算法并实现;其中:量度标准分别取:效益增量v、物品重量w、v/w比值;3)分析实验结果来验证理解贪心法中目标函数设计的重要性。三、实验要求1.[问题描述]:给定n种物品和一个背包。物品i的重量

2、是Wi,其价值为Vi,背包的容量为C。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?与0-1背包问题类似,所不同的是在选择物品i装入背包时,可以选择物品i的一部分,而不一定要全部装入背包,但不可以重复装入。2.[算法]:贪心法的基本思路:从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到某算法中的某一步不能再继续前进时,算法停止。该算法存在问题:1)不能保证求得的最后解是最佳的;62)不能用来求最大或最小解问题;3)只能求满足某些约束条件的可行解的范围。四、实现过程1、实验设计:1.用贪心法求解背包问题的关键

3、是如何选定贪心策略,使得按照一定的顺序选择每个物品,并尽可能的装入背包,直至背包装满。至少有三种看似合理的贪心策略:1)按物品价值v降序装包,因为这可以尽可能快的增加背包的总价值。但是,虽然每一步选择获得了背包价值的极大增长,但背包容量却可能消耗太快,使得装入背包得物品个数减少,从而不能保证目标函数达到最大。2)按物品重量w升序装包,因为这可以装入尽可能多的物品,从而增加背包总价值。但是,虽然每一步选择使背包得容量消耗得慢了,但背包价值却没能保证迅速增长,从而不能保证目标函数达到最大。3)按物品价值与重量比值v/w的降序装包。2.设背包容量为C,共

4、有n个物品,物品重量存放在数组w[n]中,价值存放在数组v[n]中,问题的解存放在数组x[n]中,贪心法求解背包问题的算法如下。输入:背包容量为C,物品重量w[n],物品价值v[n]输出:数组x[n]61)改变数组w和v的排列顺序,使其按单位重量价值v[i]/w[i]降序排列;2)将数组x[n]初始化为0;3)i=0;4)循环直到(w[i]>C)a.将第i个物品放入背包:x[i]=1;b.C=C-w[i];c.i++;5)x[i]=C/w[i]。3.流程图物品iw[i]>Cx[i]=1C=C-w[i]i++i

5、程序结束64.算法实现intKnapSack(intn,intw[],intv[],intC){doublex[10]={0};intmaxValue=0;for(inti=0;w[i]

6、了解了背包问题贪心法的基本思想和策略,我们发现用该方法解决此问题的核心在于对量度标准的选择,通过具体数据的解答,我们最终确定了以单位效益,即物品的权值和重量的比值为量度最终能得到背包问题贪心法的最优解,同时也使我们对贪心法这一策略有了更为直观的认识。五、参考文献[1]王红梅胡胡《算法设计与分析》(第2版),北京:清华大学出版社,2013年[2]王红梅等《数据结构(C++版)》(第2版),北京:清华大学出版社,2011年6

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

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

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