Глава 5 — Руководство Как работает алгоритм жеребьёвки FIDE Dutch: критерии C1-C19 упрощённо, очковые группы, цвета, флоатеры. Обновлено для правил FIDE 2026. Включено руководство по TRF.
Каждый раз, когда вы нажимаете «Сгенерировать жеребьёвку» в швейцарском турнире, за кулисами за миллисекунды выполняется сложный алгоритм. Понимание его работы не только удовлетворит ваше любопытство — оно поможет объяснить «необычные» жеребьёвки игрокам, избежать типичных ошибок настройки и максимально эффективно использовать программу для жеребьёвки. Эта глава раскрывает суть системы FIDE Dutch, обновлённой для правил, действующих с 1 февраля 2026.
В самые ранние времена шахматных турниров арбитры составляли пары вручную — часто с помощью физической доски и цветных жетонов. Для 8 игроков на 5 туров это выполнимо. Для 200 игроков на 9 туров это логистический кошмар, занимающий часы и подверженный ошибкам.
Что ещё важнее, ручная жеребьёвка вносит предвзятость. Арбитр, знающий игроков, может (сознательно или нет) создавать «интересные» пары, благоприятствовать определённым игрокам или избегать определённых комбинаций. Алгоритм детерминирован и прозрачен: при одинаковых входных данных он всегда даёт одинаковый результат, и любой может проверить его.
Система FIDE Dutch — это не одно правило, а ранжированная иерархия критериев. Алгоритм стремится удовлетворить критерии наивысшего приоритета в первую очередь и ослабляет критерии более низкого приоритета только тогда, когда нет другого способа завершить жеребьёвку тура.
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 |
Основная идея швейцарской системы проста: игроки с равным количеством очков играют друг с другом. Очковая группа — это множество всех игроков, имеющих одинаковое количество очков на данный момент турнира.
Внутри каждой очковой группы игроки ранжируются по посеву (обычно на основе их дотурнирного рейтинга). Затем группа делится на две половины: верхнюю (игроки с более высоким посевом) и нижнюю (игроки с более низким посевом). Игрок 1 из верхней половины играет с игроком 1 из нижней половины, игрок 2 — с игроком 2, и так далее.
После 1-го тура очковые группы разделяются. Игроки, победившие (1.0 очко), формируют верхнюю группу. Сыгравшие вничью (0.5) формируют среднюю группу. Проигравшие (0.0) формируют нижнюю группу. Затем алгоритм пытается составлять пары внутри каждой группы — но всё быстро усложняется, как мы увидим во 2-м туре.
Система FIDE Dutch определяет 19 критериев, упорядоченных по приоритету. При генерации жеребьёвки для очковой группы алгоритм стремится найти жеребьёвку, удовлетворяющую как можно большему числу критериев высокого приоритета. Если удовлетворение C3 означает нарушение C7, выбирается C3 — если только C3 сам не перекрыт C1 или C2.
Вот наиболее важные критерии, объяснённые простым языком:
Алгоритм оптимизирует не «лучшую шахматную пару» — он оптимизирует соблюдение иерархии критериев. Иногда это приводит к жеребьёвкам, которые кажутся игрокам странными. Раздел 9 этой главы объясняет наиболее распространённые сценарии «странных жеребьёвок».
Назначение цвета — одна из наиболее непонятых частей швейцарской жеребьёвки. Игроки часто чувствуют, что получают слишком много чёрных — и иногда они правы, но обычно алгоритм делает именно то, что требуют правила.
Игрок имеет предпочтение цвета, если его история цветов несбалансирована (больше белых, чем чёрных, или наоборот). У него есть право на цвет, если он провёл две партии подряд одним цветом — в этом случае он должен получить противоположный цвет, если только это не делает жеребьёвку тура невозможной.
Когда два игрока с конфликтующими правами на цвет оказываются в паре, алгоритм должен нарушить правило для одного из них. Он выбирает игрока с меньшими основаниями — обычно того, чья последовательность цветов была менее несбалансированной в целом.
В 1-м туре у всех игроков одинаковая история цветов (никакой). Цвета назначаются по общему принципу: игрок с более высоким посевом (в верхней половине) получает белые, игрок с более низким посевом — чёрные. Вот почему в Мемориале Алёхина Фишер (S1) играет белыми, а Спасский (S5) — чёрными.
Когда в очковой группе нечётное число игроков, один игрок не может быть составлен в пару внутри группы и должен быть перемещён. Этот игрок называется флоатером.
Даунфлоатер перемещается в следующую нижнюю очковую группу (например, из группы 3.0 очков в группу 2.5 очков). Апфлоатер — это игрок в нижней группе, который принимает этого «гостя» сверху.
Алгоритм стремится минимизировать флоатинг (критерии C4–C5). Когда флоатинг неизбежен, он следует определённым правилам о том, кто перемещается: самый низкорейтинговый игрок в очковой группе является предпочтительным даунфлоатером, если только он уже не был даунфлоатером в прошлом туре или не имеет особенно сильных оснований для цвета, делающих жеребьёвку в нижней группе невозможной.
После 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-го тура пошагово для нашего 8-игрокового турнира.
Вход: 8 игроков, все на 0.0 очков, ранжированные по рейтинговому посеву. Одна очковая группа: {Фишер, Каспаров, Таль, Петросян, Спасский, Карпов, Ботвинник, Ласкер}.
Шаг 1 — Разделить пополам: Верхняя половина = Фишер, Каспаров, Таль, Петросян (S1–S4). Нижняя половина = Спасский, Карпов, Ботвинник, Ласкер (S5–S8).
Шаг 2 — Применить критерии C1–C2: Нет предыдущих соперников (первый тур), ограничений нет. Баев пока нет.
Шаг 3 — Идеальная жеребьёвка: S1↔S5, S2↔S6, S3↔S7, S4↔S8. Все критерии удовлетворены. Это и есть жеребьёвка.
Шаг 4 — Назначение цвета: Верхняя половина получает белые по умолчанию в 1-м туре.
После результатов 1-го тура (Фишер 1–0 Спасский, Каспаров 1–0 Карпов, Таль 1–0 Ботвинник, Петросян 1–0 Ласкер), у нас две очковые группы:
Группа A (1.0 очко): Фишер, Каспаров, Таль, Петросян — все 4 выиграли.
Группа B (0.0 очков): Спасский, Карпов, Ботвинник, Ласкер — все 4 проиграли.
Жеребьёвка группы A: Разделить пополам → Фишер, Каспаров (верх) против Таля, Петросяна (низ). Идеально: Фишер↔Таль, Каспаров↔Петросян. Проверка C2: никто ещё не играл друг с другом. ✓
Шаг цвета: В 1-м туре Фишер и Каспаров играли белыми. Теперь им нужны чёрные. Таль и Петросян играли чёрными, теперь им нужны белые. Итого: Таль (Б) против Фишера (Ч), Петросян (Б) против Каспарова (Ч). ✓
Создайте тестовый турнир на 8 игроков и наблюдайте, как алгоритм работает тур за туром.
Игроки и организаторы часто ставят под сомнение определённые жеребьёвки. Вот наиболее распространённые ситуации и алгоритмические причины каждой из них.
Это происходит, когда в группе 3.0 очков нечётное число игроков и кому-то нужно стать даунфлоатером. Алгоритм перебрал все комбинации внутри группы 3.0, но обнаружил, что все возможные жеребьёвки нарушают C1, C2 или C5 (например, все игроки на 3.0 уже играли друг с другом или имеют серьёзные конфликты цветов). Опускание одного игрока в группу 2.5 было единственным допустимым вариантом.
Когда игрок становится даунфлоатером, ему часто приходится принять цвет, который он обычно не получил бы, потому что жеребьёвка в нижней группе этого требует. Это известное ограничение швейцарской системы — ограничение баланса цветов имеет более низкий приоритет, чем C1–C5, поэтому оно может быть нарушено.
Если оба лидера имеют одинаковое количество очков, и алгоритм не находит другой допустимой жеребьёвки в их очковой группе (все остальные игроки в этой группе либо уже играли с ними, либо имеют конфликтующие права на цвет), алгоритм ставит двух лидеров друг против друга. Это правильное поведение — иерархия критериев этого требует.
Система Burstein — вариант системы Dutch с другим подходом к формированию очковых групп. Вместо строгих очковых групп с флоатерами, она допускает более гибкие межгрупповые жеребьёвки, сохраняя рейтинговую близость внутри пар. Реже используется в обсчитываемых FIDE турнирах, но признана как альтернатива.
Ускорение Баку используется в очень больших швейцарских турнирах (обычно 200+ игроков), чтобы гарантировать, что сильнейшие игроки встретятся раньше, а не только в последних турах после нескольких лёгких побед над слабыми соперниками.
Идея: в первых нескольких турах игроки с высшим рейтингом получают «виртуальные» пол-очка форы, что помещает их в более высокую очковую группу, чем их фактический результат. Это создаёт более ранние столкновения между сильными игроками. С 3-го или 4-го тура виртуальные очки убираются, и нормальная швейцарская жеребьёвка возобновляется.
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 генерирует его автоматически. Но знание того, как его читать, помогает при проверке результатов или импорте в другое ПО.
ChessPairings.org использует bbpPairings в качестве движка швейцарской жеребьёвки — это открытая реализация на C++ системы FIDE Dutch, поддерживаемая сообществом шахматных программистов. bbpPairings используется несколькими национальными федерациями и системами управления турнирами по всему миру.
Для расчёта тай-брейков ChessPairings.org использует выделенный модуль TieBreakServer (Python), который реализует все 28 поддерживаемых систем тай-брейков независимо от движка жеребьёвки. Это разделение гарантирует, что логика жеребьёвки и тай-брейков может проверяться независимо.
Оба движка обновляются каждый раз, когда FIDE пересматривает правила — изменения правил февраля 2026 года полностью отражены в текущей версии ChessPairings.org.
Задача голландской жеребьёвки математически эквивалентна задаче о взвешенном максимальном паросочетании в теории графов. Каждая потенциальная пара — это ребро с весом, отражающим, насколько хорошо она удовлетворяет иерархии критериев. Алгоритм находит паросочетание максимального веса — вот почему это занимает доли секунды даже для турниров на 500 игроков.
Швейцарская жеребьёвка по стандартам FIDE 2026, 28 систем коэффициентов, полностью бесплатно.
Создать бесплатный аккаунт