T(n)= 2T(n / 2)+ log nを再帰ツリー法で解く


9

私は再発関係を解決していました。最初の再発関係は

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

これの解は、マスター定理または再帰ツリー法で見つけることができます。再帰ツリーは次のようになります。

![ここに画像の説明を入力してください

解決策は次のとおりです。

T(n)=n+n+n+...+n⏟log2⁡n=k times=Θ(nlog⁡n)

次に私は次の問題に直面しました:

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

私の本は、マスター定理またはいくつかの代替アプローチによってさえ、この再帰は解を持つことを示しています。これは上記のツリーと同じ構造ですが、各呼び出しで作業を実行する点のみが異なり。ただし、この問題に対して上記の同じアプローチを使用することはできません。Θ(n)log⁡n

回答:


5

再帰関係の非再帰的な用語は、副問題の解をマージする作業です。(バイナリ)再帰ツリーのレベルは、サイズ部分問題が含まれているため、最初にレベル合計作業量を見つけ、次にこの作業をすべてにわたって要約する必要がありますツリーレベル。k2kn2kk

仕事が一定であれば、例えば、、その後、レベル上の総仕事あろう、および総時間以下の合計により与えられます。Ck2k⋅CT(n)

T(n)=∑k=1log2⁡n2kC=C(2log2⁡n+1−2)=Θ(n)

ただし、問題のサイズに応じて作業が対数的に増加する場合は、ソリューションを正確に計算する必要があります。シリーズは次のようになります。

T(n)=log2⁡n+2log2⁡(n2)+4log2⁡(n4)+8log2⁡(n8)+....⏟log2⁡n times

非常に複雑な合計になります。

T(n)=log2⁡n+∑k=1log2⁡n2klog2⁡(n2k)

一時的にと表記し、上記の合計を簡略化します。m=log2⁡n

∑k=1m2klog2⁡(n2k)==∑k=1m2k(log2⁡n−k)==log2⁡n∑k=1m2k−∑k=1mk2k==log2⁡n(2m+1−2)−(m2m+1−2m+1+2)

ここでは、Wolfram | Alphaオンラインシンボリック代数計算機からの合計の式を使用しました。次に、を戻す必要があります。∑k=1mk2kmlog2⁡n

T(n)=log2⁡n+2nlog2⁡n−2log2⁡n−2nlog2⁡n+2n−2
=2n−log2⁡n−2=Θ(n)

QED


1
いまいましい質問をするのにすごく愚かな間違いをした。今修正されました。ただし、シリーズの内容が互いにキャンセルし合う方法を取得することはできません ..これはあなたが来るシリーズです右で?で試して、。ここで何が問題なのですか?20log2⁡n20+21log2⁡n21+22log2⁡n22+...+2log2⁡nlog2⁡n2log2⁡n=log2⁡n+2log2⁡n2+4log2⁡n4+...+nlog2⁡1n=8log2⁡8+2log2⁡4+4log2⁡2+8log2⁡1=3+4+4=11
— 2016年

@anir-等式を使用log2⁡(n2k)=log2⁡n−k
— HEKTO

1
そのシリーズが : ' Θ(n)
— ta

@anir-私は私の答えを拡張します
— HEKTO 2016年

@HEKTO上記のコメントのequを解決しても、nlog(n)が返されますか?私はたくさん試しました。ここで私を助けてくれませんか?
— roottraveller 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.