Алгоритм составления комплекта товаров из комплектов меньшего размера
- Есть некоторое количество комплектов товаров вида {код товара 1, код товара 2, ..., код товара n1}, {код товара 1, код товара 2, ..., код товара n2}, ..., {код товара 1, код товара 2, ..., код товара nk} При этом отдельные комплекты могут иметь как совпадающие между собой товары (полностью или частично), так и совершенно различные.
- Есть заявка на комплект товаров вида {код товара 1, код товара 2, ..., код товара m}
- Известно, что 0 < n1, n2, …, nk <= m
- Известно, что все коды товаров из имеющихся комплектов входят в состав заявки, иначе говоря отсутствуют комплекты, содержащие товары, не включенные в заявку.
- Известно, что коды товаров в комплектах и в зяавке отсортированы по возрастанию.
Необходим алгоритм составления большего комплекта товаров по заявке из имеющихся меньших комплектов товаров, если возможно с минимизацией количества используемых комплектов. При этом необходимо учитывать, что в итоговом решении каждый товар должен присутствовать только один раз. Сортировка комплектов в решении не важна.
Пример: Имеются комплекты товаров: {1, 2, 3}, {1, 4, 5}, {1}, {2, 3}, {2, 5}, {4, 5}, {3} Есть заявка на комплект товаров: {1, 2, 3, 4, 5} В качестве решения принимаются:
- {1, 2, 3}, {4, 5}
- {1, 4, 5}, {2, 3}
- {1}, {2, 3}, {4, 5}
Решение {1, 2, 3}, {1, 4, 5} не принимается, так как товар 1 присутствует 2 раза.
Пока мне на ум приходит только полный перебор вариантов с выбором минимального по количеству комплектов, но может быть есть менее затратный алгоритм?