Грубая сила может не сработать так, как вы думаете ...
Предположим, у вас есть 100
переменных и 20
групп:
- Вы можете поместить
1
переменную в 20
различных группах, что составляет 20
комбинаций.
- Вы можете поместить
2
переменных в 20
различных групп в каждой, что составляет 20 * 20 = 20^2 = 400
комбинаций.
- Вы можете поместить
3
переменных в 20
различных групп в каждой, что составляет 20 * 20 * 20 = 20^3 = 8000
комбинаций.
- ...
- Вы можете поместить
100
переменных в 20
различных групп в каждой, что составляет 20^100
комбинаций, что превышает минимальное количество атомов в известной вселенной (10^80
).
Хорошо, вы можете сделать это немного умнее (не важно, куда вы положили первую переменную, ...), чтобы получить что-то вроде Branch and Bound , но , который будет по-прежнему масштаб ужасно .
Так что либо используйте быстрый детерминистический алгоритм, как предлагает larsman
.
Или, если вам нужно более оптимальное решение и у вас есть время для его реализации, взгляните на метаэвристические алгоритмы и программное обеспечение, которое их реализует (например, Drools Planner ).