转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn]
如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~
目录
NP问题
1. P 类问题
2. NP 类问题
3. NP-Complete 问题
4. NP-Hard 问题
5. NP-Hardness
例子 🌟
其他问题
1. co-NP
2. PSPACE
3. EXPTIME
4. BPP (Bounded-error Probabilistic Polynomial time)
5. Σk和Πk类 (Polynomial Hierarchy)
6. L 和 NL (Logarithmic Space)
7. APX
8. FPT (Fixed-Parameter Tractable)
9. #P (Sharp-P)
10. W类 (Parameterized Complexity)
例子
NP问题
1. P 类问题
P (Polynomial time):指的是能够在多项式时间内被确定性图灵机解决的问题。这类问题通常被认为是“容易”或“可解”的,因为存在有效的算法。例如,排序算法(如快速排序)和图的最短路径问题都属于P类问题。
2. NP 类问题
NP (Nondeterministic Polynomial time):指的是能够在多项式时间内被非确定性图灵机验证的问题。这类问题的解决方案可以在多项式时间内被验证,但找到解决方案可能需要很长时间。例如,旅行商问题(TSP)和3-SAT问题都是NP问题。
3. NP-Complete 问题
NP-Complete:这是NP类中最难的问题。如果一个NP-Complete问题能够在多项式时间内被解决,那么所有NP问题都能够在多项式时间内被解决。要证明一个问题是NP-Complete,通常需要两个步骤:
- 证明该问题属于NP类。
- 证明所有其他NP问题都可以在多项式时间内归约到该问题。
例如,3-SAT问题和哈密顿路径问题都是NP-Complete问题。
4. NP-Hard 问题
NP-Hard:这些问题至少和NP类问题一样难,但不一定属于NP类。这意味着NP-Hard问题不一定是决策问题,它们可以是优化问题。即使能够验证一个NP-Hard问题的解,其验证过程也不一定在多项式时间内完成。例如,旅行商问题的优化版本是NP-Hard的。
5. NP-Hardness
NP-Hardness:这是对问题难度的一种描述,表示问题的计算复杂性至少和NP问题一样高。换句话说,如果一个问题是NP-Hard的,那么它至少和最难的NP问题一样难。
例子 🌟
- P问题:快速排序,Dijkstra算法(最短路径)。
- NP问题:子集和问题(SUBSET-SUM),图的着色问题。
- NP-Complete问题:3-SAT问题,哈密顿路径问题。
- NP-Hard问题:旅行商问题(优化版本),计算Wasserstein重心的问题。
其他问题
1. co-NP
co-NP 类问题是与 NP 类问题互补的一类问题。一个问题属于 co-NP 类,如果它的否定问题属于 NP 类。换句话说,如果一个问题的解可以在多项式时间内验证,那么 co-NP 类问题的反例(解不存在的证明)也可以在多项式时间内验证。例如,3-SAT 的否定问题是“判断一个布尔公式是否对所有赋值都不为真”,属于 co-NP 类。
2. PSPACE
PSPACE 类问题是指那些可以在多项式空间内解决的问题。换句话说,这类问题的算法在解决过程中所需的内存空间是输入大小的多项式函数。例如,很多博弈问题(如国际象棋的决策问题)属于 PSPACE 类。
3. EXPTIME
EXPTIME 类问题是指那些需要指数时间解决的问题。也就是说,解决这类问题的算法在最坏情况下的运行时间是输入大小的指数函数。例如,很多解码和加密问题(如 RSA 解密)属于 EXPTIME 类。
4. BPP (Bounded-error Probabilistic Polynomial time)
BPP 类问题是指那些可以在多项式时间内由概率算法解决的问题,并且算法的错误概率在一定范围内。例如,许多随机化算法(如蒙特卡罗算法)属于 BPP 类。
5. Σk和Πk类 (Polynomial Hierarchy)
Σk和Πk类是多项式层级中的问题类,表示不同层次的复杂性:
- Σk: 第 k 层存在量化类,表示为存在 k 个量化变量的布尔公式的可满足性问题。
- Πk: 第 k 层全称量化类,表示为存在 k 个量化变量的布尔公式的不可满足性问题。
6. L 和 NL (Logarithmic Space)
L 和 NL 类问题分别是那些可以在对数空间内由确定性和非确定性图灵机解决的问题。L(Logarithmic Space)表示确定性对数空间,NL(Nondeterministic Logarithmic Space)表示非确定性对数空间。例如,连通性问题可以在 NL 类中解决。
7. APX
APX 类问题是指那些存在近似算法的问题,这些算法可以在多项式时间内找到近似解,并且该解的性能保证在一个常数因子范围内。例如,旅行商问题的近似解属于 APX 类。
8. FPT (Fixed-Parameter Tractable)
FPT 类问题是指那些可以通过某个参数在多项式时间内解决的问题,即使问题本身是 NP-Hard。例如,许多图论问题在图的某些参数(如树宽、路径宽度)固定时可以在 FPT 类中解决。
9. #P (Sharp-P)
#P 类问题是指那些计算计数问题,即给定一个 NP 问题,计算有多少个解。例如,计算满足一个布尔公式的赋值数目属于 #P 类。
10. W类 (Parameterized Complexity)
W类表示参数化复杂度中的一类问题,类似于固定参数可处理性问题。W[1] 和 W[2] 是其中的典型类,表示在特定参数下的复杂性分类。
例子
- co-NP: 有效性问题(证明一个公式在所有赋值下为真)
- PSPACE: 国际象棋决策问题、量子计算问题
- EXPTIME: 很多解码和加密问题
- BPP: 随机化素性测试
- Σk和Πk: 不同层次的量化布尔公式问题
- L 和 NL: 图的连通性问题
- APX: 旅行商问题的近似解
- FPT: 基于图参数的特定图问题
- #P: 计算布尔公式的满足赋值数