没有合适的资源?快使用搜索试试~ 我知道了~
首页0-1背包问题(分支限界法)报告.doc
0-1背包问题(分支限界法)报告.doc
需积分: 36 1.6k 浏览量
更新于2023-05-27
评论 3
收藏 94KB DOC 举报
算法设计与分析实验报告,附已通过源码,供学习参考,共勉♪ 目录摘要如下: 1.问题描述 2.实验目的 3.实验原理 4.实验设计 (包括输入格式、算法、输出格式) 5.实验结果与分析 (除了截图外,实验结果还用图表进行了分析) 6.结论 7.程序源码
资源详情
资源评论
资源推荐

实验十六:0-1 背包问题(分支限界法)报告
2017061111 李静娴
1.问题描述
给定 种物品和一背包。物品 的重量是 ,其价值为 ,背包的容量为 。问应如何选
择装入背包的物品,使得装入背包中物品的总价值最大
2.实验目的
(1)熟悉分支限界法,并学以致用
(2)熟练掌握 0-1 背包问题算法
3.实验原理
首先,要对输入数据进行预处理,将各物品依其单位重量价值从大到小进行排列。在
优先队列分支限界法中,节点的优先级由已装袋的物品价值加上剩下的最大单位重量价值
的物品装满剩余容量的价值和。
算法首先检查当前扩展结点的左儿子结点的可行性。如果该左儿子结点是可行结点,
则将它加入到子集树和活结点优先队列中。当前扩展结点的右儿子结点一定是可行结点,
仅当右儿子结点满足上界约束时才将它加入子集树和活结点优先队列。当扩展到叶节点时
为问题的最优值。
算法的时间复杂度:‰。
4.实验设计
()
输入数据格式:宏定义集装箱个数 ,背包容量以及物品质量和价值由用户自定义
生成方式:用户输入
数据规模:宏定义设定。
()
该程序先是设定好物品个数,然后由用户设定背包容量以及物品的质量和价值。再调
用 Knapsack(p, w, c, n)函数输出背包能装下的最大价值。bestx[i]输出最优解。
()
程序运行的结果有四部分,先是输出背包容量,再输出物品重量和价值,然后输出背
包能装的最大价值,最后输出最优解。
5.实验结果与分析

经过调用 Knapsack(p, w, c, n)函数输出背包能装下的最大价值。输出最优解。
经人工分析,所得结果与程序运算一致,可见程序计算结果无误。
6.结论
用户可以自定义背包容量,物品质量和价值,使得程序具有很好的交互性。本来打算
让物品个数也动态生成,用堆的方式可以实现,但是考虑到这将增加代码工程量,本程序
已经能够很好的实现算法了,而且已经具有很强的交互性了,暂时先没有实现这个功能,
留待以后改进。

7.程序源码
、
!"#$%&
'%!(
%")&
*
+,-.(
/*!(0
+,#*$ $ $$+,(0
)
*11查
$ $(
0
")&23$#)2(11增
")&24)2(11删
#!35,)6,67$$8+,(
$
$$+,6+,(
)9(11%$$8
0(
%")&
")&+,
*11#$ #$
+,-+,(
-)+,:(
$$+,-.(
0
%")&
")&2")&3$#)2
*113$#%
; $$+,--+,
*
# ""<#=<""!(
$ $9(
剩余11页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0