Computational Complexity Introduction
定义
计算复杂性(Computational Complexity),即使用数学方法对计算中所需的各种资源的耗费(主要是时间和空间)作定量的分析,并研究各类问题之间在计算复杂程度上的相互关系和基本性质。课程中涉及到的数学方法主要有:
- Algebraic Method,代数方法;
- Probalilistic Method,概率统计方法;
- Combinatorial Method,组合方法;
- ...
四类问题
计算复杂性中的四类问题,即求解的时间复杂度逐级递增的四类问题:
- P(Polynomial)问题:有多项式时间的算法,时间复杂度O(P(n));
- NP(Nondeterminism Polynomial)问题:能在多项式的时间内得到个别特殊的正确解,但是不知道是否也能在多项式时间内得到所有解;
- NPC(Nondeterminism Polynomial Complete)问题:一类特殊的NP问题,所有的NP问题都能约化(复杂化,如用二元一次方程的方法来解一元一次方程问题)成它。那么,只要解决了这个问题,所有能约化成它的NP问题也就解决了;
- NP-Hard问题:所有的NP问题都能约化为NP-Hard问题,但是NP-Hard问题本身不一定是一个NP问题。换句话说,NPC问题是NP-Hard问题的子集。