← 返回内容列表

主定理管不到的情况:这些递推式别硬套

分享本文
主定理管不到的情况:这些递推式别硬套

主定理只认"除法型" aT(n/b)+f(n)。减法型、根号型、临界处负指数(如 n/log n)都会让它失效。本文列三类典型,并给出正确解法。

主定理管不到 / 要小心的递推式T(n)=T(n-1)+Θ(n)减法型,不是除法型用求和 = Θ(n²),主定理前提 aT(n/b) 不满足T(n)=2T(n/2)+n/log n比临界值 n 略小情况2 要求 logᵏn(k≥0);这里"负指数"→ Θ(n log log n)T(n)=T(√n)+Θ(1)根号递归换元 m=log n → T(2^m)=T(m)+1 → Θ(log log n)凡"非 aT(n/b) 除法型"或"临界处负指数",主定理直接套会错

图:三类主定理失效/需小心的递推式,须换方法(求和/换元)

主定理有清晰的前提:递推必须是 T(n)=aT(n/b)+f(n)T(n)=aT(n/b)+f(n),且 f(n)f(n) 与临界值 nlogban^{\log_b a}多项式差距。以下三类会"卡不到":

1. 减法型:T(n)=T(n1)+Θ(n)T(n)=T(n-1)+\Theta(n)

规模每次减 1 而非除以 bb,主定理前提不满足。直接求和:T(n)=i=1nΘ(i)=Θ(n2)T(n)=\sum_{i=1}^n \Theta(i)=\Theta(n^2)。背公式会误判成 Θ(n)\Theta(n)

2. 临界处负指数:T(n)=2T(n/2)+n/lognT(n)=2T(n/2)+n/\log n

n/lognn/\log n 比临界值 nn 只少一个对数(亚多项式),三情况都精确卡不到。展开递归树得 Θ(nloglogn)\Theta(n\log\log n)

3. 根号型:T(n)=T(n)+Θ(1)T(n)=T(\sqrt n)+\Theta(1)

换元 m=log2nm=\log_2 n,则 T(2m)=T(m)+1T(2^m)=T(m)+1,变成关于 mm 的加法递推,解得 Θ(loglogn)\Theta(\log\log n)

参考代码:减法型用求和而非主定理

def subtractive(n):
    total, k = 0, n
    while k > 0:                 # T(n)=T(n-1)+k,逐层求和
        total += k
        k -= 1
    return total                 # = n(n+1)/2 = Θ(n^2),不是 Θ(n)

print(subtractive(5))           # 15

结论:凡"非除法型"或"临界处负指数",先回到递归树/求和/换元,别硬套主定理。

关联推荐

评论 (0)

正文划词可点「问萝卜特」——自动发评论并由 AI 回复

加载评论中…

主定理管不到的情况:这些递推式别硬套 | 必学必会