Algorithm 解决递归关系时,它们不能很容易地放在机器翻译形式

Algorithm 解决递归关系时,它们不能很容易地放在机器翻译形式,algorithm,time-complexity,computer-science,recurrence,Algorithm,Time Complexity,Computer Science,Recurrence,我有以下递归关系: T(n) = T(n/2) + T(n/2) + n 在这种情况下,我相信可以通过以下方式找到解决方案: T(n) = T(n/2) + T(n/2) + n = 2T(n/2) + n 在这里,可以应用主定理: a = b = 2, f(n) = n n^(log2(2)) vs n --> n vs n 因此,解决办法是: Theta(n log n) 我如何找到以下情况的解决方案: T(n) = T(n/2) + T(n/4) + n T(n)

我有以下递归关系:

 T(n) = T(n/2) + T(n/2) + n
在这种情况下,我相信可以通过以下方式找到解决方案:

 T(n) = T(n/2) + T(n/2) + n = 2T(n/2) + n
在这里,可以应用主定理:

 a = b = 2, f(n) = n
 n^(log2(2)) vs n --> n vs n
因此,解决办法是:

 Theta(n log n)
我如何找到以下情况的解决方案:

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

这些看起来不太容易放入机器翻译格式,所以我不太确定该怎么做。

这些格式可以由Akra处理--Bazzi:

因为t(n)=t(n/2)+t(n/4)+n满足Akra-Bazzi方法的标准[见CRLS,第112-113页],所以你可以使用该方法来解决重复问题

为了解决这个问题,我们首先需要找到唯一的实数p,使得

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

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

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

(1/2)^p*[1+(1/2)^p]=1

设x=(1/2)^p,那么我们有一个如下形式的方程

x*(1+x)=1

x+x^2=1

x^2+x-1=0

=>x=(-1+sqrt(5))/2->x=1

=>(1/2)^p=1

(1/2)^p=(1/2)^0

p=0

然后给出了递归的解决方案


T(n)=你可能会说
T(n/2)>=T(n/4)
因此,如果
A(n)=2A(n/2)
B(n)=2B(n/4)
那么
A(n)>=T(n)>=B(n)
既然A和B都是O(nlog n),那么T也必须是。虽然应该有更好的办法。