Допустим, у вас есть шесть игроков (для примера простой ). Мы можем использовать тот же алгоритм , который объединяет соперников в турнирах с одиночным отбором и адаптировать его для генерации "четных" команд на основе любых выбранных вами критериев.
Сначала оцените своих игроков от лучших к худшим. Не воспринимайте это слишком буквально. Вам нужен список игроков, отсортированных по критериям, которые вы хотите разделить их.
Почему?
Давайте посмотрим на одиночные отборочные турниры на секунду. Идея использования алгоритма для генерации оптимальных матчей с одиночным выбыванием состоит в том, чтобы избежать проблемы встречи «лучших игроков» слишком рано в турнире. Если лучшие игроки встретятся слишком рано, один из лучших игроков будет удален на ранней стадии, что сделает турнир менее интересным. Мы можем использовать это «оптимальное» соединение для формирования команд, в которых «лучшие» игроки распределены по командам равномерно. Затем разложите вторые лучшие игроки и т. Д. И т. Д.
Итак, перечислите своих игроков по критериям вы хотите, чтобы они были разделены : сначала мужчины, затем женщины ... отсортированы по возрасту вторым. Получаем (например):
Player 1: Male - 18
Player 2: Male - 26
Player 3: Male - 45
Player 4: Female - 18
Player 5: Female - 26
Player 6: Female - 45
Затем мы применим алгоритм одиночного исключения, который использует их «ранг» (который является просто номером их игрока) для создания «хороших совпадений».
Генератор турниров с одиночным исключением в основном работает следующим образом : взять их ранг (номер игрока) и поменять местами биты (двоичные). Этот новый номер, который вы придумали, станет их "слотом" в турнире.
Player 1 in binary (001), reversed becomes 100 (4 decimal) = slot 4
Player 2 in binary (010), reversed becomes 010 (2 decimal) = slot 2
Player 3 in binary (011), reversed becomes 110 (6 decimal) = slot 6
Player 4 in binary (100), reversed becomes 001 (1 decimal) = slot 1
Player 5 in binary (101), reversed becomes 101 (5 decimal) = slot 5
Player 6 in binary (110), reversed becomes 011 (3 decimal) = slot 3
В турнире с одиночным отбором слот 1 играет в слот 2, 3 против 4, 5 против 6. Мы собираемся использовать эти «пары» для генерации оптимальных команд.
Глядя на номер игрока выше, упорядоченный по «номеру слота», вот список, который мы придумали:
Slot 1: Female - 18
Slot 2: Male - 26
Slot 3: Female - 45
Slot 4: Male - 18
Slot 5: Female - 26
Slot 6: Male - 45
Когда вы разделяете слоты на команды (две или более), вы получаете игроков в слоте 1-3 против игроков в слоте 4-6. Это лучшая / оптимальная группировка, которую вы можете получить.
Эта техника очень хорошо подходит для большого количества игроков, нескольких критериев (просто сгруппируйте их правильно) и нескольких команд.