Алгоритм составления комплекта товаров из комплектов меньшего размера

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

Необходим алгоритм составления большего комплекта товаров по заявке из имеющихся меньших комплектов товаров, если возможно с минимизацией количества используемых комплектов. При этом необходимо учитывать, что в итоговом решении каждый товар должен присутствовать только один раз. Сортировка комплектов в решении не важна.

Пример: Имеются комплекты товаров: {1, 2, 3}, {1, 4, 5}, {1}, {2, 3}, {2, 5}, {4, 5}, {3} Есть заявка на комплект товаров: {1, 2, 3, 4, 5} В качестве решения принимаются:

  1. {1, 2, 3}, {4, 5}
  2. {1, 4, 5}, {2, 3}
  3. {1}, {2, 3}, {4, 5}

Решение {1, 2, 3}, {1, 4, 5} не принимается, так как товар 1 присутствует 2 раза.

Пока мне на ум приходит только полный перебор вариантов с выбором минимального по количеству комплектов, но может быть есть менее затратный алгоритм?


Ответы (0 шт):