对数相关函数增长速度疑问:为何(log(n))^0.5比log(n^0.5)增长慢
增长速度推导过程
首先先对四个函数做等价化简,排除明显增长更快的项:
- 函数1:
n^0.5,即√n,属于多项式级增长,远比对数级增长快,首先排除 - 函数2:
log(n^0.5),根据对数运算规则可等价转化为0.5 * log(n),和log(n)为同阶函数,复杂度为Θ(log n) - 函数3:
(log(n))^0.5,即√(log n),是对数的平方根,复杂度为Θ(√log n) - 函数4:
log(n) * log(n),即(log n)²,复杂度为Θ((log n)²)
接下来对比三个对数相关函数的增长速度,可以做变量代换简化判断:令t = log n,当n趋近于无穷大时,t也趋近于无穷大,三个函数转化为关于t的函数:
- 函数2对应:
0.5 * t - 函数3对应:
√t - 函数4对应:
t²
当t趋近于无穷大时,增长速度排序显然为:√t < 0.5t < t²,对应回原函数的增长速度就是:√(log n) < log(n^0.5) < (log n)² < √n
因此增长最慢的是第3项(log(n))^0.5。
误判原因说明
你之前画图判断出错,大概率是选取的n的取值范围过小。当n不够大时,√(log n)和0.5logn的数值差距不明显,甚至看起来增长更快,但只要n足够大,二者的差距会无限拉开,可代入极端值验证:
- 当n=2^10000时,log₂n=10000,函数2的取值为0.5*10000=5000,函数3的取值为√10000=100,二者差50倍
- 当n=2^1000000时,log₂n=1000000,函数2的取值为500000,函数3的取值为1000,二者差500倍
内容的提问来源于stack exchange,提问作者Yalda Hami
相关产品推荐
相关产品推荐

