算法的时间复杂度O(logN)底数
2018-03-06 14:45
316 查看
问题:
关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多少。解答
算法中log级别的时间复杂度都是由于使用了分治思想,这个底数直接由分治的复杂度决定。如果采用二分法,那么就会以2为底数,三分法就会以3为底数,其他亦然。
不过无论底数是什么,log级别的渐进意义是一样的。
也就是说该算法的时间复杂度的增长与处理数据多少的增长的关系是一样的。
我们先考虑O(logx(n))和O(logy(n)),x!=y,我们是在考虑n趋于无穷的情况。
求当n趋于无穷大时logx(n)/logy(n)的极限可以发现,极限等于lny/lnx,也就是一个常数,
也就是说,在n趋于无穷大的时候,这两个东西仅差一个常数。
所以从研究算法的角度log的底数不重要。
最后,结合上面,我也说一下关于大O的定义(算法导论28页的定义),
注意把这个定义和高等数学中的极限部分做比较,
显然可以发现,这里的定义正是体现了一个极限的思想,
假设我们将n0取一个非常大的数字,
显然,当n大于n0的时候,我们可以发现任意底数的一个对数函数其实都相差一个常数倍而已。
所以书上说写的O(logn)已经可以表达所有底数的对数了,就像O(n^2)一样。
没有非常严格的证明,不过我觉得这样说比较好理解,如果有兴趣证明,完全可以参照高数上对极限趋于无穷的证明。
转载
相关文章推荐
- 算法 时间复杂度 logN 底数
- 算法时间复杂度中O(logN)的底数是多少
- 几个时间复杂度O(logN)的算法
- 算法时间复杂度的白话解析----logN,N,N*logN
- 长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可 以用除法。要求对算法的时间复杂度和空间复杂度作出分析,可以写思路也可以写程序。
- 数据结构与算法2——时间复杂度和空间复杂度
- 计算算法的时间和空间复杂度
- 如何计算算法的时间复杂度
- 算法的时间复杂度和空间复杂度-总结
- 常用算法和时间复杂度(php)
- 时间复杂度和空间复杂度2 - 数据结构和算法04
- BZOJ2038: [2009国家集训队]小Z的袜子(hose) 莫队算法 莫队算法讲解及时间复杂度证明
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了,logn的算法复杂度
- 算法的时间复杂度和空间复杂度-总结
- 算法的时间复杂度的公式理解
- 算法的时间复杂度 递推
- 高级算法 应用主项定理Master Method 求时间复杂度 判断有向图是否有环
- 数据挖掘算法的空间复杂度与时间复杂度分析
- 算法的时间复杂度(实例)