我有一些羽毛球运动员作为输入,以及在一天内的一些时间段,需要组织一个比赛时间表,所以在最后所有球员都打了很多比赛,我们有一个最终的赢家。

最佳答案

有多种算法可用于将玩家放入游戏槽中,给定各种约束条件(最小化每个玩家的游戏,最小化时隙的数量,最大化每个玩家玩的游戏等)。
对于您的特定约束,您可能需要研究一些示例:
Round Robin
Ladder
在这两种情况下,如果你想确定谁应该去哪一组或应该在什么梯子上排名,你应该种子你的球员(排序他们大约有多好,他们是已知的),并试图确保比赛以后的比赛将涉及冲突的最高种子。
例如,看看国际组织FIFA用于生成世界杯比赛日程的混合风格系统:
首先,他们根据排名来排序
他们创建了n个组,每个组有m个团队,并将团队放在每个组中,以确保均匀分布在他们的情况下,这是排名和来源/位置的组合。
例如,如果你有一个从最好到最差的团队A B C D E F G H I J K L,并且你有三个由四个组成的团队,你也许可以这样做:(为了简单起见,忽略按来源/位置分布团队的尝试)
第一组:A F G L
第2组:B E H K
第3组:C D I J
一个队中的每一个队与另一个队比赛例如,在第一组中,A队与F、G、L队比赛。F队与A、G、L队比赛。G队与A、F、L队比赛。
最后,每组中最好的(或最好的两个)球队将在一场Single Elimination Tournament或一场“淘汰赛”中对决。这样安排是为了让同一组的球队在比赛中尽可能晚地互相比赛。
这个系统保证每个队/球员至少打几场比赛,并且在第一场失利后可以“回来”。它还确保了许多游戏的进行。
或者,在一个“纯粹的循环赛”中,你甚至可以不使用一个淘汰赛,让每个人都参加一个巨大的循环赛,让大集团中最好的人成为赢家。

关于algorithm - 将人员分为1对1或2对2团队的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1399392/

10-16 01:44