证明问题的 NP 完备性
我们给定一个集合 A = {a1,a2,...,an}
给定 A 的子集 B1,B2,...,Bm。如果名为 H 的 A 子集与所有给定的 B 都有交集,我们将 H 称为“覆盖子集”。对于给定的 A 和 B,是否存在大小为 K(H 的基数为 K)的“覆盖子集”?证明这个问题是NP完全问题。
我们应该将一些已知问题简化为“覆盖子集”问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
更新 这称为击球集。您可以在维基百科文章中阅读相同的答案。
在某种程度上,这个问题与设置覆盖问题是双重的。
我们将更改一些术语。令
{B1, B2, ...}
为元素,{a1, a2, ...}
为集合。如果原问题中的 setBj
包含ai
,则“Set”ai
在新问题中包含“元素”Bj
。现在,您只需选择覆盖所有“元素”
Bj
的最小数量“集合”ai
。这个问题是 NP 完全问题,如上面的链接所示。为了阐明转换,只需替换 set/element 和 contains/contained,就可以从另一个问题定义生成一个问题定义。比较以下
每个集合
Bj
都包含一些选定的元素ai
每个“元素”
Bj
都包含在某些选定的“集合”ai
中update This is called a hitting set. You can read the same answer in wikipedia article.
This problem is, in a way, dual to set cover problem.
We'll change some terminology. Let
{B1, B2, ...}
be elements and{a1, a2, ...}
be sets. 'Set'ai
contains 'element'Bj
in a new problem if setBj
containsai
in original problem.Now, you just need to select minimum number of 'sets'
ai
covering all 'elements'Bj
. And that problem is NP-complete, as shown in the link above.To clarify the transformation, one problem definition can be produced from another just by replacing set/element and contains/contained. Compare following
Every set
Bj
contains some selected elementai
Every 'element'
Bj
is contained by some selected 'set'ai