Katakanlah Anda memiliki kekambuhan
bahwa rentang lebih real positif.
T( n ) = { T( n - nc) + T( nc) + f( n )1n> 2jika tidak
Apa yang bisa kita lakukan dengan fungsi ini? Yah, tidak banyak kecuali kita menempatkan struktur tertentu di atasnya. Saya berasal dari latar belakang analisis numerik, yang diaspal dengan resep numerik yang entah bagaimana bekerja bahkan ketika masalah yang mendasarinya tidak cukup lancar (tidak masalah, mari kita masih membuang metode Newton pada perbedaan yang dibagi) atau terlalu rumit untuk dianalisis (sort seperti masalah ini). Reaksi saya terhadap masalah-masalah ini adalah membuat beberapa asumsi dengan tangan, menyilangkan jari, dan berharap yang terbaik. Dalam hal ini, tampaknya memberikan batas yang relatif bagus.
Secara khusus, saya ingin membuat dua asumsi utama. Salah satu asumsi ini kurang lebih tidak berdasar, tetapi kita tidak akan berhasil tanpa itu. Yang lain memiliki intuisi visual yang agak bagus yang mudah-mudahan Anda grok, tetapi masih jauh lebih tangan daripada yang lain.
- Saya akan menganggap bahwa adalah "smooth-ish". Cukup mudah untuk melihat bahwa T ( n ) tidak dapat dibedakan di semua tempat. Bahkan, itu bahkan tidak berkelanjutan, karena untuk f ( n ) = log ( n ) dan c = 1T( n )T( n )f( n ) = log( n ) ,limn→2-T(n)=1danlimn→2+T(n)=2+ln2. Oleh karena itu, mengingat peta iterasi yang dihasilkan olehn↦√c = 12limn → 2-T( n ) = 1limn → 2+T( n ) = 2 + ln2 ataun↦n- √n ↦ n--√ ,T(n)akan berisi diskontinuitas padanjika pohon itasinya berisi2tempat pada lintasannya. Itu adalah banyak diskontinuitas, bahkan mungkin membuat fungsi Dirichlet berjalan untuk mendapatkan uangnya. Jika kita sampai pada titik di mana kita membandingkan perilaku suatu fungsi dengan contoh prototipikal dari fungsi yang tidak berkesinambungan, tidakkah menggelikan untuk mencoba mengklaim bahwa itu "smooth-ish"? Nah, ternyata dalam prakteknya, efek diskontinuitas ini asimtotik berkurang, ke titik bahwa grafik penampilan Anda hampir halus saatnn ↦ n - n--√T( n )n2ncenderung menuju tak terbatas! Oleh karena itu, saya mengusulkan agar kita meletakkan garpu rumput dan melihat ke arah lain dalam keadaan ini. Secara khusus, saya akan berasumsi bahwa pada suatu titik yang menarik yang cukup jauh dari asal, T ( n ) dapat dibedakan, atau setidaknya kira-kira dapat dibedakan di sekitar beberapa lingkungan.nT( n )
- Saya juga akan mengasumsikan sikap kelancaran yang lebih kuat ketika cukup jauh. Misalkan α ( n ) adalah beberapa fungsi sublinear sehingga n > α ( n ) (misalnya n c ), maka turunan T ′ ( ξ ∈ ( n - α ( n ) , n ) tidak bervariasi secara signifikan ketika α ( n ) cukup lambat, secara intuitif, seperti nnα ( n )n > α ( n )ncT′(ξ∈(n−α(n),n)α(n)nsemakin besar, ukuran relatif dari lingkungan berkurang (karena ukurannya hanya α ( n ) , yang tumbuh jauh lebih lambat daripada n ). Akhirnya, ukuran lingkungan ini menjadi sangat kecil (relatif terhadap n ) sehingga laju perubahan T ( n ) dalam lingkungan ini tidak lagi mengubah semua itu secara dramatis.(n−α(n),n)α(n)nnT(n)
Sekarang, kedua properti ini diasumsikan, dan saya tidak punya ide bagaimana cara membuktikannya dengan cara yang keras. Tapi seperti yang saya katakan sebelumnya, mari kita menyilangkan jari dan berharap yang terbaik.
Mari kita mulai dengan hubungan perulangan:
Sekarang, saya akan berasumsi bahwaTcukup halus pada interval antaran-ncdann. Menarik bagi salah satu alat analitik klasik kita, teorema nilai rata-rata, memberi kita
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
Lebih lanjut, ketika
ncukup besar, kita mengasumsikan bahwa
T′(ξ)kira-kira sama sepanjang interval ini, dan karenanya mengambil nilai dari setiap perbedaan hingga dalam interval ini juga. Ini berarti bahwa
T′(ξ)≈T(n)-T(n-ϵ)T(n)−T(n−nc)nc=T′(ξ∈(n−nc,n)).
nT′(ξ)
Secara khusus, ambil
ϵ=1untuk mendapatkan pendekatan perbedaan satu langkah dibagi
n c ( T ( n ) - T ( n - 1 ) )T′(ξ)≈T(n)−T(n−ϵ)ϵ ϵ<nc
ϵ=1
Kita bisa membuat teleskop ini untuk mendapatkan
T(n)≈n∑kT(kc)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
Perturbing mengungkapkan bahwa T ( n ) memiliki dua fase asimptotik, tergantung pada sifat asimptotik dari f ( z ) .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)ncT(n)≤nMT(nc)nc+Fc(n)
M
(n,nc,nc2,nc3,…,nck)nck<2
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))) and
#β(n) denotes the number of elements of the sequence
n,β(n),β(β(n)),…,β#β(n)(n) such that the last term is between
1 and
2.