使用 LINQ 证明一组要求可以通过一组值来满足

2024-01-04

这是发布的问题的子集here https://stackoverflow.com/questions/16703082/crafting-a-linq-based-solution-to-determine-if-a-set-of-predicates-are-satisfied/16703389#16703389.

给定一组容量桶B={x1, x2, ..., xn}和一组装有一定体积液体的小瓶V={v1, v2, ..., vn }假设必须将小瓶全部倒入一个桶中,证明可以装满小瓶内容物的桶数的最佳方法是什么。允许溢出。

这里一些明显的不变量是桶的基数|B|必须小于或等于小瓶的基数|V|水桶的总体积Sum(B)必须小于或等于小瓶的总体积Sum(V)

这是一个众所周知的计算问题吗?如果是这样,是否可以设计一个简单的 LINQ 解决方案来用 C# 来表达这一点?

我觉得埃里克·利珀特 (Eric Lippert) 会在博客上讨论这一点;-)。


考虑此问题的一个实例,其中有两个相同大小的桶,并且 Sum(B) = Sum(V)。这意味着您需要将瓶子平均分配到两个桶中,否则一个桶会溢出,而另一个桶则没有足够的剩余量。这被称为分区问题 https://en.wikipedia.org/wiki/Partition_problem,并且已知它是 NP 完全的。

Edit:当然,NP完备性并不意味着问题无法解决,只是运行时间将与输入的大小(在本例中为最大桶大小的log2)成指数关系。

如果我们能找到装满一个桶(包括溢出)所需的最小液体量,那么解决问题的方法很简单,对每个桶执行此操作,然后从每个桶后的一组可用小瓶中取出用过的小瓶。

我们可以通过使用动态规划来做到这一点:

  • 对于给定的桶 b,考虑所有大小为 0 到体积 (b) 的桶。
  • 0号桶显然不需要液体
  • For each size s, find a vial v such that:
    • s-volume(v) 的解不使用 v
    • (s-体积(v)所用液体量)+体积(v)最小化
  • 最后,您将获得用于填充桶 b 的小瓶。然后,您只需从一组可用的小瓶中取出它们,然后移动到下一个桶。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 LINQ 证明一组要求可以通过一组值来满足 的相关文章

  • 使用 Linq C# 检查 XML 节点是否具有属性?

    如何检查节点是否确实具有特定属性 我有一个包含几个节点的 XML 文件 如下所示
  • 如何使用 lambda 表达式查询嵌套列表

    在我的存储库实现中 我可以使用 lambda 表达式运行以下查询 public IList
  • 在地图元素上使用 for_each

    我有一个映射 我想在其中对每个数据类型对象成员函数执行调用 我还知道如何在任何序列上执行此操作 但是是否可以在关联容器上执行此操作 我能找到的最接近的答案是 Boost Bind 访问 std for each 中的 std map 元素
  • 如何强制 LINQ to SQL 对可为空的外键执行 INNER JOIN?

    我有一个非常简单的设置 表 Node 具有可为空的外键 ObjectId 这在我的数据库模型中用一对多关联表示 现在 我想运行一个查询 为我提供具有特定对象 ID 的所有节点对象 在直接 SQL 中 这非常简单 SELECT Node Ob
  • 什么是日历队列?

    我正在致力于构建一个离散事件模拟器 维基百科提到有几种通用优先级队列非常适合在 DES 中使用 具体来说 它提到日历队列是一个很好的结构 我找到了一份 pdf 1988 年的 其中提到了日历队列 但在大多数情况下我找不到关于它们的任何其他内
  • Lamport 的 Paxos 中的矛盾做了简单的论文

    阶段 2 a 如果提议者收到大多数接受者对其准备请求 编号为 n 的响应 则它向每个接受者发送一个接受请求 以获取编号为 n 且值为 v 的提案 其中 v 是响应中编号最高的提案的值 或者如果响应未报告任何提案 则为任意值 正如论文中提到的
  • 构建表达式树

    我正在努力思考如何为更多 lambda 构建表达式树 如下所示 更不用说可能有多个语句的东西了 例如 Func
  • 按顺时针顺序对四个点排序

    数组中的四个 2D 点 我需要按顺时针顺序对它们进行排序 我认为只需一次交换操作就可以完成 但我还没有能够正式放下这一点 编辑 在我的例子中 这四个点是凸多边形 编辑 这四个点是凸多边形的顶点 它们不必按顺序排列 如果你想从更数学的角度来看
  • Java 服务器和浏览器客户端之间乐观对象复制的解决方案?

    我正在构建一个系统 多个用户需要同时创建 查看和修改一组对象 该系统计划在 Java 服务器和现代浏览器客户端上运行 我可以选择哪些 它需要在网络和服务器中断时具有鲁棒性 用户界面不得阻止修改 修改需要存储在本地并在连接恢复时发布 在正常操
  • com.jcraft.jsch.JSchException:算法协商失败

    我正在尝试从客户端计算机连接 sftp 服务器 但是 com jcraft jsch JSchException 算法协商失败 我收到这种错误 com jcraft jsch JSchException Algorithm negotiat
  • 快速计算幂(例如 2^11)[重复]

    这个问题在这里已经有答案了 可能的重复 实现基于整数的幂函数 pow int int 的最有效方法 https stackoverflow com questions 101439 the most efficient way to imp
  • 多线程归并排序,添加额外的线程

    我在java中的多线程合并排序算法中面临一个问题 我应该将代码修改为 3 4 5 6 7 8 线程合并排序 将原始数组划分为subArrays 目前它有2subArrays 如何将原始数组拆分为 3 4 5 6 7 8subArray是为了
  • 递归最长递增子序列的记忆

    我为最长递增子序列提出了简单的以下递归解决方案 但是 您可以帮助将记忆包含到这个递归解决方案中吗 public int findLIS int a int maxSoFar int item int count if item a leng
  • 将数字 1 排列在二维矩阵中

    给定二维矩阵的行数和列数 初始矩阵所有元素均为0 给定每行中应该出现的 1 的数量 给定每列中应该出现的 1 的数量 确定是否可以形成这样的矩阵 例子 Input r 3 c 2 no of rows and columns 2 1 0 n
  • 如何找到权重为 1、0、-1 且成本精确为 0 的多维路径

    我得到了一个有向图 其中有 n 个节点和边 向量的权重 每个向量的长度为 m 为数字 1 0 1 我想找到从一个节点到另一个节点 我们可以多次访问节点 的任何路径 或者说这样的路径不存在 使其权重之和等于仅由零组成的向量 我正在考虑暴力回溯
  • 如何查找具有给定名称的最高级别后代

    我正在寻找一种使用 linq 在 XML 树中查找第一个结果级别的方法 我的 XML 如下所示
  • 带提示的二分查找

    我有一个简单的std vector包含一些已排序的数字 按升序 我想查找一个元素 到目前为止我使用 return std lower bound vec begin vec end needle Where needle是我寻找的元素 然而
  • LINQ-to-SQL 是否支持组合查询?

    作为一名不懂 C 的程序员 我对 LINQ 查询的求值语义很好奇 如下所示 var people from p in Person where p age lt 18 select p var otherPeople from p in p
  • 拉伸数组

    我有一个形成曲线的样本向量 假设其中有 1000 个点 如果我想将其拉伸到填充 1500 个点 给出不错结果的最简单算法是什么 我正在寻找一些只有几行 C C 的东西 我总是想增加向量的大小 并且新向量可以是当前向量大小的 1 1 倍到 5
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable

随机推荐

  • 使用 OpenMP 任务的生产者-消费者

    我正在尝试使用 OpenMP 中的任务来实现并行算法 并行编程模式基于生产者 消费者的思想 但是 由于消费者进程比生产者进程慢 我想使用一些 生产者和若干消费者 主要思想是创建与生产者一样多的操作系统线程 然后每个 这些将创建要并行完成的任
  • 在 Android SDK 文件夹中找不到 SDK Manager.exe

    我需要安装一些软件包Android SDK Manager 但在我的SDK文件夹里没有 exe文件 只有AVD Manager和文件夹 我怎样才能找到它 我的SDK正常工作Android Studio 没有问题 奇怪的是SDK管理器 exe
  • 在另一个类中定义一个类并调用父方法

    我有 c 类定义和该类的一些内部类定义 class DoXJob def init self param1 param2
  • 更改 Holoviews 直方图上的 x 轴 (xlim)

    在 matplotlib 中 我们可以使用 xlim 方法更改 x 轴的限制 HoloViews中有等效的方法吗 我搜索了高压选项页面 http ioam github io holoviews Tutorials Options 但没有找
  • 如何在Python中对维基百科类别进行分组?

    对于我的数据集的每个概念 我都存储了相应的维基百科类别 例如 考虑以下 5 个概念及其相应的维基百科类别 高甘油三酯血症 Category Lipid metabolism disorders Category Medical condit
  • 使用自定义 WCF 正文反序列化而不更改 URI 模板反序列化

    From 这篇博文 http blogs msdn com b carlosfigueira archive 2011 05 03 wcf extensibility message formatters aspx 我能够创建自定义 WCF
  • Healpy map2alm 和 alm2map 不一致?

    我刚刚开始使用Healpy 并注意到如果我使用地图来获取alm 然后使用这些alm来生成新地图 我不会得到我开始时使用的地图 这是我正在看的内容 import numpy as np import healpy as hp nside 2
  • 使用 AJAX 将值从普通 JavaScript 转换为 PHP

    我想知道如何使用 ajax 和 vanilla javascript 向 php 发送内容 我问你是因为我刚刚找到了 jQuery 解决方案 我知道如果我想收到一些东西 它应该是这样的 var xhttp new XMLHttpReques
  • 通过 CodeIgniter 连接到 SQL Server

    我正在尝试设置 Windows 开发环境 Windows 8 1 with IIS 8 5 running SQL Server 2008RC2 and PHP 5 3 24 代码点火器 2 1 4 我可以通过普通 PHP 脚本中的 PDO
  • Android SetNestedScrollingEnabled 未调用?

    我有一个嵌套的子滚动视图 它设置为禁用滚动 直到父滚动视图完成向上滚动 设置childScrollView setNestedScrollingEnabled false 最初工作 然后重新启用childScrollView setNest
  • HTML5 是否支持点对点(而不仅仅是 WebSocket)

    我使用的语言是 HTML5 兼容浏览器上的 Javascript 我的理解是 WebSockets 需要一个套接字服务器在客户端之间来回传输推送通知和消息 HTML5 是否有不需要套接字服务器的实际点对点功能 有谁见过 Javascript
  • sonarqube 中的 C# 项目

    当我运行 sonar runner 来分析我的简单 C 项目时 分析因 SonarLint Runner exe 权限被拒绝错误而终止 ERROR Error during SonarQube Scanner execution ERROR
  • 开玩笑设置“语法错误:意外的令牌导出”

    我正在对当前没有测试的现有项目实施测试 我的测试无法编译node modules 进口 Users me myproject node modules lodash es lodash js 10 export default as add
  • Azure 搜索服务中的点击突出显示

    我是 Azure 搜索服务的新手 我想使用 Azure 搜索服务的命中突出显示功能 我正在使用 NET SDK NuGet 包进行 azure 搜索 我使用 SearchParameter 对象来提及命中突出显示字段以及我需要的前标签和后
  • 在 Firebase Cloud Functions 项目中生成 Swagger 文档

    是否可以从 firebase 云函数中的函数注释生成 Swagger Spec 文件 如果是的话 我们该怎么做呢 我看到云函数代码更像是无服务器 所以想知道这是否可能 我还没有找到自动的方法 但是有很多库可供选择 我在 Firebase F
  • Swinject - 对成员的模糊引用

    我在用Swinject https github com Swinject Swinject in my Swift 3应用程序 当我尝试时 let container Container container register Networ
  • 什么时候适合使用UDP而不是TCP? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 由于 TCP 保证数据包传送 因此可以被认为是 可靠的 而 UDP 不保证任何东西 并且数据包可能会丢失 在应用程序中使用 UDP 传输数
  • Swift Firebase 检查用户是否存在

    What am i doing wrong I have a database structure like the one shown in this image In appleDelegate swift i just want to
  • Apache Tiles 和 Spring MVC 中的全局异常页面

    当抛出未处理的异常时 例如RuntimeException 然后我想显示一个常见的错误页面 我想实现一些目标 重用 HTML 模板 使用带有标头等的通用 框架 并将异常信息放入正文中 在正文文档中提供有关异常的一些基本信息 我正在使用 Ap
  • 使用 LINQ 证明一组要求可以通过一组值来满足

    这是发布的问题的子集here https stackoverflow com questions 16703082 crafting a linq based solution to determine if a set of predic