引言:
对于某个比较简单的算法,我们有时候确实能够精确地分析出算法的复杂度,比如算法复杂度为n^2+2n+2,但是事实上并不需要这样,因为当n足够大时,可以忽略掉低阶项和最高次项的系数,因此就引出了“渐近复杂度”,并且用“渐近记号”来表示“渐近复杂度”。今天小编简单介绍3中常用的标准方法来简化算法的渐进分析。
O记号:
大O表示渐进上界,相当于“<=”.O(g(n))={f(n):存在正常数c和N0,使对所有的n>=n0,都有0<=f(n)<=cg(n)}。
如上图所示,对于函数f(n),在x>n0时,恒有cg(n)无限接近且大于f(n).此时,就称cg(n)函数为f(n)函数的渐进上界。
举个栗子:
f(n)=0.5n^2+4n,则可以表示为f(n)=O(n^2)。证明:要使得0<=f(n)<=cg(n)
f(n)=0.5n^2+4n<=cg(n)=cn^2
0.5n+4<=cn
c-0.5>=4/n
存在c=9/2,n0=1,是的对所有的n>=n0都有0<=f(n)<=cg(n).