如何计算T(n)= 3T(n / 3)+ O(lg n)

时间:2012-03-04 10:55:51

标签: algorithm

我知道O(lg n)T(n)是什么意思,在算法分析中我不知道如何计算T(n) = 3T(n/3) + O(lg n)。我应该扩展吗?

就像:

T(n) = 3^2 *T(n/3^2) + O(lg n/3) + O(lg n) and so on...

然后我得到

T(n) = 3^(log b^n) * T(1)+ 3^[log b ^ (n-1)]* lg (n/(3^[log b ^(n-1)])) ...+ O(lg n/3) +O(lg n)

但我怎样才能得到正确答案,我能否轻松找到答案呢?

1 个答案:

答案 0 :(得分:1)

我认为你可以使用Masters定理。

T(n)=aT(n/b) + f(n)
Here a=3, b=3 and f(n)=O(log n)
f(n) = O(log n) = O(n)

表示答案为BigTheta(n)

对于Masters定理公式,请参阅Wikipedia。有三个规则,非常简单