如何解决一些硬核复发?

时间:2013-12-20 23:22:49

标签: algorithm recurrence

我正在尝试为我的算法类解决这些重复。有人可以帮助我,因为主定理不起作用,我无法计算第一个树中发生的总和,我没有看到第二个好的解决的例子!

T(n)= 2 * T(n / 3)+ n / log ^ 2(n)

T(n)= T(n-10)+ logn

1 个答案:

答案 0 :(得分:0)

第一个例子是Master Theorem的工作:a=2, b=3, f=n/log^2(n)log_b(a) < 1,所以这是第三种情况,因为对于任何k,f(n)比n^(log_b(a))*log^k(n)增长(显着)快。这意味着主要工作是在递归和T(n)=O(n/log^2(n))之外完成的。

第二个例子可以通过这种方式解决:

T(n)
= T(n - 10) + log(n)
= ...
= log(n) + log(n - 10) + ...
= log(n * (n-10) * (n-20) * ...)
= [n = 10k]
= log(10^k) + log(k!)
= k*log(10) + k*log(k) - k + O(log(k))
= O(k*log(k))
= O(n*log(n))