【学习笔记】与调和级数相关的时间复杂度

声明:博主写这个博客的理由只是为了缓解心情,大部分的东西都是我手推的,没有验证过,如果有问题敬请指出。

Noip2018day1完挂,非常难受,过来写个博客颓一下,缓解心情

1. 调和级数
调和级数 H n = ∑ i = 1 n n i = O ( n log ⁡ n ) H_n=\sum^{n}_{i=1} \frac{n}{i}=O(n\log n) Hn=i=1nin=O(nlogn)
这个怎么证……抱歉蒟蒻真不会……
不过调和级数 ∑ n i = 1 n i \sum{n}_{i=1} \frac{n}{i} ni=1in是微积分中 ∫ 1 n 1 x d x \int^n_{1} \frac{1}{x} dx 1nx1dx的离散模拟。(这话这么说对吗……抱歉蒟蒻非常菜鸡啥都不会)

然后考虑一个推广的情形: T ( n ) = ∑ i = 1 n ( n i ) k T(n)=\sum^{n}_{i=1} (\frac{n}{i})^k T(n)=i=1n(in)k

2. 0 &lt; k &lt; 1 0&lt;k&lt;1 0<k<1
k &lt; 1 k&lt;1 k<1时,我们化简一下式子:仍然考虑转化为积分式, n k ∫ 1 n x − k d x = n k 1 1 − k n 1 − k = 1 1 − k n = O ( n ) n^k\int^{n}_{1} x^{-k} dx=n^k\frac{1}{1-k}n^{1-k}=\frac{1}{1-k}n=O(n) nk1nxkdx=nk1k1n1k=1k1n=O(n)
例如,数论中经常碰到某算法时间复杂度为 ∑ i = 1 n n i \sum^{n}_{i=1} \sqrt{\frac{n}{i}} i=1nin , 该复杂度即为 O ( n ) O(n) O(n).
但是请注意,当 k k k接近 1 1 1的时候, O ( n ) O(n) O(n)的背后将隐藏着巨大的常数……比如 k = 0.99 k=0.99 k=0.99 , 实验表明当 n n n比较小的时候 k = 0.99 k=0.99 k=0.99 k = 1 k=1 k=1差别并不大,但是理论上来说当 n n n趋近于 + i n f +inf +inf时,前者将收敛于大约 100 n 100n 100n, 后者将发散。

3. k &gt; 1 k&gt;1 k>1
k &gt; 1 k&gt;1 k>1时, n k ∫ 1 n x − k d x = O ( n k ) n^k\int_1^n x^{-k} dx=O(n^k) nk1nxkdx=O(nk)
因此, k &gt; 1 k&gt;1 k>1 n k \frac{n}{k} kn的影响几乎可以忽略。不过同理 k k k接近 1 1 1时也会有大常数。

好了心情恢复一点了,继续等待明天的GG……

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值