我试图找到重现的时间复杂度:
T(n)= 2T(n 1/2 )+ log n
我非常接近解决方案,但是,我遇到了障碍。我需要解决:
n (1/2 k ) = 1
表示k可以简化我的替换模式。我不是在寻找复发的答案,只是k
的解决方案。
答案 0 :(得分:5)
答案 1 :(得分:3)
无法解决
n (1/2 k ) = 1
表示k,因为如果n> 1然后n x > 1表示任何非零x。你能解决这个问题的唯一方法就是你选择k使得1/2 k = 0,但这是不可能的。
但是,你可以解决这个问题:
n (1/2 k ) = 2
首先,记录双方的日志:
(1/2 k )lg n = lg 2 = 1
接下来,将两边乘以2 k :
lg n = 2 k
最后,再次记录日志:
lg lg n = k
因此,一旦k = lg lg n。
,这种复发将停止虽然你只询问了k的值,因为你问了整整一年,我想我会指出你可以做一个变量替换来解决这个问题。尝试设置k = 2 n 。那么k = lg n,所以你的重现是
T(k)= 2T(k / 2)+ k
这解决(使用主定理)到T(k)=Θ(k log k),并且使用k = lg n的事实,整体递归求解为Θ(log n log log n)。
希望这有帮助!
答案 2 :(得分:0)
如果这是快速排序,那就是方程式:
此问题的解决方案是O(n*log(n))
,因为现在它对某些T(n) ~ n^1/2
来说更小(N
),这意味着您的复杂性低于O(n*log(n))
。
尝试使用归纳来证明你的约束
答案 3 :(得分:0)
log base 1,为0。
所以
n ^((1/2)^ k)= 1
log(n)(n ^((1/2)^ k))= log(n)(1)
1/2 ^ k = 0
log(1/2)((1/2)^ k)= log(1/2)(0)
log base 0的任何一个是负无穷大..所以......
k = -infinity。
我认为你应该为n使用不同的“最终数字”,而不是1 只是说...