使用Master定理计算算法

时间:2015-06-18 21:27:54

标签: algorithm time complexity-theory master theorem

问题:您的算法会将 n 尺寸问题划分为六个子问题,其大小为原来的四分之一。对于划分算法, 100步和合并 75n 。什么是算法的渐近复杂度?

所以主定理的公式

对于这个问题 a = 6 b = 4 ,但我不知道在哪里适合分部和合并信息。

可接受的结果是: O n 1.2924 ), omega n 1.2 )和 O (1.001 n

1 个答案:

答案 0 :(得分:3)

每次解决子问题时,都必须将当前实例划分为更多子问题(cost = 100步)。然后,您必须合并子问题的结果(cost = 75n步骤)。

这意味着f(n) = 75n + 100因为f(n)代表解决单个子问题的成本(不包括递归的成本)。

f(n) = 75n + 100O(n)

因此,您正在查看:T(n) = 6 * T(n/4) + O(n)

我们知道:

a = 6
b = 4
f(n) = 75n + 100

接下来,我们计算log_b(a) = log_4(6) = log(6)/log(4) = 1.2924...

让我们考虑一下主定理的案例I:

如果f(n) = O(n^c)位于c < log_b(a),则T(n) = Ө(n^(log_b(a))

我们知道f(n) = O(n^1),所以让我们试试c = 1

c < log_b(a)?好吧,1 < 1.2924...,是的。

因此,T(n) = Ө(n^(log_b(a)) =&gt; T(n) = Ө(n^1.2924...)