P、NP、NPC 问题解释
行文目的
目前网络上(知乎、CSDN等)已经有了很多大佬大神对于NP问题进行过比较详细的解释,其中Paul-Huang在CSDN上发表的文章以及知乎上分享出来的一篇文章对我帮助很大,现在将链接复制在此处,本文的目的在于帮助自己加深理解并且希望能给后来的朋友们进行些许帮助。如果本文有什么描述错误的地方欢迎批评指正。
Paul-Huang 文章链接
Matrix67: The Aha Moments 什么是P问题、NP问题和NPC问题
什么是多项式算法
多项式算法在很多情况下也被解释为有效算法或者好算法,是指一类时间复杂度不超过一个多项式的算法。换句话说,就是指算法的时间复杂度为O(1),O(log(n)),O(na)等的算法,他的数据规模n出现在底数的位置。与之相对应的是非多项式算法,包括时间复杂度为O(an)的指数级以及O(n!)的阶乘级,这类非多项式算法在进行求解的时候除非数据规模很小否则将花费大量时间和计算资源。
什么是P问题
P问题,是指可以使用多项式算法进行求解的问题,即可以在多项式时间内解决的问题。这里的P是指polynomial–多项式一词的第一个字母。
这类问题一般也被视为可以较快解决的问题,典型代表为排序问题、最小生成树等
什么是NP问题
NP问题不是指non-p