我知道可以用主法解决但是如何解决?请帮忙吗?
答案 0 :(得分:0)
我不确定这是否正确:
a = sqrt(2)
b = 2
f(n) = log n
log(b) a = log (2) sqrt(2) = 1/2
log n in O[n^(1/2)]
所以找到数n的对数的运行时间是O {n ^(1/2)}(但是这里不能应用主定理)
解决方案在以下主题中:Solving master theorem with log n: T(n) = 2T(n/4) + log n
总的来说,我们看到你的复发是O(n1 / 2)和Ω(n1 / 2),通过更大和更小的复发来重复上下限。因此,即使主定理不适用于此,您仍然可以使用主定理声明运行时将为Θ(n1 / 2)。
Master's theorem with f(n)=log n
通常,f(n)必须是多项式才能应用主定理 - 它不适用于所有函数。然而,主定理有一个有限的“第四种情况”,它允许它应用于多对数函数。
答案 1 :(得分:0)
拉尔夫告诉你不能apply masters theorem,这是不正确的。
这里唯一的限制是a >=1
和b >= 1
,a,b可以是无理的,f(n)可以是任何东西。
Log2(sqrt(2)) is 1/2
,它将您置于第一种情况,您的解决方案为O(n^0.5)
。