每对等大小集的最大基数交点

时间:2016-03-09 15:51:34

标签: algorithm optimization set set-intersection

我们有N组,每组有N个整数。

我们取每对集合,找到它们的交集,S

现在,我们有兴趣找到具有最大基数的交集S的基数。

示例

例如,设N为4,我们有4个元素各4个:

A = {1,2,5,6},B = {2,5,7,6},C = {3,4,2,6},D = {1,4,7,8}

现在我们采用这些集合和最大基数= {2,5,6}的交集的成对交集

所以,我们返回3.

蛮力解可以用Θ(N 3 时间完成。我们可以用其他方法更有效地做到吗?

1 个答案:

答案 0 :(得分:2)

如果出现以下情况,可以减少运行时间:

  1. 有一些α> 0 使得(对于固定的α和增加 n ),有两组至少具有α重叠分数。

  2. 许多对是不相交的或几乎不相交的(后来更准确)。

  3. 您愿意使用高概率蒙特卡罗算法(误差概率随着 n 而减少)。

  4. 假设您首先将每个集合转换为哈希表。这需要(预期)Θ(n 2 时间。现在为每对集合(即 n 2 循环),从第一组中选择√n随机元素,并计算数字第二组中的命中数(预期 O(√n)时间)。

    通过multiplicative Chernoff boundunion bound的组合,您只能保留点击次数至少为 1/2α√n的对。< / p>

    因此,很有可能,您可以将 n 2 对缩小到某些βn 2 对,时间只有 O(n 2.5 。从这里继续蛮力。这可能有用与否,具体取决于β如何作为 n 的函数增长。