我将尝试开始一种方法来回答这个问题。如果有人问我,我可以将其保留为社区维基,以便人们可以进行编辑以改进此答案。
Wikipedia Round-robin Tournament Scheduling Algorithm https://en.wikipedia.org/wiki/Round-robin_tournament#Scheduling_algorithm
Let's start with the case of 8 teams.
[T1, T2, T3, T4, T5, T6, T7, T8]
让我们尝试这样看待这个问题..
T1 T2 T3 T4
T5 T6 T7 T8
那么,现在。匹配 -> [(1,5), (2,6), (3,7), (4,8)]。
Rotate the list clock-wise, but keep position of T1 fixed.
T1 T5 T2 T3
T6 T7 T8 T4
那么,现在。匹配 -> [(1,5), (2,6), (3,7), (4,8)
,(1,6),(5,7),(2,8),(3,4)]。
在这种情况下,在重复开始发生之前将有 7 次可能的轮换。在传统的循环赛中,有(n/2)*(n-1)
游戏,在哪里n
是团队的数量。无论涉及多少团队,这都应该有效。 [如果你遇到n%2 == 1
,放一个X
使比赛保持平衡并继续正常进行;一支球队将缺席一场比赛]。
如果你需要确保每个团队must玩 8 场比赛,exactly当球队数量为偶数时,进行8次轮换。
该方法相应地保证了在给定足够数量的球队的情况下,相同的球队不会进行背靠背的比赛。
Edit.
Let's start with the case of 3 teams.
[T1, T2, T3]
让我们尝试这样看待这个问题..
T1 T2
T3 X
那么,现在。匹配 -> [(1,3), (2,X)]。
Rotate the list clock-wise, but keep position of T1 fixed.
T1 T3
X T2
那么,现在。匹配 -> [(1,3), (2,X)
,(1,X),(3,2)]。
下一个案例,匹配 -> [(1,3), (2,X), (1,X), (3,2)
,(1,2),(X,3)]。
下一个案例,匹配 -> [(1,3), (2,X), (1,X), (3,2), (1,2), (X,3)
,(1,3),(2,X)]。
....
匹配 -> [(1,3), (2,X), (1,X), (3,2), (1,2), (X,3)
, (1,3), (2,X), (1,X), (3,2), (1,2), (X,3)
, (1,3), (2,X), (1,X), (3,2), (1,2), (X,3)
, (1,3), (2,X), (1,X), (3,2), (1,2), (X,3)
, (1,3), (2,X), (1,X), (3,2), (1,2), (X,3)
].
1 -> [3,X,2
,3,X,2
,3,X,2
,3,X,2
]
2 -> [X,3,1
,X,3,1
,X,3,1
,X,3,1
]
3 -> [1,2,X
,1,2,X
,1,2,X
,1,2,X
]
如果您注意到这种模式,您就会发现在这种情况下,不可能确保球队不打背靠背比赛。每支球队需要进行 12 次轮换才能打完 8 场比赛。我正在尝试想出一个公式,并将相应地更新这篇文章。