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+...+n⏟log2⁡n=k times=Θ(nlog⁡n)

Em seguida, enfrentei o seguinte problema:

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

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 realizalog⁡ntrabalhos. 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á 2k⋅Ce o tempo total T(n) será dada pela seguinte soma:

T(n)=∑k=1registro2⁡n2kC=C(2registro2⁡n+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)=registro2⁡n+2registro2⁡(n2)+4registro2⁡(n4)+8registro2⁡(n8)+....⏟registro2⁡n vezes

Será uma soma bastante complexa:

T(n)=registro2⁡n+∑k=1registro2⁡n2kregistro2⁡(n2k)

Denotarei temporariamente m=registro2⁡n e simplifique a soma acima:

∑k=1m2kregistro2⁡(n2k)==∑k=1m2k(registro2⁡n-k)==registro2⁡n∑k=1m2k-∑k=1mk2k==registro2⁡n(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 registro2⁡n:

T(n)=registro2⁡n+2nregistro2⁡n-2registro2⁡n-2nregistro2⁡n+2n-2
=2n-registro2⁡n-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 0registro2⁡n20 0+21registro2⁡n21+22registro2⁡n22+...+2registro2⁡nregistro2⁡n2registro2⁡n=registro2⁡n+2registro2⁡n2+4registro2⁡n4+...+nregistro2⁡1.. Esta é a série que você cria, certo? Tentando comn=8, Eu tenho registro2⁡8+2registro2⁡4+4registro2⁡2+8registro2⁡1=3+4+4=11. O que há de errado aqui?
— Anir 14/05

@anir - Use a igualdade registro2⁡(n2k)=registro2⁡n-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.