作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们有一个集合 A = {a1,a2,...,an}
给定名为 B1,B2, ..., Bm 的子集。如果一个名为 H 的子集与所有给定的 B 有交集,我们称 H 为“覆盖子集”。对于给定的 A 和 B,是否存在任何大小为 K(H 的基数为 K)的“覆盖子集”?证明这个问题是NP完全的。
我们应该将一些已知问题简化为“覆盖子集”问题。
最佳答案
更新 这叫做hitting set .您可以在维基百科文章中阅读相同的答案。
这个问题在某种程度上是set cover problem 的双重问题。 .
我们将更改一些术语。设 {B1, B2, ...}
为元素,{a1, a2, ...}
为集合。如果集合 Bj
包含原始问题中的 ai
,则“集合”ai
包含新问题中的“元素”Bj
。
现在,您只需要选择覆盖所有“元素”Bj
的最小数量的“集合”ai
。该问题是 NP 完全问题,如上面的链接所示。
为了阐明转换,只需替换集合/元素和包含/包含,就可以从另一个问题定义生成一个问题定义。比较以下
每个集合 Bj
都包含一些选定的元素 ai
每个“元素”Bj
都包含在某些选定的“集合”ai
关于algorithm - 证明问题的NP完全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4841136/
给定图的任意两个顶点之间的 m 条最短路径。确定我们是否可以选择 k 条最短路径,使其并集覆盖所有边。 我确信减少必须来自固定封面,但我不知道如何将它减少到这个问题。请帮我解决一下 最佳答案 提示:请
我是一名优秀的程序员,十分优秀!