当前位置 博文首页 > Keven_11的博客:主定理

    Keven_11的博客:主定理

    作者:[db:作者] 时间:2021-08-18 15:47

    先介绍几个符号的含义。

    符号Θ,读音西塔,既是上界也是下界,等于,严格贴紧。

    符号O,读音殴,表示上界,小于等于,贴紧未知。

    符号o,读音也是殴,小于,不贴紧。

    符号Ω,读音偶眯嘎,表示下界,大于等于,贴紧未知。

    符号ω,读音也是偶眯嘎,表示下界,大于,不贴紧。

    上面的“贴紧”是我根据tight翻译过来的(不是很准确啊),大概就是是否严格等于的意思吧。

    意思就是Θ是平均时间复杂度,O是最坏情况下的复杂度,Ω是最好情况下的复杂度。

    假设我们有递推关系式:
    T(n)=aT(nb)+f(n)

    其中,n为问题的规模、a为递推下子问题的数量,nb为每个子问题的规模,f(n)为递推后做的额外的计算工作。

    1.假设存在常数?>0,使得f(n)=O(nlogb?(a)??),则T(n)=Θ(nlogba)。

    具体意思是f(n)的上界是n的幂次,且logb(a)比这个幂次要大,则时间复杂度为这个n的logb(a)次。

    例子:二叉树的遍历。T(n)=2T(n2)+Θ(1)。其中a=2,b=2,f(n)=1,此时?=1。T(n)=Θ(n)。

    2.假设存在常数k≥0,使得f(n)=Θ(nlogbalogkn),则T(n)=Θ(nlogbalogk+1n)。

    具体意思是f(n)是n的logb(a)次,再乘以一个log,则复杂度是f(n)的复杂度再乘以一个log。

    例子:归并排序。T(n)=2T(n2)+Θ(n)。其中a=2,b=2,f(n)=n,此时k=0。T(n)=Θ(nlog2n)。

    3.假设存在常数?>0?,有f(n)=Ω(nlogb?(a)+?),同时存在常数c<1以及充分大的n满足?af(nb)≤cf(n)那么?T(n)=Θ(f(n))。

    cs