《算法导论》学习笔记之三:函数增长

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shanpenghui/article/details/83857771

渐近记号

Θ记号

  对于一个给定的函数g(n),用 Θ \Theta (g(n))来表示以下函数的集合:
Θ ( g ( n ) ) = { f ( n ) c 1 c 2 n 0 使 n n 0 0 c 1 ( n ) f ( n ) c 2 g ( n ) } \Theta(g(n))=\{ f(n):存在正常量c_{1}、c_{2}和n_{0},使得对所有n≥ n_{0},有0≤c_{1}(n)≤f(n)≤c_{2}g(n) \}

   Θ \Theta (g(n))的定义要求每个成员f(n) \in Θ \Theta (g(n))均为渐近非负,即当n足够大时,f(n)非负。

O记号

  当只有一个渐近上界时,使用O记号。对于给定的函数g(n),用O(g(n))(读作“大O(g(n))”)来表示以下函数的集合:
O ( g ( n ) ) = { f ( n ) c n 0 使 n n 0 0 f ( n ) c g ( n ) } O(g(n))=\{ f(n):存在正常量c和n_{0},使得对所有n≥ n_{0},有0≤f(n)≤cg(n) \}

Ω \Omega 记号

   Ω \Omega 记号提供了渐近下界。对于给定的函数g(n),用 Ω \Omega (g(n))(读作“大 Ω \Omega (g(n))”)来表示以下函数的集合:
Ω ( g ( n ) ) = { f ( n ) c n 0 使 n n 0 0 c g ( n ) f ( n ) } \Omega(g(n))=\{ f(n):存在正常量c和n_{0},使得对所有n≥ n_{0},有0≤cg(n)≤f(n) \}

o记号

  由O记号提供的渐近上界可能是也可能不是渐近紧确的。界2n2=O(n2)是渐近紧确的,但是界2n=O(n2)却不是。我们使用o记号来表示一个非渐近紧确的上界。形式化地定义o(g(n))为以下集合:
o ( g ( n ) ) = { f ( n ) c > 0 n 0 > 0 使 n n 0 0 f ( n ) < c g ( n ) } o(g(n))=\{ f(n):存在正常量c>0,存在常量n_{0}>0,使得对所有n≥ n_{0},有0≤f(n)<cg(n) \}

  例如2n=o(n2),但是2n2≠o(n2)。
  O记号与o记号的定义类似。主要的区别是在f(n)=O(g(n))中,界0≤f(n)≤cg(n)对某个常量c>0成立,但在f(n)=o(g(n))中,界0≤f(n)<cg(n)对所有常量c>0成立。直观上,在o记号中,当n趋于无穷时,函数f(n)相对于g(n)来说变得微不足道了,即:
lim n f ( n ) g ( n ) = 0 \lim_{n\to\infty} \frac{f(n)}{g(n)}=0

ω \omega 记号

   ω \omega 记号与 Ω \Omega 记号的关系类似于o记号与O记号的关系。我们使用 ω \omega 记号来表示一个非渐近紧确的下界。定义它的一种方式是:
f ( n ) ω ( g ( n ) ) g ( n ) o ( f ( n ) ) f(n)\in \omega(g(n)) 当且仅当g(n)\in o(f(n))

  然而,我们形式化地定义定义 ω ( g ( n ) ) \omega(g(n)) 为以下集合:
ω ( g ( n ) ) = { f ( n ) c &gt; 0 n 0 &gt; 0 使 n n 0 0 c g ( n ) &lt; f ( n ) } \omega(g(n))=\{ f(n):对任意正常量c&gt;0,存在常量n_{0}&gt;0,使得对所有n≥ n_{0},有0≤cg(n)&lt;f(n) \}
  假如:n2/2= ω ( n ) \omega(n) ,但是n2/2≠ ω ( n ) \omega(n) 。关系f(n)= ω ( g ( n ) ) \omega(g(n)) 蕴涵着
lim n f ( n ) g ( n ) = \lim_{n\to\infty} \frac{f(n)}{g(n)}=\infty

  也就是说,如果这个极限存在,那么当n区域无穷大时,f(n)相对于g(n)来说变得任意大了。

猜你喜欢

转载自blog.csdn.net/shanpenghui/article/details/83857771