【发布时间】:2015-12-20 00:08:00
【问题描述】:
我有一组字符串的集合(字典),例如 {1: {'a', 'b'}, ...} 我需要找到 n 个最大的交集,即集合中最大子集的交集。明显的蛮力方法:
for i in range(len(collection),2,-1):
for subset in combinations(sorted(collection), i):
intersected = set.intersection(*(collection[k] for k in subset))
if len(intersected)>0:
yield len(subset), intersected
很慢。有没有一些有效的方法/库来做到这一点?
【问题讨论】:
-
它适用于我的数据集,虽然速度很慢。澄清一下,我所说的最大是指集合中最大的子集(重叠子集的最大数量),不一定是与最大数量元素的交集。
-
“n 个最大的交叉点”是什么意思?什么是“n”?集合中最大子集的交集是什么意思?
-
一些最小的示例输入和输出数据会有所帮助。
-
最大? - 按元素数量或百分比? (如果您说“百分比”,则需要指定分子和分母)
-
您的意思是您正在寻找字典中键的最大子集,以便相应集合的交集不为空?
标签: python algorithm set-intersection