我正在学习Thomas H.Corman的《算法导论》一书。我正在研究渐近记数法。有一件事困扰着我,因为作者说:
f(n)=大θ(g(n))意味着f(n如何
作者还指出,(an^2+bn+c),其中a>0,在Big theta(n^2)ig-O(n ^2)何
我想您对这些术语有点困惑。
f(n) = O(g(n))
-表示g(n)
是f(n)
的上界。形式存在常量n0, c
,使得对于所有n>n0, f(n)<= c*g(n)
。你可以把它想象成两个图,这样c*g(n)
比f(n)
高。例如:5n^2+n = O(n^2)
为什么?
因为,例如,如果n0=10
和c=10
,则对于所有n>n0
-5n^2+n <= 10*n^2
f(n) = Theta(g(n))
-表示g(n)
是f(n)
的上界和下界。形式存在常量n0, c1, c2
,使得对于所有n>n0, c1*g(n)<=f(n)<=c2*g(n)
。你可以把它想象成三个图,这样f(n)
就在c1*g(n)
和c2*g(n)
之间。例如:5n^2+n = Theta(n^2)
为什么?
因为,例如,如果n0=100
和c1=1,c2=100
,那么对于所有n>n0
-n^2<=5n^2+n<=100*n^2
,
(在本书的V1中)f()在Theta(g(n))中的定义是存在正常数C1和C2,使得0<=C1g(n)<=f(n)<=所有n>=N0 的C2g(n)
O(g(n))的定义是存在单个C,使得0<f(n)<=所有n>=N0 的Cg(n)
因此,如果你能找到足够大的常数N0、C1和C2来满足第一个定义,你就可以使用常数N0和C=C2来满足第二个定义。因此,第一个定义比第二个定义更强,因为任何满足第一个定义的东西都满足第二个,而关于二次方的业务就是这种情况的特例。