【问题标题】:What is the complexity of T(n) = T(3n/4) + 2T(n/2) + n? [closed]T(n) = T(3n/4) + 2T(n/2) + n 的复杂度是多少? [关闭]
【发布时间】:2020-12-25 12:09:20
【问题描述】:

我无法解决问题。我终于想通了,答案是什么。

【问题讨论】:

  • 我投票结束这个问题,因为它是一个数学问题,而不是一个计算机编程问题。
  • @RaymondChen 但是,我们在 StackOverflow 上有很多时间复杂度问题,它们可能是相关的。

标签: algorithm time-complexity divide-and-conquer


【解决方案1】:

你可以改写如下等式:

T(n) = T(n/(4/3)) + 2T(n/2) + n

现在是4/3 < 2,我们可以说T(n) < 3 T(n/(4/3)) + n。然后使用主定理,T(n) = O(n^{log_{4/3}(3)}) = O(n^{3.82})。另一方面,我们可以找到一个下限为T(n) > 3T(n/2) + nT(n) = Omega(n^{log_2(3)})=Omega(n^{1.58})

要找到确切的解决方案,您也可以使用Akra-Bazzi Theorem

a1 = 1, b1 = 3/4
a2 = 2, b2 = 1/2

找到p 这样:

(3/4)^p + 2 (1/2)^p = 1

p ~ 2.17。所以,T(n) = \Theta(n^{2.17} * (1 + int(u/u^{3.17},1,n)) ) = Theta(n^{2.17})(如int(u/u^{3.17},1,n) = int(1/u^{2.17},1,n) = O(1))。

总之:

T(n) = Theta(n^{2.17})

【讨论】:

    猜你喜欢
    • 2021-05-05
    • 2021-02-27
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 2015-08-04
    相关资源
    最近更新 更多