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).