通过归纳关系证明

Proof by induction of Recurrence Relation

我正在分析寻找算法时间复杂度的不同方法,并且在尝试使用归纳证明来解决这个特定的递推关系时遇到了很多困难。

我的 RR 是: T(n) <= 2T(n/2) + √n

我假设你会假设 n 并证明 n-1?谁能帮帮我。

让我们假设 T(0) = 0,T(1) = 1(因为您没有给出任何微不足道的情况)。 因此,我们有:T(2) = 3.41,T(4) = 8.82,T(6) = 14.57,T(8) = 20.48,T(10) = 26.51。这似乎是一个线性函数。

所以,我们可以假设 T(n) <= C * n + o(n).

这个可以用归纳法证明。假设每个 k<n.

T(k) <= C*(k) + o(k) = C*(k) + o(n).

我们应该证明T(n) <= C*n + o(n). 使用递归,T(n) <= 2*T(n/2) + sqrt(n) <= 2*(C*(n/2) + o(n)) + sqrt(n) = C*n + (2*o(n) + sqrt(n)) = C*n + o(n).

因此,我们证明了T(n) <= C*n + o(n),这保证了T(n)至少是O(n)

另外可以证明T(x) = 2T(x/2) + sqrt(x), T(0)=0, T(1)=1的解是T(x) = (2x-sqrt(2x))/(2-sqrt(2)).

如果用归纳法证明,那么假设对K成立,对2*k或2^k证明。

首先,检查 T(1):

T(1) <= 2T(1/2) + √n

(假设 T(1/2) = 1)T(1) = 2 + √n <= O(√n log n)

现在,假设它对 T(k) 成立。

=> T(k) <= O(√n log n) T(k) <= 2T(k/2) + √n <= c(√n log n)

证明,T(2k):

T(2k) <= 2T(2k/2) + √(2k)
=> T(2k) <= 2(c(√k log k) + √(2k)
=> T(2k) <= √2 * [2(c(k log k) + √(2k)] //(不等式)
=> T(2k) <= [c'(2k log 2k)] => T(2k) <= O(√n log n)

增长率:

(c < log n < log2n < √n < n < n log nn < n log n < n(1.1) < n2 < n3 < n4 < 2n)