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

Algorithm 每对等大小集的最大基数交集,algorithm,optimization,set,set-intersection,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 蛮力解决方案可以用Θ(N3)时间完成。我们能用其他方法更有效地完成吗?如果: 存在一些α>0,因此(对于固定的α和增加的n),存在

我们有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



蛮力解决方案可以用Θ(N3)时间完成。我们能用其他方法更有效地完成吗?

如果:

  • 存在一些α>0,因此(对于固定的α和增加的n),存在至少有α部分重叠的两个集合

  • 许多对不相交或几乎不相交(稍后更精确)

  • 您愿意使用高概率蒙特卡罗算法(误差概率随n减小)

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

    通过和的组合,您只能保留命中数至少为1/2α的对√ n

    所以,在高概率下,你可以把n2对缩小到一些βn2对,时间只有O(n2.5)。从现在开始,继续使用蛮力。这是否有用取决于β如何作为n的函数增长