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也必须是。虽然应该有更好的办法。