再帰


7

再帰を調べています これは、特定されていないアルゴリズムの実行時間を示しています(基本ケースは提供されていません)。

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

帰納法を使用して、であることがわかりましたが、これはきついとは言われていません。実際、帰納的にすべてのと仮定しT(n)=O(nlog⁡n)T(k)≤Cklog⁡kk<n (そして十分に大きな値 k)、次に

T(n)≤Cn2log⁡n2+Cn3log⁡n3+n=C56nlog⁡n−n(C/2+Clog⁡3/3−1).

今私は選びます C 十分な大きさ (C/2+Clog⁡3/3−1)>0、したがって、最後の式は C56nlog⁡n≤Cnlog⁡n。

私の最初の質問は、これより厳しい制限は何ですか?

次に、Akra-Bazziメソッドを使用してこれを解決しようとしたので、 p 解決する

(12)p+(13)p=1.
それからおよそ p=0.79、および(と g(ん)=ん)なる
∫1んg(あなた)あなたp+1dあなた=∫1ん1あなたpdあなた=11−p(ん1−p−1)、
など

T(ん)=Θ(んp(1+11−p(ん1−p−1)))。

これは Θ(np+11−pn−11−pnp)、全体的に Θ(n)、以来 p<1。私の2番目の質問は、私はそれを本当に信じていないということですT 線形であるので、Akra-Bazziのアプリケーションで何が問題になりましたか?

宜しくお願いします。

回答:


5

もし T(1)≤6 そして T(2)≤12、それを示すことができます T(n)≤6n 誘導によって。

T(n)=T(n/2)+T(n/3)+n≤6(n/2)+6(n/3)+n=6n.

より一般的には、 c>6 そのような定数であること T(1)≤c そして T(2)≤2c、それから私たちは日常的にそれを証明することができます T(n)≤cn。信じられないように思えるかもしれませんが、

T(n)=O(n).

直感的に、 12+13<1、用語 T(n/2) そして T(n/3) 持ち上げるのに十分な大きさではありません n の力に n より大きな指数の。

Akra-Bazzi法の適用には何の問題もありません。 T(n)=Θ(n)。


4

しましょう S(ん)=T(ん)/ん。その後S(ん) 再発を満たす

S(ん)≤12S(ん2)+13S(ん3)+1。
特に、 C 満たす
12C+13C+1≤C
その後 S(ん/2)、S(ん/3)≤C 意味する S(ん)≤C。これはすべての場合に当てはまりますC≥6。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.