杜教筛时间复杂度证明

假设我们要求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=2n14\because \Theta (\sqrt i)+\Theta(\sqrt{⌊\frac ni⌋})>=2\sqrt{\sqrt n}=2n^{\frac 14}
n(Θ(i)+Θ(ni))>=2n34\therefore \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})

posted @ 2019-12-14 14:52  _Ark  阅读(177)  评论(0编辑  收藏  举报