首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么一些NP-完全问题也是NP-难的?

为什么一些NP-完全问题也是NP-难的?
EN

Stack Overflow用户
提问于 2014-01-09 04:18:40
回答 2查看 1.8K关注 0票数 1

我试着用一种直观的方式把我听到的P,NP,NP-Complete和NP-Hard包装在一起,这样我就不必记住它们的定义了。

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

上面链接中的表格说,NP-完全问题在多项式时间内是可验证的,而NP-Hard问题是不可验证的。那么怎么会有重叠呢?

EN

回答 2

Stack Overflow用户

发布于 2014-01-09 04:53:19

NP -完备性的部分定义是NP难的。因此,每个NP-完全问题都是NP-难的。这也反映在您的两个图表中。

票数 6
EN

Stack Overflow用户

发布于 2014-11-06 16:07:27

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

要成为NP-完全问题,必须是

NP

  • NP-hard

中的

要在特定的复杂性类中完成,问题必须是

复杂性类中的

  1. 至少和复杂性类

中的任何其他问题一样难

我们必须定义“至少一样难”。假设我们在NP中有一个问题A。为了证明它是NP -困难的(因此是NP-完全的),我们证明了NP中的所有问题都可以在多项式时间内转化为A。因为A至少需要多项式时间来求解,并且多项式在加法下是封闭的,所以转换现在可以忽略不计,并且运行时与A的运行时相同(就其是否为多项式而言)。

一旦你有了一个NP -完全问题,你就可以通过在多项式时间内将另一个NP-完全问题B转化为A来证明在NP中的问题A是NP-困难的(因此是NP-完全的)。

我希望这能说明NP-Complete是NP-hard的一个子集(而且您所链接的表是错误的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21005651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档