Der Hauptsatz ist ein schönes Werkzeug zum Lösen bestimmter Arten von Wiederholungen . Wir beschönigen jedoch häufig einen integralen Bestandteil, wenn wir ihn auftragen. Beispielsweise gehen wir bei der Analyse von Mergesort gerne ab
zu
unter Berücksichtigung von nur . Wir versichern uns, dass dieser Schritt gültig ist - das heißt, - weil sich "gut" verhält. Im Allgemeinen nehmen wir für den gemeinsamen Nenner an .
Es ist einfach, Wiederholungen zu konstruieren, die diese Vereinfachung nicht zulassen, indem bösartiges . Zum Beispiel oben Wiederholung für / mit
ergibt unter Verwendung des Hauptsatzes auf die übliche Weise, aber es gibt eindeutig eine Subsequenz, die wie wächst . Sehen Sie sich hier ein weiteres Beispiel an.Θ ( n log n )
Wie können wir das "schön" rigoros machen? Ich bin mir ziemlich sicher, dass Monotonie ausreicht, aber nicht einmal die einfache Mergesort-Wiederholung ist monoton; es gibt eine periodische Komponente (die asymptotisch dominiert wird). Reicht es aus, zu untersuchen , und welche notwendigen und ausreichenden Bedingungen für sicher, dass der Hauptsatz funktioniert?f
Antworten:
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 ) ).f T f=Θ(g) g f=Θ(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
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=0 n≥1
Dies impliziert, dass
T(2≤ log 2 n≤)≤T(n)≤T(2≤ log 2 n≤) ist.
Also, wennT(2
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 = 0f f=Θ(g) g cg(n)≤f(n)≤Cg(n) c,C>0 n n=0 T′,T′′ f cg,Cg
quelle