Ihr archetypisches ist ein Divide-and-Conquer- Algorithmus, der die Arbeit in linearer Zeit aufteilt (und neu kombiniert) und über die Teile rekursiert. So funktioniert das Sortieren beim Zusammenführen: O ( n ) Zeit damit verbringen , die Eingabe in zwei ungefähr gleiche Teile zu teilen, jedes Teil rekursiv zu sortieren und Θ ( n ) Zeit damit zu verbringen , die beiden sortierten Hälften zu kombinieren.Θ(nlogn)O(n)Θ(n)
Intuitiv setzt sich die Idee der Teilung und Eroberung fort und jede Teilungsstufe benötigt insgesamt eine lineare Zeit, da die Zunahme der Anzahl der zu teilenden Teile genau der Abnahme der Größe der Teile entspricht, da die durch die Teilung benötigte Zeit linear ist. Die Gesamtlaufzeit ergibt sich aus den Gesamtkosten einer Teilungsstufe multipliziert mit der Anzahl der Teilungsstufen. Da sich die Größe der Teile zu jedem Zeitpunkt halbiert, gibt es Teilungsstufen, so dass die Gesamtlaufzeit n ≤ log ( n ) beträgt . (Bis auf eine multiplikative Konstante ist die Basis des Logarithmus irrelevant.)log2(n)n⋅log(n)
Um die Laufzeit eines solchen Algorithmus in Gleichungen () umzurechnen, kann man sie rekursiv ausdrücken: T ( n ) = 2 T ( n / 2 ) + Θ ( n ) . Es ist klar, dass dieser Algorithmus mehr als lineare Zeit benötigt, und wir können sehen, wie viel mehr, wenn wir durch n dividieren :
T ( n )T(n)T(n)=2T(n/2)+Θ(n)n
Wennn sichverdoppelt, nimmtT(n)/num einen konstanten Betrag zu:T(n)/nnimmt logarithmisch zu, oder mit anderen Worten,T(n)=Θ(nlogn).
T(n)n=T(n/2)n/2+Θ(1)
nT(n)/nT(n)/nT(n)=Θ(nlogn)
Dies ist ein Beispiel für ein allgemeineres Muster: den Hauptsatz . Für jeden rekursive Algorithmus, der unterteilt ihre Eingabe der Größe in ein Stück mit einer Größe n / b , und nimmt eine Zeit f ( n ) die Spaltung und Rekombination, die Laufzeit genügt auszuführen T ( n ) = ein ⋅ T ( n / b ) + f ( n ) . Dies führt zu einer geschlossenen Form, die von den Werten von a und b und der Form von abhängtnan/bf(n)T(n)=a⋅T(n/b)+f(n)ab . Wenn a = b und f ( n ) = Θ ( n ) ist , besagt der Hauptsatz, dass T ( n ) = Θ ( n log n ) ist .fa=bf(n)=Θ(n)T(n)=Θ(nlogn)