高级数据结构及算法分析与设计第二讲

 一    问题计算复杂度的界定

         高级数据结构及算法分析与设计第二讲_第1张图片

二    算法及时间复杂度

      1. 基本概念

        有限条指令的序列--求解问题的一系列步骤

                 算法A求解问题P:

           把问题P的任何实例作为算法A的输入,每步计算是确定性的。

                      A能够在有限步停机并输出该实例的正确的解

                 基本运算与输入规模

                       算法时间复杂度:针对指定基本运算,计算算法所做运行次数

                       基本运算有:比较,加法,乘法,置指针, 交换等

     2. 算法的两种时间复杂度

          平均情况下的复杂度A(n)

           设S是规模为n的实例集

           实例IϵS的概率是PI

           算法对实例I所执行的基本运算次数是tI

 

            A(n)=?ϵ?PI ∑_IϵS▒"PI " tI

          最坏情况下的复杂度W(n)

    3. 算法的伪码表示

        先写算法  后面函数名   然后输入  输出  之后伪代码

用伪码表示算法

            伪码不是程序代码,只是给出关键步骤

            伪码关键字

            伪码中允许过程调用

        高级数据结构及算法分析与设计第二讲_第2张图片

     4. 函数的渐进的界

         大O符号  上界复杂度

              设f和g是定义域为自然集的N上的函数,若存在正数c和n0,使得对一切n > n0有

                                                               0 <= f(n)  <= cg(n)

              成立, 则称f(n)的渐进上界是g(n)    记为  f(n) = O(g(n))

       Ω符号  下界复杂度

               定义:设fg是定义域为自然数集N上的函数.若存在正数cn0,使得对一切n>n0有,

                                             0cg(n) f(n)

               成立,则称f(n)的渐进的下界g(n),

               记作

                                          f(n)= Ω(g(n))

         o符号

                  定义:设fg是定义域为自然数集N上的函数.若对任意正数c,都存在n0,使得对一起n>n0有,

                                       0≤f(n)<c g(n)

                  成立,则记

                                         f(n)=o(g(n))

        小ω符号  

                定义:设fg是定义域为自然数集N上的函数.若对任意正数c,都存在n0,使得对一起n>n0有,

                                         0c g(n) < f(n)

                成立,则记作

                                         f(n)= ω(g(n))

?      Θ符号  

              若f(n)=O(g(n))f(n)= Ω(g(n)),则记作

                                       f(n)= ?Θ(g(n))

    5. 有关函数渐进的界的三个定理

        定理1

        定理  设fg是定义域为自然数集合的函数.

        (1)如果lim?→∞?(?)/?(?)存在lim┬(n→∞)⁡〖f(n)/g(n)〗 存在,并且等于某个常数c>0,那么f(n)= ?Θ(g(n)).

        (2)如果lim?→∞?(?)/?(?)=0lim┬(n→∞)⁡〖f(n)/g(n)〗=0,那么f(n)= o(g(n)).

        (3)如果lim?→∞?(?)/?(?)=lim┬(n→∞)⁡〖f(n)/g(n)〗=+∞,那么f(n)= ω(g(n)).

                  多项式函数的阶低于指数函数的阶

                    对数函数的阶低于幂函数的阶

       定理2

       定理  设函数f,g,h的定义域为自然数集合

     (1)如果f=O(g),g=O(h),那么f=O(h).

     (2如果f= Ω(g),g= Ω(h),那么f= Ω(h).

     (3如果f= ?Θ(g),g= ?Θ(h),那么f= ?Θ(h).

 

           函数的阶之间的关系具有传递性

       定理3

 定理 假设函数fg的定义域为自然数集合,若对某个其它函数h,f=O(h)g=O(h),

 那么                    f+g=O(h)

      该性质可以推广到有限个函数.

      算法由有限步骤构成,若每一步的时间复杂度上界都是h(n),那么该函数的时间复杂度函数可以写作O(h(n))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(高级数据结构及算法分析与设计)