Работая над проектом, я столкнулся с этой проблемой, которую я переформулирую здесь в терминах, выходящих за пределы реальной области проблемы (полагаю, я мог бы говорить о калибрах фейерверков и формах, но это еще больше усложнило бы понимание). Я ищу (возможно, приблизительный) алгоритм для его решения.
У меня есть n контейнеров разного размера и m объектов разного размера, занятий и разных цветов (объекты могут быть разноцветными, поэтому цвет объект действительно является набором).
Моя цель — поместить все объекты в контейнеры (я уже знаю, что это возможно) так, чтобы разнообразие цветов было минимальным для каждого контейнера. Под «разнообразием цветов сведено к минимуму» я имею в виду, что сумма количества различных цветов в контейнере минимальна.
Пример. У меня есть два контейнера размера 2 и четыре объекта, цвета которых {красный}, {красный, зеленый}, {синий}, {синий, зеленый}, каждый из которых имеет размер 1. Оптимальным решением будет [{красный} , {красный, зеленый}], [{синий}, {синий, зеленый}], где общее разнообразие 2+2=4. Худшим решением будет [{красный}, {синий}], [{красный, зеленый}, {синий, зеленый}], где общее разнообразие равно 2+3=5.
Я предполагаю, что задача NP-сложная, поскольку она звучит сложнее, чем задача о рюкзаке: значение объектов преобразуется в отрицательное значение, которое, кроме того, зависит от других объектов внутри того же контейнера. Но у меня нет хорошей идеи, как решить проблему для приближенного решения, которое в любом случае было бы более чем желательным.