- 8
- 0
- 约2.12千字
- 约 4页
- 2023-08-13 发布于天津
- 举报
背包问题贪心方法实验日志
实验题目
1)求以下情况背包问题的最优解:n=7,M=15,(p1,…,p7)=(10,5,15,7,6,18,3)和(*,…,七)=(2,3,5,7,1,4,1)。
实验目的:
掌握贪心方法算法思想;熟练使用贪心算法之背包问题解决相应的问题。
实验思想:
贪心方法是一种改进了的分级处理方法。它首先根据题意,选取一种量度标准。
然后按这种量度标准对这n个输入排序,并按排序一次输入一个量。如果这个输入和当前已构成在这种量度意义下的部分最优解加在一起不能产生一个可行解,则不把此解输入加到这部分解中。这种能够得到某种度量意义下的最优解的分级处理方法称为贪心方法。
1.背包问题(1)背包问题的描述:已知有n种物品和一个可容纳M重量的背包,每种物品i的重量为w。假定将物品i的一部分x放入背包就会得到px的效益,这里,iiii
0X,1,pi0。显然,由于背包容量是M,因此,要求所有选中要装入背包的物品总重量不得超过M.。如果这n件物品的总重量不超过M,则把所有物品装入背包自然获得最大效益。现需解决的问题是,这些物品重量的和大于M,该如何装包。由以上叙述,可将这个问题形式表述如下:
极大化£PXii1in约束条件£wxMii1in0x.1,p0,w^0,1in
(2)用贪心策略求解背包问题首先需选出最优的量度标准。不妨先取目标函数作为量度标准,即每装入一件物品就使背包获得最大可能的效益值增量。在这种量度标准下的贪心方法就是按效益值的非增次序将物品一件件放到背包中去。如果正在考虑中的物品放不进去,则可只取其一部分来装满背包。但这最后一次的方法可能不符合使背包每次获得最大效益增量的量度标准,这可以换一种能获得最大增量的物品,将它(或它的一部分)放入背包,从而使最后一次装包也符合量度标准的要求。算法如下所示。
算法2.1背包问题的贪心算法procedureGREEDY-KNAPSACK(P,W,虬X,n)
//P(1:n)和W(1:n)分别含有按P(i)/W(i)NP(i+1)/W(i+1)排序的n件物品的效益值和重量。M是背包的容量大笑,而X(1:n)是解向量。//
realP(1:n),W(1:n),X(1:n),M,cu;integeri,n;XJ0//将解向量初始化为零
cuJM//cu是背包剩余容量
foriJ1tondoifW(i)cuthenexitendifX(i)J1cuJcu-W(i)
repeat
ifiWnthenX(i)Jcu/W(i)
endif
endGREEDY-KNAPSACK
实验代码:
#includeiostream
usingnamespacestd;
voidbeibao(double*w,double*v,double*x,doublen,double*C)
{
inti,j,temp;
for(i=0;in-1;i++)
for(j=i+1;jn;j++)
if(v[i]/w[i]v[j]/w[j])
{
temp=v[i];
v[i]=v[j];
v[j]=temp;
temp=w[i];
w[i]=w[j];
w[j]=temp;
}
for(i=0;in;i++)
x[i]=0;
for(i=0;*C!=0;i++)
{
if(w[i]*C)
{x[i]=w[i];*C=*C-w[i];
}
else
{x[i]=*C;*C=*C-*C;
}
}
}
voidmain()
{
inti;
double*w,*v,n,C;
double*x;
cout请输入物品数endl;
cinn;
w=newdouble(n);//动态分配内存
v=newdouble(n);
x=newdouble(n);
cout请输入背包的容量endl;
cinC;
cout请分别输入n个物品的重量:endl;
for(i=0;in;i++)
cinw[i];
cout请分别输入n个物品的价值:endl;
for(i=0;in;i++)
cinv[i];
beibao(w,v,x,n,C);
cout装入的物品为:endl;
for(i=0;in;i++)
{
if(x[i]!=0)
cout其装的重量为:x[i]其价值为:v[i];
}
coutendl;
}
}
实验结果:
JeJj*flF:背包l°j3\Debiig\aa.exe臂霸如啊野理参蠹A其价值为后毓入物晶数帝输入背包的容量牌分别输入?个物品的重量:2357141隋夺别输.X?个物品的价值:1E)515761?3装入的物品为:其装的重量为:1其价值为:6R焯装的重量为:5其价值为;其装的重量为;i其价值为3其装的重量为其价谊丸5Pressanykey
JeJj
臂霸如啊野理参蠹A其价值为
心得体会:
通过本次使用让我了解了什
您可能关注的文档
- 肿瘤药物发展史.docx
- 胀紧套设计及应用论文.docx
- 胆结石临床诊疗指南.docx
- 背压变化对汽轮机热耗影响的理论计算与试验结果对比分析.docx
- 胜任力模型的构建.docx
- 胜任素质模型的建立步骤.docx
- 胰岛素口腔喷雾剂新药.docx
- 胶印印刷车间管理流程及表格.docx
- 胶原蛋白的结构与特性.docx
- 胶合板生产企业风险分级管控资料.docx
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测生物试卷+答案.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测语文试卷+答案.doc
- 四川省绵阳南山中学实验学校2025-2026学年高三上学期1月月考数学含答案.doc
- 2026届辽宁省大连市高三上学期双基考试物理试卷+答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测化学含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测生物含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测英语含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测政治含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试化学含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试生物含答案.doc
最近下载
- 工业激光安全培训课件.ppt VIP
- Windchill模块功能白皮书.doc VIP
- 工程图学基础(第三版)刘宇红全套PPT课件.ppt
- 慢性肾脏病早期筛查、诊断及防治指南(2022年版).pptx VIP
- 2025年四川省达州市法官逐级遴选考试题及答案.docx VIP
- 一种4,6-二氨基间苯二酚二盐酸盐的生产系统.pdf VIP
- 贵州省六盘水市高二上学期1月期末英语试题(含答案).docx VIP
- 奥迪A6轿车ABS系统故障诊断与维修.doc VIP
- 备战2025广东省深圳市中考数学真题汇编《圆的计算与证明》含答案解析.pdf VIP
- GB 50183-2015 石油天然气工程设计防火规范条文解释.ppt VIP
原创力文档

文档评论(0)