Método de Akra–Bazzi

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa

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

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

  • foram fornecidos casos base suficientes
  • aibi são constantes para todo i
  • ai>0 para todo i
  • 0<bi<1 para todo i
  • |g(x)|O(xc), onde cé uma constante e O denota a notação Grande-O.
  • |hi(x)|O(x(logx)2) para todo i
  • x0 é uma constante

O comportamento assintótico de T(x) é encontrado determinando o valor de p no qual i=1kaibip=1 e substituindo esse valor na equação[2]

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

Intuitivamente, hi(x) representa uma pequena perturbação no índice de T. Observando que bix=bix+(bixbix) e que o valor absoluto de bixbix está sempre entre 0 e 1, hi(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(12n) e T(n)=n+T(12n), conforme o teorema de Akra–Bazzi, têm o mesmo comportamento assintótico.

Exemplo

Suponha que T(n) é definido como 1 para números inteiros 0n3 e n2+74T(12n)+T(34n) para inteiros n>3. Na aplicação do método de Akra–Bazzi, o primeiro passo é encontrar o valor de p tal que 74(12)p+(34)p=1. Nesse exemplo, p=2. Então, usando a fórmula, o comportamento assintótico pode ser determinado da seguinte forma[3]:

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

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 e

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

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

Referências

Ver também

Ligações externas

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