第二次使用CSDN——《0/1背包问题》

第二次使用CSDN——《0/1背包问题》

项目内容
课程班级博客链接2019级
这个作业要求链接实验二
我的课程学习目标1、掌握软件项目个人开发流程;2、掌握Github发布软件项目的操作方法。
这个作业在哪些方面帮助我实现学习目标1、对软件项目个人开发流程有了初步的了解;2、熟悉了GitHub的使用。
任务一:阅读教师博客内容要求,点评班级博客中本次已提交作业至少3份。
任务二:
  1. 总结详细阅读《构建之法》第1章、第2章,掌握PSP流程
    通过再一次的阅读《构建之法》第一、二章,我对PSP(个人软件开发流程)有了一定的理解与掌握。首先,PSP是一种可以用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。在《构建之法》中,通过三个不同的表格向我们展示了PSP的各个版本以及具体的内容,通过表格可以看到PSP能够帮助软件工程师对某一个软件项目做出一个比较精确的计划以及用时估计。
任务三

1.需求分析
背包问题(Knapsack Problem,KP)是NP Complete问题,也是一个经典的组合优化问题,有着广泛而重要的应用背景。{0-1}背包问题({0-1 }Knapsack Problem,{0-1}KP)是最基本的KP问题形式,它的一般描述为:从若干具有价值系数与重量系数的物品(或项)中,选择若干个装入一个具有载重限制的背包,如何选择才能使装入物品的重量系数之和在不超过背包载重前提下价值系数之和达到最大?
D{0-1} KP 是经典{ 0-1}背包问题的一个拓展形式,用以对实际商业活动中折扣销售、捆绑销售等现象进行最优化求解,达到获利最大化。D{0-1}KP数据集由一组项集组成,每个项集有3项物品可供背包装入选择,其中第三项价值是前两项之和,第三项的重量小于其他两项之和,算法求解过程中,如果选择了某个项集,则需要确定选择项集的哪个物品,每个项集的三个项中至多有一个可以被选择装入背包,D{0-1} KP问题要求计算在不超过背包载重量 的条件下,从给定的一组项集中选择满足要求装入背包的项,使得装入背包所有项的价值系数之和达到最大;D{0-1}KP instances数据集是研究D{0-1}背包问题时,用于评测和观察设计算法性能的标准数据集;动态规划算法、回溯算法是求解D{0-1}背包问题的经典算法。
在这里首先需要用到读取文件的相关操作用以将实验数据导入到程序中,我选择用java来完成数据的读入以及数据的提取工作;其次,题目中提到要用动态规划算法以及回溯法来求解D{0-1}KP,所以还需要再巩固一下之前所学过的动态规划算法、回溯算法和贪心算法以及0-1背包问题的求解过程;最后,根据需要完成的基本功能来看,还需要去学习一下java的相关知识。
2.功能设计
(1)可正确读入实验数据文件的有效{0-1}KP数据;
(2)能够绘制任意一组{0-1}KP数据以价值重量为横轴、价值为纵轴的数据散点图;
3.测试
图一
4.核心代码

#动态规划实现0-1背包问题的求解

				for (int i=1; i <mvaluel.length;i++) {
					for (int j=1; j < mvaluel[i].length; j++) {
						//如果物品的重量小于当前背包的容量
						if (weight4[i - 1] > j) {
							mvaluel[i][j] = mvaluel[i - 1][j];
						} else {//如果物品的重量大于当前背包的容量
							//如果上一次最大价值<当前物品的价值+上一次重量-当前物品重量的价值总和。
							if (mvaluel[i - 1][j] < value[i - 1] + mvaluel[i - 1][j - weight4[i - 1]]) {
								mvaluel[i][j] = value4[i - 1] + mvaluel[i - 1][j - weight4[i - 1]];
								wup[i][j] = 1;//将物品放入背包
							} else {
								mvaluel[i][j] = mvaluel[i - 1][j];
							}
						}
					}
				}
			}
		}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值