寻找最小组件集合的算法

2024-03-31

我正在寻找一种算法来解决以下问题。我有给定集合 (a-h) 的多个子集 (1-n)。我想找到最小的子集集合,它允许我通过组合来构造所有给定的子集。该集合可以包含 1-n 中尚不存在的子集。

  a b c d e f g h
1 1
2 1   1
3   1     1   1
4 1       1
5   1         1
6 1     1   1   1
7 1       1 1   1
8 1   1       1
9 1         1   1

下面是两个可能的集合,其中最小的包含七个子集。我用 x 表示新的子集。

1 1
x   1
x     1
x       1
x         1
x           1
x             1
x               1

1 1
x   1         
x     1
x       1        
x         1    
x           1   1
x             1

我相信这一定是一个已知的问题,但我对算法不是很熟悉。非常感谢任何帮助,以及更好的主题标题的建议。

Thanks!

Update

图形着色让我受益匪浅,谢谢。然而,就我而言,子集是允许重叠的。例如:

  a b c d
1 1 1 1  
2 1 1 1 
3 1 1 1
4     1 1
5 1 1 1 1

图形着色给了我这个解决方案:

x 1 1
x     1
x       1     

但这也是有效的,而且更小:

1 1 1 1  
4     1 1

这个问题被称为集合基础,它是 NP 完全的(Larry J. Stockmeyer:集合基础问题是 NP 完全的。技术报告 RC-5431,IBM,1975)。其图问题的表述为二分维数 http://en.wikipedia.org/wiki/Bipartite_dimension。由于一般来说很难解决,因此查看数据是否有任何有用的属性可能会很有用(例如,集合很小吗?解决方案很小吗?所有集合都可以出现吗?)

我想不出一个简单的 ILP 公式。相反,您可以尝试将问题简化为 Clique Cover,这已得到更好的研究,可以使用以下任一简化方法:或来自也不是等人。 http://dx.doi.org/10.1007/978-3-642-13509-5_19。我已经写了一篇论文讨论Clique Cover 的算法 http://dx.doi.org/10.1145/1412228.1412236,并写了一个派系覆盖解算器 http://www.user.tu-berlin.de/hueffner/ecc/具有精确求解器和两种启发式方法。

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

寻找最小组件集合的算法 的相关文章

  • AWS ElasticSearch Service - 从 CF 模板设置加密选项

    我正在创建一个云形成模板来在AWS中配置elasticsearch服务域 我想将加密下的此属性设置为 true 域的所有流量都需要 HTTPS 但我无法在 AWS 文档中找到执行此操作的方法 用于设置加密属性的其他选项 例如 启用静态数据加
  • 根据 GLSL 中向量的特定分量执行最小-最大的最快方法?

    我需要在我的 GLSL 代码中多次调用这种函数 vec2 minx vec2 a vec2 b if a x lt b x return a else return b 我担心过度分支 有没有办法避免 if else 结构 我建议使用 GL
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 如何在不声明新数据的情况下更改类型(String,Int)元组的 Ord 实例?

    我正在尝试对类型列表进行排序 String Int 默认情况下 它按字符串排序 然后按整数排序 如果字符串相等 我希望它是相反的 首先比较整数 然后如果相等则比较字符串 另外 我不想切换到 Int String 我找到了一种通过定义实例来实
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 如何在 Jquery/Javascript 中绑定模糊和更改,但只触发一次函数?

    我试图在选择元素更改时触发函数 由于 Ipad 在 on change 方面遇到问题 我还想绑定到 blur 这在 Ipad 上工作得很好 但是我不希望两个事件都触发该函数两次 所以我需要某种挂钩来确保两个事件是否都触发change and
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk
  • Ruby 中的 url_encode

    I read 的文档url encode http rdoc info stdlib erb 1 9 3 ERB Util 3Aurl encode 是否有一个表可以准确地告诉我哪个字符被编码为什么 使用url encode ERB s u
  • jolt变换后json对象的排序

    Input The input json object 所需输出 Event1 Value1 Event2 collection of json objects Event3 The input json object 所以基本上输入 js
  • 张量流中的复杂卷积

    我正在尝试运行一个简单的卷积 但包含复数 r np random random 1 10 10 10 i np random random 1 10 10 10 x tf complex r i conv layer tf layers c
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo
  • 使用 AppleScript 运行另一个应用程序而不将其显示在扩展坞上

    使用 AppleScript 您可以创建运行另一个应用程序的脚本 然后将该脚本本身另存为应用程序并将其放置在 Dock 中 问题 不是真正的问题 是 当您单击它时 它仍然会在扩展坞上显示其他应用程序 是否可以阻止其他应用程序在扩展坞中显示
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

    有谁知道如何使用配置文件 ebextensions 在 AWS Elastic Beanstalk 上安装和启用 PHP IMAP 扩展 我使用的是 64 位 Amazon Linux 2017 03 v2 4 0 运行 PHP 7 0 1
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两

随机推荐

  • 编写类似于程序集缓存查看器的 Windows Shell 扩展

    我想编写一个 shell 扩展来完全自定义特定文件夹的显示 以及程序集缓存查看器 浏览到 c windows assembly 您就会明白我的意思 哪些 COM 接口负责提供这些钩子 我的 查看器 将用 C 编写 Thanks 请注意 有关
  • CMake 链接错误(未定义的引用)

    我正在使用 SSL Vision 软件 它有一个示例客户端 我一直试图将其与整个项目分开 我找到了自己编辑客户端所需的源代码 因此我只是从软件中复制它们并使用 CMake 来构建我的客户端 下面的项目结构经过简化 缩小了问题范围 我相信 C
  • selenium.common.exceptions.ElementNotInteractableException:消息:使用 Selenium Python 单击元素时元素不可交互

    我知道有人问过这个问题 但我需要一些解决方案来解决这个错误 Traceback most recent call last File goeventz automation py line 405 in
  • 同一应用程序中的 Google Maps SDK 和 Mapkit 导致崩溃

    试图在我的应用程序中为用户提供在谷歌地图 sdk 和苹果地图 mapkit 之间进行选择的选项 该应用程序未使用 ARC 崩溃场景 ios 6 0 6 1 1 进入谷歌地图 模态控制器 2 退出谷歌地图 关闭模式 3 将我的应用程序更改为苹
  • 并发不是并行吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Bootstrap 3.3.7 - 表单内联 - 输入和按钮同一行

    输入和按钮在同一行上正常工作 但输入尺寸很小 并且有空间更大 我希望它是 100 全尺寸 沿着输入和按钮下方的线 你看到了吗 我的 HTML 是
  • 如何自动缩放 WKWebView 的内容?

    要在 Swift 中自动缩放旧 WebView 中的网页 我所要做的就是 var w UIWebView w scalesPageToFit true 我找不到 WKWebView 的等效方法 并且网页在我的应用程序中显得太大 如何自动缩放
  • 如何从测试内部访问 py.test capsys?

    py test 文档说我应该将 capsys 参数添加到我的测试方法中 但就我而言 这似乎不可能 class testAll unittest TestCase def setUp self self cwd os path abspath
  • 命令 /usr/bin/codesign 失败,退出代码 1

    我有以下错误 命令 usr bin codesign 失败 退出代码 1 这是我已经尝试解决此问题所做的事情 将包标识符设置为 com server pgmname 将代码签名设置为 任何 Iphone OS 设备 将代码签名身份设置为我的
  • Tibco 错误:ClassNotFoundException:com.tibco.tibjms.naming.TibjmsInitialContextFactory

    我正面临这个问题 我使用以下配置 本地 tibco 测试了 tibco 它可以工作
  • 如何生成随机 Base36 ID

    有没有办法生成random Base36 标识符 http en wikipedia org wiki Base 36在 SQL Server 中是否有定义的字符数 我搜索并找到了许多将基数 36 转换为 int 的示例 反之亦然 但没有找
  • SPARQL - 查找具有最相似属性的对象

    假设有一个人的 RDF 数据库 每个人都有许多三元组来定义这个人的朋友 这么多 person x hasFriend otherPerson 如何找到拥有最相似朋友的人 我是 SPARQL 的新手 这似乎是一个非常复杂的查询 基本上 结果将
  • 如何创建批处理文件计时器来全天执行/调用另一个批处理

    如何创建一个批处理文件计时器来在一天中执行 调用另一个批处理 也许在给定的时间运行但不在周末运行 必须在系统上运行也可以 cmd在xp server 2003上运行 对于脚本的计时器部分 我强烈建议使用 echo echo Waiting
  • 在 IntelliJ IDEA 中从多个模块一起运行单元测试

    如何同时运行两个或多个 IDEA 模块中的所有测试 我正在使用许多模块 经常运行所有单元测试非常重要 当我选择多个文件夹来运行时 上下文菜单上不再有 运行 选项 最好的方法方法 3年后编辑 甚至还有更好的方法来实现这一目标 来自JetBra
  • 通过简单的产品 URL 预先选择可配置的产品选项

    如果请求的网址用于简单产品 如何显示带有预选选项的可配置产品 例如 简单的产品 1 has Color Red URL simple red html 简单的产品 2 has Color Green URL simple green htm
  • ASP.NET - 使用 UpdatePanel 内的 ListView 内的 LinkBut​​ton 触发异步回发

    好吧 我的第一篇文章 我希望标题有意义 我有一个更新面板 里面有一个文件上传控件 带有一个触发上传的按钮 在它下面 我有一个 ListView 它与上传的文件列表数据绑定在后面的文件中 更新面板有一个 PostBackTrigger 指向上
  • 在 Outlook 加载项中以 MIME 格式 (*.eml) 保存邮件

    我想编写一个小 Outlook 插件 C 它将选定的邮件 MailItem 以纯 MIME 格式 eml 保存到磁盘 MailItem SaveAs 方法仅允许以 msg 格式保存 还有其他 简单 方法可以将邮件保存为 eml 格式吗 我想
  • Rails 图像标签中的多个图像

    我想知道是否可以将数组传递给 Rails 图像标签 该数组将包含一系列 png 图像 我希望视图能够旋转显示这些图像 有谁知道这是怎么做到的吗 这是行不通的 div class img circle div 我似乎找不到说明 rails 指
  • 如何获取 nautilus 用于给定文件的缩略图?

    Nautilus 向我显示文件的缩略图 如果它是图像 它会向我显示预览 如果它是视频 它会显示视频中的帧 如果它是文档 它会向我显示应用程序图标 我如何访问该图像 我看到它们被缓存在 thumbnail 然而 它们都被赋予了独特的名字 缩略
  • 寻找最小组件集合的算法

    我正在寻找一种算法来解决以下问题 我有给定集合 a h 的多个子集 1 n 我想找到最小的子集集合 它允许我通过组合来构造所有给定的子集 该集合可以包含 1 n 中尚不存在的子集 a b c d e f g h 1 1 2 1 1 3 1