update other notations
This commit is contained in:
@@ -109,9 +109,7 @@ $$T(n) = number\ of\ basic\ operations\ to\ solve\ a\ problem\ of\ scale\ n$$
|
||||
|
||||
存在不同的渐进分析方法。回忆我们之间提到,我们往往是评价一个算法在最坏情况下的效率,这里引入大O记号(big O notation),其定义如下:
|
||||
|
||||
```
|
||||
若存在函数f(n)和正的常数c,使得在渐进的条件(n >> 2)下,T(n) <= c·f(n),则可以认为f(n)给出了T(n)增长速度的一个上界(最坏情况),记T(n) = O(f(n))
|
||||
```
|
||||
_若存在函数f(n)和正的常数c,使得在渐进的条件(n >> 2)下,T(n) <= c·f(n),则可以认为f(n)给出了T(n)增长速度的一个上界(最坏情况),记T(n) = O(f(n))_
|
||||
|
||||
同时,根据定义,可以给出大O记号的几个性质:
|
||||
+ 对于任意常数 c > 0, O(f(n)) = O(c·f(n))
|
||||
@@ -123,3 +121,18 @@ $$n^a + n^b <= n^a + n^a = 2 * n^a = O(n^a)$$
|
||||
|
||||
在计算大O记号时,可以直接忽略低次项的原因也在于此。
|
||||
|
||||
### Other notations
|
||||
|
||||
上面也说了,大O记号表示的是最坏情况下算法在时间复杂度上的增长趋势。除此以外,还存在在最好情况下,以及平均情况下的时间估计。
|
||||
|
||||
#### big $\Omega$ notation
|
||||
|
||||
big $\Omega$ notation是标志了算法运行时间的下届,即最好情况,其定义如下:
|
||||
|
||||
_若存在函数f(n)和正的常数c,使得在渐进的条件(n >> 2)下,T(n) >= c·f(n),则可以认为f(n)给出了T(n)增长速度的一个下届(最好情况),记T(n) = $\Omega$(f(n))_
|
||||
|
||||
#### big $\Theta$ notation
|
||||
|
||||
big $\Theta$ notation 是标志算法运行时间的平均情况,它也具有相似的定义:
|
||||
|
||||
_若存在函数f(n)和正的常数c1和c2,使得在渐进的条件(n >> 2)下,c1·f(n) < =T(n) <= c2·f(n),则可以认为f(n)给出了T(n)增长速度的平均情况,记T(n) = $\Theta$(f(n))_
|
||||
|
||||
Reference in New Issue
Block a user