我知道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)
但我怎样才能得到正确答案,我能否轻松找到答案呢?
答案 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。有三个规则,非常简单