1.2.6 Master-Theorem
Divide-and-Conquer
Viele effiziente Algorithmen folgen dem Schema „Teile und herrsche“. Bei Eingabegröße :
- Teilen: Das Problem wird in Teilprobleme der Größe zerlegt.
- Rekursion: Jedes Teilproblem wird rekursiv gelöst, Kosten je .
- Herrschen: Das Erzeugen der Teilprobleme und das Zusammenführen der Teillösungen kosten zusammen .
Das ergibt die Rekursionsgleichung
Was ist die Gesamtlaufzeit? Für viele Fälle beantwortet das das Master-Theorem.
Satz (Master-Theorem für Rekursionen)
Sei mit
- Konstanten und ,
- der Wasserscheiden-Konstante ,
- einer Funktion (der Aufteilungsfunktion),
- wobei als oder gelesen wird.
Dann gilt einer der folgenden Fälle:
| Fall | Bedingung | Ergebnis |
|---|---|---|
| 1 | für ein | |
| 2 | ||
| 3 | für ein und für ein und alle hinreichend großen |
Intuition
Man stellt sich den Rekursionsbaum vor:
- Ebene 0: ein Problem der Größe , Kosten .
- Ebene 1: Probleme der Größe , Kosten .
- Ebene : Probleme der Größe .
- Der Baum hat Tiefe und damit Blätter.
ist also die Arbeit „in den Blättern“, die Arbeit „an der Wurzel“. Das Theorem vergleicht beide:
- Fall 1 – Blätter dominieren: wächst polynomiell langsamer als . Die Arbeit steckt unten im Baum, also .
- Fall 2 – Gleichstand: Jede der Ebenen kostet ungefähr gleich viel, . Insgesamt .
- Fall 3 – Wurzel dominiert: wächst polynomiell schneller. Die Kosten nehmen nach unten geometrisch ab (das garantiert die Regularitätsbedingung ), die Wurzel bestimmt alles: .
Zum Ausprobieren: Jeder Balken sind die Gesamtkosten einer Ebene des Rekursionsbaums. Wachsen sie nach unten (Fall 1), sind sie gleich (Fall 2) oder schrumpfen sie (Fall 3)?
k = α ⇒ Fall 2: jede der log n Ebenen kostet gleich viel ⇒ T(n) = Θ(n · log n).
Das Theorem deckt nicht alle Fälle ab. Liegt „zwischen“ den Fällen, z.B. (größer als , aber nicht um einen Faktor ), ist es in dieser Form nicht anwendbar.
Beispiele (Ergänzung)
| Algorithmus | Rekursion | vs. | Fall | Ergebnis | |
|---|---|---|---|---|---|
| Binäre Suche | 2 | ||||
| Mergesort | 2 | ||||
| Divide-and-Conquer-Hülle | 2 | ||||
| Karatsuba | 1 | ||||
| – | , Regularität: ✔ | 3 |
Bezug zu Kapitel 2: Die Divide-and-Conquer-Hülle teilt die Punkte an der Median--Koordinate in zwei Hälften, berechnet beide Hüllen rekursiv und verschmilzt sie in über obere und untere Tangente. Nach Fall 2 ergibt das , also dieselbe Laufzeit wie Graham's Scan.