主定理:比较两个版本的定理

时间:2016-02-17 07:10:52

标签: algorithm master-theorem clrs

我一般看到两个版本的Master定理。

版本1:

(来自Tim Roughgarden's course

表单的重复关系,

T(n) <= aT(n/b)+O(n^d)
where a >= 1, b > 1, and d >= 0

有3例,

case 1: if a=b^d, then T(n) = O(n^dlog(n))
case 2: if a<b^d, then T(n) = O(n^d)
case 3: if a>b^d, then T(n) = O(n^logb(a))

版本2:

(来自CLRS

表单的重复关系,

T(n) = aT(n/b)+f(n)
where a>=1 and b>1 (both constants)

有3例:

case 1: if f(n) = O(n^logb(a-ε) for some ε > 0, then T(n) = Θ(n^logb(a))
case 2: if f(n) = Θ(n^logb(a)), then T(n) = Θ(logn*n^logb(a))
case 3: if f(n) = Ω(n^logb(a+ε)) for some ε > 0, and if af(n/b)<=cf(n) for some 
constant c<1 and all sufficiently large n,then T(n) = Θ(f(n))

问题: 应该支持哪个版本以及为什么?

1 个答案:

答案 0 :(得分:1)

第二版,因为它对f(n)没有约束。

如您所见,在第一个版本中,您的f(n)只能是特定形式,第二个案例f(n)是任何函数,因此您可以解决像T(n) = 2 T(n/2) + nlog(n) + n^2 * sin(n)

这样的重现