算法数学基础 - 2

  1. 函数渐近界的定理

    • 定理1

      ffgg是定义域为自然数集合的函数:

      (1)如果limnf(n)/g(n)\lim\limits_{n\rightarrow\infty}f(n)/g(n)存在,并且等于某个常数c>0c>0,那么f(n)=Θ(g(n))f(n)=\Theta(g(n))

      (2)如果limnf(n)/g(n)=0\lim\limits_{n\rightarrow\infty}f(n)/g(n)=0,那么f(n)=o(g(n))f(n)=o(g(n))

      (3)如果limnf(n)/g(n)=+\lim\limits_{n\rightarrow\infty}f(n)/g(n)=+\infty,那么f(n)=ω(g(n))f(n)=\omega(g(n))

      推理1 → 多项式函数的阶低于指数函数的阶nd=o(rn),r>1,d>0n^d=o(r^n),r>1,d>0

      推理2 →对数函数的阶低于幂函数的阶lnn=o(nd),d>0\ln n=o(n^d),d>0

    • 定理2

      设函数ffgghh的定义域为自然数集合,

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

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

      (3)如果f=Θ(g)f=\Theta(g)g=Θ(h)g=\Theta(h),那么f=Θ(h)f=\Theta(h)

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

    • 定理3

      假设函数ffgg的定义域为自然数集,若对某个其他函数hh,有f=O(h)f=O(h)g=O(h)g=O(h),那么f+g=O(h)f+g=O(h)

      该定理可以推广到有限个函数。即算法由有限步骤构成,若每一步的时间复杂度函数的上界都是h(n)h(n),那么该算法的时间复杂度函数可以写作O(h(n))O(h(n))。在常数步的情况下取最高阶函数即可。

  2. 几种重要函数的性质

    • 基本函数类

      • 至少指数级:2n,3n,n! ,2^n,3^n,n!~,\dots

      • 多项式级:n,n2,nlogn,n12,n,n^2,n\log n,n^{\frac{1}{2}},\dots

      • 对数多项式级:logn,log2n,loglogn,\log n, \log^2n,\log\log n,\dots

    • 对数函数

      • 符号:

        logn=log2n\log n = \log_2n

        logkn=(logn)k\log^kn=(\log n)^k

        loglogn=log(logn)\log \log n=\log(\log n)

      • 性质:

        (1)log2n=Θ(logln)\log_2n=\Theta(\log_ln)

        (2)logbn=o(nα),(α>0)\log_bn=o(n^\alpha), (\alpha>0)

        (3)alogbn=nlogbaa^{\log_bn}=n^{\log_ba}

    • 指数函数与阶乘

      Stirling公式 n!=2πn(ne)n(1+Θ(1n))n!=\sqrt{2\pi n}(\frac{n}{e})^n(1+\Theta(\frac{1}{n}))

      n!=o(nn)n!=o(n^n)

      n!=ω(2n)n!=\omega(2^n)

      log(n!)=Θ(nlogn)\log(n!)=\Theta(n\log n)

    • 取整函数

      • 定义:

        x\lfloor x\rfloor:表示小于等于xx的最大整数

        x\lceil x\rceil:表示大于等于xx的最小整数

      • 举例:

        2.6=2,2.6=3,2=2=2\lfloor 2.6\rfloor=2, \lceil 2.6\rceil=3,\lfloor 2\rfloor=\lceil 2\rceil=2

      • 应用:二分搜索

        输入数组长度nn,中位数位置:n/2\lfloor n/2\rfloor,与中位数比较后子问题大小:n/2\lfloor n/2\rfloor

      • 性质

        (1)x1<xxx<x+1x-1<\lfloor x\rfloor \le x \le \lceil x\rceil < x+1

        (2)x+n=x+n,x+n=x+n,n\lfloor x+n \rfloor=\lfloor x\rfloor+n,\lceil x+n\rceil=\lceil x\rceil+n, n为整数

        (3)n2+n2=n\lceil \frac{n}{2}\rceil+\lfloor \frac{n}{2}\rfloor=n

        (4)nab=nab,nab=nab\lceil \frac{\lceil\frac{n}{a} \rceil}{b}\rceil=\lceil\frac{n}{ab} \rceil, \lfloor \frac{\lfloor \frac{n}{a}\rfloor}{b}\rfloor =\lfloor \frac{n}{ab}\rfloor

    • 按照阶排序

      22n,n!,n2n,(3/2)n,(logn)logn=nloglogn,n3,log(n!)=Θ(nlogn),n=2logn,log2n,logn,logn,loglogn,n1/logn=12^{2^n},\quad n!,\quad n2^n,\quad (3/2)^n,\quad (\log n)^{\log n} =n^{\log\log n}, \\ n^3,\quad \log(n!)=\Theta(n\log n),\quad n=2^{\log n}, \\ \log^2n,\quad \log n,\quad \sqrt{\log n}, \quad \log\log n, \\ n^{1/\log n}=1


来源:

  1. 北京大学-算法设计与分析
作者

Hu

发布于

2020-05-13

更新于

2020-05-13

许可协议

评论