Big-O和Big theta可以互换使用吗



我正在学习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=10c=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=100c1=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&ltf(n)<=所有n>=N0 的Cg(n)

因此,如果你能找到足够大的常数N0、C1和C2来满足第一个定义,你就可以使用常数N0和C=C2来满足第二个定义。因此,第一个定义比第二个定义更强,因为任何满足第一个定义的东西都满足第二个,而关于二次方的业务就是这种情况的特例。

最新更新