FIDE荷兰制配对算法:瑞士制配对如何工作

第5章 — 指南 FIDE荷兰制的结构、C1-C21条件优先级、颜色分配、升降组管理以及循序渐进的配对计算。已更新至2026年2月1日起生效的FIDE规则,并包含TRF格式指南。

每当赛事管理软件在瑞士制比赛中生成一轮配对时,它都会应用确定性算法来评估过往成绩、颜色平衡和棋手积分。了解FIDE荷兰制的工作原理,能够使裁判和赛事组织者验证配对的正确性,向参赛者解释出乎意料的配对,并正确配置赛事软件。本指南将根据2026年2月1日起生效的FIDE规则C.04.3,详细分析该算法的具体机制。

为什么瑞士制比赛的配对需要算法

在小型赛事中(例如,8名棋手进行5轮比赛),手动进行配对是可以管理的,没有太大的后勤困难。但是,当参赛人数增加到数十名或数百名棋手并进行7到9轮比赛时,手动计算变得不可行:积分、之前进行过的对局以及颜色交替错综复杂的网络每轮会产生数千种可能的组合。

除了节省时间,手动配对还有引入赛事方主观或无意识决定的风险。配对算法是确定性且可重现的:从相同的输入数据(排名、颜色历史、之前的交锋记录和种子序号)出发,它总是产生完全相同的结果,任何人都可以使用官方规则进行验证。

FIDE荷兰制不应用单一死板的规则,而是评估一个按顺序排列的优先级条件体系。处理过程首先满足强制性约束(如防止重复相遇或分配第二次PAB(配对轮空)),随后平衡次要偏好(如理想的颜色交替或最大限度减少升降组)。

从2026年2月1日起FIDE规则有何变化

2026年2月1日,FIDE关于瑞士制配对系统(FIDE手册的C.04.1、C.04.2和C.04.3章)的修订版正式生效。此次更新引入了统一的条件编码,并澄清了特定边缘情况的管理:

规则领域 以前的规则 2026年2月1日后的规则
条件编号 不同的代码(A1、B1、C1…) 从C1到C21的统一序列(C.04.3)
颜色分配 未完全详细说明边缘情况 针对每个冲突都有详细的优先规则,并明确区分最高分棋手和非最高分棋手
未下对局 管理取决于具体的规则背景 只有在棋盘上实际进行的对局才会计入颜色历史;对于破同分,未进行的轮次遵循FIDE C.07的第16条
Burstein制 在C.04.4中被泛泛定义 在FIDE第C.04.4.2章中被详细规定,包含针对积分组的具体规范
双瑞士制 未单独编码 在FIDE第C.04.5章中编码:每次配对都是由交替颜色的两局比赛组成的对抗赛
Baku加速制 归类在C.04.5下 重新编号为FIDE第C.04.7章(加速系统:巴库加速制)
FIDE官方手册参考:从2026年2月1日起生效的C.04.1(瑞士制基本规则)C.04.3(FIDE荷兰制)
→ 查阅 FIDE C.04.1 | → 查阅 FIDE C.04.3

积分编组和种子排序

瑞士制比赛的核心原则是积分完全相同的棋手应该互相交锋。一个积分组包含在开始一轮之前累积了完全相同分数的全体参赛者。

在每组内部,棋手根据其初始种子序号(通常基于FIDE或国家等级分分配)进行排名。然后该组被分成相等的两半:上半区(种子序号较小/等级分较高的棋手)和下半区。标准配对模式是上半区第一名对阵下半区第一名,上半区第二名对阵下半区第二名,依此类推。

积分组配对示例(8名棋手,第1轮)
积分组:0.0 分
S1Fischer2200 — 上半区
S2Kasparov2180 — 上半区
S3Tal2150 — 上半区
S4Petrosian2120 — 上半区
S5Spassky2080 — 下半区
S6Karpov2050 — 下半区
S7Botvinnik1990 — 下半区
S8Lasker1960 — 下半区
↕ 上半区 vs 下半区 配对 (S1↔S5, S2↔S6, S3↔S7, S4↔S8)
Fischer (白)对阵Spassky (黑)
Kasparov (白)对阵Karpov (黑)
Tal (白)对阵Botvinnik (黑)
Petrosian (白)对阵Lasker (黑)

在第1轮之后的轮次中,比赛结果将棋手分成不同的组(胜者,和棋者,败者)。算法按照分数从高到低的顺序处理每个组,首先完成高排名的配对,并通过升降组来解决积分不平衡问题。

配对条件的优先级:从C1到C21

FIDE规则C.04.3定义了按严格优先级排序的21个条件(从C1到C21)。在构建每一轮的配对时,软件会寻找优先满足高阶条件的组合。只有在严格需要遵守更高优先级规则的情况下,才会牺牲优先级较低的条件。

  • C1
    同一对棋手之间不重复相遇 强制性
    在同一比赛的前几轮中已经交锋过的两名棋手,永远不能再次被配对在一起。
  • C2
    没有第二次PAB或未下的1分对局 强制性
    任何棋手不得获得多于一次的配对轮空(PAB),也不能从第二次未进行的1分对局中获益(因对手弃权获胜或被判1分的未下轮次)。
  • C3
    非最高分棋手的绝对颜色偏好 高优先级
    两名具有相同绝对颜色偏好的非最高分棋手(例如,由于颜色不平衡或为了避免连续三局同色而都要求白棋)不能互相配对。
  • C4
    完成配对 高优先级
    为已经检查过的棋手选择的配对必须允许为比赛中所有剩余的参赛者形成有效的配对。
  • C5
    最小化PAB获得者的积分 高优先级
    如果一个参赛人数为奇数的一轮需要分配一次PAB,则必须将其奖励给得分尽可能低的棋手。
  • C6
    最小化降组棋手数量 高优先级
    算法会最小化从其积分组转移到较低积分组的棋手(降组棋手)数量。
  • C7
    按降组棋手积分降序最小化 高优先级
    在降组数量相等的候选组合中,选择积分尽可能低的棋手进行降组。
  • C8
    降组棋手对下一个组的适用性 高优先级
    选择的降组棋手必须使较低得分组(下一个区间)能够满足条件C1-C7。
  • C9
    最小化PAB获得者的未下对局数 中优先级
    为被选为获得PAB的棋手最小化其之前累计的未进行对局数。
  • C10
    控制最高分棋手及其对手色差超过±2的情况 中优先级
    最小化在本轮结束时绝对颜色差(白棋局数减去黑棋局数)超过2的最高分棋手或其对手的数量。
  • C11
    禁止最高分棋手及其对手连续三局同色 中优先级
    最小化连续三轮被分配相同颜色的最高分棋手或其对手的数量。
  • C12
    最小化未满足的颜色偏好 中优先级
    最小化在比赛中未被分配到其偏好颜色的棋手总数。
  • C13
    最小化未满足的强烈颜色偏好 中优先级
    最小化拥有强烈颜色偏好但未获得其要求颜色的棋手数量。
  • C14–C17
    最小化近期轮次中的升降重复 细化优先级
    防止同一名棋手在连续两轮或在前两轮内经历或提供升降(降组或升组)。
  • C18–C21
    最小化升降配对中的积分差 细化优先级
    按降序最小化当前及近期轮次中执行的升降配对所伴随的积分差距。
计算原则

配对引擎的目标不是在个人实力方面构建“平衡的对局”,而是最大限度地遵守C1-C21的优先级。如果严格应用条件C1(不重复相遇)和C2(无第二次PAB)迫使在两名积分或等级分差距很大的棋手之间进行配对,算法将依照官方规则执行该配对。

颜色分配规则:白棋和黑棋

颜色分配经常引起参赛者的疑问。了解颜色偏好和绝对颜色权利之间的区别有助于澄清软件的配对决定。

2026年FIDE基本规则:只有在棋盘上实际进行的对局才会计入棋手的颜色历史。未进行的轮次(例如PAB / 配对轮空、半分的请求轮空,或弃权胜负)不会改变已下的白棋和黑棋数量,也不会为随后的轮次产生颜色偏好。

颜色偏好与绝对颜色权利

当棋手实际进行的对局历史显示不平衡时(例如,2盘白棋和1盘黑棋),或当他们在上一轮中执黑时,该棋手表达了颜色偏好。相反,当棋手连续两局下相同颜色,或当其颜色差达到大于±2的绝对值时,棋手拥有绝对颜色权利:在这些情况下,规则强制要求在下一轮分配相反的颜色。

如果配对的两名棋手都拥有对同一种颜色的绝对权利(例如,都要求执白),算法会根据FIDE优先级表(条件C3、C10-C13)将颜色分配给整体不平衡更大或种子优先权更高的棋手。

第1轮颜色分配

在第1轮中,没有历史对局记录,第1台的颜色分配由抽签或组织方指示决定(传统上授予1号种子白棋)。因此,所有上半区的棋手在第1轮中分得白棋,而所有下半区的棋手分得黑棋。

有关颜色反转和平衡的详细规定规则:FIDE C.04.3(第4–7节)
→ 在FIDE手册中打开 C.04.3 节

升降组处理:降组和升组

当一个积分组包含奇数名参与者时,必然有一名棋手无法在其积分组内找到对手。该棋手被指定为升降棋手 (floater)

降组棋手 (downfloater)是指从其积分组被转移到紧挨着的较低积分组的棋手。升组棋手 (upfloater)是在较低积分组中被配对来对阵他们的棋手。

算法选择候选降组棋手,同时尽量减少对条件C6、C7和C8(如果选择PAB则还有C5)的惩罚。通常,选择该积分组中种子序号最低的棋手,除非这样做会导致重复相遇违规(C1)或与完成配对不兼容(C4)。

降组棋手选择示例

在一个8人锦标赛中,第1轮产生了四名胜者(1.0分组)和四名败者(0.0分组)。因为两组的棋手人数均为偶数(每组4人),所以第2轮没有升降组现象。

如果其中一局第1轮比赛以和棋告终,那么排名将显示3名棋手得1.0分,2名棋手得0.5分,3名棋手得0.0分。1.0分组为奇数(3名参赛者):1.0分组中种子排名最低的棋手成为降组棋手,并被配对进入0.5分组。

实际案例:阿廖欣纪念赛第1轮

考虑一个按初始等级分排名的8人锦标赛模拟:

初始数据: 8名棋手均为0.0分。
种子排序:S1 Fischer (2200), S2 Kasparov (2180), S3 Tal (2150), S4 Petrosian (2120), S5 Spassky (2080), S6 Karpov (2050), S7 Botvinnik (1990), S8 Lasker (1960)。

第1步 — 划分区:
上半区 (S1–S4):Fischer, Kasparov, Tal, Petrosian。
下半区 (S5–S8):Spassky, Karpov, Botvinnik, Lasker。

第2步 — C1–C2验证: 没有先前进行的比赛(条件C1),没有PAB或轮空要分配(条件C2)。

第3步 — 匹配: S1↔S5, S2↔S6, S3↔S7, S4↔S8。

第4步 — 颜色: 第1轮抽签分配上半区执白。

阿廖欣纪念赛 — 确定的第1轮配对
第1台Fischer (白)对阵Spassky (黑)
第2台Kasparov (白)对阵Karpov (黑)
第3台Tal (白)对阵Botvinnik (黑)
第4台Petrosian (白)对阵Lasker (黑)

实际案例:形成第2轮

假设四位较高排名的种子选手(Fischer, Kasparov, Tal和Petrosian)在第1轮中全部获胜,临时排名会为第2轮生成两个不同的积分组:

A组 (1.0分): Fischer, Kasparov, Tal, Petrosian (4名棋手)。
B组 (0.0分): Spassky, Karpov, Botvinnik, Lasker (4名棋手)。

A组配对: 分成两半 → 上半区:Fischer (S1), Kasparov (S2)。下半区:Tal (S3), Petrosian (S4)。
匹配:S1↔S3 (Fischer vs Tal) 以及 S2↔S4 (Kasparov vs Petrosian)。C1验证:棋手间无之前的对局。

A组颜色: Fischer和Kasparov在第1轮执白,所以他们需要黑棋。Tal和Petrosian执黑,所以他们需要白棋。最终的配对是:Tal (白) 对阵 Fischer (黑) 和 Petrosian (白) 对阵 Kasparov (黑)。

在 ChessPairings.org 中生成配对

您可以通过网络平台创建测试赛事并运行轮次模拟。

打开平台 →

如何解读看似异常的配对

棋手和裁判有时会遇到乍一看似乎不正确的配对。FIDE条件优先级解释了这些结果出现的原因:

3.0分的棋手配对对阵2.5分的对手

当3.0分组包含奇数名参赛者,或者当所有组内配对都会违反条件C1(重复比赛)或C2(避免第二次PAB)时,就会出现这种情况。系统将一名降组棋手移至较低的组别(根据规则C6-C8)以寻找兼容的对手。

棋手连续两轮分到相同的颜色

完美的颜色交替是次要优先级的约束(条件C12),相比于避免重复对局(条件C1)或管理PAB(条件C2)。当算法必须在分配偏好颜色与在没有重复配对的情况下确保完成该轮(条件C4)之间做出选择时,避免重新交手优先。

排名前两位的选手早在第4轮就配对

如果排名前两位的领先者积分相同,并且最高组别内的所有其他组合都会导致违反剩余参赛者的更高优先级的条件,那么系统会提前安排领先者之间的直接交锋。

FIDE批准的替代系统(Burstein、Baku、双瑞士制)

Burstein制 (FIDE C.04.4.2)

Burstein制是荷兰制的一种变体,采用替代规则来构成积分区间和组内配对,在保持等级分相近的同时,为积分容差提供了更大的灵活性。

规则参考:FIDE C.04.4.2 (Burstein系统)
→ 查阅 FIDE C.04.4.2

双瑞士制 (FIDE C.04.5)

在双瑞士制中,每次配对都是两名棋手之间的对抗赛,由两局颜色交替的连续对局组成。对抗赛的比分是两局比赛分数的总和;轮空和配对条件受FIDE第C.04.5章管辖,从2026年2月1日起实施。

巴库加速制 (FIDE C.04.7)

巴库加速制修改了首几轮的积分编组方式,以减少过于容易预测的初始配对,同时不改变实际排名积分。

初始种子名单被划分为GA组和GB组。在加速轮次的第一部分,GA组的棋手仅为配对目的获得相当于一场胜利分值的虚拟积分;在剩余的加速轮次中,这些虚拟积分减半。在最后一个加速轮次之后,不再分配虚拟积分。

规则参考:FIDE C.04.7 (加速系统:巴库加速制)
→ 查阅 FIDE C.04.7

TRF报告文件的结构和阅读

TRF(锦标赛报告文件)格式是FIDE定义的标准数据交换格式,用于传输比赛结果以进行等级分计算。ChessPairings.org支持导出TRF-16格式,并提供名为TRF-25的导出选项;建议用户确认目的地协会接受的格式。

以下是第1轮的TRF-16结构示例摘录:

012 Alekhine Memorial Open
022 Club Room, Alessandria
032 2026-03-03
042 2026-03-03
052 Mikhail (Chief Arbiter)
062 5
072 1
082 Rapid
092 15+10
132 Buchholz Cut-1, Buchholz, Wins, Direct Encounter
001  No  Name              Rtg  FID       Pts  R1
001    1 Fischer           2200 1234567   1.0  0000 W  5 1
001    2 Kasparov          2180 2345678   1.0  0000 W  6 1
001    3 Tal               2150 3456789   1.0  0000 W  7 1
001    4 Petrosian         2120 4567890   1.0  0000 W  8 1
001    5 Spassky           2080 5678901   0.0  0000 B  1 0
001    6 Karpov            2050 6789012   0.0  0000 B  2 0
001    7 Botvinnik         1990 7890123   0.0  0000 B  3 0
001    8 Lasker            1960 8901234   0.0  0000 B  4 0

每行带有001前缀的内容都包含单个棋手的数据。从左到右阅读:起始排位号、姓名、等级分、FIDE ID、总得分,然后是各个轮次的列。对于每一轮,会标明分配的颜色(W代表白棋,B代表黑棋)、对手的排位号以及比赛结果(1代表赢,0代表输,=代表和局)。

bbpPairings计算引擎与破同分处理

ChessPairings.org 上的配对生成依赖于 bbpPairings,这是一款实现了FIDE荷兰制算法逻辑的开源C++引擎。

排名和破同分计算独立于配对生成执行,并且必须与比赛公布的规则相匹配。

关于计算复杂度的说明

从理论的角度来看,图匹配是实现FIDE荷兰制配对算法的一种可能方法,尽管具体的实现细节在不同的软件引擎中各不相同。当被建模为图时,候选边的权重基于对C1-C21优先级的遵守程度。

关于FIDE荷兰制算法的常见问题

如果同一个积分组里的两名棋手已经下过棋会发生什么?

条件C1规定,同一比赛中不能重复进行同一对局。算法会在组内应用内部置换,或者如果必要的话,将一名棋手移至较低分组(依据C6-C8降组)以避免重复。

有没有可能连续三轮拿到相同的颜色?

不,条件C11禁止向最高分棋手及其对手连续分配三种相同的颜色(且条件C3禁止非最高分棋手之间相同的绝对颜色偏好)。然而,当完美交替(C12)与更高优先级的约束(如C1避免重复对局或C4配对完成)发生冲突时,连续两轮分配同一种颜色是可能的。

TRF文件是什么,它包含什么数据?

TRF(Tournament Report File,锦标赛报告文件)是FIDE定义的标准文本格式,用于传送比赛数据以进行等级分计算。它包含棋手注册详情、已赛轮次列表、分配的颜色、对手及取得的成绩。

组织您的国际象棋比赛

基于2026年FIDE规则的瑞士制配对和常用破同分规则的管理。

访问平台