【问题标题】:Complexity of the recurrence T(n)=T(n/2)+T(n/2)+n^2?递归复杂度 T(n)=T(n/2T(n/2)+n^2?
【发布时间】:2021-05-05 11:33:17
【问题描述】:

根据主定理,这个递归是 θ(n^2),但是如果我们用树递归来解决这个问题,那么解决方案是 θ(n^2*logn)。我做错了吗?

【问题讨论】:

  • 如果从第一次执行开始就具有 n^2 复杂度,那么复杂度怎么能小于 n^2?
  • 你的主定理应用不正确
  • 你能说清楚什么是递归关系吗?是不是 T(n) = 2T(n/2) + n^2?

标签: algorithm runtime recurrence induction


【解决方案1】:

如果递归关系是 T(n) = 2T(n/2) + n^2,那么你在主定理的第三种情况下,并且正则性条件适用,所以 T(n) = Theta (n^2)。 [c_crit 是 log_2(2) = 1, n^2 = Omega(n), 2(n/2)^2 = (n^2)/2 (所以 k

如果你手动展开递归关系,那么你会得到:

T(n) = n^2 + 2(n/2)^2 + 4(n/4)^2 + 8(n/8)^2 + ...
     = n^2 ( 1 + 1/2 + 1/4 + 1/8 + ...)
     <= 2n^2

所以这个方法也给你 T(n) = Theta(n^2)。

inputting the recurrence relation into Wolfram Alpha and seeing what it says 的方法给出了 T(n) ~ 2n^2,所以又是 Theta(n^2)。

【讨论】:

  • @AlfredoMungari 如果您认为答案有帮助并且回答了您的问题,您可以考虑投票并接受答案。
  • 我怎样才能支持答案并接受它? @保罗汉金
  • 我认为我不能赞成这个答案,因为我的声誉低于 15 @PaulHankin
猜你喜欢
  • 1970-01-01
  • 2012-08-20
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 2015-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多