一、
P类问题:能够在多项式时间内解决的
NP类问题:能够在多项式时间内容验证的(只要在多项式时间内容猜出一个解)
P类问题是NP问题的子集,因为存在多项式时间解法的问题,就一定能在多项式时间内验证它
约化(规约):一个问题A可以约化为问题B即可以用问题B的解法解决问题A
e.g:知道解一元二次方程一定可以解一元一次方程
一个问题约化为另一个问题,时间复杂度增加了,问题的应用范围也增大了。
二、
NPC类问题:
1)一定是NP问题
2)所有的NP问题一定可以在多项式时间内约化为到它
NPC类问题是NP类问题中最难的一类子问题
只要解决了NPC类问题,所有的NP问题的可以解决了(约化的传递性)
证明一个问题是NPC类问题:
1)证明它是NP问题
2)找一个NPC类问题B
3)验证B能够规约到它(能在多项式时间内解决B(NPC类问题),约化的传递性)
三、
NP-Hard问题:
问题A不一定是NP问题(可能不是NP和P类的问题),但所有的NPC问题都可以在多项式时间内约化为A,则称A是NP-Hard问题
NP-Hard问题是那些满足NPC定义的第二条,但不满足第一条的,NP-Hard问题要比 NPC问题的范围广
参考:http://www.matrix67.com/blog/archives/105