【问题标题】:Tree recursive function time complexity树递归函数时间复杂度
【发布时间】:2021-02-17 00:10:46
【问题描述】:

为什么这段代码的复杂度是θ(N^2 log N)?

def f(n):
  if n == 0:
    return
  else:
    f(n//2)
    f(n//2)
    f(n//2)
    f(n//2)
    g(n)    //runs in θ(n^2)

【问题讨论】:

    标签: time-complexity


    【解决方案1】:

    如果您申请Master Method(请参阅案例 2->case2a),您会看到 T(n)=4T(n/2)+n^2 我们看到 ccrit = log2(4) = 2 = c, f(n)=g(n)=(n^(ccrit))*log^k(n) => k=0,k>(-1) => 然后T(n)=Theta((n^ccrit)log^(k+1)n)=Theta(N^2 log N)。

    扩展解释:您在 n/2 的子问题上递归 4 次,因此 a=4,b=2,因为 g(n) 是 O(n^2),然后 c=2,因为 ccrit=c 案例 1 和 3不适用,我们看到 (n^(ccrit))*log^k(n) 确实等于 n^2 如果 k=0 并且满足情况 2。

    【讨论】:

      猜你喜欢
      • 2018-05-29
      • 2018-08-18
      • 2021-11-11
      • 2023-03-14
      相关资源
      最近更新 更多