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

如何用代入法求解递推式T(n)=2T(n/2)+nlogn?原式是否有误?

递推式修正与代入法求解

原递推式的问题分析

原递推式T(n)=2T(n)(n/2)+nlogn存在核心逻辑错误:

  • 等式右侧的2T(n)*(n/2)化简后为n*T(n),导致等式变为T(n) = n*T(n) + nlogn,移项后得到T(n)*(1-n) = nlogn。当n>1时,计算出的时间复杂度为负数,完全违背算法时间复杂度的非负性定义。
  • 该式子不符合分治递推式的基本结构:分治递推式应将原问题拆分为更小的子问题(如T(n/2)),而非重复出现原问题的解T(n),无法体现分治算法“拆分-求解子问题-合并”的流程。

正确递推式的代入法求解

正确的分治递推式应为T(n)=2T(n/2)+nlogn,我们用代入法证明其解为Θ(n log²n),最紧的大O表示为O(n log²n)。

步骤1:猜测解的形式

结合递推式的分治结构(2个规模为n/2的子问题+线性对数级合并代价),猜测解的形式为T(n) = Θ(n log²n),需分别证明上界O(n log²n)和下界Ω(n log²n)。

步骤2:证明上界O(n log²n)

假设对于所有k < n,存在常数c ≥ 1,使得T(k) ≤ c k log²k成立。将其代入递推式:

T(n) = 2T(n/2) + n logn
≤ 2 * c*(n/2) * log²(n/2) + n logn
= c n (logn - 1)² + n logn
= c n (log²n - 2logn + 1) + n logn
= c n log²n - 2c n logn + c n + n logn

要使T(n) ≤ c n log²n,需满足:

-2c n logn + c n + n logn ≤ 0

两边除以n(n>0)并整理:

logn(1-2c) + c ≤ 0

取c=1,当n≥2时,logn≥1,代入得-logn +1 ≤0,显然成立。因此上界得证。

步骤3:证明下界Ω(n log²n)

假设对于所有k <n,存在常数d ≤ 1/4,使得T(k) ≥ d k log²k成立。代入递推式:

T(n) = 2T(n/2) + n logn
≥ 2*d*(n/2)*log²(n/2) + n logn
= d n (logn -1)² + n logn
= d n (log²n -2logn +1) + n logn
= d n log²n -2d n logn +d n +n logn

要使T(n) ≥ d n log²n,需满足:

-2d n logn +d n +n logn ≥0

两边除以n并整理:

logn(1-2d) +d ≥0

取d=1/4,当n≥2时,logn≥1,代入得(1/2)logn + 1/4 ≥ 3/4 >0,显然成立。因此下界得证。

综上,T(n)=Θ(n log²n),最紧的大O表示为O(n log²n)。

内容的提问来源于stack exchange,提问作者吳承祐

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:20:25