#algorithm #combinations #mathematical-optimization #combinatorics
Вопрос:
Мне нужна некоторая справка/помощь с алгоритмом для разработки всех возможных комбинаций в соответствии с дизайном сбалансированного неполного блока (BIBD).
Чтобы быть более конкретным, я хочу сгенерировать максимально возможные комбинации, в которых общее количество игроков(M) может быть сгруппировано в команды размера N таким образом, чтобы ни один из двух игроков не попадал в одну и ту же команду более двух раз. — например —
Input:[1, 2, 3, 4, 5, 6,] - Here each number denotes player and M=6
Output: {1.2.3, 1.4.5, 1.2.6, 6.3.5, 2.4.3, 5.6.2, 1.4.6, 5.2.4, 4.3.6, 1.3.5} - Here N=3
Вывод выше-это максимально возможные комбинации, которые мы можем сгруппировать по 6 игроков в команды (в данном случае каждая команда размером 3), а также выполнить условие, чтобы ни один из двух игроков не попадал в одну и ту же команду более двух раз.
Текущий Прогресс:
Я смог вычислить все возможные комбинации, а затем отфильтровать эти комбинации в соответствии с моими условиями(одни и те же игроки максимум 2 раза), используя подход грубой силы. Таким образом, я могу прийти к некоторым комбинациям, но результат не является оптимальным. Мне нужно максимизировать это. В приведенном выше примере мне удалось сгенерировать следующие пары —
{1.2.3, 1.2.4, 1.3.4, 2.3.4, 1.5.6, 2.5.6}
Хотя все эти комбинации допустимы, но они не являются максимально возможными комбинациями.
Если вам нужен мой текущий код, с помощью которого я генерирую вышеуказанные пары, буду рад поделиться.
Спасибо за вашу помощь!
Комментарии:
1. К сожалению, конструкция BIBD сильно зависит от параметров.
2. Вы читали эту статью? link.springer.com/content/pdf/10.3758/s13428-019-01326-x.pdf