4.5 Die Master-Methode
Die Master-Methode ist ein zentrales Werkzeug, um rekursive Laufzeitgleichungen der Form
abzuschätzen, wobei
(Anzahl der rekursiven Aufrufe), (Faktor, um den das Problem verkleinert wird), eine nichtnegative Funktion, die den Aufwand pro Teilung beschreibt (z. B. das Zusammenführen bei Mergesort).
1. Beispiele rekursiver Algorithmen
1.1 Mergesort
- Idee: Teile das zu sortierende Array der Länge
in zwei Hälften à , sortiere diese rekursiv, und füge sie in Zeit wieder zusammen. - Rekursionsgleichung:
1.2 Fakultät
- Rekursive Form (nicht Master-Methoden-tauglich, da sich das Problem nicht in gleich große Teile aufspaltet):
- Lösung:
. (In algorithmischer Praxis steht dahinter oft das direkte Produkt.)
1.3 Fibonacci-Zahlen
- Definition:
- Exponential Laufzeit bei naiver Rekursion (keine Master-Form). Üblich ist jedoch eine dynamische Programmierung mit
-Zeit.
1.4 (Erweiterter) euklidischer Algorithmus
- Erweiterter euklidischer Algorithmus findet
derart, dass
Beispielrechnung (mit kompletter Tabelle).
Wir rechnen
Der Algorithmus füllt typischerweise eine Tabelle folgender Art:
| 0 | 78 | 30 | 2 | 18 | 2 | -5 |
| 1 | 30 | 18 | 1 | 12 | -1 | 2 |
| 2 | 18 | 12 | 1 | 6 | 1 | -1 |
| 3 | 12 | 6 | 2 | 0 | 0 | 1 |
Am Ende erhält man die Linearkombination
aus der
2. Beispiel: Rekursiver Algorithmus findeMax()
Wir wollen das Maximum eines Arrays der Länge
Rekursions-Idee
text(A) Wenn n = 1: return z1 (B) mitte := n/2 (C) maxLinks = findeMax( z1..z_mitte ) (D) maxRechts = findeMax( z_{mitte+1}..z_n ) (E) return max( maxLinks, maxRechts )Rekursionsgleichung
- Falls
: - Falls
: Die Schritte (B) und (E) etc. sind konstant, plus 2 rekursive Aufrufe mit je Elementen.
- Falls
3. Die Master-Methode: Definition und drei Fälle
Für die Rekursion
mit
- Fall 1:
wächst langsamer als .
Formal:für ein .
Dann
- Fall 2:
wächst wie .
Formal:.
Dann
- Fall 3:
wächst schneller als .
Formal:und eine Regularitätsbedingung ist erfüllt.
Dann
Beispielrechnungen:
Mergesort
. . - Übereinstimmung mit Fall 2
.
findeMax(). - Hier ist
. Das liegt unter . - Fall 1 (mit
). .
Vereinfachtes Bsp.:
. . - Vergleiche
mit . wächst langsamer als . → Fall 1 .
Beispiel (Fall 3):
. - Somit ist
. - Da
schneller wächst als , wählen wir . Zweite Bedingung (Regularitätsbedingung) - Für Fall 3 muss gelten:
Hier:
- Wir vergleichen das mit
.\ \ - Also kann man z.,B.
wählen, was die Bedingung erfüllt ( ).
Fazit (Fall 3):