2 个容量相同的背包 - 为什么我们不能两次找到最大值

2024-02-01

如果给你一组具有值和重量的物品:[(w1,v2),(w2,v2),...(wn,vn)],以及两个容量相等的背包 Knap1 和 Knap2 C,则目标是确定可以分别放入 Knap1 和 Knap2 的物品 S1 和 S2 的最佳子集,并最大化背包的价值和容量。

解决此问题的错误方法是首先使用 DP 编程算法使用所有项目作为候选项来填充 Knap1,然后使用 Knap1 中剩余的项目来填充 Knap2。

我不明白如果两个背包的容量相等,为什么这个算法是不正确的。有人可以解释一下或者举个例子吗?


A 反例:
项目集 S:(w_i, v_i)

   s_1=(1,2) , s_2=(2,1) , s_3=(3,10) , s_4=(4,7) 

背包容量:c_1 = c_2 = 5

你的第一轮 DP 会拿走这些物品s_1 and s_3这将导致价值12。现在对于第二个背包,有s_4 and s_2左边。因此你的算法将选择s_4这将导致价值7. s_2将被剩下。
总价值:19

最佳解决方案是s_1 and s_4在一个背包里,并且s_2 and s_3在另一个。 最佳总价值:20

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2 个容量相同的背包 - 为什么我们不能两次找到最大值 的相关文章

  • 使用主方法求解 T(n) = 2T(n/2) + n/log n 和 T(n) = 4T(n/2) + n/log n 之间的差异

    我最近偶然发现了一个资源 其中 2T n 2 n log ntypeMM 宣布复发无法解决 我接受它作为一个引理 直到今天 另一种资源被证明是矛盾的 在某种意义上 根据资源 下面的链接 其中的 Q7 和 Q18 是建议 分别在问题中的1和2
  • 如何确定算法函数的复杂度?

    您如何知道算法函数对于特定操作是否需要线性 常数 对数时间 它取决于CPU周期吗 您可以通过三种方式 至少 做到这一点 在网上查找算法 看看它是如何描述其时间复杂度的 根据输入大小 自己检查算法 查看嵌套循环和递归条件等内容 以及每个循环运
  • 在 C# 中实现动态代理的最佳方法是什么?

    我需要在 C 中创建动态代理 我希望这个类包装另一个类 并采用它的公共接口 转发对这些函数的调用 class MyRootClass public virtual void Foo Console Out WriteLine Foo int
  • 找到一系列间隔的最有效分组

    我有一个应用程序 其中有一系列不重叠的固定宽度间隔 每个间隔都有一个给定的键 每个间隔具有相同的宽度 并且可以存在连续的间隔 本质上 我想以最小化单独间隔的数量的方式对间隔和键进行分组 这可以通过合并具有相同键的连续间隔或查找匹配间隔并将它
  • 最慢的计算复杂度(Big-O)

    在这些算法中 我知道 Alg1 是最快的 因为它是 n 平方的 接下来是 Alg4 因为它是 n 的立方 然后 Alg2 可能是最慢的 因为它是 2 n 这应该具有非常差的性能 然而Alg3和Alg5在我的阅读速度方面还没有遇到过 这两种算
  • 时间复杂度和运行时间有什么区别?

    时间复杂度和运行时间有什么区别 它们是一样的吗 运行时间是指程序运行所需的时间 时间复杂度是对输入大小趋于无穷大时运行时间渐进行为的描述 您可以说运行时间 是 O n 2 或其他什么 因为这是描述复杂性类和大 O 表示法的惯用方式 事实上
  • Karasuba算法递归过多

    我正在尝试用 c 实现 Karasuba 乘法算法 但现在我只是想让它在 python 中工作 这是我的代码 def mult x y b m if max x y lt b return x y bm pow b m x0 x bm x1
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • 包围一组点的多边形

    我有一组 S 点 2D 由 x 和 y 定义 我想找到 P 包围该组所有点的最小 含义 具有最少数量的点 多边形 P 是S 有没有已知的算法来计算这个 我在这个领域缺乏文化令人惊讶 感谢您的帮助 对于这个问题有很多算法 它被称为 最小边界框
  • 用 C++ 生成 AST

    我正在用 C 制作一个解释器 到目前为止我已经有了词法分析器来生成标记 问题是我不确定如何生成 行走 解析树 我正在考虑使用数组数组来制作解析树 但我不确定如何以正确的顺序将标记实际插入到解析树中 我不确定是自上而下 左右还是自下而上 左右
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • 数学组合的完美最小哈希

    首先定义两个整数N and K where N gt K 两者都在编译时已知 例如 N 8 and K 3 接下来 定义一组整数 0 N or 1 N 如果这使答案更简单 并调用它S 例如 0 1 2 3 4 5 6 7 的子集数量S wi
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • 迭代任意大小的子集

    我可以迭代大小为 1 的子集 for int a 0 a lt size a 或大小为 2 的子集 for int a1 0 a1 lt size a1 for int a2 a1 1 a2 lt size a2 or 3 for int
  • 给定一个具有多个重复条目的数组,找到一个重复条目 O(N) 时间和常数空间

    我们得到了一个大小为 N 的数组 其中包含 0 到 N 2 范围内的整数 包括 0 和 N 2 该数组可以有多个重复的条目 我们需要在 O N 时间和常量空间中找到重复条目之一 我正在考虑取数组中所有条目的乘积和总和 以及 0 到 N 2
  • 具有 2 个属性的背包算法。如何在 3d 数组中实现它?

    当有超过 1 个属性时 我无法理解背包问题 当有 1 个属性时 我必须编写一个使用具有 2 个属性的背包算法的程序 老师告诉我们 它必须在 3d 数组中完成 错误的实现将导致 O 2 n 处理时间 我无法想象这样的数组会是什么样子 假设这是
  • 在 O(n) 时间内排序?

    我被这个问题困扰了 2周 知道如何处理它吗 令 L 为 n 个不同整数的列表 假设 L 的 x 的元素在 1 750 范围内 设计线性排序算法对 L 的元素进行排序 我已经尝试过插入排序 但我不确定我的方法是否正确 Construct an
  • 解开 Knuth 的结:如何重构意大利面条式代码?

    这个问题的灵感来自如何将流程图转化为实施 https stackoverflow com questions 36647765它询问如何通过算法消除goto代码中的语句 这answer https stackoverflow com a 3
  • 每个术语出现的次数

    我得到了一个数组a n 2 where n can be 10 5最大时有n个科目和n个学生 全部编号为 1 2 n a i 0 and a i 1 1 lt i lt n 表示在第 i 个科目中 所有来自a i 0 to a i 1 通过
  • 照片马赛克算法。如何在给定基本图像和瓷砖列表的情况下创建马赛克照片?

    Hy 我要做的是创建一个程序 使用 C 或 C 它将 24 位 像素位图和图像集合作为输入 我必须创建一个马赛克图像 类似于使用库的输入图像给定的图像 创建与输入类似的马赛克照片 到目前为止 我可以访问输入的图像像素及其颜色 但我有点卡住了

随机推荐

  • 表单重置按钮是否会触发选择元素的 onChange 事件?

    我有一个带有一些选择元素的表单onChange附加到它们的事件 我希望即使有人单击表单重置按钮也能触发该事件 我的问题是 重置表单是否会触发选择元素onChange event 这是 jQuery 中的一个简单示例
  • 为什么 Time.strptime() 返回当前日期?

    向私有 无公共文档 API 发出 GET 请求会返回 JSON 格式的数据 我感兴趣的值是日期 它返回 ASP NET JSON 日期格式的日期 它看起来是这样的 AanmeldDatum Date 1406675114000 0200 还
  • 如何测试JavaMailSender?

    我的问题不大 我创建了 MailService 来发送邮件 当我运行程序时 它有效 我拥有的所有可通过电子邮件发送的属性resources application properties 我在用着spring boot starter mai
  • 访问 Rcpp 中的命名列表元素

    我想在 Rcpp 中按名称访问命名列表元素 In R gt b list bgroups c 1 1 1 1 1 0 0 0 0 0 gt b bgroups 1 1 1 1 1 1 0 0 0 0 0 然后当尝试在 Rcpp 中访问它时
  • sonatype Nexus docker 卷错误

    我正在尝试使用 docker 安装 sonatype nexus 并希望共享 docker opt sonatype work与主机的 Nexus 存储库 Linux ubuntu 14 04 opt nexus 我的泊坞窗文件 FROM
  • 如何在 Visual Studio 中设置 docker 网络模式

    如何将网络模式设置为托管在 ASP NET Core docker 容器中 我怀疑它可能在启动文件中 但没有任何关于网络或其他 docker 相关设置 标志的内容 我可以在哪里指定它们 Thanks 在 launchSettings jso
  • TensorFlow:numpy.repeat() 替代方案

    我想比较预测值yp以成对的方式来自我的神经网络 所以我使用 回到我旧的 numpy 实现中 idx np repeat np arange len yp len yp jdx np tile np arange len yp len yp
  • 编写eclipse junit插件测试

    我从哪里开始编写插件测试 我已经编写了一些玩具插件 并且想开始使用我的插件进行 TDD 如果您的插件是 RCP 富客户端平台 插件 使用 SWT 您可以使用SWTBot http www eclipse org swtbot 这些测试可以封
  • 我可以使用哪种 javascript 或 JQuery 图表工具来创建带有垂直列标签的热图?

    我正在寻找一个可以绘制热图的图表库 并且可以选择垂直显示列标签文本 允许我在屏幕上显示大量列 无论标签的长度如何 理想情况下 图书馆对慈善 教育组织免费 以下是带有垂直标签的简单热图示例 该图表是使用 FusionCharts 创建的 它不
  • 公众无法访问 Firebase Cloud Function [应用程序正在请求访问您的 Google 帐户的权限。]

    我刚刚将 Express 与 Firebase Cloud Functions 结合使用并创建了一个端点 app get time req res gt const date new Date const hours date getHou
  • 使用 Passport 和 Laravel 进行身份验证时返回访问令牌和用户

    我正在使用 Laravel 5 4 和 Passport 创建一个 API API 授权是使用密码授予类型完成的 以下是请求示例 http new GuzzleHttp Client response http gt post http y
  • 在 Woocommerce 结帐页面中的所有默认通知之前显示自定义通知

    我使用以下代码在结帐页面中向未登录的 woocommerce 用户 访客 显示自定义消息 add action woocommerce before checkout form my custom message function my c
  • 将保存/更新调用轨道转换为 sql

    我想获取运行时生成的sql save 当我在控制台中运行此命令时 irb main 018 0 gt a User last irb main 018 0 gt a first name gt Mohan irb main 019 0 gt
  • Powershell进度条

    我是 Powershell 新手 在获取进度条来使用 foreach object 循环时遇到问题 如果可能的话 感谢 Chris 下面是我到目前为止所得到的 我的问题是进度条到达某个点 然后出现错误 101 参数大于最大允许范围 100
  • 如果 RSS 源未更改,则不执行任何操作

    我想每隔几分钟运行一个Python脚本 该脚本首先从 rss feed 中获取最新文章 使用 feedparser 我想要的是 当最新的文章与上次运行的文章相同时 脚本就结束了 我该如何实现这个目标 既然你在 python 问题中提到 fe
  • UML 的高效替代方案

    我发现 UML 很难快速创建 我想更快地表达我的想法 特别是对于小型开源项目 如果它足够大 我会费心使用 UML 但是这个项目对于这种事情来说太小了 我不想要另一个让我觉得 不 我稍后再做 的工具 有什么建议么 UML 不是一种工具 而是一
  • 是否可以在免费套餐中使用 Google Cloud Kubernetes 集群?

    纵观免费套餐特点 https cloud google com free docs gcp free tier对于 Google Cloud 它指出 VM 实例必须位于以下区域us west1 VM 机器类型必须是f1 micro 因此 为
  • Java 方法中 byte[] 和 byte ... 的区别

    有人问我这两个方法参数之间有什么区别以及为什么要在专门分配的数组上使用 putMessage byte send putMessage byte send 我无法自信地回答他们 也不记得 叫什么 The 在你的第一个例子中被称为vararg
  • 如何在node.js后端获取昨天的日期?

    我在用日期格式包在节点后端 我可以使用获取今天的日期 var today dateFormat new Date 以相同或其他方式我想要昨天的约会 我仍然没有得到任何正确的方法 目前我正在使用大量代码手动计算昨天的日期 除了手动写入还有其他
  • 2 个容量相同的背包 - 为什么我们不能两次找到最大值

    如果给你一组具有值和重量的物品 w1 v2 w2 v2 wn vn 以及两个容量相等的背包 Knap1 和 Knap2 C 则目标是确定可以分别放入 Knap1 和 Knap2 的物品 S1 和 S2 的最佳子集 并最大化背包的价值和容量