我有很多羽毛球运动员作为输入,以及1天内的多个时段需要组织一个比赛时间表,所以最终所有的球员都参加了很多比赛,我们有一个最后的赢家。
答案 0 :(得分:2)
有多种算法可用于将玩家置于游戏插槽中,考虑到各种限制(最小化每个玩家玩的游戏,最小化时间段,最大化每个玩家玩的游戏等)。
您可能希望查看的一些示例,针对您的具体约束:
在任何一种情况下,如果你想确定谁应该进入哪个组或者应该在什么阶梯中排名,你应该给你的球员播种(根据他们的知名程度对他们进行排名)并尝试确保比赛之后的比赛将涉及最高种子的冲突。
例如,查看国际组织FIFA用于制作世界杯锦标赛比赛时间表的混合式系统:
首先,他们根据排名
他们创建了 n 小组,每个小组都有 m 小组,并在每个小组中加入小组以确保某些内容均匀分布出。在他们的情况下,它是排名和起源/位置的组合。
例如,如果你有团队ABCDEFGHIJKL,排名从最好到最差,你有三组四人,你或许可以这样做:(为简单起见,忽略尝试按原点/位置分散团队)
第1组:A F G L
第2组:B E H K
第3组:C D I J
小组中的每个小组都会扮演其他小组。例如,在第1组中,A队将参加F,G和L队.F队将与A,G,L队一起参加G,A,F,L等队。
最后,每个小组中最好的(或最好的两个)小组在Single Elimination Tournament或“淘汰赛”锦标赛中面对。这样安排的方式是让同一组中的队伍尽可能在比赛后期相互比赛。
该系统确保每个团队/玩家都能保证至少玩几场比赛,并且可以在第一次失利后“回归”。它还可以确保玩很多游戏。
或者,在“纯循环赛”锦标赛中,你甚至可能不会使用单一的淘汰赛,并让每个人都参加一个巨大的Round Robin,并且让那个大组中最好的人成为赢家。