Metodo di Akra-Bazzi

Da testwiki.
Vai alla navigazione Vai alla ricerca

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=1kaiT(bix+hi(x)),

per xx0.

Le pre-condizioni sono:

  • vi sono sufficienti casi base;
  • ai e bi sono costanti per ogni i;
  • ai>0 per ogni i;
  • 0<bi<1 per ogni i;
  • |g(x)|O(xc), dove c è una costante e O è la notazione O grande;
  • |hi(x)|O(x(logx)2) per ogni i;
  • x0 è una costante.

Il comportamento asintotico di T(x) si trova determinando il valore di p per cui i=1kaibip=1, sostituendolo poi nell'equazione

T(x)Θ(xp(1+1xg(u)up+1du))

(si veda Θ). Intuitivamente hi(x) rappresenta una perturbazione piccola nell'indice di T. notando che

bi=bix+(bixbix)

e

bixbix

sono sempre comprese tra 0 e 1, hi(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(12n) e T(n)=n+T(12n) avranno, ai fini del metodo Akra-Bazzi, lo stesso comportamento asintotico.

Un esempio

Sia

T(n)={1,se 0n3,n2+74T(12n)+T(34n),se n>3.

Applicando il metodo, il primo passo consiste nel trovare il valore di p per cui 74(12)p+(34)p=1. Nell'esempio proposto, p=2. Usando quindi la formula, si ha per il comportamento asintotico

T(x)Θ(xp(1+1xg(u)up+1du))=Θ(x2(1+1xu2u3du))=Θ(x2(1+lnx))=Θ(x2logx).

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 e

T(n)=T(12n)+T(12n)+n1,

per gli n>0, e può essere valutato come Θ(nlogn).

Bibliografia

Voci correlate

Collegamenti esterni