当前位置: 首页 > 知识库问答 >
问题:

为什么要对0/1背包进行动态编程?

阴凯歌
2023-03-14

共有1个答案

和光启
2023-03-14

对于基于分数的方法,您可以很容易地找到一个反例。

考虑

W=[3, 3, 5]
V=[4, 4, 7]
Wmax=6

您的方法给出了最优值vopt=7(我们取的是7/5>4/3以来的最后一项),但取前两项会给出vopt=8

 类似资料:
  • 在我发现的每一个使用动态规划的1/0背包问题的例子中,项目有权重(成本)和利润,它从来没有明确地说要对项目列表进行排序,但在所有例子中,它们都是通过增加权重和利润来排序的(在例子中,权重越高,利润越高)。所以我的问题是当从项数组/列表中添加矩阵中的项时,我可以按照任何顺序添加它们,还是添加权重或利润最小的那个?因为从多个例子中,我发现我不确定这是否只是一个巧合,或者你真的需要每次把最小的权重/利润

  • 我对这个问题有点困惑。作为算法帮助我找到最大的利润从袋。但是这个算法并没有告诉我我应该拿哪一个项目会让我的利润最大。例如 n=4项,背包的容量M=8,利润=[15,10,9,5],重量分别为w=[1,5,3,4],当我解决这个问题时,我得到最大的利润为29 这里是解决方案[http://www.mafy.lut.fi/study/DiscreteOpt/DYNKNAP.pdf] 但是我想知道我应该

  • 我写了一个背包类,我用它来解决背包算法。这个类正在使用动态规划算法来解决这个问题。 我在代码中实现了一些优化,因此我使用线性O(W)空间来找到最大值,但当我试图找到见证时,我仍然需要O(nW)空间来保持布尔表。 有人能告诉我,是否有可能找到背包容量最大、空间较小、复杂度与O(nW)相同的证据,这里W是背包容量。 如果您认为代码中可能还有更多优化,请也告诉他们。

  • 我有一个无序数组,由连续的整数组成,没有任何重复项。允许交换任意两个元素。我需要找到按升序对数组排序所需的最小交换数。 在本例中,您可以看到,对于p=1,当索引为0和1时,交换不发生。 我改变了b[p-1],b[b.index(p)]的顺序,我不再有同样的问题了,但我不明白原因。

  • 使用 san-store 进行应用状态管理,就要先接受它的理念: 单向流 全局唯一的应用状态源 状态更新模式单一,不能通过store直接更新应用状态 那么,使用 san-store 进行应用状态管理,和自己在组件里完成所有事情,有什么区别呢? 自己管理你的应用状态 自己在组件里完成所有事情,意味着你需要自己管理你的应用状态。经验丰富的开发人员能够凭着设计经验和直觉让应用良构,但在不断的迭代与新需求

  • 本文向大家介绍PHP动态规划解决0-1背包问题实例分析,包括了PHP动态规划解决0-1背包问题实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了PHP动态规划解决0-1背包问题。分享给大家供大家参考。具体分析如下: 背包问题描述:一个承受最大重量为W的背包,现在有n个物品,每个物品重量为t, 每个物品的价值为v。 要使得这个背包重量最大(但不能超过W),同时又需要背包的价值最大。 思