Załóżmy, że masz wznowę
wykracza poza reale dodatnie.
T(n)={T(n−nc)+T(nc)+f(n)1n > 2otherwise
Co możemy zrobić z tą funkcją? Cóż, niewiele, chyba że nałożymy na nią pewne struktury. Pochodzę z analizy numerycznej, która jest oparta na przepisach numerycznych, które w jakiś sposób działają, nawet jeśli podstawowy problem jest albo niewystarczająco gładki (nieważne, nadal rzucamy metodę Newtona na podzielone różnice) lub zbyt skomplikowany do analizy (sortuj tego typu problemu). Moja reakcja na te problemy polega na tym, aby wyciągnąć ręcznie założone założenia, trzymać kciuki i mieć nadzieję na najlepsze. W tym przypadku wydaje się, że daje stosunkowo dobre granice.
W szczególności chcę przyjąć dwa główne założenia. Jedno z tych założeń jest mniej lub bardziej bezpodstawne, ale bez niego nie zajedziemy daleko. Drugi ma nieco przyjemną wizualną intuicję, którą, miejmy nadzieję, grok, ale nadal jest bardziej ręczny niż cokolwiek innego.
- Zakładam, że jest „gładkie”. Dość łatwo zauważyć, że T ( n ) nie wszędzie jest różniczkowalna. W rzeczywistości, nawet nie jest ciągły, ponieważ dla F ( n ) = log ( n ) i c = 1T(n)T(n)f(n)=log(n)c=12limn→2−T(n)=1limn→2+T(n)=2+ln2n↦n−−√n↦n−n−−√T(n)n2gdzieś na swojej trajektorii. To wiele nieciągłości, może nawet uruchomić funkcję Dirichleta za swoje pieniądze. Jeśli dochodzimy do punktu, w którym porównujemy zachowania funkcji z prototypowym przykładem funkcji nigdzie ciągłej, czy nie jest zabawne twierdzenie, że jest ona „gładka”? Okazuje się, że w praktyce skutki tych nieciągłości zmniejszają się asymptotycznie do tego stopnia, że twój wykres wygląda prawie gładko, gdy zmierza w kierunku nieskończoności! Dlatego proponuję, abyśmy odłożyli widły i po prostu spojrzeli w drugą stronę w tej sytuacji. W szczególności założę, że w dowolnym punkcie zainteresowania który jest wystarczająco daleko od źródła,nnT(n)jest różnicowalny lub przynajmniej w przybliżeniu różnicowalny w niektórych dzielnicach.
- Przyjmę również jeszcze silniejszą postawę gładkości, gdy jest wystarczająco daleko. Załóżmy, że jest jakąś funkcją podliniową, taką jak (na przykład ), to pochodna ma nie zmienia się znacząco, gdy jest wystarczająco wolny. Intuicyjnie, gdy staje się większy, względny rozmiar sąsiedztwa zmniejsza się (ponieważ jego rozmiar to po prostu , który rośnie znacznie wolniej niż .) W końcu wielkość tego sąsiedztwa staje się tak nieznaczna (w stosunku donα(n)n>α(n)ncT′(ξ∈(n−α(n),n)α(n)n(n−α(n),n)α(n)nn), że szybkość zmiany w tym sąsiedztwie nie zmienia już tak radykalnie.T(n)
Teraz obie te właściwości są zakładane i nie mam pojęcia, jak się udowadniać w jakikolwiek rygorystyczny sposób. Ale jak powiedziałem wcześniej, trzymajmy kciuki i miejmy nadzieję na najlepsze.
Zacznijmy od relacji powtarzalności:
Teraz założę, że jest wystarczająco gładki w przedziale między i . Odwoływanie się do jednego z naszych klasycznych narzędzi analitycznych, twierdzenia o wartości średniej, daje nam
Ponadto, gdy jest wystarczająco duże, zakładamy, że jest w przybliżeniu takie samo w tym przedziale, a zatem przyjmuje również wartość dowolnej skończonej różnicy w tym przedziale. Oznacza to, że
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−ncnT(n)−T(n−nc)nc=T′(ξ∈(n−nc,n)).
nT′(ξ)T′(ξ)≈T(n)−T(n−ϵ)ϵ ϵ<nc
W szczególności weź aby uzyskać jeden -step aproksymacja podzielonej różnicy
Możemy to teleskopować, aby uzyskać
ϵ=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
Perturbing ujawnia, że ma dwie fazy asymptotyczne, w zależności od asymptotycznej natury .T(n)T(n)f(z)
Gdy ( jest szybszy niż ), wówczas dominuje suma prawa, a my mamy które często można aproksymować całką .f(n)=o(nc)fncT(n)=Θ(∑knf(k)kc)∫nf(x)xcdx
Kiedy , wówczas lewa suma dominuje po prawej stronie. Tutaj musimy przeanalizować sumę
gdzie .f(n)=ω(nc)
(∑knT(kc)kc)+Fc(n)
Fc(n)=∫nf(x)xcdx
Dzięki argumentowi gładkości możemy ponownie spojrzeć na to jako na zakotwiczoną w lewo sumę Riemanna, zbliżoną do całki . Zastosowanie podobnego twierdzenia o wartości średniej nad całką daje
Możemy po prostu iść naprzód i przybliżyć to przez , co daje aproksymacja
dla pewnej stałej która ogranicza szereg.∫nT(xc)xcdx
∑kT(kc)kc≈∫nf(xc)xcdx=nT(ξ<nc)ξc
nT(nc)ncT(n)≤nMT(nc)nc+Fc(n)
M
Załóżmy teraz, że mamy iterowaną sekwencję gdzie , a następnie możemy użyć tej sekwencji do teleskopowania powyższej nierówności, aby uzyskać:
Po raz kolejny możemy związać określenie za pośrednictwem stałej stwierdzić, że
gdzie . Upraszczając trochę i łącząc niektóre terminy razem (w szczególności wiemy, że(n,nc,nc2,nc3,…,nck)nck<2
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−ckjest stałą), otrzymujemy
T(n)=O(nkFc(n)Mk)
Jednak granica ta jest stosunkowo luźna i w miarę możliwości należy odwoływać się do .(*)
Pamiętaj, że w żaden sposób nie jest to tak rygorystyczne. Nie zapewniłem żadnego wsparcia, że powinno to działać poza niektórymi nieporadnymi przybliżeniami. Niemniej jednak, jeśli potrzebujesz tylko szybkiego, asymptotycznego zgadywania ze względu na nieformalną analizę, możesz faktycznie zobaczyć, że ten schemat działa dobrze (dla wystarczająco dużych wartości , zwykle wystarcza w praktyce).nn>10
W każdym razie, dla wszystkich wyborów i , które próbowałem, następujące obliczenia
gdzie
wydaje się dawać dobre przybliżenia . Ta technika uogólnia także na powtarzające się formy
które można aproksymować za pomocą
gdziecf
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)
T^(n)F(n)=n∑k#β(n)Mkαk(n)F(βk(n))=∑knf(k)α(k)
αk(n)=α(⋯k(α(n)))a oznacza liczbę elementów sekwencji takie, że ostatni termin jest między a .
#β(n)n,β(n),β(β(n)),…,β#β(n)(n)12