得到T(n)= T(n / 4)+ T(3n / 4)+ c的复杂度

时间:2015-12-26 18:50:29

标签: algorithm time-complexity recurrence

在这个递归关系T(n)=T(n/4)+T(3n/4)+c中,我只是混淆了这种递归关系与最佳和最坏情况分析的关系是什么,因为我们必须解决大小为n /的子问题4和3n / 4那么最坏情况或最佳案例分析的术语是什么?

此外我们应该在这里使用theta(log n)我们的O(log n),虽然看到下面的链接我发现O(log n)更适用但仍然无法理解为什么我们不使用theta(log n)在这里。

How to solve the recursive complexity T(n) = T(n/4)+T(3n/4)+cn

2 个答案:

答案 0 :(得分:3)

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

我们将case 1 of master theorem用于:

a = 2, b = 4/3.
c = log_{4/3}(2) ~= 0.4
CONST is in O(n^0.4)

因此,根据主定理,一个cad得出2T(3n/4) + CONSTTheta(logn),而从T(n) <= 2T(3n/4) + CONST,我们可以说T(n)O(logn)

遵循相同的想法,但有下限:

T(n) >= T(3n/4) + CONST ...

再次使用主定理,我们可以知道T(n)也在Omega(logn)

由于T(n)既是O(logn)又是Omega(logn),它也是Theta(logn)。

至于你的问题,你可以使用big-O或Theta表示法,无论你喜欢什么。正如你所看到的,证明Theta需要更多的工作,但它也提供了更多信息,因为它告诉你你发现的界限很紧。

答案 1 :(得分:1)

使用Akra-Bazzi定理可以很容易地解决这些类型的复发(如果您查看了您链接的问题,有人向您展示了类似问题的解决方案。)

所以1/4^p + (3/4)^p = 1p = 1。在你的情况下g(u) = c,所以积分

enter image description here

来自int c/u^2 du的{​​{1}} 1 to x等于从-1/u评估的1 to x。这等于-1/x + 1。现在,当你将它乘以x时,你会得到其他人建议的复杂度 O(n)而不是O(log n)