=Θ (n)

Werbung
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)
Herunterladen