Свобода выбора цели необычна.Если цель указана, то это, по сути, проблема set cover .Вот два соответствующих экземпляра бок о бок.
A={1,2,3} B={2,4} C={3,4} D={4,5}
0: {a=0, b=0, c=0, d=0} # separate 0 from the others
1: {a=1, b=0, c=0, d=0}
2: {a=1, b=1, c=0, d=0}
3: {a=1, b=0, c=1, d=0}
4: {a=0, b=1, c=1, d=1}
5: {a=0, b=0, c=0, d=1}
Хотя заданная обложка сложна с точки зрения NP, ваша проблема имеет O (m log n + O (1) poly (n))) алгоритм, где m - это количество атрибутов, а n - это количество элементов (оптимальный набор критериев имеет размер не более log n), что делает весьма маловероятным, что ожидается подтверждение NP-твердости.Мне вспоминается ситуация с проблемой Хунта (в основном теоретическая формулировка выбора признаков).