算法导论复习——CHP3 函数的增长

        研究算法的渐进效率,给出算法运行时间随问题规模的变化关系,给出时间 / 空间复杂度限界函数的定义,引入渐进记号。

记算法的实际执行时间为f(n),分析所得的限界函数为g(n)。其中,

n :问题规模的某种测度。

f(n) :是与机器及语言有关的量。

g(n) :是事前分析的结果,一个形式简单的函数,与频率计数有关、 而与机器及语言无关。

限界函数

        上界函数

        O(g(n))表示一下函数集合

        这里"="不是常规意义上的相等。

        若f(n)和g(n)满足以上关系,则记为f(n)∈Ο(g(n)),表示 f(n) 是集合 Ο(g(n)) 的成员。并通常记作 f(n) = Ο(g(n))。

        上界函数代表了最坏情况的复杂度,使用时往往使用紧确的上界函数,例如:

        若:3n + 2 = O(n^2)是松散的界限;

        而:3n + 2 = O(n)是紧确的界限。

        下界函数

        类似地, 下界函数 Ω( g(n) ) 表示以下函数集合:

        各性质与上界函数类似。

        渐进紧确界

        Θ(g(n))表示以下函数的集合:

        充要替换:f(n) = Ω( g(n) ) 且 f(n) = Ο( g(n) )

        因为任意常量都可看做是一个 0 阶多项式,所以可以把任意常量函数表示成\Theta(n^0)\Theta(1)。         通常用\Theta(1)表示具有常量计算时间的复杂度,即算法的执行时间为一个固定量,与问题的规模n没关系。 

证明是/不是上界/下界/渐进紧确界:

        是:列出定义不等式,找常数c_1c_2n_0

        不是:反证法。

        等式和不等式中的渐进记号:

                用来代表我们不关注名称的匿名函数,用以消除一些无关紧要的细节。

        这些细节存在但不被特别关注,分析时还是只对 T(n) 的渐进行为感兴趣。渐进记号仅代表低阶项部分,在实际化简的过程中,要根据需要予以“具体化” ,然后再进行化简处理。

        o,ω记号

        专门用来表示一种非渐进紧确的上界或下界。

        o:对任意正常数c,存在常数 n_0>0,使对所有的 n ≥ n_0, 有|f(n)| ≤ c|g(n)|,则记作:f(n) = o(g(n))。

        ω:对任意正常数c,存在常数n_0>0,使对所有的n≥n_0, 有c|g(n)|≤|f(n)| ,则记作:f(n) = ω(g(n))。

        运算性质

  •         传递性:(本质是∈的传递性)

算法导论复习——CHP3 函数的增长_第1张图片

  •         自反性:如f(n) = \Theta(f(n))
  •         对称性:
  •         转置对称性: 

         限界函数的计算

        定理:

        多项式定理:若A(n)=a_mn^m+...+a_1n+a_0是一个n的m次多 项式,则有 A(n) = Ο(n^m)

        对于任意正实数 x 和 ε ,有下面的不等式:

        1) 存在某个n_0 ,使得对于任何n ≥ n_0,有(logn)^x(logn)^{x+\varepsilon}

        2) 存在某个n_0,使得对于任何n ≥ n_0,有n^x < n^{x+\varepsilon}

        3) 存在某个n_0 ,使得对于任何n ≥ n_0,有(logn)^x < n。

        4) 存在某个n_0 ,使得对于任何n ≥ n_0,有n^x < 2^n

        5) 对任意实数y ,存在某个n_0,使得对于任何n≥n0, 有 n^x(logn)^y< n^{x+\varepsilon}

        Ο(2^n) <  Ο(n!) < Ο(n^n)

你可能感兴趣的:(算法导论,算法)