Algorithm 求解T(n)=&x221A;2*T(n/2)和#x2B;logn的主定理

Algorithm 求解T(n)=&x221A;2*T(n/2)和#x2B;logn的主定理,algorithm,recurrence,master-theorem,Algorithm,Recurrence,Master Theorem,问题是: T(n) = √2*T(n/2) + log n 我不确定主定理在这里是否有效,有点卡住了。根据主定理,f(n)应该是多项式,但在这里 f(n) = logn 它不是一个多项式,所以不能按照规则用主定理求解。我在什么地方也读到了第四个案例。我也必须提到这一点 这里也讨论了这一点: 然而,主定理有一个有限的“第四种情况”,允许它应用于多对数函数 如果 换句话说,假设T(n)=2T(n/2)+n log n。f(n)不是多项式,但f(n)=n logn,k=1。因此,T(n)=O(n

问题是:

T(n) = √2*T(n/2) + log n
我不确定主定理在这里是否有效,有点卡住了。

根据主定理,f(n)应该是多项式,但在这里

f(n) = logn
它不是一个多项式,所以不能按照规则用主定理求解。我在什么地方也读到了第四个案例。我也必须提到这一点

这里也讨论了这一点:

然而,主定理有一个有限的“第四种情况”,允许它应用于多对数函数

如果

换句话说,假设T(n)=2T(n/2)+n log n。f(n)不是多项式,但f(n)=n logn,k=1。因此,T(n)=O(n log2 n)


有关更多信息,请参阅本讲义:

这看起来更像阿克拉-巴齐定理:
k=1
h=0
g(n)=log n
a=(2)^{1/2}
b=1/2
。在这种情况下,
p=1/2
,您需要计算积分
\int_1^x log(u)/u^{3/2}du
。您可以使用部件集成或符号积分器。Wolfram Alpha告诉我不定积分是
-2(logu+2)/u^{1/2}+C
,所以定积分是
4-2(logx+2)/x^{1/2}
。加上
1
并乘以
x^{1/2}
,我们得到
T(x)=\Theta(5x^{1/2}-2logx-4)

对你的
a
b
只有约束,这适用于你的情况。事实上,
a
是非理性的,你的
f(n)
与之无关

所以在你的例子中,你的
c=log2(sqrt(2))=1/2
。由于
n^c
的增长速度比日志(n)快,因此递归的复杂性是
O(sqrt(n))

p.S.Danyal的解决方案是错误的,因为复杂性不是nlogn,Edward Doolittle的解决方案是正确的,在这种简单的情况下,这也是一种过分的做法

 f(n) = O(nlogba logk n), then T(n) = O(nlogba log k+1 n).