实验报告:动态规划---0-1背包问题)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XXXX大学计算机学院实验报告计算机学院 2017 级软件工程专业 5 班指导教师
学号姓名 2019年 10 月 21 日成绩
实验
内容、上机调试程序、程序运行结果
int n = ;包问题的算法思想:将前i个物品放入容量为w的背包中的最大价值。有如下两种情况:
①若当前物品的重量小于当前可放入的重量,便可考虑是否要将本件物品放入背包中或者将背包中的某些物品拿出来再将当前物品放进去;放进去前需要比较(不放这个物品的价值)和(这个物品的价值放进去加上当前能放的总重量减去当前物品重量时取i-1个物品是的对应重量时候的最高价值),如果超过之前的价值,可以直接放进去,反之不放。
②若当前物品的重量大于当前可放入的重量,则不放入
背包问题利用动态规划的思路可以这样理解:阶段是“物品的件数”,状态就是“背包剩下的容量”,f[i,v]表示设从前i件物品中选择放入容量为V的背包的最大价值。那么状态转移的方法为:
f[i][v]=max{f[i-1][v],f[i-1][v-w[i]]+c[i]}
这个方程可以理解为:只考虑子问题“将前i个物品放入容量为v的背包中的最大价值”那么可以考虑不放入i,最大价值就和i无关,就是f[i-1][v],如果放入第i个物品,价值就是f[i-1][v-w[i]]+value[i],只取最大值即可。