Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Master-Theorem

... Algorithmus mit Hilfe des Master-Theorem betrachten wir das rekursive Sortierverfahren Mergesort. Mergesort besitzt folgende Rekursionsgleichung: T ( n ) …

Inhalt5 Abschnitte
  1. 1. Zweck und Grundidee
  2. 2. Standardform und die drei Fälle
  3. 3. Anwendung der drei Fälle
  4. 4. Verallgemeinerung und Hinweise
  5. 5. Allgemeinere Rekurrenzen und Mergesort

Zweck und Grundidee

Das Master-Theorem (Hauptsatz der Laufzeitfunktionen) ist ein Spezialfall des Akra-Bazzi-Theorems. Es liefert schnell eine asymptotische Laufzeitklasse für bestimmte rekursiv definierte Funktionen. Es ist wichtig für die Analyse rekursiver Algorithmen, weil es den Aufwand der Teilprobleme mit dem Aufwand außerhalb der Rekursion vergleicht.

Es ist jedoch nicht auf jede Rekurrenz anwendbar. Passt keiner seiner Fälle, muss die Komplexitätsklasse mit anderen Methoden bestimmt werden.

Standardform und die drei Fälle

Die Standardform lautet:

T(n) = a · T(n/b) + f(n).

T(n) ist die gesuchte Laufzeitfunktion. Dabei ist a ≥ 1 die Anzahl der Unterprobleme, 1/b mit b > 1 der Anteil des ursprünglichen Problems pro Unterproblem und f(n) eine von T unabhängige, nicht negative Funktion. f(n) beschreibt die Kosten für das Aufteilen des Problems und das Zusammenführen der Teillösungen.

Entscheidend ist der Vergleich von f(n) mit n^(log_b a):

  • Erster Fall: Gilt f(n) ∈ O(n^(log_b a − ε)) für ein ε > 0, dann T(n) ∈ Θ(n^(log_b a)). Die Rekursion selbst bestimmt also den Aufwand.
  • Zweiter Fall: Gilt f(n) ∈ Θ(n^(log_b a)), dann T(n) ∈ Θ(n^(log_b a) log(n)). Rekursion und zusätzlicher Aufwand sind gleich stark.
  • Dritter Fall: Gilt f(n) ∈ Ω(n^(log_b a + ε)) für ein ε > 0 und außerdem für ein c mit 0 < c < 1 sowie alle hinreichend großen n: a f(n/b) ≤ c f(n), dann T(n) ∈ Θ(f(n)). Hier dominiert der zusätzliche Aufwand f(n).

Höchstens einer dieser Fälle kann passen.

Anwendung der drei Fälle

Für T(n) = 8T(n/2) + 1000n² gilt a = 8, b = 2 und log₂8 = 3. Da 1000n² ∈ O(n^(3 − ε)) mit ε = 1, liegt der erste Fall vor. Daher gilt T(n) ∈ Θ(n³).

Für T(n) = 2T(n/2) + 10n gilt log₂2 = 1 und 10n ∈ Θ(n). Dies ist der zweite Fall; somit T(n) ∈ Θ(n log(n)).

Für T(n) = 2T(n/2) + n² gilt ebenfalls log₂2 = 1. n² ∈ Ω(n^(1 + ε)) mit ε = 1. Die Zusatzbedingung des dritten Falls ist erfüllt, denn 2(n/2)² = 1/2 n² ≤ c n² mit c = 1/2. Folglich gilt T(n) ∈ Θ(n²).

Verallgemeinerung und Hinweise

Die Rekurrenz T(n) = 8T(n/2) + n³ ln(n) ist nicht direkt durch die drei Grundfälle lösbar. Zwar sind a = 8, b = 2 und log₂8 = 3, aber n³ ln(n) gehört für kein ε > 0 zu Ω(n^(3 + ε)), weil ln(n)/n^ε gegen 0 geht. Der dritte Fall gilt daher nicht.

Eine Verallgemeinerung des zweiten Falls lautet: Falls f(n) ∈ Θ(n^(log_b a) ln^k n), dann gilt T(n) ∈ Θ(n^(log_b a) ln^(k+1) n). Für f(n) = n³ ln(n) ist k = 1; daher gilt T(n) ∈ Θ(n³ ln²(n)).

Floor- und Ceiling-Ausdrücke wie T(n) = aT(⌊n/b⌋) + f(n) können mithilfe von n/b abgeschätzt werden. Außerdem spielt die Basis eines Logarithmus in einer Θ-Abschätzung keine Rolle: ln(n) und lg(n) unterscheiden sich nur um einen konstanten Faktor.

Allgemeinere Rekurrenzen und Mergesort

Eine allgemeinere Form ist T(n) = Σ(i=1 bis m) T(α_i n) + f(n), wobei 0 < α_i < 1, m ≥ 1 und f(n) ∈ Θ(n^k) mit k ∈ ℕ₀. Für reelle Argumente wird T durch T(x) := T(⌊x⌋) oder T(⌈x⌉) fortgesetzt.

Dann gilt:

  • Ist Σ α_i^k < 1, so T(n) ∈ Θ(n^k).
  • Ist Σ α_i^k = 1, so T(n) ∈ Θ(n^k log n).
  • Ist Σ α_i^k > 1, so T(n) ∈ Θ(n^c), wobei c durch Σ α_i^c = 1 bestimmt ist.

Mergesort erfüllt T(n) = 2T(n/2) + c · n. Mit a = 2, b = 2 und f(n) = c · n ist log₂2 = 1; daher gilt nach dem zweiten Fall T(n) ∈ Θ(n · log(n)).

Weiterlesen

Rekursion Als Rekursion (lateinisch recurrere ‚zurücklaufen') wird ein prinzipiell unendlicher Vorgang bezeichnet, der sich selbst als Teil enthält oder mithilfe von sich … Funktion (Programmierung) Eine Funktion (englisch function) ist in der Informatik und in verschiedenen höheren Programmiersprachen die Bezeichnung eines Programmkonstrukts, … Komplexität (Informatik) Die Komplexität eines Problems ist zum Beispiel entscheidend für die Kryptographie und insbesondere für die asymmetrische Verschlüsselung: So verlässt sich … Zeitkomplexität Unter der Zeitkomplexität wird in der Informatik die Anzahl der ... Bubblesort zwar für große Datenmengen ein recht langsames Verfahren, eignet … Landau-Symbole Landau-Symbole (auch O-Notation, englisch big O notation) werden in der Mathematik und in der Informatik verwendet, um das asymptotische Verhalten von … Logarithmus Der diskrete Logarithmus ist in endlichen Körpern und darauf definierten elliptischen Kurven erheblich aufwändiger zu berechnen als seine Umkehrfunktion, die … Reelle Zahl Die reellen Zahlen bilden einen in der Mathematik bedeutenden Zahlenbereich. Er ist eine Erweiterung des Bereichs der rationalen Zahlen, womit die Maßzahlen … Sortierverfahren Unter einem Sortierverfahren versteht man in der Informatik einen Algorithmus, der dazu dient, ein Tupel (i. Allg. ein Array) zu sortieren. Mergesort Mergesort (von englisch merge ‚verschmelzen' und sort ‚sortieren') ist ein stabiler Sortieralgorithmus, der nach dem Prinzip teile und herrsche (divide and …