• 杜教筛时间复杂度证明


    假设我们要求S(n)S(n)且有S(n)=i=2nS(ni)S(n)=sum_{i=2}^nS(⌊frac ni⌋)
    于是我们要求在整除分块优化下的时间复杂度,只需要求出nS(ni)sqrt n个S(⌊frac ni⌋)的值就行了

    假设计算出S(n)S(n)的复杂度为T(n)T(n),则有
    T(n)=Θ(n)+i=2n(T(i)+T(ni))T(n)=Theta (sqrt n) + sum_{i=2}^n(T(i)+T(frac ni))其中Θ(n)Theta (⌊sqrt n⌋)是累加也就是合并的时间

    这里其实只用展开一层就行了,因为在往下就是高阶小量,所以有
    T(n)=Θ(n)+i=2n(Θ(i)+Θ(ni))=Θ(n34)T(n)=Theta(sqrt n) + sum_{i=2}^n(Theta (sqrt i)+Theta(sqrt{⌊frac ni⌋}))=Theta(n^{frac 34})Θ(i)+Θ(ni)>=2n=2n14ecause Theta (sqrt i)+Theta(sqrt{⌊frac ni⌋})>=2sqrt{sqrt n}=2n^{frac 14}
    n(Θ(i)+Θ(ni))>=2n34 herefore sqrt n(Theta (sqrt i)+Theta(sqrt{⌊frac ni⌋}))>=2n^{frac34}

    又由于可以用筛法处理一部分,假设处理了前kk个前缀和,且k>=nk>=sqrt n,则T(n)=i=2nkΘ(ni)=Θ(nk)T(n)=sum_{i=2}^{frac nk}Theta(sqrt{⌊frac ni⌋})=Theta(frac n{sqrt k})kk取到Θ(n23)Theta(n^{frac 23})时能取到较优秀的时间复杂度Θ(n23)Theta(n^{frac 23})

  • 相关阅读:
    剑桥雅思写作高分范文ESSAY64
    剑桥雅思写作高分范文ESSAY63
    剑桥雅思写作高分范文ESSAY62
    剑桥雅思写作高分范文ESSAY61
    Python特点
    解释器
    python开发时总会碰到的问题
    python redis
    python连接数据库的方法
    数据库中的主键、外键、索引的区别
  • 原文地址:https://www.cnblogs.com/Orz-IE/p/12039463.html
Copyright © 2020-2023  润新知