T(n) = T(3n/4) + 2T(n/2) + n 的复杂度是多少? [关闭]

Posted

技术标签:

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

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

【问题讨论】:

我投票结束这个问题,因为它是一个数学问题,而不是一个计算机编程问题。 @RaymondChen 但是,我们在 *** 上有很多时间复杂度问题,它们可能是相关的。 【参考方案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)

【讨论】:

以上是关于T(n) = T(3n/4) + 2T(n/2) + n 的复杂度是多少? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

求解递归:T(n)=2T(n/2)+n/logn

通过替换求解递归 T(n) = 2T(n/2) + Θ(1)

如何计算该函数的增长率:T(n)= 2T(n ^(1/2))+ 2(n ^(1/2))

T(n) = 2T(n/2) + log n 的解

T(n) = 2T(n/2) + n lg lg n 的渐近上限和下限是多少?

递归关系:T(n) = T(n/2) + n