算法之集合覆盖问题

假设你办了个广播节目,要让全美50个州的听众都收听得到。为此,你需要决定在哪些广播台播出。在每个广播台播出都需要支付费用,因此你力图在尽可能少的广播台播出。

听起来很容易,但其实非常难。具体方法如下。
(1) 列出每个可能的广播台集合,这被称为幂集 (power set)。可能的子集有2 n 个。
(2) 在这些集合中,选出覆盖全美50个州的最小集合。

无法求出最优解

近似算法,贪婪算法可化解危机!使用下面的贪婪算法可得到非常接近的解。

NP完全问题

为解决集合覆盖问题,你必须计算每个可能的集合。
你需要计算所有的解,并从中选出最小/最短的那个

如何识别NP完全问题

元素较少时算法的运行速度非常快,但随着元素数量的增加,速度会变得非常慢。涉及“所有组合”的问题通常是NP完全问题。

不能将问题分成小问题,必须考虑各种可能的情况。这可能是NP完全问题。如果问题涉及序列(如旅行商问题中的城市序列)且难以解决,它可能就是NP完全问题。

如果问题涉及集合(如广播台集合)且难以解决,它可能就是NP完全问题。

如果问题可转换为集合覆盖问题或旅行商问题,那它肯定是NP完全问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第八章 贪婪算法 贪婪算法是指, 在对问题求解时, 总是做出在当前看来是最好的选择。 也就是说, 不从整体最优上加...
    EruDev阅读 2,707评论 0 0
  • 1、安装:下载安装,可以在任意地方创建数据存储位置,在工程目录下面创建data数据文件夹,进入到mongoose安...
    流动码文阅读 3,938评论 0 0
  • 初秋的早,凉爽催人惬意。 一盆小小的水景,便足以让你发上一晨的呆。 因了空间的狭窄,容不下太大的器皿,睡莲的栖身之...
    水静深流阅读 2,823评论 2 2