【问题标题】:3-way / 4-way round-robin tournament scheduling algorithm3路/4路循环赛调度算法
【发布时间】:2019-01-08 20:52:59
【问题描述】:

我想创建/实现一个锦标赛调度算法,该算法能够处理每场比赛超过 2 名参与者。

2 名参与者似乎都知道这个问题。例如,请参见此处:Round Robin Algorithm Implementation Java

与 6 支球队(A、B、C、D、E、F)的比赛示例:

  1. (ABC)(DEF)
  2. (ABD)(CEF)
  3. (ABE)(CDF)
  4. (ABF)(CDE)
  5. (ACD)(BEF)
  6. (ACE)(BDF)
  7. (ACF)(BDE)
  8. (ADE)(BEF)
  9. (ADF)(公元前)
  10. (AEF)(BCD)

如果球队数量为奇数(即 A、B、C、D、E),我希望每轮进行 3 路和 2 路比赛:(ABC)(DE)

一旦解决了 3-way 问题,我想对 4-way 游戏做同样的事情。

我无法创建这样的算法,也无法在互联网上找到类似的解决方案。

有人能指出我正确的方向吗?

【问题讨论】:

    标签: java algorithm round-robin tournament sports-league-scheduling-problem


    【解决方案1】:

    要从 N 中选择 K 项,您需要combinations

    请注意 C(6,3)=20 但您确实修复了一项 (A) 并且确实有 C(5,2)=10 变体

    组合生成的实现有很多——最简单的是recursive,更有效的是lexicographic ordered generation -simple C code

    【讨论】:

    • 感谢您的参考。我不确定我是否真的修复了一项 (A)。我就是这么整理的。我的编号列表代表可以同时进行 2 场比赛的“回合”。每场比赛都用括号中的球队表示,所以我实际上有 2x10=20 个项目,对吧?
    • 第一组的集合定义了第二组的集合,所以它们(20项)不是独立的。关于修复:使用BCDEF集合生成组合(5,2),然后将A添加到两个项目的组合中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 2017-01-18
    • 2014-04-27
    • 2014-11-15
    • 1970-01-01
    • 2014-01-18
    相关资源
    最近更新 更多