【发布时间】:2015-04-14 10:21:43
【问题描述】:
使用给定的:T(1) = 1
你将如何计算 T(n) = T(n/4) + 1 的封闭形式?
我会这样回答:
T(n) = T(n/4) + 1
T(n) = T(n/8) + 1 + 1
T(n) = T(n/16) + 1 + 1 + 1
等等。这是处理这个方程的正确方法吗?我是否遗漏了一些重要的关键步骤?
【问题讨论】:
标签: algorithm recurrence
使用给定的:T(1) = 1
你将如何计算 T(n) = T(n/4) + 1 的封闭形式?
我会这样回答:
T(n) = T(n/4) + 1
T(n) = T(n/8) + 1 + 1
T(n) = T(n/16) + 1 + 1 + 1
等等。这是处理这个方程的正确方法吗?我是否遗漏了一些重要的关键步骤?
【问题讨论】:
标签: algorithm recurrence
我们有 T(n)=T(n/4)+1
现在找到 T(n/4),即 T(n/4)=T(n/(4^2))+1
因此,第二项将是 T(n)=T(n/(4^2))+2
类似地,第 k 项将是 T(n)=T(n/(4^k))+k
现在将 n=4^k 放入上述方程的 RHS 中,因此我们得到 T(n)=T(1)+k
=> T(n)=1+k
但 n = 4^k
=> k = log n 其中 log 的底数为 4。
因此 T(n)= (1+log n );其中对数的基数为 4。
【讨论】:
在这种情况下,我认为反过来更容易:从T(1) 向上。我们有:
T(1) = 1
T(4) = T(4/4) + 1 = T(1) + 1 = 2
T(16) = T(16/4) + 1 = T(4) + 1 = 3
T(64) = T(64/4) + 1 = T(16) + 1 = 4
...
=> T(4^k) = k + 1
你能找出不是4 的力量的论点的答案吗?除法是我假设的整数除法。
【讨论】: