Я работаю над проектом генерации расписания, и мне нужно предварительно обработать данные, прежде чем поместить их в модель LP.
Мне нужно создать комбинаторные объекты для использования в оптимизации. Эта проблема очень похожа на проблему резки древесины.
Скажите, что у меня есть 3 класса {A, B, C} и 2 классных комнаты, у меня были бы следующие образцы:
A
AA
B
BB
C
CC
AB
AC
BC
Если бы у меня было 2 класса {A, B} и 3 классных комнаты, у меня были бы следующие образцы:
A
AA
AAA
B
BB
BBB
AB
ABB
AAB
3 занятия в 3 комнатах дадут:
A, B, C,
AA, AB, AC, BB, BC, CC,
AAA, AAB, AAC, ABB, ABC,
ACC, BBB, BBC, BCC, CCC
Мне нужен эффективный алгоритм, который генерирует эти шаблоны. Мои действительные числа больше похожи на 5+ классных комнат и 30+ классов, но алгоритм должен уметь обрабатывать и гораздо большие числа.