首页 > 编程知识 正文

np问题包含p问题,npc问题属于np

时间:2023-05-03 19:51:18 阅读:276106 作者:2554

P问题

       理解P问题需要了解的知识:多项式、时间复杂度。

       多项式:ax^n-bx^n-1+c,就是在数学上经常见到的式子。

       时间复杂度:指执行算法所需要的计算工作量,它定性描述该算法的运行时间。时间复杂度常用大O表述,例如O(n^2),代表其时间复杂度为n^2。

       P问题:存在多项式时间算法的问题。(P:polynominal,多项式)。通俗来讲,如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。例如,给定一个数组需要排序,可以使用排序算法,常用的排序算法有快速排序,冒泡排序。其中快排的时间复杂度为O(log(n),冒泡排序的时间复杂度为O(n^2)。

NP问题

NP问题:能在多项式时间内验证得出一个正确解的问题。(NP:Nondeterministic polynominal,非确定性多项式)。

比如Hamilton回路和TSP问题,对于这种问题,你要算出所有可能的话,只能使用穷举法。但是这种O(a^n)和O(n!)型复杂度,它是非多项式级的,其复杂度计算机往往不能承受。

NP问题是包含P问题的。也就是说,能多项式地解决一个问题,必然能多项式地验证一个问题的解。很显然,所有的P类问题都是NP问题。但是不能说NP=P,目前还没有人证明出这个结论。

在P和NP问题中,P的难度最低,NP由于只对验证答案的时间作了限定,从而有可能包含某些无法在多项式时间内找到答案的问题,即NP是比P更困难的问题。

NPC问题

NPC:NP中的某些问题的复杂性与整个类的复杂性相关联。这些问题中任何一个如果存在多项式时间的算法,那么所有NP问题都是多项式时间可解的。这些问题被称为NP-完全问题(NPC问题)。(NPC:Nondeterminism Polynomial complete,多项式复杂程度的非确定性问题)。

通俗来讲NPC问题就是用来解决NP是否等于P,要证明NPC问题的思路:先证明它至少是一个NP问题,再证明其中一个已知的NPC问题能约化到它。

NPH问题

NPH:所有NP问题都能在多项式时间复杂度内归约到的问题。即所有的NP问题都能约化到它,但是他不一定是一个NP问题。(NPH:Nondeterminism Polynomial Hard,难的非确定性多项式问题)。

它和NPC问题的区别在于,这个问题可以不是NP问题。

以上四个问题他们之间的关系可以用下图来表示:

 

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。