解决复发:T(n)= sqrt(2)T(n / 2)+ log(n)

时间:2013-05-24 09:56:06

标签: algorithm big-o complexity-theory recurrence master-theorem

给出等式T(n)=sqrt(2)T(n/2)+log(n)

解决方案指向M.T.的案例1。复杂度等级为O(sqrt(n))。但是在我理解之后log(n)是多项式大于sqrt(n)。我错过了什么吗?

我使用如下定义:n ^ e = log_b(a)其中a = sqrt(2)且b = 2.这将给出e = 1/2< 1. log n显然是多项式,然后是n ^ e。

2 个答案:

答案 0 :(得分:1)

没有。 log x n 不大于√n

考虑n=256

√n = 16

log 2 256 = 8 (让我们假设基数为x=2,与许多计算问题一样)。

在你的复发中,

T(n)= √2 T(n/2) + log(n)
a = √2, b = 2 and f(n) = log(n)

log b a = log 2 √2= 1/2

由于 log n< n a ,对于a > 0,我们有主定理的案例1。

T(n) = Θ(√n)

答案 1 :(得分:1)

使用主人定理得到:HorizontalScrollViewa=sqrt(2),因此b = 2。您的c = logb(a) = 1/2因此属于第一种情况。

因此,您的复杂性为f(n) = log(n)