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