Алгоритм командного планирования - Дизайн викторины - PullRequest
3 голосов
/ 20 августа 2009

У меня есть странная проблема, которую нужно решить - это нужно использовать при разработке теста, но это проще всего объяснить с помощью команд.

Там 16 команд и 24 матча. 4 команды играют в каждом матче. Каждая команда должна появиться один раз против 12/16 команд и дважды против оставшихся 3/16, и должна появиться ровно 6 раз. Есть идеи, как это сделать? Если есть программное обеспечение, которое может это сделать, это было бы замечательно.

UPDATE: Я не уверен, что вышесказанное возможно. Вот минимум, которого мы пытаемся достичь:

  • Количество игр не установлено.
  • В каждой игре 4 команды.
  • Каждая команда получает равное количество игр.

Возможно ли это?

Ответы [ 5 ]

2 голосов
/ 05 декабря 2012

Проверьте это ... http://en.wikipedia.org/wiki/Round-robin_tournament

Я думаю, что кто-то может обобщить алгоритм так, чтобы он подходил для более чем 2 команд ...

Я знаю, что это не отвечает на вопрос, но дает некоторые подсказки ... Это также может немного помочь ... http://en.wikipedia.org/wiki/Tournament_(graph_theory)

1 голос
/ 25 августа 2009

Обратите внимание, что каждая команда играет 3 других за матч, поэтому для всех 15 команд требуется не менее 5 матчей. Таким образом, мы надеемся, что есть решение для 20 матчей, где каждая команда играет 5 матчей и играет каждую команду ровно один раз.

С 16 командами можно построить решение вручную следующим образом ...

  1. Разделите 20 матчей на 5 раундов
    • Количество команд от 1 до 16
    • Для каждого матча по очереди, для каждого из 4 мест в этом матче, выделите первую команду, которая
    • все еще доступен для игры в этом раунде
    • еще не играл ни одной из команд, уже назначенных на этот матч

Вы можете несколько сузить поиск доступных команд, отметив, что в каждом матче должна содержаться ровно одна команда из каждого матча предыдущего раунда, поэтому для места n нужно учитывать только команды, сыгравшие матч n в предыдущем раунде. 1019 *

Если мы хотим 24 матча, то в шестом раунде будет достаточно произвольного выбора матчей, чтобы соответствовать исходным требованиям. Однако, чтобы гарантировать, что никакие точные совпадения не повторяются, мы можем переключать пары команд между матчами в каком-то предыдущем раунде. То есть, если {1,2,3,4} и {5,6,7,8} были совпадениями в каком-то раунде, то в шестом раунде мы получим {1,2,7,8} и {3,4 , 5,6}. Поскольку 1 и 2 играли друг с другом ровно один раз в раундах 1-5, в матче {1,2,3,4} мы, конечно, еще не играли в матче {1,2,7,8}.

Выбор структур данных для эффективной реализации оставлен читателю в качестве упражнения.

0 голосов
/ 14 декабря 2013

Немного больше ясности в определении проблемы было бы полезно. Какой вид спорта вы пытаетесь запланировать. Похоже, вы попали в теннисную лигу из 16 человек, и каждую неделю на четырех кортах появляются 4 отдельных игрока, которые играют в парном разряде (игроки A & B и C & D). То же самое происходит на трех других кортах с игроками от E до P. Это то, что вы ищете? Если так, ответ прост. Если нет, я все еще не понимаю, что вы ищете.

0 голосов
/ 21 августа 2009

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

0 голосов
/ 20 августа 2009

Вытащите свою книгу комбинаторики. Я помню эти вопросы как в этой области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...