Laufzeit von Algorithmen - fbi.h

Werbung
Kapitel 1: Laufzeit von Algorithmen
Gliederung
1.
2.
3.
4.
5.
6.
Laufzeit von Algorithmen
Sortier- und Selektionsverfahren
Paradigmen des Algorithmenentwurfs
Ausgewählte Datenstrukturen
Algorithmische Geometrie
Randomisierte Algorithmen
•
•
1/1, Folie 1
© 2009 Prof. Steffen Lange
-
HDa/FbI
Grundlagen
Asymptotische Notationen
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Grundlagen
 Beurteilung der Laufzeit von Algorithmen
... erfolgt in Abhängigkeit von der Länge der Eingaben
... gemessen wird die Anzahl der Elementarschritte
... Elementarschritte
•
ausgewählte Operationen im zugrunde liegenden
Maschinenmodell
... Länge von Eingaben
•
•
1/1, Folie 2
© 2009 Prof. Steffen Lange
hängt von der Art der zulässigen Eingaben ab
es gibt i. allg. mehrere Eingaben derselben Länge
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Grundlagen
 Bezeichnungen
•
•
time(A,x) bezeichnet die Anzahl der Elementaroperationen des
Algorithmus A bei Eingabe x
|x| bezeichnet die Länge der Eingabe x
 Beispiele
•
•
•
1/1, Folie 3
Zahlen
Listen
Graphen
© 2009 Prof. Steffen Lange
... Länge der Binärdarstellung
... Anzahl der Elemente
... Anzahl der Knoten und Kanten
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Grundlagen
 Typische Kennzahlen
Laufzeit im „worst case“:
wc-time(A,n) = max { time(A,x) | |x| = n }
Laufzeit im „best case“:
bc-time(A,n) = min { time(A,x) | |x| = n }
Laufzeit im „average case“:
av-time(A,n) = 1/|En| *
Σ
time(A,x), wobei En = { x | |x| = n }
x∈En
zugrunde liegende Annahme ... Gleichverteilung über En
1/1, Folie 4
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Grundlagen
 ... offensichtliche Zusammenhänge
... die Laufzeiten für alle Eingaben derselben Länge sind gleich
wc-time(A,n) = bc-time(A,n) = av-time(A,n)
... Laufzeiten für Eingaben derselben Länge können sich unterscheiden
wc-time(A,n) ≥ av-time(A,n) ≥ bc-time(A,n)
1/1, Folie 5
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Grundlagen
 Beispiel
zulässige Eingaben:
Binärdarstellung einer Zahl x, d.h. bin(x) = (xn-1,...,x0)
zulässige Ausgabe:
Binärdarstellung der Zahl x+1
•
•
Algorithmus A:
Falls (xn-1,...,x0) = (1,...,1), gib (1,0,...,0) aus.
Sonst suche das kleinste i mit xi = 0 und gib
(xn-1,...,xi+1,1,0,...,0) aus.
wc-time(A,n) = n + 1
bc-time(A,n) = 1
av-time(A,n) = ... = 2 - (1/2)n
Annahme: Laufzeit = Anzahl der benötigten Bitoperationen
1/1, Folie 6
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Asymptotische Notationen
 relevante Aspekte
•
•
Beurteilung der Laufzeit einzelner Algorithmen
Vergleich der Laufzeit unterschiedlicher Algorithmen (/* zur Lösung
desselben Problems */)
 Beispiel (/* erste Vorlesung */)
1/1, Folie 7
Algorithmus A
Wc-time(A,n)
„Normalisierung“
normal
n2 - 1
n2
divide & conquer
2n*log(n) - n + 1
n*log(n)
clever
4n - 2
n
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Asymptotische Notationen
 Θ-Notation (/* Begriff */)
•
•
•
Beschreibung der asymptotischen Laufzeit von Algorithmen mit Hilfe
von Funktionen, deren Definitionsbereich die natürlichen Zahlen sind
es sei g(n) eine Funktion von N nach R mit g(n) ≥ 0 für fast alle n ∈ N
es sei t(n) eine Funktion von N nach R mit t(n) ≥ 0 für fast alle n ∈ N
t(n) ∈ Θ(g(n))
gdw.
es gibt c1, c2 > 0 und n0 ∈ N, so daß für alle n ≥ n0 gilt: c1*g(n) ≤ t(n) ≤ c2*g(n)
... man sagt: t(n) wächst asymptotisch genauso schnell wie
g(n)
1/1, Folie 8
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Asymptotische Notationen
 Θ-Notation (/* Beispiel */)
•
es sei A ein Algorithmus dessen „worst case“-Laufzeit durch die
Funktion wc-time(A,n) = t(n) = 2n*log(n) - n + 1 beschrieben wird
•
dann gilt: t(n) ∈ Θ(g(n)) mit g(n) = n*log(n)
2n*log(n) - n + 1 ≥ 2n*log(n) - n
≥ 2n*log(n) - n*log(n)
≥ n*log(n) (/* n ≥ 2 */)
2n*log(n) - n + 1 ≤ 2n*log(n) + 1
≤ 2n*log(n) + n*log(n) (/* n ≥ 2 */)
≤ 3n*log(n)
 ... wähle c1 = 1, c2 = 3 und n0 = 2
1/1, Folie 9
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Asymptotische Notationen
 O-Notation (/* Begriff */)
•
•
•
Beschreibung der asymptotischen Laufzeit von Algorithmen mit Hilfe
von Funktionen, deren Definitionsbereich die natürlichen Zahlen sind
es sei g(n) eine Funktion von N nach R mit g(n) ≥ 0 für fast alle n ∈ N
es sei t(n) eine Funktion von N nach R mit t(n) ≥ 0 für fast alle n ∈ N
t(n) ∈ O(g(n))
gdw.
es gibt c > 0 und n0 ∈ N, so daß für alle n ≥ n0 gilt: t(n) ≤ c*g(n)
... man sagt: t(n) wächst asymptotisch langsamer als g(n)
... man sagt: g(n) ist eine obere Schranke für t(n)
1/1, Folie 10
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Asymptotische Notationen
 O-Notation (/* Beispiel */)
•
es sei A ein Algorithmus dessen „worst case“-Laufzeit durch die
Funktion wc-time(A,n) = t(n) = 2n3 + 5n2 - 7n beschrieben wird
•
dann gilt: t(n) ∈ O(g(n)) mit g(n) = n5 bzw. g(n) = n4 bzw. g(n) = n3
2n3 + 5n2 - 7n
≤ 2n3 + 5n2
≤ 2n3 + 5n3
≤ 8n3 (/* ≤ 8n4 ≤ 8n5 */)
 ... wähle c = 8 und n0 = 0
1/1, Folie 11
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Asymptotische Notationen
 Ω-Notation (/* Begriff */)
•
•
•
Beschreibung der asymptotischen Laufzeit von Algorithmen mit Hilfe
von Funktionen, deren Definitionsbereich die natürlichen Zahlen sind
es sei g(n) eine Funktion von N nach R mit g(n) ≥ 0 für fast alle n ∈ N
es sei t(n) eine Funktion von N nach R mit t(n) ≥ 0 für fast alle n ∈ N
t(n) ∈ Ω(g(n))
gdw.
es gibt c > 0 und n0 ∈ N, so daß für alle n ≥ n0 gilt: c*g(n) ≤ t(n)
... man sagt: t(n) wächst asymptotisch schneller als g(n)
... man sagt: g(n) ist eine untere Schranke für t(n)
1/1, Folie 12
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Asymptotische Notationen
 Ω-Notation (/* Beispiel */)
•
es sei A ein Algorithmus dessen „worst case“-Laufzeit durch die
Funktion wc-time(A,n) = t(n) = 2n3 + 5n2 - 7n beschrieben wird
•
dann gilt: t(n) ∈ Ω(g(n)) mit g(n) = n1 bzw. g(n) = n2 bzw. g(n) = n3
2n3 + 5n2 - 7n
≥ 2n3 - 7n
≥ 2n3 - n3 (/* n ≥ sqr(7) */)
≥ n3 (/* ≥ n2 ≥ n */)
 ... wähle c = 1 und n0 = 3
1/1, Folie 13
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Asymptotische Notationen
 Einfache Zusammenhänge
•
es sei g(n), h(n) und f(n) Funktionen von N nach R mit g(n) ≥ 0, h(n) ≥ 0
und f(n) ≥ 0 für fast alle n ∈ N
(1)
(2)
(3)
(4)
Wenn g(n) ∈ Θ(h(n)) und h(n) ∈ Θ(f(n)), so g(n) ∈ Θ(f(n)).
g(n) ∈ Θ(g(n)).
g(n) ∈ Θ(h(n)) gdw. h(n) ∈ Θ(g(n)).
g(n) ∈ O(h(n)) gdw. h(n) ∈ Ω(g(n)).
... (1) und (2) gelten auch für die O- bzw. Ω-Notation
1/1, Folie 14
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Asymptotische Notationen
 ... Verwendung
... um die asymptotische Laufzeit von A zu beschreiben verwendet
man Funktionen wie
•
•
•
•
•
•
1/1, Folie 15
g1(n) = n2
g2(n) = n3
g3(n) = n*log(n)
g4(n) = n*log2(n)
g5(n) = 2n
...
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Kapitel 1: Laufzeit von Algorithmen
Asymptotische Notationen
 Grenzen der asymptotischen Notation
•
es seien A1 und A2 Algorithmen für dasselbe Problem mit
wc-time(A1,n) = 10n3 und wc-time(A2,n) = 10000n2
•
offenbar gilt: wc-time(A1,n) ∈ Θ(n3) und wc-time(A2,n) ∈ Θ(n2)
•
aber wc-time(A1,n) < wc-time(A2,n) für alle n < 1000
... wenn nur Eingaben x mit |x| < 1000 interessant sind, so sollte
Algorithmus A1 anstelle von Algorithmus A2 verwendet werden
1/1, Folie 16
© 2009 Prof. Steffen Lange
-
HDa/FbI
-
Algorithmik
Herunterladen