【问题标题】:T(n) = T(n/2) + T(n/4) solve this recurrence using iterative methodT(n) = T(n/2) + T(n/4) 使用迭代方法求解此递归
【发布时间】:2016-10-11 21:11:13
【问题描述】:

如何求解递推方程

T(n) = T(n/2) + T(n/4)

对于基本情况 T(n)=1

我已经检查了 thisthis 的线索,但它并没有帮助我使用迭代方法解决它

我只需要得到这个的一般方程式。

【问题讨论】:

  • 这些有什么不清楚的地方?您迭代并插入n/2n/4n。比如T(n) = [T(n/4) + T(n/8)]+ [T(n/8) + T(n/16)]...继续...
  • 我已经尝试过了,达到了 T(n)=T(n/4)+2T(n/16)+3T(n/32)+T(n/64)。但我无法得到通用方程@cricket_007

标签: algorithm time-complexity big-o recurrence


【解决方案1】:

我不明白如何使用“迭代方法”来解决这个问题。

但是你的递归关系和斐波那契数的递归关系有相似之处,可以用来找到解决方案。

T(2^k) = T(2^(k-1)) + T(2^(k-2))。所以假设 T(1) = T(2) = 1,T(2^k) = Fib(k)。因此,对于 n 的 2 次方,T(n) = Fib(lg(n))。由于 Fib(n) = Theta(phi^n),T(n) = Theta(phi^(lg n)) = Theta(n ^ lg(phi)) ~= n^0.7

这里 Fib(n) 是第 n 个斐波那契数,phi = (1 + sqrt(5))/2。

【讨论】:

  • 欣赏它。你为什么这样做
  • 欣赏它,但你为什么拿T(2^k)而不是T(n)?
  • @infinityAssault 因为二的幂产生精确的斐波那契数。这在许多涉及 /2 的递归关系解决方案中很常见(例如,对于合并排序或二分搜索),因为如果不这样做,舍入效应会使解决方案变得困难。
  • 这也在问题“为了求解斐波那契公式是 Fn= 1/√5 (ϕn− (−ϕ)−n) 并且您可以忽略此公式中的常数”中给出,但我没搞懂怎么用
  • Fib(n) = Theta(phi^n) 的公式。这个 Theta 是从哪里来的?或者如您在上面的答案中所写,如何从 Theta(n^log(phi)) = Theta ( n^0.2) 到 n^0.7 ? @保罗汉金
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
相关资源
最近更新 更多