Akra–Bazzi 定理

· · 个人记录

Akra–Bazzi 定理

前言

主定理狗都不学!,我写本文的起因是这篇帖子和这篇。

由于 Akra–Bazzi 定理涉及到积分相关知识,所以还是建议先去学习主定理。

主定理有很多情况不适用,上一篇日报结尾也提到了另一种时间复杂度计算方法——Akra–Bazzi 定理,但因为当时我太菜了,所以不会。

主定理的局限性

主定理只适用于:

T(n)=aT(\frac{n}{b})+f(n)

类型的递归式,并且 f(n) 必须要和 n^{\log_ba}n^\epsilon 的差距或有 \log 的差距 ,下面式子就不适用了:

T(n)=4T(\frac{n}{2})+\frac{n^2}{\log n} T(n)=3T(\frac{n}{2})+4T(\frac{n}{4})+n

这个时候就可以用递归树解决,或者用 Akra–Bazzi 定理。

Akra–Bazzi 定理介绍

Akra–Bazzi 定理适用于递归公式

\Theta(1) & x<x_0\\ g(x)+\sum_{i=1}^{k}a_iT(b_ix+h_i(x)) & x\geq x_0 \end{matrix}\right.

其中:

求出 p 使得 \sum_{i=1}^{k}a_ib_i^p=1,那么就有:

T(x)\in\Theta\left(x^p\left(1+\int_{1}^x\frac{g(u)}{u^{p+1}}du\right)\right)

例子

例一

T(n)=3T(\frac{n}{2})+4T(\frac{n}{4})+n

这时 a=\{3,4\},b=\left\{\frac12,\frac14\right\},使 \frac{3}{2^p}+\frac{4}{4^p}=1,即 p=2

&=\Theta\left(n^2\left(1+\frac{n-1}{n}\right)\right) \\ &=\Theta\left(n^2\cdot\frac{2n-1}{n}\right) \\ &=\Theta\left(2n^2-n\right) \\ &=\Theta\left(n^2\right)\end{aligned}

例二

T(n)=4T(\frac{n}{2})+\frac{n^2}{\log n}

这时 a=4,b=\dfrac{1}{2},使 \frac{4}{2^p}=1,即 p=2

\begin{aligned}T(n)&=\Theta\left(n^2\left(1+\int_1^n\frac{\frac{x^2}{\log x}}{x^3}dx\right)\right) \\ &=\Theta\left(n^2\left(1+\int_1^n\frac{1}{x\log x}dx\right)\right) \\ &=\Theta\left(n^2\left(1+\log\log n\right)\right) \\ &=\Theta\left(n^2\log\log n\right)\end{aligned}

Akra–Bazzi 定理证明

我不会,长大之后再学(

参考文献

Akra–Bazzi method - Wikipedia