Я пытаюсь создать планировщик для спортивной лиги, и я хотел бы распределить команды по группам, чтобы каждая команда получала по одной игре на группу.Я думаю, что то, что я пытаюсь сделать, это существующая проблема в информатике, но я не знаю, как она называется, и у меня возникают проблемы с поиском информации об этом.В любом случае, вот ситуация:
Допустим, у меня есть набор команд A = {1,2,3,...,n}
и набор пар этих команд B = {(1,2), (1,3), (2,4), (6,9),...}
.B не имеет всех возможных комбинаций команд из A. Предположим, что у A четное количество команд.Моя программа пытается создать подмножество B (давайте назовем это подмножество S) так, чтобы каждая команда из A появлялась в S ровно один раз.Это происходит путем перемещения пар из B в S, по одному за раз.Допустим, он уже поместил несколько пар в S. Как узнать, возможно ли успешно создать S в текущей ситуации?
Пример:
A = {1,2,3,4}, B = {(1,2), (1,3), (1,4), (3,4)}
If after one move, S = {(1,2)}, then it can be completed by moving (3,4).
If after one move, S = {(1,3)}, then it cannot be completed.
Обновление: Этот алгоритм будет одной из эвристик, которые я использую в своем генераторе расписаний.Цель состоит в том, чтобы неявно разделить расписание на «волны», где у каждой команды есть одна игра на волну.Допустим, у меня есть пул из 16 команд, и у каждой команды будет 5 игр против других команд в пуле.Идеальное расписание должно гарантировать, что ни одна команда не проведет вторую игру, прежде чем каждая команда проведет хотя бы одну игру.Планировщик выбирает игры по одной за раз и назначает им дату.Таким образом, идея состоит в том, чтобы планировщик следил за играми, запланированными в этой «волне», и никогда не выбирал игру, которая помешала бы каждой команде играть ровно один раз в текущей волне.Планировщик также использует кучу других эвристик, так что я не могу явно упорядочить игры и привести их в порядок.
Извините, если это неясно или не очень строго.Не стесняйтесь просить разъяснений, и я сделаю все возможное, чтобы объяснить дальше.