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) + n
,T(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) + Θ(1)
如何计算该函数的增长率:T(n)= 2T(n ^(1/2))+ 2(n ^(1/2))