如何从一组集合中找到一个极大集合或超集(极大集合是指不属于列表中其他集合的集合)

0 投票
1 回答
2442 浏览
提问于 2025-04-18 08:49

这段话是关于如何在图中根据密度标准找到密集社区的,下面列出的所有集合都是图的密集社区。

list L=[set([1]), set([2]), set([3]), set([4]), set([5]), set([6]), set([7]), set([8]), set([1, 2]), set([1, 3]), set([1, 4]), set([3, 4]), set([1, 3, 4]), set([1, 5]), set([2, 5]), set([4, 5]), set([1, 2, 5]), set([1, 4, 5]), set([2, 6]), set([4, 7]), set([8, 5]), set([8, 7])]

我需要从这个列表中找出最大的集合。比如,集合set([1,4,5])是这些集合的最大集合:set([1])、set([4])、set([5])、set([1,5])、set([1,4])和set([4,5])。所以我只需要输出set([1,4,5])。类似地,集合set([1])、set([3])、set([4])、set([1,3])、set([1,4])和set([3,4])的最大集合是set([1,3,4]),所以我只需要输出set([1,3,4])。可以看到,set([1,2,5])也是一个最大集合,而所有不是更大集合的子集的集合都被认为是最大集合。因此,我只需要找出那些不是更大集合子集的最大集合。

1 个回答

2
L=[set([1]), set([2]), set([3]), set([4]), set([5]), set([6]), set([7]), set([8]), set([1, 2]), set([1, 3]), set([1, 4]), set([3, 4]), set([1, 3, 4]), set([1, 5]), set([2, 5]), set([4, 5]), set([1, 2, 5]), set([1, 4, 5]), set([2, 6]), set([4, 7]), set([8, 5]), set([8, 7])]


#this grouping the list by there length ...
values = set(map(lambda x:len(x), L))
newlist = {x:[y for y in L if len(y)==x] for x in values}
maxlen=max(values)

#checking for the subset.if no subset.it is returned

for i in values:
    print [ key for key in newlist[i] if not any([ val.intersection(key)==key for j in values if j !=i for val in newlist[j] ])]


#output =[set([2, 6]), set([4, 7]), set([8, 5]), set([8, 7])] [set([1, 3, 4]), set([1, 2, 5]), set([1, 4, 5])]

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

撰写回答