【发布时间】:2019-03-11 09:13:26
【问题描述】:
假设我有 10 个集合,每个集合都有一些随机数量的正整数。
现在,我想最大化可以形成交集的集合的数量(不搜索最大的交集),假设一个集合只能与另一个集合形成交集,如果至少“x”个整数重叠。例如,如果x = 2,则[1,2,3,4] 不能与[1,5,6,7] 形成交集,因为重叠的整数只有 1 个,而不是 2 个。
要注意的另一件事(虽然很明显)是,对于x=2,如果我有[1,2,3,4] 和[1,2,6,7],则可能会发生交集,并且对于第三组形成交集,它必须在某处有[1,2]在集合中。
我无法正确地形成一个算法来做到这一点,因为可以通过指数方式来比较这些集合!即使我只有 3 个集合,考虑到集合的大小,我也必须考虑给定交集约束的每个子集组合比较。
我正在按如下方式生成我的集合:
sets = []
for i in range(0,10):
temp = np.random.randint(1,3000)
sets.append(set(np.random.randint(1, 3000, temp)))
【问题讨论】: