Существует задача, которая должна выполняться двумя людьми каждый день, и есть группа людей, доступных.Алгоритм для планирования действий людей, которые должны выполняться парами.
Идея состоит в том, чтобы назначить двух разных людей таким задачам, чтобы каждая возможная комбинация была назначена хотя бы один раз.
Кроме того, в идеале любое конкретное лицо должно быть назначено как можно дальше от предыдущего назначенного дня.
Пример:
Учитывая команда: А, В, С, D, Е, F
график для выполнения этой задачи может быть:
Day 1 = A, D
Day 2 = B, E
Day 3 = C, F
Day 4 = A, E
Day 5 = B, F
Day 6 = C, D
Day 7 = A, F
Day 8 = B, D
Day 9 = C, E
Day 10 = E, D
Day 11 = B, E
Day 12 = C, A
...
Следует отметить, что та же буква назначается с определенным расстоянием от предыдущего времени. Например, A назначается на дни 1, 4, 7, 12, а D назначается на дни 1, 6, 8, 10. Обратите также внимание на то, что присутствуют все возможные комбинации.
В настоящее время я могу «вручную» комбинировать и сортировать пары для небольших групп (6 - 8 человек), но для больших команд мне не удалось найти алгоритм.
Есть ли алгоритм, который может мне помочь?
Bonus точка:
В любой момент человек может стать «неактивные», и поэтому он должен быть заменен кем-то другим, следуя правилам.
спасибо!
Похоже на [комбинации] (https://en.wikipedia.org/wiki/Combination) из 2 по набору «данная команда». – luk32
Да, но последовательность должна быть в порядке, так что каждый элемент tem используется «как можно реже»; это немного озадачивает. – Codor
Не совсем ИМО, любая спортивная лига делает это. – luk32