From 10c392df831addeb2f57b8559ee90f435435a6f4 Mon Sep 17 00:00:00 2001 From: Shine wOng <1551885@tongji.edu.cn> Date: Tue, 7 May 2019 16:30:39 +0800 Subject: [PATCH] update other notations --- thu_dsa/chp1.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/thu_dsa/chp1.md b/thu_dsa/chp1.md index f50344e..abbaf69 100644 --- a/thu_dsa/chp1.md +++ b/thu_dsa/chp1.md @@ -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))_