【问题标题】:Algorithm for dividing people into 1-to-1 or 2-to-2 teams将人员分成 1 对 1 或 2 对 2 团队的算法
【发布时间】:2010-10-07 00:36:13
【问题描述】:

我有很多羽毛球运动员作为输入,以及 1 天的多个时间段,需要组织一个比赛时间表,所以最终所有球员都打了很多场比赛,我们有一个最终的获胜者。

【问题讨论】:

  • 但是规则是什么?玩家是否分成了一些小组(并在其中互相玩耍)?
  • 听起来这只是一个简单的循环赛,编码并不难;但是,应该使用什么样的评分规则?获胜者是获胜次数最多的人,还是您使用的是考虑到比赛强度的积分系统?
  • 您选择的语言是?你输入的形式是什么?

标签: algorithm


【解决方案1】:

考虑到各种限制(最小化每个玩家玩的游戏、最小化时隙数量、最大化每个玩家玩的游戏等),有多种算法可用于将玩家放入游戏时段。

针对您的特定限制,您可能需要查看一些示例:

在任何一种情况下,如果您想确定谁应该进入哪个组或应该在哪个阶梯中排名,您应该为您的玩家播种(根据他们已知的优秀程度对他们进行大致排名)并尝试确保游戏比赛后期将涉及最高种子的冲突。

例如,看看国际组织FIFA 用于生成他们的世界杯比赛赛程的混合式系统:

  1. 首先,他们根据排名对团队进行排序

  2. 他们创建 n 个组,每个组有 m 个团队,并在每个组中放置团队以确保 某事 均匀分布。在他们的情况下,它是排名和起源/位置的组合。

    例如,如果您有 A B C D E F G H I J K L 团队,从最佳到最差排名,并且您有三组四人组,您也许可以这样做:(为简单起见,忽略按来源/位置分散团队的尝试)

    第 1 组:A F G L

    第 2 组:B E H K

    第 3 组:C D I J

  3. 组中的每个团队都与其他团队比赛。例如,在第 1 组中,A 队将与 F、G 和 L 队比赛。F 队将与 A、G、L 队比赛。G 队将与 A、F、L 等队比赛。

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

该系统可确保每支球队/球员都能保证至少参加几场比赛,并且可以在第一次输球后“回来”。它还可以确保玩很多游戏。

或者,在“纯循环赛”锦标赛中,您甚至可以不使用单场淘汰锦标赛,而是让每个人都参加一个巨大的循环赛,并让这一大组中的佼佼者成为获胜者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多