繰り返しがあるとしましょう
T(n )= { T(n − nc)+ T(nc)+ f(n )1n> 2さもないと
正の実数を超える範囲にあること。
この関数で何ができますか?確かに、特定の構造を重ねない限り、多くはありません。私は数値分析のバックグラウンドから来ました。それは、根本的な問題が十分に滑らかでない場合でも問題なく機能する数値レシピで舗装されています(問題ではありません、ニュートンの方法を分割された違いで投げましょう)または分析するには複雑すぎます(ソートこの問題のような)。これらの問題に対する私の直感的な反応は、いくつかの手を振って仮定し、指を交差させ、最善を望むことです。この場合、それは比較的良い境界を与えるようです。
特に、2つの大きな仮定をしたいと思います。これらの仮定の1つは多かれ少なかれ根拠がありませんが、それなしではそれほど遠くはありません。もう1つは、見た目がいいと思う多少直感的な直感を持っていますが、それは他の何よりもまだ手間がかかります。
- は「滑らかな」と仮定します。T (n )はどこでも微分可能ではないことを見るのはかなり簡単です。実際、f (n )= log (n )およびc = 1の場合、連続的ではありません。T(n )T(n )f(n )= ログ(n )、limn→2−T(n)=1およびlimn→2+T(n)=2+ln2c = 12リムn → 2−T(n )= 1リムn → 2+T(n )= 2 + ln2。したがって、によって生成された反復マップ所与またはnnは↦ n個−−√、T(n)はnある不連続性を含みnは↦ のn - n個−−√T(n )n、その反復ツリーが軌跡のどこかに含む場合、。それは多くの不連続点であり、それはディリクレの機能をそのお金のために走らせるかもしれません。関数の振る舞いを、どこにも連続しない関数の典型的な例の振る舞いと比較するところまで来たら、それが「滑らかな」と主張しようとするのは笑わないでしょうか?実際には、これらの不連続性の効果は漸近的に減少し、n2n無限に向かう傾向があります!したがって、私は、私たちが熊手を置いて、この状況で逆方向を見るだけであることを提案します。特に、原点から十分に離れた関心点で、T (n )は微分可能、または少なくとも近傍の周囲で少なくともほぼ微分可能であると仮定します。nT(n )
- また、が十分に離れている場合、滑らかさのさらに強いスタンスを想定します。その仮定α (nは)ように、いくつかのサブリニア関数であり、N > α (N )(例えば、N 、C)、次いで誘導体T '(ξ ∈ (N - α (N )、nは)とき顕著に変化しませんα (nが)遅い十分です。直感的に、としてのnnα (n )n > α (n )ncT′(ξ∈ (N - α (N )、N )α (n )n大きくなり、近傍の相対的な大きさ減少します(そのサイズは α (n )であるため、 nよりもはるかに遅く成長します)。最終的に、この近傍のサイズは( nに対して)あまり重要ではなくなるため、 Tの変化率((N - α(N )、N )α (n )nn内の n )の劇的には変化しません。T(n )
現在、これらのプロパティは両方とも想定されており、いずれかの厳密な方法で実際に証明する方法はまったくわかりません。しかし、私が前に言ったように、私たちの指を交差させて、最善を期待しましょう。
再帰関係から始めましょう:
ここで、Tはn−ncとnの間の区間で十分に滑らかであると仮定します。古典的な分析ツールの1つである平均値定理に注目すると、
T(n)−T(n− n c)
T(n )T( n )− T(n− nc)ncT(n )− T(n −nc)nc= T(n −nc)+T(nc)+f(n )= T(nc)+f(n )= T(nc)+f(n )
Tn − ncn
さらに、
nが十分に大きい場合、
T'(ξ)はこの区間全体でほぼ同じであるため、この区間内の有限差分の値も取ります。この次に手段は、
T'(ξ)≈T(N)-T(N-ε)T(n )−T(n − nc)nc= T′(ξ∈ (n − nc、n ))。
nT′(ξ)
特に、
ϵ=1を使用して、1ステップの差分差分近似
n c(T (n )− T (n − 1 ))を取得します。
T′(ξ)≈T(n)−T(n−ϵ)ϵ ϵ<nc
ϵ=1
我々が得るために、このアウトをはめ込むことができます
T(N)≈NΣkのT(k個のCを)nc(T(n)−T(n−1))T(n)−T(n−1)≈T(nc)+f(n)≈T(nc)+f(n)nc
T(n)≈∑knT(kc)kc+∑knf(k)kc
摂動すると、f (z )の漸近的性質に応じて、T (n )に2つの漸近相があることがわかります。T(n)T(n)f(z)
f(n)=o(nc)fncT(n)=Θ(∑knf(k)kc)∫nf(x)xcdx
f(n)=ω(nc)
(∑knT(kc)kc)+Fc(n)
Fc(n)=∫nf(x)xcdx
滑らかさの引数により、これをもう一度、整数に近い左アンカーリーマン和として見ることができます。∫nT(xc)xcdx
∑kT(kc)kc≈∫nf(xc)xcdx=nT(ξ<nc)ξc
nT(nc)nc, which gives the approximation
T(n)≤nMT(nc)nc+Fc(n)
for some constant
M that bounds the series.
Now, suppose that we have the iterated sequence (n,nc,nc2,nc3,…,nck) where nck<2, then we can use this sequence to telescope the above inequality to get:
T(n)≤n(∑ik−1MinciFc(nci)+Mknck)(*)
Once again, we can bound the
Fc(nci) term by some constant to find that
T(n)=O(Fc(n)+nFc(nc)(Mn−c+M2n−c2+⋯+Mkn−ck))
where
k=logc(log(2)log(n)). Simplifying a bit and coalescing some of the
Mn−c terms together (in particular, we know that
n−ck is a constant), we get
T(n)=O(nkFc(n)Mk)
However, this bound is relatively loose, and you should refer to (*) whenever possible.
Be aware that in no way is this rigorous. I have not provided any support that this ought to work beyond some clumsy approximations. Nevertheless, if you just need a quick asymptotic guess for the sake of informal analysis, then you can actually see that this scheme works well (for large enough values of n, usually n>10 suffices) in practice.
Anyways, for all of the choices of c and f that I've tried, the following computation
T^(n)F(n)=n∑klogclogn2MknckF(nck)=∑knf(k)kc
where
M≈∑kT(kc)kcnT(nc)nc
seems to give good approximations. This technique also generalizes to recurrences of the form
T(n)=T(n−α(n))+T(β(n))+f(n)
which can be approximated with
T^(n)F(n)=n∑k#β(n)Mkαk(n)F(βk(n))=∑knf(k)α(k)
where
αk(n)=α(⋯k(α (n ))) そして
#β(n ) シーケンスの要素数を示します
n 、β(n )、β(β(n ))、… 、β#β(n )(n ) そのような最後の用語は
1 そして
2。