可能Dup的:Help Me Figure Out A Random Scheduling Algorithm using Python and PostgreSQLC#算法來分配隊之間的比賽在運動
比方說,你有9個隊一個部門,你要他們玩各16場比賽。通常你會想要有8場比賽(主場)和8場比賽(訪客)。是否有已知的算法隨機進入並分配匹配?
注意 - >它可以,有時不工作,所以你可以有不平衡的數字。 任何幫助表示讚賞。
可能Dup的:Help Me Figure Out A Random Scheduling Algorithm using Python and PostgreSQLC#算法來分配隊之間的比賽在運動
比方說,你有9個隊一個部門,你要他們玩各16場比賽。通常你會想要有8場比賽(主場)和8場比賽(訪客)。是否有已知的算法隨機進入並分配匹配?
注意 - >它可以,有時不工作,所以你可以有不平衡的數字。 任何幫助表示讚賞。
看到這些permutation算法
這是否一個對你的工作:Fisher–Yates shuffle
有產生一個循環here一個很好的簡便方法。在第二輪中,您可以重複循環賽並在主場和主場之間添加交換。
如果隊伍數量奇數,則只需使用一個虛擬團隊,在特定回合中給予其對手再見,這會導致額外的回合。如果你願意給予雙頭而不是再見,你可以在其他回合中分配額外的回合。
我認爲你可以在二分圖算法中使用最大匹配(見例如here),該算法以多項式時間運行。
我們通過在頂點的「home」子集中指定每個團隊T,8個頂點(Th1,...,Th8)和「離開」頂點的8個頂點(Ta1,...,Ta8) 「頂點的子集。
我們現在尋找「歸屬」和「離開」子集之間的最大匹配,使得匹配中的每個邊(H,A)滿足H在「歸屬」子集中的屬性,「A」是在「離開」子集中,並且H和A屬於不同的團隊。
可能的重複[幫我找出使用Python和PostgreSQL的隨機調度算法](http://stackoverflow.com/questions/719886/help-me-figure-out-a-random-scheduling-algorithm-using -python - 和 - 的PostgreSQL) – 2010-09-02 23:35:30