时间复杂度介绍

  • O(n)\Omega (n),\Theta(n)的区别

O(n)表示时间复杂度的上界,\Omega (n)表示时间复杂度的下界,\Theta(n)介于两者之间,具体可以由下图所示:

参考:https://www2.cs.arizona.edu/classes/cs345/summer14/files/bigO.pdf

  •  P, NP, NP-complete, NP-hard的关系

P: 能在多项式时间内解决的问题

NP: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题

NPC: NP完全问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的NP问题,即解决了此NPC问题,所有NP问题也都得到解决。

NP hard:NP难问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的问题(不一定是NP问题)。

也就是说P属于NP,NPC属于NP,那么P=NP问题就是证明对于一个NPC可以找到一个多项式复杂度的算法求解;很可惜目前还未能找到这种解。(一旦找到了这种解,那么根据规约性,就可以证明出P=NP)。关系如下图所示:

常见的NPC问题举例:
布尔可满足性问题(SAT)
对于一个确定的逻辑电路,是否存在一种输入使得输出为真。是第一个被证明的NPC问题,直观的看出这应该是一个NPC问题,因为当电路有k个输入,就会有2k种情况的不同取值。这个问题可以在多项式时间上枚举验证。但如果要求解的话,直观上算法时间复杂度应该为指数级别,但是并不能确定是否存在多项式级别的解。

NPC问题清单:https://en.wikipedia.org/wiki/List_of_NP-complete_problems

参考:http://www.matrix67.com/blog/archives/105

猜你喜欢

转载自blog.csdn.net/huangjin_1995/article/details/83115562