Rozwiązywanie dziel i zdobywaj rekurencje, jeśli współczynnik podziału zależy od


20

Czy istnieje ogólna metoda rozwiązania problemu ponownego wystąpienia formularza:

T(n)=T(nnc)+T(nc)+f(n)

dla c<1 lub bardziej ogólnie

T(n)=T(ng(n))+T(r(n))+f(n)

gdzie g(n),r(n) są niektórymi funkcjami subliniowymi n .

Aktualizacja : Przejrzałem linki podane poniżej, a także przejrzałem wszystkie relacje powtarzalności w notatkach Jeffa Ericksona . Ta forma nawrotu nie jest nigdzie dyskutowana. Metoda Akkra-Bazi ma zastosowanie tylko wtedy, gdy podział jest ułamkowy. Wszelkie przejmujące odniesienia będą doceniane.


2
Spróbuj wygenerować funkcje.
saadtaame

1
Czy stosuje się metodę Akra-Bazzi ? Podaje tylko szacunki O() , ale to może wystarczyć.
vonbrand,

4
Ponieważ nie podejmowałeś wielu prób samodzielnego rozwiązania problemu, mamy trochę pracy. Pozwól, że skieruję cię do naszych pytań referencyjnych, które szczegółowo omawiają problemy podobne do twojego. Zapoznaj się z wymienionymi tam powiązanymi pytaniami, spróbuj rozwiązać problem ponownie i dokonaj edycji, aby uwzględnić próby wraz z napotkanymi problemami.
Raphael

1
Sprawdź materiały informacyjne Toma Leightona w „Notatkach na temat lepszych twierdzeń mistrzowskich dotyczących nawrotów dziel i rządź”, są one dostępne w sieci. Być może możesz dostosować tam dowód Akra-Bazzi do swojej sprawy.
vonbrand

1
@EngrStudent Funkcje generujące zostały zaproponowane w pierwszym komentarzu. :)
Raphael

Odpowiedzi:


6

Załóżmy, że masz wznowę wykracza poza reale dodatnie.

T(n)={T(nnc)+T(nc)+f(n)n > 21otherwise

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.

  1. 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=12limn2T(n)=1limn2+T(n)=2+ln2nnnnnT(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.
  2. 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(nnc)+T(nc)+f(n)T(n)T(nnc)=T(nc)+f(n)ncT(n)T(nnc)nc=T(nc)+f(n)
Tnncn
T(n)T(nnc)nc=T(ξ(nnc,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ć ϵ=1
nc(T(n)T(n1))T(nc)+f(n)T(n)T(n1)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)kcnf(xc)xcdx=nT(ξ<nc)ξc
nT(nc)nc
T(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(ik1MinciFc(nci)+Mknck)
Fc(nci)
T(n)=O(Fc(n)+nFc(nc)(Mnc+M2nc2++Mknck))
k=logc(log(2)log(n))Mncnckjest 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)=nklogclogn2MknckF(nck)F(n)=knf(k)kc
MkT(kc)kcnT(nc)nc
T(n)=T(nα(n))+T(β(n))+f(n)
T^(n)=nk#β(n)Mkαk(n)F(βk(n))F(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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.