algorithm - 递归:T(n)=T(n/2)+ log N

标签 algorithm runtime recurrence induction

我被一个重复出现的问题困住了。

T(n)=T(n/2)+ log N

我现在拥有的是:

T(N) = T(N/2) + log N

T(N/2) = T(N/4) + log(N/2)

...

T(N) = T(N/2^k) + sum[i=0 和 k {log (N/2^i)}]

我不知道下一步该做什么。请给我一些建议。

谢谢!

最佳答案

另一种方法是使用 Master Theorem (或在 Wikipedia 上)。对于大多数重复情况,它都是适用的,并且可以非常快速地提供答案。

它基本上给你三个类别,然后答案就出来了。给定 T (n) = aT (n/b) + f (n) 形式的递推,我们寻找 a、b 和 f(n)。在你的例子中,我们有a=1,b=2,f(n)=log n。

因此(您必须查看引用的链接)我们属于情况 2,其中 f(n) 位于 Theta(n^(log_b(a-eps)) log^k(n)) = Theta(n ^0 log(n)),则主定理指出 T(n) 位于 Theta(n^(log_b(a-eps)) log^(k+1)(n)) = Theta(log^2( n))

关于algorithm - 递归:T(n)=T(n/2)+ log N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42406680/

相关文章:

algorithm - 给定二进制字符串中不同数字的数量及其总和

c - 换位密码编译太长

rust - extrinsics 选项卡中没有可用的 `kitties` 模块

Java在Mac的java程序中执行程序

algorithm - 求解递归 T(n) = T(6n/5) + 1

arrays - 将递归函数转换为代表我的算法输出的迭代函数

algorithm - 从中缀到前缀的转换

netbeans - 动态生成复选框,Netbeans

algorithm - 时间复杂度和递推关系

math - 通过替换求解递归T(n)= 2T(n/2)+Θ(1)