杜教筛时间复杂度证明

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

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

这里其实只用展开一层就行了,因为在往下就是高阶小量,所以有
T ( n ) = Θ ( n ) + ∑ i = 2 n ( Θ ( i ) + Θ ( ⌊ n i ⌋ ) ) = Θ ( n 3 4 ) T(n)=\Theta(\sqrt n) + \sum_{i=2}^{\sqrt{n}}(\Theta (\sqrt i)+\Theta(\sqrt{⌊\frac ni⌋}))=\Theta(n^{\frac 34}) T(n)=Θ(n )+i=2n (Θ(i )+Θ(in ))=Θ(n43) ∵ Θ ( i ) + Θ ( ⌊ n i ⌋ ) > = 2 n = 2 n 1 4 \because \Theta (\sqrt i)+\Theta(\sqrt{⌊\frac ni⌋})>=2\sqrt{\sqrt n}=2n^{\frac 14} Θ(i )+Θ(in )>=2n =2n41
∴ n ( Θ ( i ) + Θ ( ⌊ n i ⌋ ) ) > = 2 n 3 4 \therefore \sqrt n(\Theta (\sqrt i)+\Theta(\sqrt{⌊\frac ni⌋}))>=2n^{\frac34} n (Θ(i )+Θ(in ))>=2n43

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

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值