Как работает наш алгоритм швейцарской системы
Last updated
Was this helpful?
Last updated
Was this helpful?
В основе нашей системы лежит модифицированный алгоритм, изначально разработанный для турнира Windmill. Он основан на модели рейтинга силы команд и принципах швейцарской системы. Мы адаптировали этот подход под наши нужды — сделали его более гибким, с возможностью настраивать параметры для локальных и международных турниров.
Подробности о математике, лежащей в основе рейтинга силы, можно найти здесь:
Главная задача — сделать матчи максимально интересными, равными по силам и напряжёнными. Мы стремимся к играм, в которых результат решается на последних минутах, а не в одностороннем разгроме. Чтобы это получилось, пары команд подбираются не случайно, а на основе актуальной силы каждого участника.
Алгоритм состоит из двух этапов:
Расчёт силы команд
Составление пар на следующий тур
Этап 1. Расчёт силы команд
После каждого тура мы обрабатываем все результаты и создаём матрицу матчей, где учитывается каждая сыгранная игра и её счёт.
На основе этих данных рассчитывается рейтинговая сила команды. Принцип такой:
Если команда A выиграла у команды B с разницей в 5 очков, то A получает +2.5 балла силы, а B — -2.5.
Если потом B выигрывает у C с разницей в 5 очков, то это влияет и на относительную силу A по сравнению с C.
Таким образом, сила команды зависит не только от её собственных результатов, но и от силы всех соперников, с которыми она уже встречалась. Это позволяет создать динамический рейтинг, который обновляется после каждого тура.
Этап 2. Составление пар
Когда сила команд определена, система подбирает пары для следующего раунда. Для этого создаётся матрица всех возможных пар, и каждой паре присваиваются штрафные баллы — они отражают, насколько плохо эта пара подходит (например, из-за большой разницы в силе или других факторов).
Затем алгоритм выбирает такие пары, чтобы суммарное количество штрафных баллов во всём туре было минимальным.
В этом случае оптимальным будет:
A против B
C против D
Суммарный штраф — 20, что минимально из всех возможных вариантов.
В текущей версии алгоритма штраф рассчитывается на основе разницы рейтинговой силы:
Команда с силой 3.5 против команды с силой 1.0 получит штраф в 2.5 балла.
Дополнительно применяются особые штрафы, которые позволяют тонко настраивать поведение системы:
100 000 штрафных баллов за повторную встречу команд — это делает такие пары практически невозможными.
0.1 штрафного балла за игру с командой из той же страны — чтобы минимизировать «внутренние» матчи, особенно в международных турнирах.
Эти значения можно настраивать вручную организаторами — например:
В локальных лигах можно задать высокий штраф для команд из одного города или даже одного университета, если важно максимальное разнообразие соперников.
Или наоборот, снизить штраф до нуля, если внутрирегиональные встречи допустимы.
Благодаря этой системе, мы получаем честные, насыщенные поединки, в которых каждая команда сталкивается с соперниками, близкими по уровню, и сохраняется напряжение в каждой игре.