复杂性类的类型 | P, NP, CoNP, NP hard 和 NP complete
在计算机科学中,存在一些尚未找到解决方案的问题,这些问题被分为称为复杂性类的类。在复杂性理论中,复杂性类是一组具有相关复杂性的问题。这些课程帮助科学家根据解决问题和验证解决方案所需的时间和空间对问题进行分组。它是计算理论的一个分支,它处理解决问题所需的资源。
公共资源是时间和空间,即算法解决问题所需的时间和相应的内存使用量。
算法的时间复杂度用于描述解决问题所需的步骤数,但也可以用于描述验证答案所需的时间。
算法的空间复杂度描述了算法运行需要多少内存。
复杂性类在组织类似类型的问题时很有用。
复杂性类的类型
本文讨论了以下复杂性类:
- P级
- NP类
- CoNP类
- NP难
- NP完成
P级
P 类中的 P 代表多项式时间。它是可以由确定性机器在多项式时间内解决的决策问题(回答“是”或“否”的问题)的集合。
特征:
- P问题的解很容易找到。
- P 通常是一类可解决且易于处理的计算问题。易处理意味着问题在理论上可以解决,也可以在实践中解决。但是,理论上可以解决但实践中不能解决的问题被称为棘手问题。
此类包含许多自然问题,例如:
- 计算最大公约数。
- 寻找最大匹配。
- 线性规划的决策版本。
NP类
NP 类中的 NP 代表Non-deterministic Polynomial Time 。它是可以由非确定性机器在多项式时间内解决的决策问题的集合。
特征:
- NP 类的解决方案很难找到,因为它们是由非确定性机器解决的,但解决方案很容易验证。
- NP问题可以通过图灵机在多项式时间内进行验证。
例子:
让我们考虑一个例子来更好地理解 NP 类。假设有一家公司共有 1000 名员工,他们拥有唯一的员工 ID。假设有 200 个房间可供他们使用。选出来的200名员工必须配对在一起,但是公司的CEO有一些员工因为个人原因不能在同一个房间工作的数据。
这是一个NP问题的例子。因为很容易检查由同事提议的 200 名员工的给定选择是否令人满意,即从同事列表中选出的任何一对都不会出现在 CEO 给出的列表中。但是从头开始生成这样一个列表似乎非常困难,以至于完全不切实际。
它表明如果有人可以为我们提供问题的解决方案,我们可以在多项式时间内找到正确和错误的配对。因此对于 NP 类问题,答案是可能的,可以在多项式时间内计算。
此类包含许多希望能够有效解决的问题:
- 布尔可满足性问题 (SAT)。
- 哈密顿路径问题。
- 图形着色。
Co-NP类
Co-NP 代表 NP 类的补集。这意味着如果 Co-NP 中问题的答案是否定的,那么就有可以在多项式时间内检查的证据。
特征:
- 如果问题 X 在 NP 中,那么它的补码 X' 也在 CoNP 中。
- 对于 NP 和 CoNP 问题,不需要在多项式时间内一次验证所有答案,只需要在多项式时间内验证一个特定答案“是”或“否”,问题就属于 NP 或康普。
C0-NP 的一些示例问题是:
- 检查素数。
- 整数分解。
NP-hard类
NP-hard 问题至少与 NP 中最难的问题一样难,并且它是问题的类别,使得 NP 中的每个问题都归结为 NP-hard。
特征:
- 所有 NP-hard 问题都不属于 NP。
- 检查它们需要很长时间。这意味着如果给出了 NP-hard 问题的解决方案,则需要很长时间来检查它是否正确。
- 如果对于 NP 中的每个问题 L,都存在从 L 到 A 的多项式时间缩减,则问题 A 是 NP 难的。
Np-hard 中的一些问题示例如下:
- 停机问题。
- 合格的布尔公式。
- 没有哈密顿循环。
NP完全类
如果一个问题既是 NP 又是 NP 难的,则该问题是 NP 完全的。 NP完全问题是NP中最难的问题。
特征:
- NP 完全问题是特殊的,因为 NP 类中的任何问题都可以在多项式时间内转换或简化为 NP 完全问题。
- 如果可以在多项式时间内解决一个 NP 完全问题,那么也可以在多项式时间内解决任何 NP 问题。
一些示例问题包括:
- 0/1 背包。
- 哈密顿循环。
- 可满足性。
- 顶点覆盖。
Complexity Class | Characteristic feature |
P | Easily solvable in polynomial time. |
NP | Yes, answers can be checked in polynomial time. |
Co-NP | No, answers can be checked in polynomial time. |
NP-hard | All NP-hard problems are not in NP and it takes a long time to check them. |
NP-complete | A problem that is NP and NP-hard is NP-complete. |