2014-06-06 256 views
-1

這是關於根據密度條件和所有集合在圖表中找到稠密社區下面是圖的密集社區如何從集合列表中找到最大集合或超集合(最大集合不是集合中列表中的另一集合的集合)

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])] 

我需要得到這個列表的最大集合,例如,在列表集合([1,4,5])中是集合([1]),集合([4]),集合([5]),集合([1,5]),集合[1,4])和set([4,5]),所以我只需要打印set([1,4,5])類似set([1]),set([3])。set([ 4]),set([1,3]),set([1,4]),set([3,4])具有最大集合集合([1,3,4]),所以我需要打印出來只有set([1,3,4]),你可以看到set([1,2,5])是一個極大集合,所有不是大集合子集的集合都被認爲是最大集合,所以我需要只得到最大集不是更大集的子集

+0

你不是問過這個問題嗎? –

+0

請不要轉發同一個問題。 – BrenBarn

回答

1
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])] 
+0

謝謝...你是男人.. – user2014111

+0

@ user2014111快樂是我的 –

+0

我不能接受.. – user2014111