Есть ли известный алгоритм планирования турнирных матчей?

10

Просто интересно, есть ли уже алгоритм планирования турниров, который я мог бы использовать или даже немного адаптировать.

Вот мои требования:

  • Переменное количество противников, принадлежащих к разному количеству команд / клубов, должно быть в паре с противником.
  • Два соперника не могут быть из одного клуба
  • Если есть нечетное количество игроков, 1 из них выбирается случайным образом, чтобы получить пока

Любые алгоритмы, связанные с такого рода набором требований, будут оценены.

РЕДАКТИРОВАТЬ: мне нужно только запустить это максимум один раз, создавая сопоставления для первого «раунда» турнира.

barfoon
источник
Возможно, вы захотите посмотреть на максимальное соответствие .
svick

Ответы:

10

Как я вижу, вы хотите найти максимальное соответствие на графике. Фактически узлы являются игроками, они соединены друг с другом, если они не находятся в одном клубе, теперь вы должны найти максимальное количество ребер, которые не имеют одинаковую вершину. См. Алгоритм максимального соответствия Эдмондса .

Saeed
источник
1

Из моего короткого времени, проведенного в Википедии двадцать секунд назад, похоже, что сначала вам нужно будет выбрать стратегию исключения. Смотрите Википедию:

  1. Swiss-System
  2. Single-elimination_tournament
  3. Дважды elimination_tournament

В статье, посвященной единственному устранению, описывались методы заполнения (алгоритм, который вы ищете) довольно обобщенно, и это выглядело полезным, хотя и не совсем алгоритмом.

Крис Пфол
источник
Я предпочитаю швейцарский, который дает средний рейтинг в отличие от двойного / одиночного исключения, и находит лучших N игроков в том же количестве раундов, что и турнир N-исключения.
Mooing Duck
1

По ходу дела, кажется, что алгоритм начального сопоставления довольно прост:

While two or more clubs have at least one member not paired  
    select the two clubs with the most unpaired members
    select a random unpaired member from each club
    pair those members

Если останется один человек, это будет случайный человек, за одним исключением. Если в одном клубе больше членов, чем всех противоборствующих игроков, вместе взятых, то остатки всегда будут из этого клуба. На самом деле, это очень редкая ситуация, и выбор покупки в любом другом клубе оставил бы еще больше людей.

Мытье утка
источник