循环赛中无限休息的球员
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-1
、k
,或 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' 尽可能均匀。玩家人数为奇数时,可以使用正常调整的圈法加虚拟玩家。
是否可以使用无限数量的休息玩家进行循环算法?例如 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-1
、k
,或 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' 尽可能均匀。玩家人数为奇数时,可以使用正常调整的圈法加虚拟玩家。