我嘗試遍歷兩個集合列表,其中一個列表只包含一個集合,並將該集合附加到具有最大交集的列表直到所有集合都被追加。對於每個集合order_of_sets中的新元素應該重複該過程。該算法應該像貪婪算法一樣運作。如何添加具有最多交集元素的列表
s1=set([1,2,3,4,5,6,7,8,9,10])
s2=set([1,3,56,8,9])
s3=set([1,4,5,6,7,8,10,22,23,24,25])
s4=set([7,8,9,10,23,14,22,23,24,30,56])
list_of_sets=[s2,s3,s4]
order_of_sets=[s1]
for x in list_of_set:
for y in order_of_sets:
if len(x.intersection(y))==max[len(x.intersection(y))]:
order_of_lists.append(y)
list_of_sets.remove(y)
我想要的到底是什麼:
order_of_sets=[s1,s3,s4,s2]
也許我可以定義評估路口的長度的函數,但我不知道怎麼辦。
你的預期輸出是什麼?你能否在你的描述中寫下這個。 – qbzenker
「有最大的交集」與其他設置? – user2357112
按集合順序設置的集合將是s1。我想從list_of_sets中添加與s1具有最大交集的集合。這將是s3。之後,我希望下一個完成第3集。最大的交叉點將介於s3和s4之間。 –