下面给出的定义可能是有错误的!仅供参考,恭候指正
P:
存在多项式时间复杂度的算法,用于解决P问题
NP:
1.存在多项式时间复杂度的算法,用于验证一个答案是否为NP问题的解
NP-HARD:
1.可以将所有NP问题【规约】为NP-HARD问题
2.不能确定是否存在或不存在多项式时间复杂度的算法,用于解决P问题
NPC(NP完全问题):
1.存在多项式时间复杂度的算法,用于验证一个答案是否为NPC问题的解
2.可以将所有NP问题【规约】为NPC问题
3.不存在或不能确定是否存在多项式时间复杂度的算法,用于解决NPC问题
4.NPC问题之间可以通过多项式时间复杂度的算法相互转化
备注:
规约:
1.P问题【特殊转化】为Q问题,要求P问题的时间复杂度大于或等于Q问题的时间复杂度
2.【特殊约化】过程为多项式时间复杂度
特殊转化:
1.把P的输入转化到Q的输入;
2.把Q的输出转化到P的输出。
P问题为什么是NP问题(的子集):
可以先得出答案(这个过程是多项式时间的)再遍历查找答案(遍历查找时间最坏情况复杂度为W(答案个数),而P问题的答案个数肯定也是多项式时间的,不然怎么能多项式时间内得出答案呢),这样验证过程就是多项式时间复杂度了
NPC问题之间为什么可以通过多项式时间复杂度的算法相互转化:
挖个坑
0-1背包为什么属于NPC:
继续挖坑
mark下面的回答
/question/20686504/answer/17232872
部分概念reference:
/golden1314521/article/details/51470999
/topics/310007059