You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用归纳法证明递推式T(n)=x^k T(n/x)+Cn^k的时间复杂度为O(n^k logn)

用数学归纳法证明递推式的时间复杂度

首先明确递推关系:

  • 基础情况:T(1) = 1
  • 递推式:T(n) = x^k * T(n/x) + Cn^k,其中C、k、x为常数(默认x>1,符合分治递推的常见场景)

我们的目标是证明:存在常数M>0和n₀≥1,当n≥n₀时,T(n) ≤ M n^k log n,即T(n) = O(n^k log(n))。


步骤1:先针对n为x的幂次做简化分析

先考虑n = x^m(m为非负整数),后续再扩展到一般n:

  • 当m=0时,n=1,T(1)=1。只要选取M≥1,就能满足1 ≤ M*1^k*(log1 + 1)(因为log1=0,式子右侧为M),基础情况成立。

步骤2:归纳假设

假设对于所有n' = x^t(t < m,即n' < n=x^m),均有T(n') ≤ M n'^k log n'。

步骤3:归纳步骤

计算T(n)=T(x^m):

T(x^m) = x^k * T(x^(m-1)) + C*(x^m)^k

将归纳假设代入T(x^(m-1)):

T(x^m) ≤ x^k * [M*(x^(m-1))^k * (m-1)logx] + C x^(mk)

化简第一项:x^k * x^(k(m-1)) = x^(km),代入后整理得:

T(x^m) ≤ M x^(mk) (m-1)logx + C x^(mk)
= x^(mk) [ M(m-1)logx + C ]

我们希望上式 ≤ M x^(mk) * m logx,只需满足:

M(m-1)logx + C ≤ M m logx

整理不等式得:

C ≤ M logx

由于x>1,logx>0,只要选取M ≥ C / logx,该不等式就成立。此时:

T(x^m) ≤ M x^(mk) * m logx = M n^k logn

(因为n=x^m,logn = m logx),归纳步骤得证。

步骤4:扩展到一般n

对于任意n≥1,存在整数m使得x^m ≤ n < x^(m+1)。由于递推式中各项均为正,T(n)是单调递增函数,因此:

T(n) ≤ T(x^(m+1)) ≤ M (x^(m+1))^k log(x^(m+1))

又因为x^(m+1) ≤ x*n,且当n≥x时,log(x^(m+1)) = (m+1)logx ≤ log(xn) = logx + logn ≤ 2logn,代入后得:

T(n) ≤ M x^k n^k * 2logn = (2M x^k) n^k logn

令M' = 2M x^k,则当n≥x时,T(n) ≤ M' n^k logn,结合基础情况,可确定T(n)=O(n^k logn)。


内容的提问来源于stack exchange,提问作者Alice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:45:34