主定理基本情况是不变的?

时间:2016-01-30 21:50:09

标签: algorithm master-theorem

主定理假设T(1)是常数吗?假设我有一个时间复杂度的算法:T(n)= 2T(n / 2)+ O(1)和T(1)= O(logn),这个算法的时间复杂度是多少?

3 个答案:

答案 0 :(得分:0)

对于递归关系:T(n) = 2T(n/2) + O(1),我们有

  • a = 2
  • b = 2
  • 在递归之外的O(1)时间成本工作
因此,主定理案例1适用,我们有:

T(n)∈Θ(n ^ log2(2))⇒

T(n)∈Θ(n)

递归关系定义基于初始项的序列。如果通过递归关系T(1) = f(n)解决了大小为1的问题,其中f∈O(logn),则无法确定T(1)的值,即没有意义作为递归关系。

答案 1 :(得分:0)

您的陈述T(1) = O(logn)没有任何意义。您基本上声明某些不依赖于n的函数由于某种原因具有对数复杂度(因此以对数方式依赖于n)。

T(1), T(2), T(532143243)是边界条件,不能依赖任何参数。它们应该是一个数字(5pi/esqrt(5) - i

答案 2 :(得分:0)

有时最好只是尝试一下而不是依赖定理。

T(m) = 2T(m/2) + O(1)
T(1) = O(logn)

T(2) = 2T(1) = 2log(n)
T(4) = 2T(2) = 4log(n)
T(8) = 2T(4) = 8log(n)
T(16) = 2T(8) = 16log(n)
T(32) = 2T(16) = 32log(n)
T(m) = 2T(m/2) = mlog(n)

总之,您的初始问题确实是荒谬的,正如其他人指出的那样,因为您在T(n)中使用相同n时尝试计算T(1) = O(logn)。但我们可以回答您作为评论添加的第二个问题。