循环赛中无限休息的球员

Unbounded resting players in round robin tournament

是否可以使用无限数量的休息玩家进行循环算法?例如 this would work 但它只能管理一个休息 player/team.

实际情况是 24 名玩家,每轮有 16 名玩家上场,每轮有 8 名玩家等待出局。理想情况下,他们应该都打完 23 轮比赛,并尽可能避免双休。

我已经被这个问题困扰了很长一段时间,非常感谢你的帮助!

只要比赛总次数能被每天的比赛次数整除,那是有可能的。在您的场景中,每天有 8 场比赛,总共有 (12*23) 场比赛,所以这是不可能的,但是每轮有 12、8、6、4 或 2 名玩家是可行的。

您可以修改circle method调度。如果您有 2N 个玩家,调度算法通常会生成 N 对列的块:

Day 1:
1   2   3   4   5   6   7   8
16  15  14  13  12  11  10  9

Day 2:
1   16  2   3   4   5   6   7
15  14  13  12  11  10  9   8   
...

此时间表的一个有用 属性 是,如果球员 P 在某一天被安排在 k 列,则 P 将被安排到 k-1k,或 k+1 第二天。因此,如果您连接每一天的列,则每个玩家的号码之间至少有 N-2 列(即匹配)。如果您随后从左到右安排比赛,每天切断足够多的回合,那么任何有效数量的缺席玩家都将起作用(保证每个玩家每轮最多玩一次)。例如,如果您想要以上 4 名休息球员:

Day 1:
1   2   3   4   5   6   
16  15  14  13  12  11

Day 2:
7   8    1  16  2   3
10  9   15  14  13  12
...

很难找到比这更好的间隔双休的方法,因为每个球员的上场时间之间的 'distance' 尽可能均匀。玩家人数为奇数时,可以使用正常调整的圈法加虚拟玩家。