Как работают рассадки
Pantheon предоставляет несколько вариантов рассадок для турниров:
- Случайная рассадка
- Швейцарская рассадка
- Интервальная рассадка
- Предопределенная рассадка
Рассмотрим подробнее каждую.
Случайная рассадка
- Эта рассадка может быть использована в любой момент турнира, поскольку она не опирается ни на какие предыдущие данные.
- При использовании рассадки игроки перемешиваются случайным образом.
- Могут возникнуть (и с большой вероятностью возникнут) пересечения, если рассадка используется на поздних этапах турнира.
- Это единственная рассадка, которую можно использовать в самом начале турнира.
Швейцарская рассадка
- Эта рассадка учитывает текущее расположение игроков в рейтинге и предыдущую историю игр с целью минимизации пересечений.
- Швейцарскую рассадку нельзя использовать, если ни одной игры еще не сыграно.
- Рассадка преследует две цели:
- Уменьшение числа пересечений (по возможности)
- Игроки должны играть с примерно равными по текущему рейтингу (также по возможности)
- Упрощенный алгоритм рассадки:
- Берем текущую рейтинговую таблицу и выбираем первого игрока в ней (с наибольшим количеством очков).
- Пробегаем по таблице вниз и ищем первого с наибольшим числом очков игрока, с которым выбранный игрок еще не играл, выбираем его.
- Пробегаем дальше и ищем первого с наибольшим числом очков игрока, с которым еще не играли выбранные двое, выбираем его.
- Таким же образом находим последнего игрока. Так формируется первый стол. Выбранные игроки исключаются из таблицы.
- Шаги повторяются до тех пор, пока не соберутся все столы.
- На поздних этапах турнира может не получиться найти подходящее сочетание игроков, в этом случае условие "с которым выбранные игроки еще не играли" заменяется на условие "с которым выбранные игроки имеют наименьшее суммарное количество пересечений".
- Рассадка может перебрать несколько вариантов, суммируя общее количество пересечений по варианту. В качестве рабочего выбирается вариант с наименьшим общим количеством пересечений.
- Существует также ограничение алгоритма из-за его алгоритмической сложности (в общем случае задача решается за неполиномиальное время). В случае превышения времени генерации, выбирается наилучший вариант из уже сгенерированных.
- В случае, если количество столов не кратно степени двойки, последние столы добиваются по остаточному принципу. Это означает, что за последними столами вероятность пересечения игроков становится кратно выше.
Интервальная рассадка
- Эта рассадка учитывает только текущее расположение игроков в рейтинге.
- Интервальную рассадку нельзя использовать, если ни одной игры еще не сыграно.
- На входе алгоритма - целочисленный интервал.
- Если интервал равен 1, столы будут играть в соответствии с текущими местами: 1-2-3-4, 5-6-7-8, и так далее.
- Если интервал равен 2, столы будут играть по схеме 1-3-5-7, 2-4-6-8, и так далее.
- И так далее.
- Обратите внимание, что столы выбираются последовательно, т.е. сначала из таблицы выбирается первый стол, далее второй, далее третий. В случае некратного интервала (например, 3), за первыми тремя столами будут играть первые 12 игроков, за вторыми тремя - вторые 12, и так далее.
- В случае, если количество столов не кратно выбранному интервалу, последние столы добиваются по остаточному принципу. Это означает, что за последними столами вероятность пересечения игроков становится кратно выше.
Предопределенная рассадка
- Этот тип рассадки плохо сочетается с предыдущими тремя, поскольку требует задания скрипта рассадки заранее.
- Администратор турнира задает скрипт рассадки в настройках турнира, используя условные идентификаторы игроков (от 1 до N).
- Далее необходимо на странице управления игроками сопоставить каждому игроку его условный идентификатор.
- После этого можно начинать турнир.
- На странице задания скрипта рассадки есть также поле "Текущая игра", в которой задается номер игры. Номер обновляется автоматически при подтверждении результатов игр.
- Технически, есть возможность поменять типа турнира в настройках на использование встроенных рассадок. Встроенные рассадки будут использовать турнирную таблицу и предыдущие результаты игр. Однако, не рекомендуется менять тип турнира с автоматического на предопределенный если игры уже сыграны по автоматическим рассадкам - это потребует введения соответствующего количества фейковых игр в скрипт и задания нужной реальной игры в поле "Текущая игра".
Mahjong Pantheon dream team, 2024.