zoukankan      html  css  js  c++  java
  • 【转】主定理

    主定理

    参考博客如标题

    自己的傻b理解

    对于我这种应付考试的人,可以直接代入几个特殊值...
    只需要知道:
    符号(O),读音殴,表示上界,小于等于,贴紧未知。
    找好特殊值
    对于简单的(如:O(n), 又如下面的例题3),自己推就行

    博客原文如下

    先介绍几个符号的含义。

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

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

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

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

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

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

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

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

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

    1.假设存在常数ϵ>0 ,使得(f(n)=O(n^{logb(a)−ϵ})),则(T(n)=Θ(n^{logba}))

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

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

    (T(n)=Θ(n))

    2.假设存在常数(k≥0),使得(f(n)=Θ(n^{logba}log^kn)),则(T(n)=Θ(n^{logba} log^{k+1}n))

    具体意思是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))

    例子:二分搜索(折半搜索)。(T(n)=T(n2)+Θ(1)),其中(a=1,b=2,f(n)=1),此时k=0,则

    (T(n)=Θ(log2n))

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

    这个感觉没啥用啊。。。

    【例题】

    1【NOIP2017初赛】若某算法的计算时间表示为递推关系式:

    (T(N)=2T(N/2)+NlogN,T(1)=1),则该算法的时间复杂度为______________________________________________________。

    A.(O(N)) B.(O(NlogN)) C.(O(NlogN)) D.(O(N^2))

    【解析】套用情况2中的(k=1)的情况,则(T(n)=Θ(NlogN)),选C

    2【NOIP2016初赛】若某算法的计算时间表示为递推关系式:

    (T(N)=2T(N4)+N−−√,T(1)=1),则该算法的时间复杂度为______________________________________________________。

    A.(O(N)) B.(O(√N)) C.(O(√N log2N)) D.(O(N^2))

    【解析】套用情况2中的k=0的情况,则$T(n)=Θ(sqrt(N)log2 N) $,选C

    3【NOIP2015初赛】某算法的计算时间表示为递推关系式:

    (T(N)=T(N−1)+N) ,T(0)=1 。则该算法的时间复杂度为______________________________________________________。

    A.(O(log22N)) B.(O(Nlog2N)) C.(O(N)) D.(O(N^2))

    【解析】难道这个就要用主定理了?容易推导出(T(N)=T(0)+1+...+n=1+N∗(N+1)2) ,则时间复杂度为$O(N^2) $,选D

    【总结】

    NOIP初赛考察了3年的时间复杂度分析,其中两年用到了主定理。其实你不会主定理也没事儿,只要能找几个特殊值带入,并根据符号O的意义排除选项即可。

  • 相关阅读:
    PotPlayer直播源分享
    关于MySQL服务无法正常启动问题
    MySQL介绍及安装环境配置
    MySQL 常用命令
    Oracle【序列、索引、视图、分页】
    Oracle【二维表的维护】
    Oracle【二维表管理:约束】
    JDBC事务
    JDBC的两种sql命令发送器比较【Statement:PreparedStatement】
    mysql InnoDB存储引擎
  • 原文地址:https://www.cnblogs.com/tyner/p/11568452.html
Copyright © 2011-2022 走看看