HEINZ NIXDORF INSTITUT Laufzeitanalyse rekursiver Algorithmen / 1 Theoretische Informatik Friedhelm Meyer auf der Heide Wir kennen: (1) T (1) = α, n > 1: T(n) = 2 T (n/2) + β n (2) T (1) = α, n > 1: T(n) = T (n-1) + β (3) T (1) = α, n > 1: T(n) = T (n/2) + β Lösungen: zu (1): α n + β n log n = Θ (n log (n)) zu (2): β (n - 1) + α = Θ (n) zu (3): β log (n) + α = Θ (log (n)) HEINZ NIXDORF INSTITUT Laufzeitanalyse rekursiver Algorithmen / 2 Theoretische Informatik Friedhelm Meyer auf der Heide Multiplizieren: Eingabe: Binärdarstellungen (an-1, ..., a0), (bn-1, ...,bo) von a,b. Ausgabe: Binärdarstellung (c2n-1, ...,c0) von c = a ·b. Schulmethode: Θ (n2) HEINZ NIXDORF INSTITUT Laufzeitanalyse rekursiver Algorithmen / 3 Berechne Theoretische Informatik Friedhelm Meyer auf der Heide Rekursiver Algorithmus: (n=2k) a‘ = (an-1, ..., an/2), a“ = (an/2-1 , ..., a0) b‘ = (bn-1, ..., bn/2), b“ = (bn/2-1 , ..., b0) c = a ·b durch: c = (a‘·2n/2 + a“) ·(b‘·2n/2 + b“) = a‘ · b‘ 2n + (a‘ · b“ + a“ · b) · 2n/2 + a“ · b“ r s T (n) = 4 · T (n/2) + β n, T (1) = d → T (n) = Θ (n2) t HEINZ NIXDORF INSTITUT Laufzeitanalyse rekursiver Algorithmen / 4 Theoretische Informatik Friedhelm Meyer auf der Heide Schnelles Multiplizieren: Karatsuba-Offman: n = 2k c = a‘ · b‘ 2n + (a‘ · b“ + a“ · b) · 2n/2 + a“ · b“ r s Berechne r, s, t wie folgt: t r = a‘ · b‘, t = a“ · b“ , x = (a“ - a‘) · (b“ - b‘), s = -(x - r - t) → 3 Multiplikationen von Zahlen der Länge n/2 T (1) = α, n ≥ 2: T (n) = 3 T (n/2) + β n T (n) = Θ (n log(3) ) ≈ Θ (n1.585) HEINZ NIXDORF INSTITUT Laufzeitanalyse rekursiver Algorithmen / 5 Theoretische Informatik Friedhelm Meyer auf der Heide Satz 3.1 (Master Theorem für Rekursionsgleichungen) Seien a ≥ 1, b > 1, c > 0 Konstanten, f: N → N eine Funktion. Betrachte die Rekursionsgleichung T (1) = c, und für n > 1: T(n) = aT(n/b) + f(n) Dann gilt: 1. Falls f(n) = O (nlogb(a)-ε) für eine Konstante ε > 0, dann ist T(n) = Θ (nlogb(a)). 2. Falls f(n) = Θ (nlogb(a)), dann ist T(n) = Θ (nlogb(a) ·log(n)). 3. Falls f(n) = Ω (nlogb(a)+ε) für eine Konstante ε > 0 und a ·f (n/b) ≤ d · f(n) für eine Konstante d < 1, dann ist T (n) = Θ (f(n)). HEINZ NIXDORF INSTITUT Theoretische Informatik Friedhelm Meyer auf der Heide Einige genauere Analysen T (1) = c, • • • n > 1: T (n) = a · T n +c·n b a < b: T (n) ≤ c ⋅ b · n = Θ(n) b−a a = b: T (n) = c · n (logb (n) + 1) = Θ (n log (n)) c⋅b a > b: T (n) ≤ nlogb (a) = Θ (nlogb(a)) b−a (Schneller Multiplizierer: a = 3, b = 2)