3路/4路循环赛调度算法

Posted

技术标签:

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

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

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

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

    (ABC)(DEF) (ABD)(CEF) (ABE)(CDF) (ABF)(CDE) (ACD)(BEF) (ACE)(BDF) (ACF)(BDE) (ADE)(BEF) (ADF)(公元前) (AEF)(BCD)

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

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

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

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

【问题讨论】:

【参考方案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添加到两个项目的组合中。

以上是关于3路/4路循环赛调度算法的主要内容,如果未能解决你的问题,请参考以下文章

结对作业——电梯调度算法的实现与测试之需求分析与算法设计

磁盘调度算法

寻路算法和逻辑算法之间异同点都有哪些

文件管理-第二节2:磁盘调度算法

磁盘调度算法FCFSSSTFSCANCSCAN详解

目前常用的磁盘调度算法有哪几种?每种算法优先考虑的问题是啥?