Master Theorem 分治策略的递推式通常形如 T(n)=a⋅T(bn)+O(g(n)),表示原问题被分为 a 个 b 规模的子问题,原问题自身需要 g(n) 时间。 若 g(n)=Ω(nlogba+ϵ),则 T(n)=Θ(g(n)) 若 g(n)=O(nlogba−ϵ),则 T(n)=Θ(nlogba) 若 g(n)=Θ(nlogba⋅logkn),k≥0,则 T(n)=Θ(g(n)⋅logn) 直观理解: 构造了一颗 a 叉树,每层问题规模减少为 b1 倍,则树共 logbn 层,遍历这棵树需 O(alogbn)=O(nlogba) 时间 更一般地,有 Akra-Bazzi Theorem Akra-Bazzi Theorem 可以理解为泛化的主定理。 参数 p 可类比为 logba g(n) 增长慢于 np,T(n)=Θ(np) g(n) 增长等于 np,T(n)=Θ(nplogn) g(n) 增长快于 np,T(n)=Θ(g(n)) Example T(n)=k=1∑9T(k⋅n)/2025+2025k=3∏12nk3 运用自然数立方求和公式, i=1∑9aibip=20251k=1∑9kp=1 取 p=3,发现成立 lng(n)=20251k=3∑12k3⋅lnn=20251(782−9)lnn=3lnn 因此 O(g(n))=n3 因此 T(n)=O(n3logn) 例:大数乘法