P/NP/NP-Complete/NP-Hard 问题的理解

几种问题的定义如下:

问题类型 多项式时间可解 多项式时间可验证解的正确性
P YES YES
NP uncertain YES
NP-Complete uncertain YES
NP-Hard uncertain or NO YES or NO

咋一看觉得 NP 问题和 NP-Complete 问题是一样的,两者的共同点都是:

  • 依据目前的研究进展,还无法断定这两类问题能否在多项式时间内可解;
  • 都可以在多项式时间内验证一个解是否正确。

其实,从集合的角度看,NP-Complete 类问题是 NP 类问题的一个子集,即:所有 NP-Complete 的问题都是 NP 问题,但不是所有的 NP 问题都是 NP-Complete 的。

NP-Complete 问题的完整定义是:所有的 NP 类问题都可以在 多项式时间归约 到这个问题,那么这个问题就是 NP-Complete 的。

======待续======

下面一张 韦恩图 表示了上面几种问题之间的关系:

注意 YouTube 视频下面一个搞笑的段子

一定需要说明清楚:NP 问题面对的都是 decision problems,但是 NP-Hard 问题面对的可能不是简单的 decision problems,所以说 NP-hard 问题一般会更难。

只要 NPC 中的任何一个问题被解决了,那么所有的 NP 问题都将在多项式时间内解决掉。

NP 问题是包含 P 类问题的。

NP 问题中还要一些问题,不知道它们能不能在多项式时间内得到 solution,但是 NP 问题一定能在多项式时间内去 verify 这个 solution 是不是正确的。

Donate comment here