最小基数版本是 NP 完全的。设置封面 http://en.wikipedia.org/wiki/Set_cover_problem可以简化为这样。要求其中的最大值只会使问题变得更加困难。
顺便说一句,谈论布尔可满足性的另一个答案是wrong!您需要减少此问题的布尔可满足性以显示 NP 完备性,而不是相反。
设置封面基本上是:
给出集合 S1, S2, ... Sn 的集合 X 的子集,找到其并集涵盖 S1 U S2 U ... U Sn 中的所有元素的最小子集合(就集合数量而言) 。
为了减少我们的问题,
设 S = S1 U S2 ... U Sn。 = {x1, x2, ..., xm}
令 C_i = { j 使得 xi 在 Sj 中 }
将 C_i 提供给我们的问题。
现在,如果我们的问题可以在多项式时间内解决,并且我们可以找到 C_i 元素的最小基数集,那么我们可以找到 Si 的集合覆盖,反之亦然。
这通常可以作为整数规划问题来解决(这也是 NP-Hard)。
对于近似解,这可以被视为线性规划问题(具有多项式时间算法),并且可以进行随机舍入以将小数值(LP 的解)转换为整数。
另外,不幸的是,事实证明,即使是接近一个常数因子,这也是 NP 困难的(事实上我相信它是 O(logn))。