将人员划分为1对1或2对2的算法

时间:2009-09-09 12:26:54

标签: algorithm

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

1 个答案:

答案 0 :(得分:2)

有多种算法可用于将玩家置于游戏插槽中,考虑到各种限制(最小化每个玩家玩的游戏,最小化时间段,最大化每个玩家玩的游戏等)。

您可能希望查看的一些示例,针对您的具体约束:

在任何一种情况下,如果你想确定谁应该进入哪个组或者应该在什么阶梯中排名,你应该给你的球员播种(根据他们的知名程度对他们进行排名)并尝试确保比赛之后的比赛将涉及最高种子的冲突。

例如,查看国际组织FIFA用于制作世界杯锦标赛比赛时间表的混合式系统:

  1. 首先,他们根据排名

  2. 对团队进行排序
  3. 他们创建了 n 小组,每个小组都有 m 小组,并在每个小组中加入小组以确保某些内容均匀分布出。在他们的情况下,它是排名和起源/位置的组合。

    例如,如果你有团队ABCDEFGHIJKL,排名从最好到最差,你有三组四人,你或许可以这样做:(为简单起见,忽略尝试按原点/位置分散团队)

    第1组:A F G L

    第2组:B E H K

    第3组:C D I J

  4. 小组中的每个小组都会扮演其他小组。例如,在第1组中,A队将参加F,G和L队.F队将与A,G,L队一起参加G,A,F,L等队。

  5. 最后,每个小组中最好的(或最好的两个)小组在Single Elimination Tournament或“淘汰赛”锦标赛中面对。这样安排的方式是让同一组中的队伍尽可能在比赛后期相互比赛。

  6. 该系统确保每个团队/玩家都能保证至少玩几场比赛,并且可以在第一次失利后“回归”。它还可以确保玩很多游戏。

    或者,在“纯循环赛”锦标赛中,你甚至可能不会使用单一的淘汰赛,并让每个人都参加一个巨大的Round Robin,并且让那个大组中最好的人成为赢家。