算法导论复习-第三章-函数的增长

  • 渐近符号

    渐近符号常常用于一个算法的时间复杂度度空间复杂度。下面主要介绍五个渐近符号。

    首先先简单用自然语言对其进行描述。

  • Θ “同阶” 前者和后者的增长速度一样快  (相当于 = )
  • Ο  前者不比后者大  (相当于 ≤ )
  • Ω  前者不比后者小  (相当于 ≥ )
  • ο   比后者小  (相当于 < )
  • ω  比后者大  (相当于 > )

    下面给出严格的定义。

定义1.1  若存在两个正的常数 c 和 n,对于任意 n ≥ n0 都有 T(n) ≤ cf(n),则称 T(n) = Ο(f(n)).

定义1.2  若存在两个正的常数 c 和 n,对于任意 n ≥ n0 都有 T(n) ≥ cf(n),则称 T(n) = Ω(f(n)).

定义1.3  若存在三个正的常数 c1,c2 和 n,对于任意 n ≥ n0 都有 c1f(n) ≥ T(n) ≥ c2f(n),则称T(n) = Θ(f(n)).

    ① 大Ο符号用于描述增长的上限。当输入规模为n时,算法消耗时间的最大值,这个上限的阶越低结果越有价值

        值得注意的是:定义1.1给了很大的自由度来选择常数 c 和 n的特定值,例如,下列的推导都是合理的:

100n + 5 ≤ 100n + n   (当n ≥ 5) = 101n = Ο(n)  (c=101,n=5)

100n + 5 ≤ 100n + 5n (当n ≥ 1) = 105n = Ο(n)  (c=105,n=1)

    ② 大Ω符号用于描述增长的下限。当输入规模为n时,算法消耗时间的最小值,这个下限的阶越高结果越有价值

            大Ω符号常用来分析某个问题或某类算法的时间下限。例如,矩阵乘法问题的时间下限为Ω(n2),基于比较排序的算法的时间下限为Ω(nlgn).

            大Ω符号常常与大Ο符号配合以证明某一问题的一个特定算法是该问题的最优算法,或是该问题中某算法类中的最优算法。

    ③ Θ符号意味着T(n) 与 f(n) 同阶。用来表示算法的精确阶。

    定理1.1   对任意两个函数 f(n) 和 g(n),我们有 f(n) = Θ(g(n)) 当且仅当  f(n) = Ο(g(n)) 且  f(n) = Ω(g(n)) 。

                   [但通常来说,都是用它从渐近上界和下界来证明渐近确阶,即:Ο(g(n)) ∧ Ω(g(n)) → Θ(g(n))]

    定理1.2   若 T(n) = amnm + am-1nm-1 + + a1n + a0 (  a> 0 ),则有 T(n) = Ο(nm),且 T(n) = Ω(nm),因此有T(n) = Θ(nm)。

    最后附上手写版笔记:

        ch3-函数的增长-渐近符号

posted @ 2020-10-16 11:42  不爱学习的Shirley  阅读(326)  评论(0编辑  收藏  举报