Metodo di Akra-Bazzi

In informatica, il metodo Akra-Bazzi, o teorema Akra-Bazzi, è utilizzato per analizzare il comportamento asintotico delle ricorrenze matematiche che appaiono nello studio degli algoritmi divide et impera, in cui i diversi sottoproblemi hanno dimensioni decisamente differenti. È una generalizzazione del teorema principale, in cui si assume che i sottoproblemi abbiano invece dimensioni simili.

La formula

Il metodo Akra-Bazzi si applica alle formule ricorsive del tipo:

T ( x ) = g ( x ) + i = 1 k a i T ( b i x + h i ( x ) ) , {\displaystyle T(x)=g(x)+\sum _{i=1}^{k}a_{i}T(b_{i}x+h_{i}(x)),}

per x x 0 . {\displaystyle x\geq x_{0}.}

Le pre-condizioni sono:

  • vi sono sufficienti casi base;
  • a i {\displaystyle a_{i}} e b i {\displaystyle b_{i}} sono costanti per ogni i ; {\displaystyle i;}
  • a i > 0 {\displaystyle a_{i}>0} per ogni i ; {\displaystyle i;}
  • 0 < b i < 1 {\displaystyle 0<b_{i}<1} per ogni i ; {\displaystyle i;}
  • | g ( x ) | O ( x c ) {\displaystyle \left|g'(x)\right|\in O(x^{c})} , dove c {\displaystyle c} è una costante e O {\displaystyle O} è la notazione O grande;
  • | h i ( x ) | O ( x ( log x ) 2 ) {\displaystyle \left|h_{i}(x)\right|\in O\left({\frac {x}{(\log x)^{2}}}\right)} per ogni i ; {\displaystyle i;}
  • x 0 {\displaystyle x_{0}} è una costante.

Il comportamento asintotico di T ( x ) {\displaystyle T(x)} si trova determinando il valore di p {\displaystyle p} per cui i = 1 k a i b i p = 1 {\displaystyle \sum _{i=1}^{k}a_{i}b_{i}^{p}=1} , sostituendolo poi nell'equazione

T ( x ) Θ ( x p ( 1 + 1 x g ( u ) u p + 1 d u ) ) {\displaystyle T(x)\in \Theta \left(x^{p}\left(1+\int _{1}^{x}{\frac {g(u)}{u^{p+1}}}du\right)\right)}

(si veda Θ). Intuitivamente h i ( x ) {\displaystyle h_{i}(x)} rappresenta una perturbazione piccola nell'indice di T . {\displaystyle T.} notando che

b i = b i x + ( b i x b i x ) {\displaystyle \lfloor b_{i}\rfloor =b_{i}x+(\lfloor b_{i}x\rfloor -b_{i}x)}

e

b i x b i x {\displaystyle \lfloor b_{i}x\rfloor -b_{i}x}

sono sempre comprese tra 0 e 1, h i ( x ) {\displaystyle h_{i}(x)} può essere utilizzato per escludere la parte intera nell'indice, e lo stesso si può fare per la parte intera superiore.

Quindi, T ( n ) = n + T ( 1 2 n ) {\displaystyle T(n)=n+T\left({\frac {1}{2}}n\right)} e T ( n ) = n + T ( 1 2 n ) {\displaystyle T(n)=n+T\left(\left\lfloor {\frac {1}{2}}n\right\rfloor \right)} avranno, ai fini del metodo Akra-Bazzi, lo stesso comportamento asintotico.

Un esempio

Sia

T ( n ) = { 1 , se  0 n 3 , n 2 + 7 4 T ( 1 2 n ) + T ( 3 4 n ) , se  n > 3. {\displaystyle T(n)={\begin{cases}1,&{\text{se }}0\leq n\leq 3,\\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),&{\text{se }}n>3.\end{cases}}}

Applicando il metodo, il primo passo consiste nel trovare il valore di p {\displaystyle p} per cui 7 4 ( 1 2 ) p + ( 3 4 ) p = 1 {\displaystyle {\frac {7}{4}}\left({\frac {1}{2}}\right)^{p}+\left({\frac {3}{4}}\right)^{p}=1} . Nell'esempio proposto, p = 2 {\displaystyle p=2} . Usando quindi la formula, sia ha per il comportamento asintotico

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

Impiego

Il metodo Akra-Bazzi è più utile di molte altre tecniche in quanto copre un ventaglio molto ampio di casi. La sua principale applicazione è l'approssimazione del tempo di esecuzione di molti algoritmi divide et impera. Ad esempio nel merge sort, il numero di comparazioni richieste nel caso peggiore, che è all'incirca proporzionale al tempo di esecuzione, è dato ricorsivamente da T ( 1 ) = 0 {\displaystyle T(1)=0} e

T ( n ) = T ( 1 2 n ) + T ( 1 2 n ) + n 1 , {\displaystyle 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,}

per gli n > 0 {\displaystyle n>0} , e può essere valutato come Θ ( n log n ) {\displaystyle \Theta (n\log n)} .

Bibliografia

  • (EN) Mohamad Akra, Louay Bazzi, On the solution of linear recurrence equations, in Computational Optimization and Applications, vol. 10, n. 2, 1998, pp. 195-210.
  • (EN) Tom Leighton, Notes on Better Master Theorems for Divide-and-Conquer Recurrences (manoscritto, 9 pagine), Massachusetts Institute of Technology, 1996.

Voci correlate

Collegamenti esterni

  • O Método de Akra-Bazzi na Resolução de Equações de Recorrência (PT)