假设您有一个重复发生
范围为正实数。
T(n)={T(n−nc)+T(nc)+f(n)1n > 2otherwise
我们可以用这个功能做什么?好吧,除非我们在上面叠加某些结构,否则不会很多。我来自一个数值分析背景,上面铺满了一些数字配方,即使根本问题不够平滑(没关系,让我们仍然将牛顿方法抛在已分解的差异上)或过于复杂而无法分析(排序)这样的问题)。我对这些问题的直觉反应是做出一些手摇的假设,双手合十,并希望取得最好的成绩。在这种情况下,似乎给出了比较好的界限。
我尤其要做出两个主要假设。这些假设之一或多或少是毫无根据的,但是没有它,我们将走得不远。另一个具有不错的视觉直觉,您可以希望看到它,但它比其他任何东西都要动手。
- 我将假定是“平滑的”。很容易看出并非在各处都是可微的。实际上,它甚至不是连续的,因为对于和,和。因此,给定由或生成的迭代映射,如果的迭代树包含,则将在处包含不连续性T (n )f (n )= log (n )c = 1T(n)T(n)f(n)=log(n)c=12LIM Ñ → 2 + Ť (Ñ )= 2 + LN 2 Ñ ↦ √limn→2−T(n)=1limn→2+T(n)=2+ln2 ñ↦ñ- √n↦n−−√ T(n)n2nnT(n)n↦n−n−−√T(n)n2在其轨迹中的某处。这是很多不连续的地方,甚至可能使Dirichlet的功能物有所值。如果我们要比较一个函数的行为与一个无处连续函数的原型示例的行为,那么尝试声称它是“平滑的”是否可笑呢?好吧,事实证明,在实践中,这些不连续性的影响逐渐减小,以至于当趋于无穷大时,您的图形看起来几乎是平滑的!因此,我建议我们放下干草叉,在这种情况下,我们只想反观。特别是,我将假设在任何感兴趣的点都离原点足够远nnT(n)在某个邻域附近是可区分的,或者至少是近似可区分的。
- 当足够远时,我还将假设更强的平滑度。假设是某个亚线性函数,使得(例如),则导数可以直观地讲,当足够慢时,变化不会很大。直觉上,随着变大,邻域的相对大小减小(因为其大小仅为,最终比慢得多)。最终,该邻域的大小变得微不足道(相对于α (Ñ )ñ > α (Ñ )ñ Ç Ť '(ξ ∈ (ñ - α (Ñ ),Ñ )α (Ñ )ñ (ñ - α (Ñ ),Ñ )α (Ñ )ñ Ñ Ť (n )nα(n)n>α(n)ncT′(ξ∈(n−α(n),n)α(n)n(n−α(n),n)α(n)nn),该邻域内的变化率不再发生任何大的变化。T(n)
现在,这两个属性都是假设的,我不知道如何以任何严格的方式进行实际证明。但是,就像我之前说过的,让我们共同努力,并希望取得最好的成绩。
让我们从递归关系:
现在,我假设在和之间的间隔足够平滑。吸引我们经典的分析工具之一的均值定理可得出
此外,当足够大时,我们假设在整个时间间隔内大致相同,因此也取该时间间隔内任何有限差分的值。这意味着
Ťñ-ñÇñŤ(Ñ)-Ť(ñ- Ñ Ç)
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ÑŤ'(ξ)Ť'(ξ)≈Ť(Ñ)-Ť(ñ-ε)T(n)−T(n−nc)nc=T′(ξ∈(n−nc,n)).
nT′(ξ)ε=1 ñ Ç(Ť (Ñ )- Ť (ñ - 1 ))T′(ξ)≈T(n)−T(n−ϵ)ϵ ϵ<nc
特别地,取得到一个逐步除差近似
我们可以通过望远镜得出
ϵ=1nc(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
扰动揭示了具有两个渐近相位,这取决于的渐近性质。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
借助平滑度参数,我们可以再次将其视为左锚Riemann和,近似积分。在积分上应用相似的均值定理得出
我们可以继续用近似,得出
对于限制该系列的某个常数,其近似值
。∫nT(xc)xcdx
∑kT(kc)kc≈∫nf(xc)xcdx=nT(ξ<nc)ξc
nT(nc)ncT(n)≤nMT(nc)nc+Fc(n)
M
现在,假设我们有一个迭代序列,其中,则可以使用此序列来伸缩上述不等式以获得:
再一次,我们可以绑定所述由一些常数项来查找
,其中。简化一点并将一些项合并在一起(特别是,我们知道(n,nc,nc2,nc3,…,nck)nck<2Fc(nc
T(n)≤n(∑ik−1MinciFc(nci)+Mknck)(*)
Fc(nci)T(n)=O(Fc(n)+nFc(nc)(Mn−c+M2n−c2+⋯+Mkn−ck))
k=logc(log(2)log(n))Mn−cn−ck是一个常数),我们得到
T(n)=O(nkFc(n)Mk)
但是,此界限相对较松散,应尽可能引用。(*)
请注意,这绝不是严格的。我没有提供任何支持,认为这应该超出一些笨拙的近似值。不过,如果您只是为了进行非正式分析而需要快速进行渐近猜测,那么实际上您可以看到该方案在实践中效果很好(对于足够大的值,通常)。nn>10
无论如何,对于我尝试过的所有和选择,下面的计算
其中
似乎给出了很好的近似值。此技术还可以概括为形式的递归
,可以使用
其中cf
T^(n)F(n)=n∑klogclogn2MknckF(nck)=∑knf(k)kc
M≈∑kT(kc)kcnT(nc)nc
T(n)=T(n−α(n))+T(β(n))+f(n)
αķ(Ñ)=α(ķ⋯(α(Ñ)))#β(Ñ)Ñ,β(Ñ),β(β(Ñ)),...,β#β(Ñ)(n)12T^(n)F(n)=n∑k#β(n)Mkαk(n)F(βk(n))=∑knf(k)α(k)
αk(n)=α(⋯k(α(n)))和表示序列,使得最后一项在和之间。
#β(n)n,β(n),β(β(n)),…,β#β(n)(n)12