具有特殊条件的子集和

2024-02-03

(在您回复另一个问题的链接或将其作为重复项关闭之前,请仔细阅读该问题。这与该问题的标准变体不同,我已经搜索了很长时间,所以我很确定没有这里没有这样的问题)

我需要找到是否最小可能的S这是一些的总和X[i] 的子集那是>= T(某个目标值,小于全套的总和)。

该集合不是很大(大约 40 个元素),但对于指数回溯解决方案来说仍然太大。

The 数字和总和是巨大的(大约10^15),所以动态编程不起作用(可能的状态数量很大,所以记忆表很快就会耗尽内存)。

出于同样的原因,Pisinger 的线性时间算法不起作用(它是 O(nr),其中 r 是总和的上限,在这种情况下太大)。

在这种总和很大但数字很少的情况下,是否有一些确定性算法可以帮助我?我不想诉诸某种近似算法。


鉴于上述条件,我相信回溯解决方案分支定界 http://en.wikipedia.org/wiki/Branch_and_bound是您获得精确解决方案的最佳机会。

这个想法是检查所有子集,但您可以在算法运行期间修剪计算树以获取一些可能的子集。

例如,假设您正在寻找S = 10^8,并且您已经找到了解决方案sol=10^8 + 10^7,现在,您正在检查某些子集的超集X,你会发现sum(X) = 10^9。无需继续检查包含以下内容的任何子集X,你可以简单地跳过它们 - 它们不会让你达到最佳状态。

我还尝试并行化解决方案,分支定界通常很容易并行化,只需要偶尔同步新的最佳解决方案。

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

具有特殊条件的子集和 的相关文章

  • Networkx 中 Louvain 分区的可视化

    请帮助我更改 Louvain 聚类算法结果的可视化 我从网站上获取了代码https github com taynaud python louvain https github com taynaud python louvain我可以重写
  • 我可以在线性时间内检查有界列表是否包含重复项吗?

    假设我有一个Int列表 其中元素已知是有界的 并且列表已知不长于它们的范围 因此它完全有可能不包含重复项 如何才能最快地测试是否是这种情况 我知道nubOrd https hackage haskell org package contai
  • 计算某个数的某次幂的模(该次幂的数字相当大)

    我想自己计算RSA算法 我需要计算某个数的某个幂的模数 问题是 在一定的功率下 这个数字可能会变得相当大 这就是我想要的 x pow n p q 如何有效地确定 x 如果您使用 NET 4 我建议您查看BigInteger http msd
  • 在哪里可以找到产生无标头输出的无损压缩算法?

    你们中有人知道产生无标头输出的无损压缩算法吗 例如不存储用于压缩的哈夫曼树吗 我不是谈论硬编码的霍夫曼树 但我想知道是否有任何算法可以压缩和解压缩输入而不在其输出中存储一些元数据 或者这在理论上是不可能的吗 当然是可能的 其中 LZ 系列压
  • 平均值大于或等于 k ​​的最长连续子数组

    考虑一个包含 N 个整数的数组 找到最长的连续子数组 使其元素的平均值大于 或等于 给定数字 k 显而易见的答案具有 O n 2 复杂度 我们可以做得更好吗 我们可以通过在 O n 时间内从所有值中减去 k 将这个问题简化为 sum gt
  • 数独生成器算法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我制作了一个生成数独的算法 但效率非常低 每个谜题都需要几分钟才能生成 所以现在我正在尝试以最佳方式重新编写它 但我遇到了一些问题 需
  • 缓存施瓦茨变换

    我正在学习 中级 Perl 它非常酷 我刚刚读完 施瓦茨变换 部分 在理解它之后 我开始想知道为什么变换不使用缓存 在具有多个重复值的列表中 转换会重新计算每个值的值 因此我想为什么不使用哈希来缓存结果 这是一些代码 a place to
  • Clang 与 1 优化相反

    经过与同事的讨论后 我最终测试了 clang 是否可以将倒数为 1 的两个分区优化为单个分 区 const float x a b x not used elsewhere const float y 1 x 理论上 clang 可以优化为
  • 计算字母表的第 n 个 6 个字符排列

    我已经研究了好几天 试图找到解决这个问题的方法 如果需要的话 我很乐意花钱请人咨询时间来解决这个问题 我目前正在使用Python迭代工具 http docs python org 2 library itertools html生成 32
  • 用于查找遍历图中所有顶点的路线的更好算法是什么?

    所以我有以下问题 给定 x x y 维度的网格 计算路线数 穿过它 从一个角开始 假设左上角 并结束于 另一个 右下 并穿过每个顶点 因此 我当前的方法只是通过尝试每条可能的路径并计算到达终点并遍历每个节点的路径来进行暴力破解 虽然它有效
  • 期望最大化抛硬币的例子

    我最近一直在自学期望最大化 并在这个过程中给自己举了一些简单的例子 http cs dartmouth edu cs104 CS104 11 04 22 pdf http cs dartmouth edu cs104 CS104 11 04
  • 在 VB6 中计时函数/测量性能的最佳方法是什么?

    如果我只想快速测量特定函数花费的时间 我可以调用什么来获得准确的计时 鉴于VB6计时函数精度不高 是否可以调用Windows API函数 您还通过哪些其他方式衡量应用程序性能 有推荐的第三方工具吗 我通常使用 Windows 高分辨率性能计
  • 求从1到N的所有数字的数字之和[重复]

    这个问题在这里已经有答案了 问题 求1到N 包括两端 所有数字的数字之和 时间复杂度应该是 O logN 对于 N 10 总和为 1 2 3 4 5 6 7 8 9 1 0 46 对于 N 11 总和为 1 2 3 4 5 6 7 8 9
  • 如何解决素数函数的大O表示法?

    我正在尝试理解 Big O 表示法 很抱歉 如果我问的问题太明显了 但我似乎无法理解这一点 我有以下 C 代码函数 我正在尝试为其计算 Big O 表示法 for i 2 i lt 100 i for j 2 j lt i j j if i
  • 快速算法可以快速找到一组范围中某个数字所属的范围?

    场景 我有几个数字范围 这些范围不重叠 由于它们不重叠 逻辑结果是任何时候任何数字都不能属于多个范围 每个范围都是连续的 单个范围内没有空洞 因此范围 8 到 16 将真正包含 8 到 16 之间的所有数字 但两个范围之间可能存在空洞 例如
  • 如何跟踪此对象图深度优先搜索算法中的深度?

    我有这段代码 它迭代一棵树 进行深度优先搜索 每个元素都只处理一次 非常好 void iterateOverTree TreeNode node NSMutableArray elements NSMutableArray array el
  • 最大化数组中成对距离的总和

    想象一个清单 e1 e2 en 和一个函数f e1 e2 gt number返回常数时间内任意两个元素之间的距离 f e e 0 e1 e2 gt f e1 e2 gt 0 f e1 e2 lt f e1 e3 f e3 e2 目标是排列列
  • 难题:需要一个不允许排序和/或散列的“复杂”等价关系/分区的示例

    从问题 分区比排序更容易吗 https stackoverflow com questions 3256468 is partitioning easier than sorting 假设我有一个项目列表和一个 它们之间的等价关系 以及 比
  • 如何判断一组大小为 N 的 3 个数字之和是否恰好等于 M

    我想知道如何实现比 O N 3 更好的解决方案 它类似于背包和子集问题 在我的问题 N 您可以从一些通用技巧中受益 以提高算法的性能 1 不要存储只使用一次的东西 存储超出实际需要的内容是一个常见的错误 每当你的记忆力要求似乎爆炸时 要问自
  • 对相当大的整数的大集合的操作的快速实现

    描述 我实现了以下类 LabSetInt64 参见下面的代码 这里的目标是尽可能快地操作大量大整数 最多 10M 的值 我的主要要求集中在 至关重要 尽快获取集合的大小 基数 重要 能够非常快速地迭代一组集合 所以 从下面的实现开始 我还有

随机推荐

  • NSWindowController:loadWindow从nib加载窗口但showWindow:不执行任何操作

    我有一个 NSWindowController 子类 名为 PreferencesWindowController通过以下实施 synthesize window id init self super initWithWindowNibNa
  • 将 TPL 与 ConcurrentDictionary 和“addValueFactory”一起使用有什么风险? MSDN暗示线程问题

    MSDN 是这么说的 http msdn microsoft com en us library ee378675 aspx关于多线程环境下的addValueFactory Remarks 如果在不同线程上同时调用 AddOrUpdate
  • 在 Flutter 中禁用 firestore 上的缓存

    如何禁用从 firestore 上的缓存获取 流数据 我看到了这篇文章 该功能默认启用启用持久性 https cloud google com firestore docs manage data enable offline 这样是不是就
  • 高效创建可观察对象,从可观察集合中过滤特定项目

    我有一个 RxJS 主题 用于发布对集合的更改 每次集合发生变化时 主题都会将新内容作为数组发布 例如 let collectionSubject new Rx BehaviourSubject collectionSubject onNe
  • Chart.js 图表上的叠加线

    我想知道是否可以在 Chart js 图表上叠加一条线 例如折线图 例如 在 x 轴上 将在图表中的值 20 处绘制一条水平线 我创建了一个称为叠加图表的东西 并将其添加到我的 Chart js 分支中 https github com l
  • Angular 9 BaseComponent 与 @Injectable()

    在 Angular 8 中 我能够使用 Injectable 属性创建基本组件 继承实际组件的类 Angular 9 编译器告诉我 组件 YourComponent 从 BaseComponent 继承其构造函数 但后者没有自己的 Angu
  • 一州内的县等值区域地图

    我正在努力定制并找到正确的代码来构建分区统计图 我正试图通过特定州的县来获取企业的利润 到目前为止 我所做的是能够绘制我的代码 尽管使用了我不想要的调色板和不希望出现的中断 library choroplethr library ggplo
  • 同步 android gradle appcompat 27.0.1

    我是 android studio 的新手 不确定 gradle 设置 我已经下载了 Android API 27 这是我得到的错误 错误 无法解决 app debug compileClasspath 的依赖关系 无法解析 com and
  • WebGL 中的透明纹理行为

    环境 WebGL Chrome 当使用透明 png 作为模型纹理时 我有以下行为 图像 A 树将建筑物隐藏在其后面 我看到了世界框纹理 它也隐藏自己 后面的分支不可见 同时 图像 B 工作正常 窗口是透明的 我可以看到后面的内容 A B 两
  • 如何匹配Python中封装在列表中的两个字典的键?

    我有两本词典 位于列表中 该列表如下所示 10 1 1 0 1 10 1 1 1 2 10 1 1 0 3 10 1 1 1 4 我需要的是相同的键 即匹配的 ip 我想要相应的数字或值 因此示例输出如下所示 10 1 1 0 1 10 1
  • 优雅地停止 Docker 容器

    我无法理解当容器停止时如何进行一些清理 为了方便起见 我准备了一个示例来重现该问题 以下是我的文件的内容 Dockerfile FROM opensuse latest Install tcsh non interactive mode R
  • 如何使用MACROS(VBA)获取Excel中最后一个非空单元格的地址

    我想获取 Excel 工作表中最后一个非空单元格的单元格地址 基本上我想要最后一个非空单元格的行号和列号 名称 我发现很少有答案可以找出最后一个非空单元格中的值 但我需要单元格地址而不是内容 对于这样的数据 大多数人都希望找到Blue ce
  • 如何在默认的 Eclipse XML 编辑器中显示拼写建议列表?

    我启用了默认的 Eclipse 拼写检查器 当我在 Java 编辑器中工作时检测到拼写错误时 我可以使用Ctrl 1显示建议的拼写更正列表 然而 当我使用默认的 XML 编辑器时 Ctrl 1似乎不起作用 拼写错误的单词 主要是在评论中 正
  • preg_split 意外行为

    I use 预分割 http php net manual en function preg split php如下
  • 无法推送到 Google 容器注册表(无法访问存储库)

    每当我尝试从本地计算机将容器推送到 Google 容器注册表时 都会收到以下错误 被拒绝 无法访问存储库 请检查您是否有权访问它 如果我打开 Cloud Shell 我可以毫无问题地推送容器 我曾多次尝试执行 gcloud auth log
  • 如何使用 EclipseLink 和 Spring 配置动态编织?

    如何使用 EclipseLink 和 Spring 配置动态编织 现在我正在尝试让它与 Junit 测试一起工作 但稍后我必须让它与 Tomcat 一起工作 我的部门已经标准化它大约 10 年了 我遇到两个主要问题 1 Spring需要一个
  • 矩阵中元素的频率 - Matlab

    从我在 matlab 中运行的函数中我得到一个 225x400 矩阵 我想计算这个矩阵中每个元素的频率 这意味着我需要计算每个元素在矩阵上出现的次数 我的矩阵名称是 Idiff 我在用 B unique Idiff 找到 Idiff 矩阵中
  • Android TV以编程方式切换HDMI输入端口

    我想问一下经验丰富的程序员 是否有一种方法可以通过直接安装在电视 Sony Bravia 上的应用程序以编程方式切换 HDMI 输入端口 比方说 在应用程序启动时 电视将其输入切换为 HDMI3 Android 中有通用的 API 还是特定
  • 消除外边距 (Ggplot2 / geom_sf)

    我一直想知道是否可以避免 Ggplot2 包含这个外部边距 绘图区域周围黑框之外的空白区域 我认为又名绘图边距 下面是我的代码 我可以很好地控制绘图边距 但我尝试了不同的方法来减少外部边距 但到目前为止没有任何效果 我还想澄清一下 我知道在
  • 具有特殊条件的子集和

    在您回复另一个问题的链接或将其作为重复项关闭之前 请仔细阅读该问题 这与该问题的标准变体不同 我已经搜索了很长时间 所以我很确定没有这里没有这样的问题 我需要找到是否最小可能的S这是一些的总和X i 的子集那是 gt T 某个目标值 小于全