Théorème d'Akra-Bazzi
# Théorème d'Akra-Bazzi

En informatique, le théorème d'Akra-Bazzi, appelé aussi la méthode d'Akra-Bazzi, sert à déterminer le comportement asymptotique des solutions de suites définies par récurrence qui apparaissent dans l'analyse asymptotique des coûts d'algorithme, notamment de la classe des algorithmes diviser pour régner. Le théorème est publié en 1998 et constitue une généralisation du Master theorem, puisque ce dernier ne s'applique qu'aux algorithmes du type « diviser pour régner » dont les sous-problèmes sont essentiellement de même taille.

## Formulation mathématique

On considère l'équation de récurrence :

    $T(x)=g(x)+\sum _{i=1}^{k}a_{i}T(b_{i}x+h_{i}(x))\quad$ pour $x\geq x_{0},$

où $T:\mathbb {R} ^{+}\to \mathbb {R} ^{+}$ est une fonction qui satisfait les conditions suivantes :

* La fonction est définie pour un nombre suffisant de valeurs initiales pour admettre une solution unique ;
* Les nombres $a_{i}$ et $b_{i}$ sont des constantes pour tous les indices $i$, et $a_{i}>0$ et $0<b_{i}<1$ ;
* Pour la dérivée $g'(x)$ de $g(x)$, on a $\left|g'(x)\right|=O\left(x^{c}\right)$, pour une constante $c$ ($O$ est le symbole de la notation de Landau) ;
* $\left|h_{i}(x)\right|=O{\Bigl{\frac {x}{\log ^{2}x}}{\Bigr )}$ pour tout i ;
* $x_{0}$ est une constante.

Alors $T(x)$ admet l'estimation suivante de son comportement asymptotique ($\Theta$ le symbole de la notation de Landau) :

    $T(x)=\Theta \left(x^{p}\left(1+\int _{1}^{x}{\frac {g(u)}{u^{p+1}}}\,\mathrm {d} u\right)\right)$

où $p\in \mathbb {R} ^{+}$ est tel que $\sum _{i=1}^{k}a_{i}b_{i}^{p}=1$.

Les fonctions $h_{i}(x)$ représentent une petite perturbation de l’argument de T. Comme $\lfloor b_{i}x\rfloor =b_{i}x+(\lfloor b_{i}x\rfloor -b_{i}x)$ et comme $\lfloor b_{i}x\rfloor -b_{i}x$ est toujours compris entre 0 et 1, on peut utiliser $h_{i}(x)$ pour ignorer les différences avec les parties fractionnaires de l’argument. Par exemple, les fonctions $T(n)=n+T\left({\frac {1}{2}}n\right)$ et $T(n)=n+T\left(\left\lfloor {\frac {1}{2}}n\right\rfloor \right)$ ont, d'après le théorème d'Akra-Bazzi, le même comportement asymptotique.

Une variante de la condition sur la dérivée $g'(x)$ de $g(x)$ est la condition de croissance polynomiale de $g(x)$ qui s'énonce comme suit : il existe des constantes positives $c_{1}$ et $c_{2}$ telles que pour $x\geq 1$ on ait

    $c_{1}g(x)\leq g(u)\leq c_{2}g(x)$

pour tout réel $u$ dans la réunion des intervalles $[b_{i}x,x]$, pour $1\leq i\leq k$.

## Exemples

### Tri fusion

Pour le tri fusion le nombre T(n) de comparaisons qui est une bonne mesure de sa complexité en temps est donné par l'équation récursive :

    $T(n)=T\left(\left\lfloor {\frac {1}{2}}n\right\rfloor \right)+T\left(\left\lceil {\frac {1}{2}}n\right\rceil \right)+n+1$,

avec comme cas initial $T(1)=0$. On peut appliquer le théorème d'Akra-Bazzi avec $g(u)=u+1$, $k=2$, $a_{1}=a_{2}=1$, $b_{1}=b_{2}=1/2$, et $p=1$, et on obtient le comportement asymptotique

    $T(n)=\Theta \left(n\left(1+\int _{1}^{n}{\frac {u+1}{u^{2}}}\,\mathrm {d} u\right)\right)=\Theta \left(n\left(\ln n+2-{\frac {1}{n}}\right)\right)=\Theta (n\,\log n)$.

### Diviser pour régner avec des sous-problèmes inégaux

On considère $T(n)$ définie par

    $T(n)=n^{2}+{\frac {7}{4}}T\left(\left\lfloor {\frac {1}{2}}n\right\rfloor \right)+T\left(\left\lceil {\frac {3}{4}}n\right\rceil \right)\quad$ pour $n>3$

et $T(n)=1$ pour $0\leq n\leq 3$. On prend $p=2$ de sorte que

    ${\frac {7}{4}}\left({\frac {1}{2}}\right)^{p}+\left({\frac {3}{4}}\right)^{p}=1$.

La formule s'évalue alors comme suit :

    $T(x)=\Theta \left(x^{p}\left(1+\int _{1}^{x}{\frac {g(u)}{u^{p+1}}}\,\mathrm {d} u\right)\right)=\Theta \left(x^{2}\left(1+\int _{1}^{x}{\frac {u^{2}}{u^{3}}}\,\mathrm {d} u\right)\right)=\Theta (x^{2}(1+\ln x))=\Theta (x^{2}\log x).$

## Importance et autres exemples

Le théorème d'Akra-Bazzi couvre une très vaste classe d'équations récursives et généralise de manière substantielle les résultats connus précédemment pour déterminer le comportement asymptotique. Il est utilisé en informatique pour déterminer la complexité en temps d'algorithmes récursifs du type diviser pour régner. Les exemples suivants sont donnés dans les notes de Leighton et repris dans un cours de Chowdhury

### Exemple 1

    $T(x)=2T\left({\frac {x}{4}}\right)+3T\left({\frac {x}{6}}\right)+\Theta (x\log x)$

On a $p=1$ et

    $T(x)=\Theta \left(x\left(1+\int _{1}^{x}{\frac {u\log u}{u^{2}}}\,\mathrm {d} u\right)\right)=\Theta (x\log ^{2}x)$

### Exemple 2

    $T(x)=2T\left({\frac {x}{2}}\right)+{\frac {8}{9}}T\left({\frac {3}{4}}x\right)+\Theta \left({\frac {x^{2}}{\log x}}\right)$

On a $p=2$ et

    $T(x)=\Theta \left(x^{2}\left(1+\int _{1}^{x}{\frac {u^{2}/\log u}{u^{3}}}\,\mathrm {d} u\right)\right)=\Theta \left({\frac {x^{2}}{\log \log x}}\right)$

### Exemple 3

    $T(x)=T\left({\frac {x}{2}}\right)+\Theta (\log x)$

On a $p=0$ et

    $T(x)=\Theta \left(1+\int _{1}^{x}{\frac {\log u}{u}}\,\mathrm {d} u\right)=\Theta (\log ^{2}x)$

### Exemple 4

    $T(x)={\frac {1}{2}}T\left({\frac {x}{2}}\right)+\Theta \left({\frac {1}{x}}\right)$

On a $p=-1$ et

    $T(x)=\Theta \left({\frac {1}{x}}\left(1+\int _{1}^{x}{\frac {1}{u}}\,\mathrm {d} u\right)\right)=\Theta \left({\frac {\log x}{x}}\right)$
