In dieser Antwort gehen wir davon aus, dass und T nicht negativ sind. Unser Beweis funktioniert immer dann, wenn f = Θ ( g ) für ein monotones g ist . Dies schließt Ihr Mergesort-Beispiel mit ein, in dem f = Θ ( n ) und jede Funktion mit polynomieller Wachstumsrate (oder sogar Θ ( n a log b n ) ).fTf=Θ(g)gf=Θ(n)Θ(nalogbn)
Betrachten wir zunächst den Fall, dass nicht abnehmend ist (wir werden diese Annahme später lockern). Wir konzentrieren uns auf Ihre
Probenwiederholung T ( n ) = T ( ⌊ n / 2 ⌋ ) + T ( ⌈ n / 2 n ) + f ( n ) .
Diese Wiederholung benötigt zwei Grundfälle, T ( 0 ) und T ( 1 ) . Wir gehen davon aus, dass T ( 0 )f
T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+f(n).
T(0)T(1) , die wir später auch entspannen.
T(0)≤T(1)
Ich behaupte, dass monoton ist und nicht abnimmt. Wir beweisen durch vollständige Induktion, dass T ( n + 1 ) ≥ T ( n ) ist . Dies ist für n = 0 gegeben , also sei n ≥ 1 . Wir haben
T ( n + 1 )T(n)T(n+1)≥T(n)n=0n≥1
Dies impliziert, dass
T(2≤ log 2 n≤)≤T(n)≤T(2≤ log 2 n≤) ist.
Also, wennT(2
T(n+1)=T(⌊(n+1)/2⌋)+T(⌈(n+1)/2⌉)+f(n+1)≥T(⌊n/2⌋)+T(⌈n/2⌉)+f(n)=T(n).
T(2⌊log2n⌋)≤T(n)≤T(2⌈log2n⌋).
, wir sind fertig. Dies ist immer dann der Fall, wenn die Lösung für Zweierpotenzen die Form
T ( n ) = Θ ( n a log b n ) hat .
T(2m)=Θ(T(2m+1))T(n)=Θ(nalogbn)
T(0)≤T(1)T′T ' ( n ) ≤ T ( n ) T "T′(0)=T′(1)=min(T(0),T(1))T′(n)≤T(n)T′′T′′(0)=T′′(1)=max(T(0),T(1))T(n)≤T′′(n)T′=Θ(h)T′′=Θ(h) für die gleiche Funktion und damit auch .hT=Θ(h)
Lassen Sie uns nun die Annahme lockern, dass monoton ist. Angenommen, für eine monotone Funktion . Also für einige und groß genug. Der Einfachheit halber nehmen wir an, dass ; Der allgemeine Fall kann wie im vorherigen Absatz behandelt werden. Wiederum definieren wir zwei Wiederholungen indem wir durch ersetzen . Noch einmal, der Hauptsatz liefert dasselbe Ergebnis (bis zu konstanten Vielfachen), das auch mit dem identisch ist (bis zu konstanten Vielfachen), was wir erhalten würden, wenn wir die ursprüngliche Wiederholung nur mit Zweierpotenzen lösen würden.f = Θ ( g ) g C g ( n ) ≤ f ( n ) ≤ C g ( n ) c , C > 0 n n = 0ff=Θ(g)gcg(n)≤f(n)≤Cg(n)c,C>0nn=0T′,T′′fcg,Cg