我的复发关系为:
T(n)= T(上限(n / 3))+ T(上限(3n / 5))+ 100 * n和T(1)= 1
我正在尝试使用递归树方法解决它,但是我不知道要处理递归关系中的上限函数。
那么,如何找到T(n)的最紧密渐近界?
您可以使用Akra-Bazzi定理。。为此,您可以使用这样的事实,ceil(x) = x + 1 - {x}
即that{x}
是x的小数部分。
因此,您可以重写复杂度术语,例如:
T(n) = T(n/3 + 1 - {n/3}) + T(3n/5 + 1 - {3n/5}) + 100n
因此,该定理中的参数为:
a1 = a2 = 1,
b1=1/3, b2 = 3/5,
h1(n) = 1 - {n/3}, h2(n) = 1 - {3n/5},
g(n) = 100n
正如你所看到的0 < b1, b2 < 1
,a1, a2 > 0
,h1, h2 < 1
,和g(n)
是线性的。这意味着定理的所有要求都成立了。
现在,是时候找到p
这样的东西了:
(1/3)^p + (3/5)^p = 1 => p ~ 0.9
因此,T(n) = Theta(n^p (1 + int(100 u/u^{p+1}, 1, n))
。为了简化该术语,我们需要计算积分:
int(100 u/u^{p+1}, 1, n) = 100 * int(1/u^p, 1, n) = 100 (n^{1-p}/(1-p) - 1)
因此,复杂度的简化项是T(n) = Theta(n)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句