Просто интересно, есть ли уже алгоритм планирования турниров, который я мог бы использовать или даже немного адаптировать.
Вот мои требования:
- Переменное количество противников, принадлежащих к разному количеству команд / клубов, должно быть в паре с противником.
- Два соперника не могут быть из одного клуба
- Если есть нечетное количество игроков, 1 из них выбирается случайным образом, чтобы получить пока
Любые алгоритмы, связанные с такого рода набором требований, будут оценены.
РЕДАКТИРОВАТЬ: мне нужно только запустить это максимум один раз, создавая сопоставления для первого «раунда» турнира.
algorithms
barfoon
источник
источник
Ответы:
Как я вижу, вы хотите найти максимальное соответствие на графике. Фактически узлы являются игроками, они соединены друг с другом, если они не находятся в одном клубе, теперь вы должны найти максимальное количество ребер, которые не имеют одинаковую вершину. См. Алгоритм максимального соответствия Эдмондса .
источник
Из моего короткого времени, проведенного в Википедии двадцать секунд назад, похоже, что сначала вам нужно будет выбрать стратегию исключения. Смотрите Википедию:
В статье, посвященной единственному устранению, описывались методы заполнения (алгоритм, который вы ищете) довольно обобщенно, и это выглядело полезным, хотя и не совсем алгоритмом.
источник
По ходу дела, кажется, что алгоритм начального сопоставления довольно прост:
Если останется один человек, это будет случайный человек, за одним исключением. Если в одном клубе больше членов, чем всех противоборствующих игроков, вместе взятых, то остатки всегда будут из этого клуба. На самом деле, это очень редкая ситуация, и выбор покупки в любом другом клубе оставил бы еще больше людей.
источник