在维基百科中,背包的算法如下:
for i from 1 to n do
for j from 0 to W do
if j >= w[i] then
T[i, j] := max(T[i-1, j], T[i-1, j-w[i]] + v[i]) [18]
else
T[i, j] := T[i-1, j]
end if
end for
end for
我在网上找到的所有例子的结构都是一样的<我无法理解的是,这段代码是如何考虑到最大值可能来自较小的背包这一事实的?E、 如果背包容量为8,那么最大值可能来自容量7(8-1)<我找不到任何逻辑来考虑最大值可能来自较小的背包。这是错误的想法吗?
如我所见,你误解了背包的概念。我将在这里详细描述,直到我们达到代码部分。
首先,有两种版本的问题:
对于第一个问题,您可以理解为:
给定一个最大容量为W的背包,以及一个由n个物品组成的集合S,每个物品i都有一些权重wi和收益值bi(所有wi和W都是整数值)。
那么,如何包装背包以实现包装物品的最大总价值?
用数学的口吻说:
为了使用动态规划解决这个问题,我们建立了一个表,每个可用项目一行,从0到W的每个权重一列。我们需要仔细识别子问题,
然后,子问题将是计算V[k,w]
,即在一个大小为w的背包中为Sk={标记为1,2,…k的项目}
找到一个最优解(给定容量w和项目1,…,k可达到的最大值)
该算法仅查找背包中可能携带的最大值,即V[n,W]中的值,以了解使该值最大的项目,这将是另一个主题。
我真的希望这个答案能帮助你。我有一个pp演示,它将与您一起填写表格,并逐步向您展示算法。但我不知道如何将其上载到stackoverflow。如果需要帮助,请告诉我。
背包的动态编程解决方案基本上是递归的:
T(i,j) = max{ T(i-1,j) , T(i-1,j-w[i]) + v[i] }
// ^ ^
// ignore the element add the element, your value is increase
// by v[i] and the additional weight you can
// carry is decreased by w[i]
(如果为每个<代码>j设置<代码>T(i,j)=-无穷大,则else条件在递归形式中是多余的
这个想法是详尽的搜索,您从一个元素开始,有两种可能性:添加或不添加。
您检查两个选项,并选择其中最好的一个。
因为它是递归完成的——你有效地检查了将元素分配到背包的所有可能性。
请注意,wikipedia中的解决方案基本上是相同递归公式的自下而上解决方案
我正在尝试在Mac OS 10.12中安装sequelize cli。6. 在终端,我做到了 我得到了 然后,我试着 我得到了 无法解决序列化包在 /Users/bheng/Sites/BASE 我甚至试着按照这篇文章的建议使用。 我得到了同样的结果。 我还应该尝试什么?
希望这是有意义的,我基本上是在寻找一些关于如何开始在Python 3中处理这个任务的见解。提前感谢您能提供的任何东西!
问题内容: 是最新的CSS功能,现代浏览器(至少从2016年7月1日起)尚不可用。 Chrome 51 通过实验性Web平台标志提供支持。 Safari 9.1支持带前缀 Firefox 47不支持 处于这种无法使用的状态,我想知道是否存在任何其他方法来获得相同的结果。 也欢迎针对,,…的JS解决方法 可以通过跟踪的发展 问题答案: 从Chrome M76开始,背景音乐滤镜现已出厂,没有前缀,并且
问题内容: 我想要一个类属性,该表达式允许在等号的右侧进行表达式。所有版本的PHP都会阻塞以下代码,但是这种编写方式是为了将来更容易扩展。 对我来说,这似乎是非常基本的语法,并且为什么PHP不允许这样的事情是不可理解的。谁能想到可以保持以下代码的可读性和将来可扩展性的解决方法? 问题答案: 在PHP中声明类常量或属性时,只能为默认值指定原始值。因此,例如,该类声明将不起作用: 但是该类声明将: 这
遵循官方文件(https://camel.apache.org/manual/component-dsl.html#_using_component_dsl)我创建了以下代码: 但是中的告诉我: 并且中的特性不建议导入相应的库。 有人能给我指一下正确的方向吗 要做到这一点,我必须理解依赖注入的概念吗?
我正在为即将到来的测试复习,想知道是否有人能重述问题的b部分。这是从分发的复习表中得到的文本,但我不确定b部分到底在问什么。我更直截了当地猜测“生成一个不到0/1背包问题最优值1%的解”是什么意思。 b)[10pts]举了一个有两个对象的例子,说明对分数背包问题使用的相同的贪婪方法(略加修改,如果贪婪方法选择的最后一个对象不适合,则忽略它)得到的解不到0/1背包问题最优解的1%。