Выбор максимального количества уникальных и допустимых комбинацийJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Выбор максимального количества уникальных и допустимых комбинаций

Сообщение Anonymous »

Последние несколько дней я пытался найти алгоритм, который поможет мне найти максимальное количество уникальных комбинаций на основе списка одобренных комбинаций.
Каждая комбинация представляет собой набор из 1..n элементов. (элементы не должны повторяться), определенные заранее.
Например,
Список элементов (содержит количество доступных частей):



Элемент
Количество




A
2


B
3


C
2

< tr>
D
4


E< /td>
2


F
3



Список разрешенных комбинаций (одно появление элемента означает требуется 1 часть этого элемента):



Комбинация
Элементы




C1
A, C, D


C2
C, D, F


C3
E, A


C4
A, F, C



Из выше, я могу выбрать {C1, C4} или {C1, C2, C3}.
И теперь, имея список комбинаций, я хотел бы оптимизировать, какие комбинации выбрать, чтобы используйте их как можно больше (уникальных!), имеющих только элементы из списка и только в таком количестве, т.е. выбирайте {C1, C4} вместо {C1, C2, C3}.
Я попробовал «жадный» алгоритм, т. е. проверку комбинаций одну за другой, пока не было достаточного количества элементов, но результаты оказались далеки от идеальных. ChatGPT тоже не помог.
Поможет ли кто-нибудь куском кода (Java или любого другого языка) или хотя бы названием алгоритма, чтобы я мог смотреть дальше (полагаю что такая проблема уже названа ;) )?

Подробнее здесь: https://stackoverflow.com/questions/783 ... mbinations
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»