用户在乐鱼体育里输入:“12支业余五人制足球队,周末两天打完,有3块场地。”这句话里没有“赛制”两个字,但赛事生成器必须先回答这个问题,才能继续排赛程。选单败淘汰,12支队里最多有8支来一趟只踢一场;选单循环,66场比赛两天根本踢不完;选小组赛加淘汰赛,又要决定分几组、每组几队、多少队出线。赛制不是用户的默认偏好,而是从几个硬数字里推出来的。

四个输入:队数、时间、场次、赛制

在乐鱼体育的赛事生成流程里,这一步被拆成四个变量:Team Count(参赛队数)、Time(可用天数、每天可用时段、场地数量)、Match Number(某种赛制需要的比赛场数)和Tournament Format(最终赛制)。前两个来自用户或默认值,第三个由赛制公式算出,第四个是在前三者之间找到可行又尽量好看的方案。

场次公式本身并不复杂:

  • 单败淘汰:每场比赛淘汰一支队,要从N支队里产生唯一冠军,需要淘汰N−1支,所以恰好N−1场,与有没有轮空无关。
  • 单循环:每两队交手一次,N(N−1)/2场。
  • 双循环:每两队主客场各一次,N(N−1)场。
  • 小组赛加淘汰赛:各组循环场数之和,加上出线队伍数M对应的淘汰赛M−1场;如果设三四名决赛,再加1场。

一张表看清不同队数下的场次

队数 单败淘汰(轮数) 单循环(轮数) 双循环 小组赛+淘汰赛(示例分组)
4 3场(2轮) 6场(3轮) 12场 队数太少,直接循环即可
6 5场(3轮,2个轮空) 15场(5轮)30场 2组×3队:6+半决赛2+决赛1=9场
8 7场(3轮)28场(7轮)56场 2组×4队:12+2+1=15场,含三四名决赛16场
10 9场(4轮,6个轮空) 45场(9轮) 90场 2组×5队:20+2+1=23场
12 11场(4轮,4个轮空)66场(11轮) 132场4组×3队:12+八强4+半决赛2+决赛1=19场
16 15场(4轮)120场(15轮) 240场 4组×4队:24+4+2+1=31场

表里有两点容易被忽略。第一,单循环的轮数和队数的奇偶有关:偶数N队需要N−1轮,奇数N队需要N轮,因为每轮总有一支队轮空。第二,循环赛的场数随队数按平方增长,16支队单循环已经是120场,而单败淘汰每多一支队只多一场。

队数不是2的幂时,轮空怎么排

单败淘汰的对阵图天然是2、4、8、16这样的规模。12支队要放进16个位置的对阵图,就有16−12=4个轮空:第一轮只有8支队比赛,产生4场,胜者和4支轮空队一起组成八强,再打4场、2场、1场。4+4+2+1=11场,仍然是N−1。

轮空不是随便分配的,常见的做法有三条:

  1. 轮空给种子排名最高的球队,作为小组赛或积分排名的奖励。
  2. 轮空要均匀分布在对阵图的各个区域,4个轮空分别落在四个四分之一区,而不是全部挤在上半区,让下半区的球队多打一轮。
  3. 轮空队和第一轮胜者之间的休息时间差要控制,否则轮空队以逸待劳的优势会被放大。

只比总场数不够,还要看轮次深度

回到12支队、两天、3块场地的例子。假设每块场地每天可用4个时段,两天总容量是2×3×4=24场。单循环66场直接排除;单败淘汰11场、4组×3队加八强淘汰19场,看上去都放得下。

但淘汰赛有一个总场数看不出的约束:下一轮必须等上一轮打完。如果压缩到一天打完单败淘汰,第一轮4场在3块场地上需要2个时段,八强4场又需要2个时段,半决赛和决赛各占1个时段,一共6个时段,而每天只有4个。总场数只有11场,却一天排不下。

再看两天的4组×3队方案。第一天打小组赛,每组3队循环3场,4组共12场,正好填满3块场地×4个时段,每支队打2场;第二天打八强4场、半决赛2场、决赛1场,共7场:八强赛占2个时段,半决赛和决赛各占1个,4个时段刚好用满,冠军当天最多踢3场。这里仍有一个软约束要提示:在第二个时段打八强赛的球队会连续作战进入半决赛,生成器应当把这一点标出来,建议让种子更高的球队在第一个时段比赛,或把时段间隔拉长。每支队至少保证2场比赛,比单败淘汰里最多8支队只踢1场好得多。于是在这个场景里,生成器会推荐小组赛加淘汰赛,并把单败淘汰作为“时间更紧时”的备选显示出来。

时间拉长以后,答案会反过来

同样的逻辑换一个输入就会得出不同结论。用户如果说“8支队,一个月内打完,只在周末比赛,每个周末最多两轮”,一个月大约4个周末、最多8轮。单循环28场只需要7轮,放得下,而且每队能打7场,是最公平的选择;双循环56场需要14轮,至少要7个周末,超出了用户给的时间。这时生成器应该推荐单循环,并说明“如果想要主客场双循环,需要把时间延长到约两个月”。Time这个变量在短赛事里决定的是每天的时段够不够,在长赛事里决定的则是轮次够不够,两者都要算。

赛制选择的几条经验规则

  • 场地和时间充足、队数不超过8支,优先单循环,最公平。
  • 队数多、时间紧,优先单败淘汰,但要提示“约一半球队只比赛一场”。
  • 介于两者之间时,小组赛加淘汰赛通常是折中,每组3到5队较常见,出线队数尽量凑成2的幂,避免淘汰阶段再出现轮空。
  • 小组出线后的交叉对阵要让同组球队尽量晚相遇,例如两组时A1对B2、B1对A2。
  • 每个方案都要同时检查总场数、轮次深度、每队单日最多比赛数和最短休息时间。

选定赛制只是第一步,比赛在哪一轮、哪个时段、哪块场地进行,还要交给赛程求解去处理,具体可以看AI生成赛程为什么不能只是随机排列球队。如果用户是在手机上用一句话发起赛事,乐鱼体育App一句话生成赛事的流程里也会先展示推荐赛制和它的场次,再让用户确认或修改。

AI在这里最不应该做的,是假装用户已经说清楚了赛制,或者直接套用一个固定模板。更合适的做法是把推荐赛制、总场数、每队至少几场、需要几个时段都摆出来,让用户一眼看出“为什么是这个赛制”,改了队数或天数以后再重新计算。