简单证明调和级数约等于logn

版权声明:转载请注明原出处啦(虽然应该也没人转载): https://blog.csdn.net/hzk_cpp/article/details/82913337

调和级数这玩意大概就是\sum_{i=1}^{n}\frac{1}{i},这篇文章主要是简单证明\sum_{i=1}^{n}\frac{1}{i}\approx log(n),以证明一些数论题目的时间复杂度.

这玩意大概就是把它拆成(1)+(\frac{1}{2}+\frac{1}{3})+(\frac{1}{4}+\frac{1}{5}+\frac{1}{6}+\frac{1}{7})+....

然后我们会发现对于任意一个i,\bg_white \sum_{j=i}^{i+k-1}\frac{1}{j}<=k*\frac{1}{j}.

所以\sum_{j=2^{i-1}}^{2^i}\frac{1}{j}<=2^{i-1}*\frac{1}{j}=1.

由于分成了logn组,所以这玩意就差不多是logn.

那么这玩意有什么用呢...

在OI竞赛中,一部分题目会出现O(\sum_{i=1}^{n}\frac{n}{i})的时间复杂度,然而这个时间复杂度可能并不容易看出来大概能过多少的数据量,所以就要将它转换为一般大家都清楚的O(nlogn).

然后证明就需要用到调和级数这个东西.

证明如下:

\sum_{i=1}^{n}\frac{n}{i}=n*\sum_{i=1}^{n}\frac{1}{i}\approx nlogn

证毕.

然后这玩意就特别快了.

猜你喜欢

转载自blog.csdn.net/hzk_cpp/article/details/82913337