【发布时间】:2017-06-09 04:37:35
【问题描述】:
我有一个测验要求我找出程序的递归关系的解决方案:
算法所花费的时间 T(n) 通常是大小的函数, n,输入数据。假设您编写了一个显示以下时间循环的程序:
T(n) = T(n/2) + a ,如果 n > 1
T(n) = b,如果 n=1
这是我尝试过的:
T(n/2) = T(n/4) + a T(n/4) = T(n/8) + a
所以:
T(n) = T(n/4) + 2*a = T(n/8) + 3*a = T(n/K) + 3*a
到这里,我想让T(n) = 1,程序应该被终止,所以我做
n/K = 1 -> K = n
我得到:
T(n/n) + 3*a = b + 3a
但答案显示该程序具有对数复杂度,解决方案应为 T(n) = a ∗ log2(n) + b
我不明白如何获得上述解决方案,有人可以帮助我吗? 谢谢!
【问题讨论】:
标签: time-complexity recurrence