查找公共(public)子集的算法

标签 algorithm

我有 NSi 个数字,每个都有不同的大小。让m1, m2, ... mn 是各个集合的大小 (mi = | Si |),并且 M是最大集合的大小。我必须找到其中至少有两个数字的公共(public)子集。示例:

Set  Items
1    10,80,22
2    72, 10, 80, 26,50
3    80,
4    10, 22
5    22, 72, 10, 80, 26,50

所以结果会是这样

Items                Found in sets
10, 22               1, 4
10, 80               1, 2, 5
10, 80, 22           1, 5
10, 72, 80, 26, 50   2, 5

那么如何自动解决这个问题以及相应解决方案的预期复杂度是多少?我需要它尽可能快。

最佳答案

由于原始问题要求尽可能快地进行讨论,因此可以通过以下方式缩短讨论时间。

首先,讨论输出是否与您的输入成指数关系。假设您有 2 个元素和 N 个集合。假设每个元素属于每个集合;它将需要 N 行作为您的输入。那么,你应该打印多少行?

我认为您将打印 2N-N-1 行,如下所示:

1,2     1,2
1,2     1,3
.....
1,2     1,N
1,2     2,1
.....
1,2     1,2,3
.....
1,2     1,2,3,...N

由于您将花费 O(2N) 时间打印,您可以选择此页面上的任何建议来计算此信息 — 无论如何您已经被指数捕获了。

这个论点会让你们的讨论变得非常快。

关于查找公共(public)子集的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3941781/

相关文章:

algorithm - 文本搜索算法

java - 使用平方根分解技术改进范围最小查询中Update方法的复杂度

algorithm - 如何使用 HLD 查找 LCA?

algorithm - 实时时间序列数据中的峰值信号检测

algorithm - 生成所有长度为 n 的二进制字

python - nltk 中是否有内置方法来查找与给定单词紧密匹配的单词/短语?

algorithm - 2 = 西塔 (1 + 1/n)^n ;为什么 e 是常数 theta?

java - 如何找到树中的第二大值

python - 质数生成器解释?

regex - 如何在 perl 中打印特定格式的数组?