一些NP-Complete问题怎么也是NP-Hard?

时间:2014-01-08 20:18:40

标签: complexity-theory computer-science np-complete np-hard

我试图以直观的方式将我的声音包裹在P,NP,NP-Complete和NP-Hard周围,以便我不必记住他们的定义。

在下图(左手情景,P!= NP)中,NP-Complete和NP-Hard之间存在重叠区域。这是否意味着一些问题既是NP-Complete又是NP-Hard?根据这个特殊答案,我发现这是矛盾的:What are the differences between NP, NP-Complete and NP-Hard?

上述链接中的表表示NP-Complete问题在多项式时间内是可验证的,而NP-Hard问题则不然。那么怎么会有重叠呢?

enter image description here

2 个答案:

答案 0 :(得分:7)

NP完全性的部分定义是NP难。因此,每个NP完全问题都是NP难的。这两个图表也反映了这一点。

答案 1 :(得分:1)

你链接到的表是错误的,直到我几个小时前修复它。 NP完全问题是NP问题的子集,并且根据定义,所有NP问题在多项式时间内都是可验证的。 NP难问题是那些至少和其他NP问题一样难的问题(这种问题有点不直观,因为NP中没有的问题可能是NP难的)。

要成为NP-Complete,问题必须是

  1. in NP
  2. NP-硬
  3. 要在特定复杂性类中完成,问题必须是

    1. 在那个复杂性课程中
    2. 至少与复杂性类别中的任何其他问题一样难。
    3. 我们必须定义"至少同样坚硬"。假设我们在NP中遇到问题A.为了证明它是NP难的(因此NP-Complete),我们证明NP中的所有问题都可以在多项式时间内转换为A.因为A至少需要多项式时间来求解,并且多项式在加法时是闭合的,所以转换现在可以忽略不计,并且运行时与A的运行时相同(就多项式而言是非多项式)。

      一旦你有一个NP完全问题,你可以通过采用另一个NP完全问题B并在多项式时间内将其转换为A来证明NP中的问题A是NP难的(因而是NP完全的)。

      我希望这清楚表明NP-Complete是NP-hard的一个子集(并且你链接的表是错误的)。