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

Solving master theorem with log n: T(n) = 2T(n/4) + log n

我目前正在尝试用主定理解决这个关系:

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

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

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

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

但是,由于这里是 log n,我不确定它的大 O 表示法。

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

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

log n = O(nε).

我们也知道

log n = Ω(1)

让我们看看这是否能告诉我们任何信息。我们知道,对于任何 ε > 0:

,您的递归受此递归的限制

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

让我们在这里使用主定理。我们有 a = 2、b = 4 和 d = ε。我们需要推理 logb a = log4 2 = 1/2 以及它与 d = ε 的关系。让我们把 ε 变小——比如说,让我们选择 ε = 0.000001。然后我们有 logb a < d,所以主定理说运行时间是

O(nlogb a) = O(n1/2).

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

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

此重复频率降低了您的重复频率。使用主定理也告诉我们 R(n) = Ω(n1/2)。

总的来说,我们看到你的复发是 O(n1/2) 和 Ω(n1/2) by upper - 并通过更大和更小的重复来降低你的重复。因此,即使主定理在这里不适用,您仍然可以使用主定理声称运行时间将为 Θ(n1/2).

希望对您有所帮助!