我正在尋找一種方法來枚舉n成員的所有可能的雙成員羣星座。枚舉所有可能的雙成員羣星座
例如,對於n = 4名成員以下3點獨特的組的星座是可能的(請注意,無論是成員的一個組內的順序,也不是組順序是重要的):
((1,2), (3,4))
((1,3), (2,4))
((1,4), (2,3))
例如,對於n = 6個成員的15個不同的星座是可能的:
((1,2), (3,4), (5,6))
((1,2), (5,4), (3,6))
((1,2), (6,4), (5,3))
((1,3), (2,4), (5,6))
((1,3), (2,6), (5,4))
((1,3), (2,5), (4,6))
((1,4), (3,2), (5,6))
((1,4), (3,5), (2,6))
((1,4), (3,6), (5,2))
((1,5), (3,4), (2,6))
((1,5), (3,2), (4,6))
((1,5), (3,6), (2,4))
((1,6), (3,4), (5,2))
((1,6), (3,5), (2,4))
((1,6), (3,2), (5,4))
對於n個成員的獨特基團的數目可以爲
choose(n,2)*choose(n-2,2)*...*choose(2,2)/factorial(n/2),
來計算
其中choose(n,k)是二項式係數。
對於n = 4,我們有
choose(4,2)/factorial(4/2) = 3
可能的兩構件組的星座。對於n = 6,它是
choose(6,2)*choose(4,2)/factorial(6/2) = 15.
對於超過n = 6個成員手動激活組是不可行的。有沒有一種簡單的方法來獲得所有可能的羣星座的列表/數據框?
我不知道究竟該怎麼辦它,但看看itertools:http://docs.python.org/library/itertools.html – robert 2012-01-16 21:32:50
我認爲我瞭解它,但現在我意識到我不知道。你的清單包括((3,2),(1,4),(5,6))和((1,4),(3,2),(5,6))以及幾個我的代碼認爲是等價的其他對。我錯過了什麼? – DSM 2012-01-16 22:18:33
是的,它看起來像OP中的列表是不正確的。儘管如此,還是有十五個滿足條件的獨特列表;看到我的答案。 – tzaman 2012-01-16 23:07:08