如何解决复发T(N)= 2T(N ^(1/2))+日志N? [关闭](How to solve

2019-07-02 18:36发布

我试图找到复发的时间复杂度:

T(N)= 2T(N 1/2)+日志N

我非常接近的解决方案,但是,我遇到了一个障碍。 我需要解决:

N(1/2 K)= 1

对于k,以简化我的取代模式。 我不是在寻找答案的复发,只是为了解决k

Answer 1:

当你开始展开了递归,您可以:


这里同样的事情有一些额外的步骤:

现在,使用的边界条件的递归(2号选定为0和1没有任何意义),你会得到:

k回公式,你会得到:

这里有两个使用相同的想法递归。

  • T(N)= T(N ^ 1/2)+ 1
  • T(N)= T(N ^ 1/2)+ O(双对数(n))的


Answer 2:

这是不可能解决

N(1/2 K)= 1

对于k,因为如果n> 1,则n X> 1对于任何非零X。 你可以解决这个问题的唯一方法是,如果你捡到K,使得1 / K = 0,但这是不可能的。

但是,您可以解决这个问题:

N(1/2 K)= 2

首先,需要双方的日志:

(1/2 K)LG N = LG 2 = 1

接着,由2 k乘以两侧:

LG N = 2 k

最后,以日志更多的时间:

LG乐Ñ= K

因此,这种复发将停止一次K = LG乐ñ。

虽然你只问k的值,因为它已经有整整一年既然你问,我想我会指出,你可以做一个变量替换来解决这个问题。 尝试设置K = 2 N。 则K = LG N,所以你的复发

T(K)= 2T(K / 2)+ K

这解决(使用主定理)到T(K)=Θ(K日志k)和使用K = LG n时,总复发解决到Θ的事实(日志N日志log n)的。

希望这可以帮助!



Answer 3:

登录的1个碱基什么,是0。

所以

N R个((1/2)^ k)的= 1

日志(N)(N ^((1/2)^ K))=的log(n)(1)

二分之一^ K = 0

登录(1/2)((1/2)^ K)=日志(1/2)(0)

日志的0基地什么是负无穷大..所以...

K = -infinity。

我认为你应该使用不同的“最后的数”为N,比1只是说...



Answer 4:

花花公子如果它是快速排序,这是该公式:

对此的解决方案是O(n*log(n))因为现在它是更小( T(n) ~ n^1/2对于一些N这意味着你的复杂度小于O(n*log(n))

尝试用归纳法证明您的绑定



文章来源: How to solve the recurrence T(n) = 2T(n^(1/2)) + log n? [closed]