T(n) = T(n/2) + clog(n) = O(log(n)^2) 的归纳证明

问题描述

log() = log base 2 of ()
log()^2 = log^2 base 2 of ()

我被这个归纳证明困住了。我有以下递归关系

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

我必须证明T(n) = O(log(n)^2)

使常量显式:

T(n) = T(n/2) + clog(n)

我知道对于 O 的定义,我必须找到 k > 0n' > 0,这样对于每个 t(n) <= k(log(n)^2)

n >= n' 假设为 true 对于每个 T(n) = O(log(n)^2) 我有 m < n 为 true :

给定
t(m) <= k(log(m)^2)
T(n) <= k(n/2)(log(n/2)^2) + c log(n) =
= k(n/2)(log(n)^2 - 1) + c log(n) .

所以

= k(n/2)(log(n)^2)) - kn/2 + c log(n)

我找不到任何 k(n/2)(log(n)^2) - kn/2 + c log(n) <=? k(log(n)^2)k 可以使它起作用,我哪里做错了?

解决方法

对于我们选择的某个固定 α,M > 0 就足以表明 T(n) ≤ α (log(n) + 1) log(n) + M,因为这个函数是 O(log(n) ²)。你没有给我们一个基本情况,所以让我们假设这对于足够小的 n 成立(通过根据需要设置 M 不失一般性)。

归纳步骤表明 T(n/2) ≤ α (log(n/2) + 1) log(n/2) + M 意味着 T(n) ≤ α (log(n) + 1) log(n) + M。我们有

T(n)
= T(n/2) + c log(n)
≤ α (log(n/2) + 1) log(n/2) + M + c log(n)
= α log(n) (log(n) − 1) + M + c log(n).

如果我们设置α=c/2,那么

T(n)
≤ α log(n) (log(n) − 1) + M + 2 α log(n).
= α (log(n) + 1) log(n) + M.