我正在尝试用主定理来解决这种关系:
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 ),这将再次成为另一种情况。
答案 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 )。
希望这有帮助!