用log n求解主定理:T(n)= 2T(n / 4)+ log n

时间:2015-06-22 18:33:04

标签: algorithm math big-o recurrence master-theorem

我正在尝试用主定理来解决这种关系:

  

T(n)= 2T(n / 4)+ log n

我已经发现a = 2和b = 4,但我对log n感到困惑。

我的脚本说:c(n)(这里是log n)是Big O(n ^ d)的元素。

如果我能在这里找出答案,我会比较a和b ^ d来找出我的主定理案例。

但是,由于它在这里登录的事实,我不确定它的Big O表示法。

我的意思是我可能会说它是O(n 1/2 )的元素,然后会导致情况二,其中a和b ^ d是相同的,但它也是O(n 1 ),这将再次成为另一种情况。

1 个答案:

答案 0 :(得分:3)

一个有用的事实是,对于任何ε> 0,我们知道

  

log n = O(n ε)。

我们也知道

  

log n =Ω(1)

让我们看看这是否告诉了我们什么。我们知道,对于任何ε>,你的复发都是从这一点开始的。 0:

  

S(n)= 2S(n / 4)+ n ε

让我们在这里使用主定理。我们有a = 2,b = 4,并且d =ε。我们需要推理log b a = log 4 2 = 1/2以及它与d =ε的关系。让我们ε小 - 比方说,让我们选择ε= 0.000001。然后我们有log b a< d,因此Master Theorem说运行时将是

  

O(n log b a )= O(n 1/2 )。

接下来,考虑这种递归关系:

  

R(n)= 2R(n / 4)+ 1

这种复发降低了你的复发率。使用主定理告诉我们R(n)=Ω(n 1/2 )。

总的来说,我们看到你的复发是O(n 1/2 )和Ω(n 1/2 )通过上限和下限重复你的复发更大和更小的复发。因此,即使主定理不适用于此,您仍然可以使用主定理声明运行时将为Θ(n 1/2 )。

希望这有帮助!

相关问题