n 个集合的所有组合的交集

2024-02-21

我需要帮助找到一种有效的算法来解决这个问题:

Given n未排序的整数集,找到所有可能的组合n以及它们的交集。例如:

Input (n=3):

Set 1 = 1, 10, 6, 11, 14, 3
Set 2 = 3, 7, 11, 9, 5
Set 3 = 11, 6, 9, 1, 4

Output:

Set 1 & 2: 3, 11
Set 1 & 3: 1, 6, 11
Set 2 & 3: 9, 11
Set 1, 2, & 3: 11

我正在考虑首先找到集合的所有可能组合,然后使用算法来找到集合的交集n在这里找到的集合:交集n sets http://www.geeksforgeeks.org/intersection-of-n-sets/。不过,我担心这种方法的时间效率。

如果您能找到比我幼稚的方法更好的方法,那么伪代码的答案将是最有帮助的。


这是一个受启发的解决方案MapReduce:简化大型集群上的数据处理 http://research.google.com/archive/mapreduce.html,因此如果您愿意,可以以分布式方式编写。

将集合中的所有元素映射为对[element, set]。按元素对该列表进行分组。您只需排序并提取元素即可。或者,您可以创建数组的哈希值,其键是元素,值是在其中找到该元素的集合列表。然后对于每个元素,发出一个列表[combination of sets, element]。通过组合对其进行分组。现在,对于每个非空组合,您只需读取其中的元素即可。

如果你想用真实的分布计算映射减少,第一个映射将映射到元素的键和集合的值。第一个reduce只会按元素存储它所在的集合列表。第二个map将为每个元素发出它所在的每个集合组合的一个键,并以元素作为值。第二次减少将存储您的最终答案。

详细说明您的示例可能会有所帮助。你从以下开始:

Set 1 = 1, 10, 6, 11, 14, 3
Set 2 = 3, 7, 11, 9, 5
Set 3 = 11, 6, 9, 1, 4

您将其映射到列表:

[1, Set 1], [10, Set 1], [6, Set 1], [11, Set 1], [14, Set 1], [3, Set 1],
[3, Set 2], [7, Set 2], [11, Set 2], [9, Set 2], [5, Set 2],
[11, Set 3], [6, Set 3], [9, Set 3], [1, Set 3], [4, Set 3],

现在按元素分组(我通过排序手动完成)以获得:

1: Set 1, Set 3
3: Set 1, Set 2
4: Set 3
5: Set 2
6: Set 1, Set 3
7: Set 2
9: Set 2, Set 3
10: Set 1
11: Set 1, Set 2, Set 3
14: Set 1

现在我们进行第二次映射(跳过仅在一组中的元素)以获得:

[(Set 1, Set 3), 1],
[(Set 1, Set 2), 3],
[(Set 1, Set 3), 6],
[(Set 2, Set 3), 9],
[(Set 1, Set 2), 11],
[(Set 1, Set 3), 11],
[(Set 2, Set 3), 11],
[(Set 1, Set 2, Set 3), 11]

通过集合的组合对其进行分组,我们得到:

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

n 个集合的所有组合的交集 的相关文章

  • Java 2d 游戏中的路径查找?

    本质上它是我正在开发的一款吃豆人克隆游戏 我有一个 Enemy 类 并创建了该类的 4 个实例 它们都代表游戏的 4 个幽灵 所有幽灵都会在屏幕的随机区域启动 然后它们必须朝着吃豆人角色前进 当玩家控制吃豆人并移动它时 他们应该跟随它并尽可
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • 为什么这个算法的Big-O复杂度是O(n^2)?

    我知道这个算法的大O复杂度是O n 2 但我不明白为什么 int sum 0 int i 1 j n n while i lt j sum 即使我们设定了j n n一开始 我们在每次迭代期间递增 i 并递减 j 因此最终的迭代次数不应该比n
  • 如何光栅化旋转矩形(通过 setpixel 在 2d 中)

    我有四个 2d 顶点 A B C D 的旋转矩形 我需要在像素缓冲区中 有效地 光栅化 绘制它 使用 setpixel x y 颜色 怎么做 我正在尝试使用一些代码 例如 convertilg a b c d do up down left
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • c# GDI边缘空白检测算法

    我正在寻找解决方案检测边缘空白c 位图 来自 c 托管 GDI 库 图像将是透明的 or white 大多数 400x 图片的尺寸为 8000x8000px 边缘周围有大约 2000px 的空白 找出边缘的最有效方法是什么 x y 高度和宽
  • 使用什么算法来确定使系统达到“零”状态所需的最小操作数?

    这是一种更通用的问题 不是特定于语言的 有关要使用的想法和算法的更多信息 系统如下 它登记朋友群体之间的小额贷款 Alice and Bill要去吃午饭 比尔的卡坏了 所以爱丽丝支付了他的餐费 10 美元 第二天Bill and Charl
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • 无法理解Peterson算法的正确性

    我在这里讨论彼得森算法的一个场景 flag 0 0 flag 1 0 turn P0 flag 0 1 turn 1 while flag 1 1 turn 1 busy wait
  • 覆盖二维平面上给定点的最小圆

    问题 覆盖 2D 平面上给定 N 个点的圆的最小可能直径是多少 解决这个问题最有效的算法是什么 它是如何工作的 这是最小圆问题 http en wikipedia org wiki Smallest circle problem 请参阅参考
  • 在工作表中合并行和求和值

    我有一个 Excel 工作表 其中包含以下数据 管道 来分隔列 A B C X 50 60 D E F X 40 30 A B C X 10 20 A B C Y 20 20 A B C X 20 70 D E F X 10 50 A B
  • 计算序列而无法存储值?

    问题陈述 here http www spoj com problems EC SER 令 S 为无限整数序列 S0 a S1 b Si Si 2 Si 1 对于所有 i gt 2 你有两个整数 a 和 b 您必须回答有关序列中第 n 个元
  • 数组所有可能的组合

    我有一个字符串数组 ted williams golden voice radio 我希望这些关键字的所有可能组合采用以下形式 ted williams golden voice radio ted williams ted golden
  • 添加边后更新最大流量

    考虑我们有一个网络流量 并使用 Edmond Karp 算法 我们已经拥有网络上的最大流量 现在 如果我们向网络添加任意边 具有一定容量 更新最大流量的最佳方法是什么 我正在考虑更新关于新边缘的残差网络 并再次寻找增强路径 直到找到新的最大
  • 寻找公共子集的算法

    I have N number of sets Si of Numbers each of a different size Let m1 m2 mn be the sizes of respective sets mi Si and M
  • 在 php 中为类自动生成 getter 和 setter 的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常创建一个包含一些私有变量的类 当设置此类的实例时 应该可以使用 getter 和 setter 填充该类的所有变量 有没有一种简单的方法可
  • 相当于字典的数据结构?

    我正在使用 JavaScript 工作 希望保留一份设置的公里 英里 小时近似值列表 我无法以编程方式进行转换 我正在使用需要某些值的外部 API 因此它确实必须是等效的字典 目前我正在使用一个对象 var KM MPH 10 16 12
  • 如何以最低的价格优化购物车?

    我有一个我想买的物品清单 这些商品由不同的商店提供 价格也不同 商店有单独的送货费用 我正在寻找一种最佳的购物策略 以及支持它的java库 以最低的总价购买所有商品 Example 商品 1 在 Shop1 的售价为 100 美元 在 Sh
  • 有向未加权图中的最长非循环路径

    什么算法可用于找到未加权有向无环图中的最长路径 动态规划 http en wikipedia org wiki Dynamic programming 它也被引用于最长路径问题 http en wikipedia org wiki Long

随机推荐

  • Html2Pdf -Codeigniter -图像未加载

    我正在使用 HTML2PDF 库作为 codeigniter See https github com aiwmedia HTML2PDF CI https github com aiwmedia HTML2PDF CI我的问题是我无法使用
  • 使用 Unity 新输入系统的多个控制器

    我正在尝试将新的 Unity 输入系统与多个控制器一起使用 我尝试为每个角色创建输入操作 但这不起作用 所有角色同时移动 看起来角色并不关心控制器 而是关心输入 而不管控制器如何 也许我需要等待输入系统的最终版本 但是 我真的不想使用旧系统
  • 将微调器添加到 ActionBar(而不是导航

    我使用答案中的第二个选项向我的 ActionBar 添加了一个微调器here https stackoverflow com questions 8312344 how to add a dropdown item on the actio
  • Visual Studio - 如何使用相同的源创建两个项目

    我的解决方案由 2 个可执行项目和几个 dll 组成 Project1 是智能设备项目 Project2 是 Windows 窗体项目 这两个项目都使用相同的库 原因是我想在将库部署到设备上之前在 PC 上测试它 问题是 DLL 项目类型可
  • 延迟作业和 Mandrill:未初始化常量 Mandrill::API

    我有邮件服务 用户可以上传包含电子邮件和其他一些用户相关数据的 xls 文件来发送电子邮件活动 我遇到了一些超时问题 因为它需要几秒钟的时间来处理 因为我对每封要发送的电子邮件进行了一些验证和配置 例如 将记录保存到数据库 检查过去 30
  • 文件类型的可可图标?

    如果我有一个文件 我可以通过执行以下操作来获取图标 NSImage iconImage NSWorkspace sharedWorkspace iconForFile myFile png 但如果我只是想获取特定文件类型的图标 例如与 pn
  • 在 Apple 平台的 AArch64 汇编中,如何在一行中编写多个语句?

    我正在将一些 Arm64 汇编语言移植到 M1 其中一些是由 C 预处理生成的 其中单个 define宏生成多个以分号分隔的语句 不幸的是 在 M1 上 汇编器将分号视为注释字符 例如 define DEFUN NAME globl NAM
  • 可选框架不起作用(CoreAudioKit 不在模拟器上)

    为了让 MIDI 通过蓝牙工作 我需要使用CoreAudioKit框架 这工作完美 但我无法在模拟器上编译 使框架 可选 没有帮助 错误是ld framework not found CoreAudioKit 我认为它应该按照the doc
  • Azure-Container-Service 中的安装卷不适用于 traefik.toml 和 /var/run/docker.sock

    构建从 VSTS 到 Azure container service 的 CI CD 管道 我在安装 traefik toml 和 docker sock 文件时遇到了问题 部署使用 SSH 隧道创建文件夹 Deploy 并复制 docke
  • C# 有异步函数调用同步函数或同步函数调用异步函数

    我正在编写一个 C Net 4 5 库 用于执行常见的 sql 数据库操作 备份 恢复 执行脚本等 我希望每个操作都具有同步和异步函数 因为控制台和 GUI 应用程序都将使用该库 但我不想到处重复代码 所以在我看来 我有两个选择 编写在同步
  • 使用 insertWithOnConflict 进行更新或插入

    我需要插入或更新 我找到了 SQLiteDatabase 的 insertWithOnConflict 方法 但我不知道它如何检查该条目是否已存在 理论上 我需要一个 Where 参数来检查某个 ID 是否存在 如果存在 它应该替换所有其他
  • .R中的第一个函数

    我不明白 R 中 First 函数的意义 我的原因是 Rprofile 中的任何代码都将在 R 启动时被获取并执行 this First lt function library devtools and this library devto
  • WordPress:如何按 ACF 自定义字段对内容进行排序?

    通过使用高级自定义字段插件 我创建了一个包含 6 种成员资格类型的选择下拉列表 我使用此自定义字段的所有 列表 都被分配为 6 个字段之一 我想通过以下方式显示所有 列表 终极加号最终的专业的商业的商业 Free 按照这个特定的顺序 那些支
  • 将 JavaScript 变量发送到 PHP 变量 [重复]

    这个问题在这里已经有答案了 首先我认为我必须将 JavaScript 转换为 PHP 但后来我发现我不能 因为服务器和客户端执行 所以现在我只想发送一个变量 到 PHP 变量 当我点击一个按钮时 JavaScript 中的该函数就会执行 现
  • Java 和 .Net 正则表达式

    Java 和 Net Framework 正则表达式模式之间的区别 我正在尝试转换我的 Net Framework 但模式无效 谁能指出正则表达式模式的主要区别 例如我们如何命名java中的分组结构等等 有很多差异总结在这里 http ww
  • 比较 C# 中的双精度值

    I ve a double变量称为x 在代码中 x被赋值为0 1我在 if 语句中检查它比较x and 0 1 if x 0 1 不幸的是它没有进入if陈述 我应该使用Double or double 这背后的原因是什么 您能为此建议一个解
  • Selenium - 无响应脚本错误 (Firefox)

    这个问题以前曾被问过 但给出的答案似乎对我不起作用 问题是 当使用 Selenium 打开页面时 我会收到许多 无响应脚本 弹出窗口 引用不同的脚本 当我使用不带 Selenium 的 Firefox 打开页面时 没有出现任何错误 另外 奇
  • 我可以通过编程方式设置 Mercurial 配置选项吗?

    我正在寻找一种设置方法 hgrc配置项 而无需实际编辑文本文件 我正在尝试标准化设置hgrc跨多个开发人员 我想要一个像这样的命令 hg config ui username foo 但这也将该配置更改保存到hgrc file 看起来这应该
  • 通过 javascript 添加的输入字段不在 PHP $_POST 变量中。如何解决这个问题?

    我在 html 表中有一个表单 我通过 jquery 动态地将输入字段添加到表单中 当我在提交表单时进行 var dump 时 POST 数组没有添加的字段 为什么会发生这种情况 这是我的 js 的样子 add more del areas
  • n 个集合的所有组合的交集

    我需要帮助找到一种有效的算法来解决这个问题 Given n未排序的整数集 找到所有可能的组合n以及它们的交集 例如 Input n 3 Set 1 1 10 6 11 14 3 Set 2 3 7 11 9 5 Set 3 11 6 9 1