Мне нужно составить расписание спортивного мероприятия.Планирование соревнований
Имеются 30 команд. Каждая команда должна сыграть 8 матчей. Это означает, что каждая команда не может снова конкурировать со всеми другими командами, но мне нужно избегать того, чтобы две команды неоднократно соревновались друг с другом.
Моя идея состояла в том, чтобы сгенерировать все возможные совпадения (для 30 команд: (30*29)/2 = 435 matches
) и выбрать из этого списка 120 совпадений (8 совпадений для каждой команды: 8 * 30/2 = 120 matches
).
Это то место, где мне тяжело: как я могу выбрать эти 120 матчей? Я попробовал несколько простых решений (возьмите первое совпадение списка, затем последнее и т. Д.), Но они, похоже, не работают с 30 командами. Я также пытался создать всю возможную комбинацию совпадений и найти, какой из них работает, но с 30 командами, это слишком много расчетного времени.
Есть ли существующий алгоритм, который я мог бы реализовать?
UPDATE
Что мне нужно, чтобы произвести это простой график, без исключения. Каждая команда играет 8 матчей, и все. В конце дня не будет один победитель.
У каждой команды будет свое расписание, и это расписание не изменится, если они выиграют или проиграют. Планирование выполняется на весь день и является неизменным.
UPDATE 2
Сначала я не хотел ставить слишком много ограничений на мой вопрос, но мне кажется, что без каких-либо ограничений (кроме каждой команды не конкурируя более чем один раз друг с другом) , это всего лишь случай случайного выбора 8 матчей для каждой команды.
Так вот еще некоторые детали:
Во время этого спортивного события, есть 6 Differents спорта (футбол, гандбол, баскетбол, и так далее). Это означает, что есть 6 одновременных матчей. Новый раунд запускается каждые 15 минут.
Каждая команда должна будет сыграть 8 матчей, и каждый вид спорта хотя бы один раз.
Эти 6 видов спорта проходят в трех разных местах. Это означает, что в течение дня каждая команда должна будет перемещаться из одного места в другое. Эти шаги должны быть как можно более сокращены.
Команда не может играть в два матча подряд.
Интересный вопрос! Мне любопытно, какой алгоритм может это сделать! Надеюсь, вы получите ответ. – Flukey
Есть ли интерес к минимизации числа раундов? Или это не имеет значения? То есть, вас беспокоит, что одна команда вынуждена ждать? – aioobe
Мне не нравится, если команде придется ждать. Единственное требование следующее: 30 команд должны будут сыграть 8 матчей (не больше не менее) в течение дня. –