Resolvendo T (n) = 2T (n / 2) + log n com o método da árvore de recorrência


9

Eu estava resolvendo relações de recorrência. A primeira relação de recorrência foi

T(n)=2T(n/2)+n

A solução deste pode ser encontrada pelo Teorema Mestre ou pelo método da árvore de recorrência. A árvore de recorrência seria algo como isto:

! [insira a descrição da imagem aqui

A solução seria:

T(n)=n+n+n+...+nlog2n=k times=Θ(nlogn)

Em seguida, enfrentei o seguinte problema:

T(n)=2T(n/2)+logn

Meu livro mostra que, pelo teorema mestre ou mesmo por alguma abordagem de substituição, essa recorrência tem a solução Θ(n). Ele tem a mesma estrutura da árvore acima, com a única diferença que a cada chamada que realizalogntrabalhos. No entanto, não consigo usar a mesma abordagem acima para esse problema.

Respostas:


5

O termo não recursivo da relação de recorrência é o trabalho para mesclar soluções de subproblemas. O nívelk da sua árvore de recorrência (binária) contém 2k subproblemas com tamanho n2k, então você precisa primeiro encontrar o trabalho total no nível k e, em seguida, resumir esse trabalho em todos os níveis da árvore.

Por exemplo, se o trabalho for constante C, então o trabalho total no nível k será 2kCe o tempo total T(n) será dada pela seguinte soma:

T(n)=k=1registro2n2kC=C(2registro2n+1-2)=Θ(n)

No entanto, se o trabalho crescer logaritmicamente com o tamanho do problema, você precisará calcular com precisão a solução. A série seria como a seguinte:

T(n)=registro2n+2registro2(n2)+4registro2(n4)+8registro2(n8)+....registro2n vezes

Será uma soma bastante complexa:

T(n)=registro2n+k=1registro2n2kregistro2(n2k)

Denotarei temporariamente m=registro2n e simplifique a soma acima:

k=1m2kregistro2(n2k)==k=1m2k(registro2n-k)==registro2nk=1m2k-k=1mk2k==registro2n(2m+1-2)-(m2m+1-2m+1+2)

Aqui eu usei uma fórmula para o k=1mk2k soma do calculadora on-line de álgebra simbólica Wolfram | Alpha . Então precisamos substituirm de volta por registro2n:

T(n)=registro2n+2nregistro2n-2registro2n-2nregistro2n+2n-2
=2n-registro2n-2=Θ(n)

QED


1
caramba, cometi um erro super estúpido ao fazer uma pergunta. Agora corrigido. No entanto, agora não sou capaz de entender como as coisas se cancelam na série:20 0registro2n20 0+21registro2n21+22registro2n22+...+2registro2nregistro2n2registro2n=registro2n+2registro2n2+4registro2n4+...+nregistro21.. Esta é a série que você cria, certo? Tentando comn=8, Eu tenho registro28+2registro24+4registro22+8registro21=3+4+4=11. O que há de errado aqui?
Anir 14/05

@anir - Use a igualdade registro2(n2k)=registro2n-k
HEKTO

1
Eu ainda não entendi como essa série entra em colapso Θ(n) : '¬ (Math-noob-here ...
anir

@anir - Vou expandir a minha resposta
HEKTO

@HEKTO Se você resolver o comentário acima, ainda recebe o nlog (n) ?? Eu tentei muito. você poderia me ajudar aqui?
roottraveller
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.