обновление Это называется ударным набором . Вы можете прочитать тот же ответ в статье Википедии.
Эта проблема, в некотором роде, двойна по отношению к заданной проблеме покрытия .
Мы изменим некоторую терминологию. Пусть {B1, B2, ...}
будет элементами, а {a1, a2, ...}
будет множествами. 'Set' ai
содержит 'element' Bj
в новой задаче, если set Bj
содержит ai
в исходной задаче.
Теперь вам просто нужно выбрать минимальное количество «наборов» ai
, охватывающих все «элементы» Bj
. И эта проблема является NP-полной, как показано в ссылке выше.
Чтобы прояснить преобразование, одно определение проблемы можно получить из другого, просто заменив набор / элемент и содержащий / содержащийся. Сравнить следующие
Каждый набор Bj
содержит некоторый выбранный элемент ai
Каждый «элемент» Bj
содержится в некотором выбранном «наборе» ai