P, NP, NPC
concepts
- P
- NP
- NPC
- NP-hardness
P
P: can be solved in polynomial time
NP
NP问题是指可以在多项式的时间里验证一个解的问题。NP问题的另一个定义是,可以在多项 式的时间里猜出一个解的问题。
在这个题中,找一个解很困难,但验证一个解很容易。
验证一个解只需要O(n)
的时间复杂度,也就是说我可以花O(n)的时间把我猜的路径的长度加出来。
之所以要定义NP问题,是因为通常只有NP问题才可能找到多项式的算法。
P 属于 NP, 人民相信P不等于NP
NPC
NP complete
- Hamilton path problem
- Travelling salesman problem
约化 Reducibility
一个问题A可以约化为问题B的含义即是,可以用问题B的解法解决问题A,或者说,问题A可 以“变成”问题B。
一元一次方程可以约化为一元二次方程。
同样地,我们可以说,Hamilton回路可以约化为TSP问题(Travelling Salesman Problem, 旅行商问题):在Hamilton回路问题中,两点相连即这两点距离为0,两点不直接相连则令 其距离为1,于是问题转化为在TSP问题中,是否存在一条长为0的路径。
约化有传递性
what's NPC
NPC问题的定义非常简单。同时满足下面两个条件的问题就是NPC问题。
- 首先,它得是一个NP问题;
- 然后,所有的NP问题都可以约化到它。
既然所有的NP问题都能约化成NPC问题,那么只要任意一个NPC问题找到了一个多项式的算法,那么所有的NP问题都能用这个算法解决了,NP也就等于P 了。因此,给NPC找一个多项式算法太不可思议了。因此,前文才说,“正是NPC问题的存在,使人们相信P≠NP”。我们可以就此直观地理解,NPC问题目前没有多项式的有效算法,只能用指数级甚至阶乘级复杂度的搜索。