Método de Akra–Bazzi

Em ciência da computação, o método de Akra–Bazzi, ou teorema Akra–Bazzi, é utilizado para analisar o comportamento assintótico de recorrências que aparecem na análise de algoritmos de divisão e conquista onde o sub-problemas têm substancialmente diferentes tamanhos. É uma generalização do teorema mestre para recorrências de divisão e conquista, que assume que os sub-problemas possuem o mesmo tamanho. O método recebe o nome dos matemáticos Mohamad Akra e Louay Bazzi[1].

Formulação

O método de Akra–Bazzi aplica-se a fórmulas de recorrência da forma[1]

T ( x ) = g ( x ) + i = 1 k a i T ( b i x + h i ( x ) ) para  x x 0 . {\displaystyle T(x)=g(x)+\sum _{i=1}^{k}a_{i}T(b_{i}x+h_{i}(x))\qquad {\text{para }}x\geq x_{0}.}

As condições para o uso são:

  • foram fornecidos casos base suficientes
  • a i {\displaystyle a_{i}} b i {\displaystyle b_{i}} são constantes para todo  i {\displaystyle i}
  • a i > 0 {\displaystyle a_{i}>0} para todo  i {\displaystyle i}
  • 0 < b i < 1 {\displaystyle 0<b_{i}<1} para todo  i {\displaystyle i}
  • | g ( x ) | O ( x c ) {\displaystyle \left|g(x)\right|\in O(x^{c})} , onde  c {\displaystyle c} é uma constante e  O {\displaystyle O} denota a notação Grande-O.
  • | h i ( x ) | O ( x ( log x ) 2 ) {\displaystyle \left|h_{i}(x)\right|\in O\left({\frac {x}{(\log x)^{2}}}\right)}  para todo  i {\displaystyle i}
  • x 0 {\displaystyle x_{0}} é uma constante

O comportamento assintótico de T ( x ) {\displaystyle T(x)} é encontrado determinando o valor de p {\displaystyle p} no qual  i = 1 k a i b i p = 1 {\displaystyle \sum _{i=1}^{k}a_{i}b_{i}^{p}=1} e substituindo esse valor na equação[2]

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)}

Intuitivamente, h i ( x ) {\displaystyle h_{i}(x)} representa uma pequena perturbação no índice de T {\displaystyle T} . Observando que b i x = b i x + ( b i x b i x ) {\displaystyle \lfloor b_{i}x\rfloor =b_{i}x+(\lfloor b_{i}x\rfloor -b_{i}x)} e que o valor absoluto de b i x b i x {\displaystyle \lfloor b_{i}x\rfloor -b_{i}x} está sempre entre 0 {\displaystyle 0} e 1 {\displaystyle 1} , h i ( x ) {\displaystyle h_{i}(x)} pode ser usado para ignorar a função piso no índice. Da mesma forma, também se pode ignorar a função de teto. Por exemplo, 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)} , conforme o teorema de Akra–Bazzi, têm o mesmo comportamento assintótico.

Exemplo

Suponha que T ( n ) {\displaystyle T(n)} é definido como 1 para números inteiros 0 n 3 {\displaystyle 0\leq n\leq 3} e n 2 + 7 4 T ( 1 2 n ) + T ( 3 4 n ) {\displaystyle 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)} para inteiros n > 3 {\displaystyle n>3} . Na aplicação do método de Akra–Bazzi, o primeiro passo é encontrar o valor de p {\displaystyle p} tal que 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} . Nesse exemplo, p = 2 {\displaystyle p=2} . Então, usando a fórmula, o comportamento assintótico pode ser determinado da seguinte forma[3]: {\displaystyle } {\displaystyle } {\displaystyle } {\displaystyle } {\displaystyle } {\displaystyle } {\displaystyle }

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 {\begin{aligned}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).\end{aligned}}}

Significado

O método de Akra–Bazzi é mais útil do que a maioria de outras técnicas para a determinação do comportamento assintótico, pois cobre uma ampla variedade de casos. A sua principal aplicação é a aproximação do tempo de execução de muitos algoritmos de divisão e conquista. Por exemplo, no merge sort, o número de comparações necessárias, no pior caso, que é aproximadamente proporcional ao seu tempo de execução, é dado recursivamente como 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}

para inteiros n > 0 {\displaystyle n>0} e, portanto, pode ser calculado usando o método de Akra–Bazzi, onde obtém-se  Θ ( n log n ) {\displaystyle \Theta (n\log n)} .

Referências

  1. a b «On the solution of linear recurrence equations». Computational Optimization and Applications. 10 – via Springer Link 
  2. «Proof and application on few examples» (PDF) 
  3. Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford. Introduction to Algorithms. [S.l.: s.n.] ISBN 978-0262033848 

Ver também

  • Teorema mestre (análise de algoritmos)
  • Complexidade assintótica

Ligações externas

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