Алгоритм жеребьёвки: как на самом деле работает швейцарская система

Глава 5 — Руководство Как работает алгоритм жеребьёвки FIDE Dutch: критерии C1-C19 упрощённо, очковые группы, цвета, флоатеры. Обновлено для правил FIDE 2026. Включено руководство по TRF.

Каждый раз, когда вы нажимаете «Сгенерировать жеребьёвку» в швейцарском турнире, за кулисами за миллисекунды выполняется сложный алгоритм. Понимание его работы не только удовлетворит ваше любопытство — оно поможет объяснить «необычные» жеребьёвки игрокам, избежать типичных ошибок настройки и максимально эффективно использовать программу для жеребьёвки. Эта глава раскрывает суть системы FIDE Dutch, обновлённой для правил, действующих с 1 февраля 2026.

Зачем алгоритм? Почему нельзя просто составить пары вручную?

В самые ранние времена шахматных турниров арбитры составляли пары вручную — часто с помощью физической доски и цветных жетонов. Для 8 игроков на 5 туров это выполнимо. Для 200 игроков на 9 туров это логистический кошмар, занимающий часы и подверженный ошибкам.

Что ещё важнее, ручная жеребьёвка вносит предвзятость. Арбитр, знающий игроков, может (сознательно или нет) создавать «интересные» пары, благоприятствовать определённым игрокам или избегать определённых комбинаций. Алгоритм детерминирован и прозрачен: при одинаковых входных данных он всегда даёт одинаковый результат, и любой может проверить его.

Система FIDE Dutch — это не одно правило, а ранжированная иерархия критериев. Алгоритм стремится удовлетворить критерии наивысшего приоритета в первую очередь и ослабляет критерии более низкого приоритета только тогда, когда нет другого способа завершить жеребьёвку тура.

Что изменилось в FIDE 2026

1 февраля 2026 года FIDE ввела в действие пересмотренную версию правил швейцарской жеребьёвки (C.04.1, C.04.2, C.04.3). Изменения в основном касаются уточнений и перенумерации, но они важны для любого обсчитываемого FIDE турнира с этой даты:

ОбластьДо февр. 2026С февр. 2026
Нумерация критериев Различные буквенно-цифровые коды (A1, B1…) Единая последовательность C1–C19
Распределение цветов Некоторая неоднозначность в пограничных случаях Явные правила для всех пограничных случаев
Несыгранные партии Засчитывались как полноочковая победа для истории цветов Засчитываются как ½ очка для целей цвета и Buchholz
Система Burstein Описана в C.04.4 Остаётся в C.04.4, незначительные уточнения
Двойная швейцарская система Новое: C.04.5 (две параллельные швейцарские сетки)
Ускорение Баку C.04.5 Перенумерован в C.04.7
§ FIDE C.04.1 Основные правила (действует с 1 февраля 2026) и C.04.3 Система FIDE Dutch (действует с 1 февраля 2026) — основные справочные документы. → Читать C.04.1  |  → Читать C.04.3

Очковые группы: основа швейцарской жеребьёвки

Основная идея швейцарской системы проста: игроки с равным количеством очков играют друг с другом. Очковая группа — это множество всех игроков, имеющих одинаковое количество очков на данный момент турнира.

Внутри каждой очковой группы игроки ранжируются по посеву (обычно на основе их дотурнирного рейтинга). Затем группа делится на две половины: верхнюю (игроки с более высоким посевом) и нижнюю (игроки с более низким посевом). Игрок 1 из верхней половины играет с игроком 1 из нижней половины, игрок 2 — с игроком 2, и так далее.

Составление пар в очковой группе — наглядный пример (8 игроков, тур 1)
ОЧКОВАЯ ГРУППА: 0.0 очков (все игроки, тур 1)
S1Fischer2200 — ВЕРХНЯЯ ПОЛОВИНА
S2Kasparov2180 — ВЕРХНЯЯ ПОЛОВИНА
S3Tal2150 — ВЕРХНЯЯ ПОЛОВИНА
S4Petrosian2120 — ВЕРХНЯЯ ПОЛОВИНА
S5Spassky2080 — нижняя половина
S6Karpov2050 — нижняя половина
S7Botvinnik1990 — нижняя половина
S8Lasker1960 — нижняя половина
↕ pair top half vs нижняя половина (S1↔S5, S2↔S6, S3↔S7, S4↔S8)
Fischer (W)vsSpassky (B)
Kasparov (W)vsKarpov (B)
Tal (W)vsBotvinnik (B)
Petrosian (W)vsLasker (B)

После 1-го тура очковые группы разделяются. Игроки, победившие (1.0 очко), формируют верхнюю группу. Сыгравшие вничью (0.5) формируют среднюю группу. Проигравшие (0.0) формируют нижнюю группу. Затем алгоритм пытается составлять пары внутри каждой группы — но всё быстро усложняется, как мы увидим во 2-м туре.

Иерархия критериев: C1–C19

Система FIDE Dutch определяет 19 критериев, упорядоченных по приоритету. При генерации жеребьёвки для очковой группы алгоритм стремится найти жеребьёвку, удовлетворяющую как можно большему числу критериев высокого приоритета. Если удовлетворение C3 означает нарушение C7, выбирается C3 — если только C3 сам не перекрыт C1 или C2.

Вот наиболее важные критерии, объяснённые простым языком:

  • C1
    Ни один игрок не получает более одного бая Абсолютный
    Бай (бесплатное очко при нечётном числе игроков) может быть дан только один раз за турнир и никогда игроку, который уже его получал. Это нельзя отменить.
  • C2
    Ни один игрок не встречается с одним и тем же соперником дважды Абсолютный
    Алгоритм никогда не поставит в пару двух игроков, уже встречавшихся в этом турнире. Это абсолютное правило — его нельзя ослабить даже в последнем туре. Если избежать повтора действительно невозможно (очень маленькие турниры с большим числом туров), арбитр должен вмешаться.
  • C3
    Минимизация разницы очков между игроками в паре Высокий
    Игроки в одной очковой группе в идеале имеют одинаковые очки. Если жеребьёвка внутри группы невозможна, алгоритм может составлять пары из разных очковых групп (флоатеры), но стремится минимизировать разницу очков. Игрок на 3.0 очках, играющий с игроком на 2.5, лучше, чем с игроком на 2.0.
  • C4
    Минимизация количества даунфлоатеров Высокий
    Даунфлоатер — это игрок, перемещённый из своей очковой группы в следующую нижнюю, потому что его нельзя было составить в пару внутри своей группы. Алгоритм стремится минимизировать частоту этого.
  • C5
    Ни один игрок не опускается вниз два тура подряд, если этого можно избежать Высокий
    Если игрок был перемещён в нижнюю группу в прошлом туре, алгоритм старается не делать этого снова. Последовательное опускание вниз сильно штрафуется.
  • C6–C8
    Баланс и чередование цветов Высокий
    Каждый игрок должен чередовать цвета (белые, чёрные, белые, чёрные…) по возможности. Ни один игрок не должен играть более 2 партий подряд одним цветом. «Предпочтение цвета» отслеживается с 1-го тура и влияет на каждое последующее решение по жеребьёвке.
  • C9–C12
    Ограничения разницы цветов Средний
    «Разница цветов» — это количество партий белыми минус количество партий чёрными. Правила FIDE стремятся поддерживать её в пределах ±1 как можно дольше. Игроки с большим дисбалансом цветов получают приоритет на предпочтительный цвет в следующем туре.
  • C13–C19
    Посев и качество жеребьёвки внутри очковой группы Средний
    Среди всех допустимых жеребьёвок, удовлетворяющих C1–C12, алгоритм выбирает ту, которая лучше всего соответствует «идеальной» структуре верхняя-нижняя половина. Здесь рейтинг/порядок посева вновь играет роль как мера качества внутри группы.
Ключевой вывод

Алгоритм оптимизирует не «лучшую шахматную пару» — он оптимизирует соблюдение иерархии критериев. Иногда это приводит к жеребьёвкам, которые кажутся игрокам странными. Раздел 9 этой главы объясняет наиболее распространённые сценарии «странных жеребьёвок».

Распределение цветов: белые, чёрные и баланс

Назначение цвета — одна из наиболее непонятых частей швейцарской жеребьёвки. Игроки часто чувствуют, что получают слишком много чёрных — и иногда они правы, но обычно алгоритм делает именно то, что требуют правила.

Предпочтение цвета и право на цвет

Игрок имеет предпочтение цвета, если его история цветов несбалансирована (больше белых, чем чёрных, или наоборот). У него есть право на цвет, если он провёл две партии подряд одним цветом — в этом случае он должен получить противоположный цвет, если только это не делает жеребьёвку тура невозможной.

Когда два игрока с конфликтующими правами на цвет оказываются в паре, алгоритм должен нарушить правило для одного из них. Он выбирает игрока с меньшими основаниями — обычно того, чья последовательность цветов была менее несбалансированной в целом.

Цвет в 1-м туре

В 1-м туре у всех игроков одинаковая история цветов (никакой). Цвета назначаются по общему принципу: игрок с более высоким посевом (в верхней половине) получает белые, игрок с более низким посевом — чёрные. Вот почему в Мемориале Алёхина Фишер (S1) играет белыми, а Спасский (S5) — чёрными.

§ Правила распределения цветов описаны в FIDE C.04.3, sections 4–7 (действует с 1 февраля 2026). → Читать C.04.3

Флоатеры и даунфлоатеры

Когда в очковой группе нечётное число игроков, один игрок не может быть составлен в пару внутри группы и должен быть перемещён. Этот игрок называется флоатером.

Даунфлоатер перемещается в следующую нижнюю очковую группу (например, из группы 3.0 очков в группу 2.5 очков). Апфлоатер — это игрок в нижней группе, который принимает этого «гостя» сверху.

Алгоритм стремится минимизировать флоатинг (критерии C4–C5). Когда флоатинг неизбежен, он следует определённым правилам о том, кто перемещается: самый низкорейтинговый игрок в очковой группе является предпочтительным даунфлоатером, если только он уже не был даунфлоатером в прошлом туре или не имеет особенно сильных оснований для цвета, делающих жеребьёвку в нижней группе невозможной.

📉 Пример даунфлоатера — тур 2 Мемориала Алёхина

После 1-го тура: Фишер, Каспаров, Таль, Петросян — все выиграли → 4 игрока на 1.0 очко (чётная группа, флоатер не нужен).

Спасский, Карпов, Ботвинник, Ласкер — все проиграли → 4 игрока на 0.0 очков (чётная группа, флоатер не нужен).

Тур 2 чистый: группа 1.0 составляет пары внутри себя, группа 0.0 — внутри себя.

Но представьте, что Таль сыграл вничью вместо победы: тогда было бы 3 игрока на 1.0, 2 на 0.5 и 3 на 0.0. В группе 0.5 только 2 игрока — это нормально (одна пара). Но в группе 1.0 — 3 игрока — один должен стать даунфлоатером в группу 0.5. Самый низкорейтинговый игрок на 1.0 (Петросян, S4) становится даунфлоатером.

Тур 1 подробно: Мемориал Алёхина

Проследим полную жеребьёвку 1-го тура пошагово для нашего 8-игрокового турнира.

Вход: 8 игроков, все на 0.0 очков, ранжированные по рейтинговому посеву. Одна очковая группа: {Фишер, Каспаров, Таль, Петросян, Спасский, Карпов, Ботвинник, Ласкер}.

Шаг 1 — Разделить пополам: Верхняя половина = Фишер, Каспаров, Таль, Петросян (S1–S4). Нижняя половина = Спасский, Карпов, Ботвинник, Ласкер (S5–S8).

Шаг 2 — Применить критерии C1–C2: Нет предыдущих соперников (первый тур), ограничений нет. Баев пока нет.

Шаг 3 — Идеальная жеребьёвка: S1↔S5, S2↔S6, S3↔S7, S4↔S8. Все критерии удовлетворены. Это и есть жеребьёвка.

Шаг 4 — Назначение цвета: Верхняя половина получает белые по умолчанию в 1-м туре.

Мемориал Алёхина — Тур 1 Итоговая жеребьёвка
Bd 1Fischer (W)vsSpassky (B)
Bd 2Kasparov (W)vsKarpov (B)
Bd 3Tal (W)vsBotvinnik (B)
Bd 4Petrosian (W)vsLasker (B)

Тур 2 подробно: формирование очковых групп

После результатов 1-го тура (Фишер 1–0 Спасский, Каспаров 1–0 Карпов, Таль 1–0 Ботвинник, Петросян 1–0 Ласкер), у нас две очковые группы:

Группа A (1.0 очко): Фишер, Каспаров, Таль, Петросян — все 4 выиграли.
Группа B (0.0 очков): Спасский, Карпов, Ботвинник, Ласкер — все 4 проиграли.

Жеребьёвка группы A: Разделить пополам → Фишер, Каспаров (верх) против Таля, Петросяна (низ). Идеально: Фишер↔Таль, Каспаров↔Петросян. Проверка C2: никто ещё не играл друг с другом. ✓

Шаг цвета: В 1-м туре Фишер и Каспаров играли белыми. Теперь им нужны чёрные. Таль и Петросян играли чёрными, теперь им нужны белые. Итого: Таль (Б) против Фишера (Ч), Петросян (Б) против Каспарова (Ч). ✓

Смотрите генерацию жеребьёвки в реальном времени в ChessPairings.org

Создайте тестовый турнир на 8 игроков и наблюдайте, как алгоритм работает тур за туром.

Попробовать сейчас →

«Странные» жеребьёвки: почему так происходит?

Игроки и организаторы часто ставят под сомнение определённые жеребьёвки. Вот наиболее распространённые ситуации и алгоритмические причины каждой из них.

«Игрок X имеет 3 очка, но поставлен в пару с игроком на 2.5»

Это происходит, когда в группе 3.0 очков нечётное число игроков и кому-то нужно стать даунфлоатером. Алгоритм перебрал все комбинации внутри группы 3.0, но обнаружил, что все возможные жеребьёвки нарушают C1, C2 или C5 (например, все игроки на 3.0 уже играли друг с другом или имеют серьёзные конфликты цветов). Опускание одного игрока в группу 2.5 было единственным допустимым вариантом.

«Игрок X всегда получает чёрные»

Когда игрок становится даунфлоатером, ему часто приходится принять цвет, который он обычно не получил бы, потому что жеребьёвка в нижней группе этого требует. Это известное ограничение швейцарской системы — ограничение баланса цветов имеет более низкий приоритет, чем C1–C5, поэтому оно может быть нарушено.

«Почему два лидера поставлены в пару уже в 4-м туре?»

Если оба лидера имеют одинаковое количество очков, и алгоритм не находит другой допустимой жеребьёвки в их очковой группе (все остальные игроки в этой группе либо уже играли с ними, либо имеют конфликтующие права на цвет), алгоритм ставит двух лидеров друг против друга. Это правильное поведение — иерархия критериев этого требует.

Другие одобренные системы: Burstein, Ускорение Баку

Burstein System (C.04.4)

Система Burstein — вариант системы Dutch с другим подходом к формированию очковых групп. Вместо строгих очковых групп с флоатерами, она допускает более гибкие межгрупповые жеребьёвки, сохраняя рейтинговую близость внутри пар. Реже используется в обсчитываемых FIDE турнирах, но признана как альтернатива.

§ FIDE C.04.4 — Burstein System (действует с 1 февраля 2026). → Читать C.04.4

Ускорение Баку (C.04.7)

Ускорение Баку используется в очень больших швейцарских турнирах (обычно 200+ игроков), чтобы гарантировать, что сильнейшие игроки встретятся раньше, а не только в последних турах после нескольких лёгких побед над слабыми соперниками.

Идея: в первых нескольких турах игроки с высшим рейтингом получают «виртуальные» пол-очка форы, что помещает их в более высокую очковую группу, чем их фактический результат. Это создаёт более ранние столкновения между сильными игроками. С 3-го или 4-го тура виртуальные очки убираются, и нормальная швейцарская жеребьёвка возобновляется.

§ FIDE C.04.7 — Accelerated Systems: Ускорение Баку (действует с 1 февраля 2026). → Читать C.04.7

Чтение файла TRF

TRF (Tournament Report File) — стандартный формат обмена данными шахматных турниров. ChessPairings.org экспортирует как TRF-16 (устаревший), так и TRF-25 (новый формат 2025). Вот как выглядит файл TRF-16 для нашего Мемориала Алёхина после 1-го тура:

012 Открытый мемориал Алёхина
022 Club Room, Alessandria
032 2026-03-03
042 2026-03-03
052 Mikhail (Главный арбитр)
062 5
072 1
082 Рапид
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, общие очки, затем для каждого тура: стартовый ранг (0000 = неприменимо), цвет (W/B), номер соперника, результат (1 = победа, 0 = поражение, = = ничья, H = бай, F = техническая победа).

Вам никогда не нужно редактировать этот файл вручную — ChessPairings.org генерирует его автоматически. Но знание того, как его читать, помогает при проверке результатов или импорте в другое ПО.

bbpPairings: движок ChessPairings.org

ChessPairings.org использует bbpPairings в качестве движка швейцарской жеребьёвки — это открытая реализация на C++ системы FIDE Dutch, поддерживаемая сообществом шахматных программистов. bbpPairings используется несколькими национальными федерациями и системами управления турнирами по всему миру.

Для расчёта тай-брейков ChessPairings.org использует выделенный модуль TieBreakServer (Python), который реализует все 28 поддерживаемых систем тай-брейков независимо от движка жеребьёвки. Это разделение гарантирует, что логика жеребьёвки и тай-брейков может проверяться независимо.

Оба движка обновляются каждый раз, когда FIDE пересматривает правила — изменения правил февраля 2026 года полностью отражены в текущей версии ChessPairings.org.

Для технически любопытных

Задача голландской жеребьёвки математически эквивалентна задаче о взвешенном максимальном паросочетании в теории графов. Каждая потенциальная пара — это ребро с весом, отражающим, насколько хорошо она удовлетворяет иерархии критериев. Алгоритм находит паросочетание максимального веса — вот почему это занимает доли секунды даже для турниров на 500 игроков.

Готовы провести свой турнир?

Швейцарская жеребьёвка по стандартам FIDE 2026, 28 систем коэффициентов, полностью бесплатно.

Создать бесплатный аккаунт