Upload
hoangdiep
View
218
Download
0
Embed Size (px)
Citation preview
Asymptotische Notationen
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 2 / 42
Algorithmen und Datenstrukturen SS09Foliensatz 2
Michael Brinkmeier
Technische Universitat IlmenauInstitut fur Theoretische Informatik
Sommersemester 2009
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 1 / 42
Einige Notationen
Notationen
N = 0, 1, 2, 3, . . . (Nach DIN-5473 enthalt N die 0)
N+ = n ∈ N | n > 0 = 1, 2, 3, . . .
R+0 = x ∈ R | x ≥ 0
R+ = x ∈ R | x > 0
Fur zwei Mengen X und Y sei XY die Menge der Abbildungen von Ynach X , z.B.
R+0
N=
f | f : N → R+0
Fur eine Menge X ist 2X die Potenzmenge von X , d.h. die Menge allerTeilmengen von X
2X := U | U ⊆ X
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 4 / 42
Zielsetzung
Ignorieren von konstanten Faktoren
Damit wird die Abhangigkeit von Programmiersprache, Prozessortyp,Rechenmodel usw. unterdruckt.
Asymptotische Sichtweise
d.h. Ignorieren von Werten fur kleine n.
Empirische Tatsache: Das Verhalten fur große Eingabegroßen n istmeist schon bei
”normalen“ Eingabegroßen entscheidend.
Damit sind wir nur noch an Großenklassen bzw. Großenordnungen vonFunktionen interessiert.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 3 / 42
Die O-Notation
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 6 / 42
Die O-Notation
Definition (O(f ))
Fur eine beliebiges f ∈ R+0
Nsei O(f ) die folgende Teilmenge von R
+0
N:
O(f ) :=
g ∈ R+0
N | ∃n0 ∈ N ∃C > 0
∀n ≥ n0 : g(n) ≤ C · f (n)
Anders formuliert: g ∈ O(f ), falls fur genugend große n eine KonstanteC > 0 existiert, so dass g(n) nicht großer als C · f (n) ist.
Wichtig!: Die Konstante hangt nicht von n ab!
Falls g ∈ O(f ), sagen wird”g ist von der Ordnung f“.
Oder auch: g wachst asymptotisch und unter Vernachlassigung konstanterFaktoren hochstens so schnell wie f .
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 5 / 42
Schreib- und Sprechweisen
g(n) = O(f (n)) ist ein Ersatz fur g ∈ O(f ).
Wichtig: In diesem Kontext ist das”=“ nicht symmetrisch!
”g(n) ist O(f (n))“ ist eine Sprechweise
Die Intuition hinter diesen Schreib- und Sprechweisen ist, dass O(f (n)) furein beliebiges Element aus O(f ) steht.
Beispiel
Die Rechenzeit des Algorithmus Straight Insertion Sort uber einer Eingabex = (a1, . . . , an) der Lange n ist O(n2).
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 8 / 42
Die O-Notation – Beispiele
C ∈ O(1) fur jede Konstante C > 0.
g(n) = 2n + 3 ≤ 3n fur alle n ≥ 3 und somit g ∈ O(n).
g(n) = 14n3 − 3n2 + 10 ≤ 14n3 fur alle n ≥ 2 und somit g ∈ O(n3).
g(n) = 3 + 2 sin(n) ≤ 5 fur alle n ≥ 0 und somit g ∈ O(1).
g(n) =
2n n gerade2n
n ungerade≤ 2 · n fur alle n ≥ 0 und somit g ∈ O(n).
n3 6∈ O(n2), denn es gilt
n3 ≤ C · n2 ⇔ n ≤ C .
D.h. fur jede Wahl von n0 und C wurde n > maxn0, C die Bedingungn3 ≤ C · n2 verletzen.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 7 / 42
Konvention
Innerhalb der O(. . . )-Termes sollen nur moglichst kleine und einfacheFunktionen verwendet werden.
Gute Beispiele:
17n2/(log n)3 + 13n3/2 = O(n2/(log n)3) ist klein
17n2/(log n)3 + 13n2 = O(n2) ist einfach
Schlechte Beispiele:
3n2 − 10n + 100 = O(3n2) enthalt unnotige konstante Faktoren.
3n2 − 10n + 100 = O(n100) ist eine viel zu große Schranke.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 10 / 42
Noch mehr Beispiele
2n + 3 = O(n)
2n + 3 = O(n2)
2n2 + 3n + 3 = O(n2)
4 · 2n + 3 · n2 = O(2n)
4n2 log n + 2n(log n)3 = O(n2 log n), denn fur n ≥ 2 gilt (log n)2 ≤ n.
3 + 2 sin(n) = O(1)
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 9 / 42
Eine Hierarchie von Funktionen
0
2
4
6
8
10
10 20 30 40 50 60 70 80 90 100
log n√
(x)
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 12 / 42
Eine Hierarchie von Funktionen
O(3n)
O(en)
O(2n)
O(n3)
O(n2)
O(n(log n)2)
O(n log n)
O(n)
O“
nlog n
”
O(√
n)
O(log n)
Ubungsaufgabe!
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 11 / 42
Eine Hierarchie von Funktionen
0
20
40
60
80
100
10 20 30 40 50 60 70 80 90 100
log n√
(x)n
log n
n
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 14 / 42
Eine Hierarchie von Funktionen
0
2
4
6
8
10
12
14
16
10 20 30 40 50 60 70 80 90 100
log n√
(x)n
log n
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 13 / 42
Eine Hierarchie von Funktionen
0
500
1000
1500
2000
2500
3000
3500
4000
4500
10 20 30 40 50 60 70 80 90 100
log n√
(x)n
log n
nn log n
n(log n)2
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 16 / 42
Eine Hierarchie von Funktionen
0
100
200
300
400
500
600
700
10 20 30 40 50 60 70 80 90 100
log n√
(x)n
log n
nn log n
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 15 / 42
Eine Hierarchie von Funktionen
0
200000
400000
600000
800000
1e+06
10 20 30 40 50 60 70 80 90 100
log n√
(x)n
log n
nn log n
n(log n)2
n2
n3
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 18 / 42
Eine Hierarchie von Funktionen
0
2000
4000
6000
8000
10000
10 20 30 40 50 60 70 80 90 100
log n√
(x)n
log n
nn log n
n(log n)2
n2
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 17 / 42
Eine Hierarchie von Funktionen
0
5e+42
1e+43
1.5e+43
2e+43
2.5e+43
3e+43
10 20 30 40 50 60 70 80 90 100
log n√
(x)n
log n
nn log n
n(log n)2
n2
n3
2x
en
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 20 / 42
Eine Hierarchie von Funktionen
0
2e+29
4e+29
6e+29
8e+29
1e+30
1.2e+30
1.4e+30
10 20 30 40 50 60 70 80 90 100
log n√
(x)n
log n
nn log n
n(log n)2
n2
n3
2x
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 19 / 42
Wachstumsordnungen und Rechenzeiten
n
tA(n) 10 100 1000 104 105 106 107 108
log n 33ns 66ns 0.1µs 0.1µs 0.2µs 0.2µs 0.2µs 0.3µs√
n 32ns 0.1µs 0.3µs 1µs 3.1µs 10µs 31µs 0.1msn 100ns 1µs 10µs 0.1ms 1ms 10ms 0.1s 1s
n log n 0.3µs 6.6µs 0.1ms 1.3ms 16ms 0.2s 2.3s 27s
n3/2 0.3µs 10µs 0.3ms 10ms 0.3s 10s 5.2m 2.7hn
2 1µs 0.1ms 10ms 1s 1.7m 2.8h 11d 3.2yn
3 10µs 10ms 10s 2.8h 115d 317y 3.2·105y
1.1n 26ns 0.1ms 7.8·1025y2n 10µs 4·1014yn! 36ms 3·10142yn
n 1.7m 3.2·10184y
1 Elementaroperation benotigt 10 ns
Zum Vergleich:Die geschatzte Zeit seit dem Urknall:13.5 · 109
− 14 · 109 Jahre.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 22 / 42
Eine Hierarchie von Funktionen
0
1e+47
2e+47
3e+47
4e+47
5e+47
6e+47
10 20 30 40 50 60 70 80 90 100
log n√
(x)n
log n
nn log n
n(log n)2
n2
n3
2x
en
3x
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 21 / 42
Die Konstanten und schnellere Rechner
In vielen Anwendungen wachst – nicht zu letzt wegen der wachsendenSpeicherkapazitaten – die Menge der zu verarbeitenden Daten deutlichschneller, als die Rechnerleistung.
Beispiele:
1 Indizes der Internet-Suchmaschinen.
2 Routenplaner, Fahrplan-, Ticketsysteme der Bahn.
3 Computergraphik (Szenen aus Milliarden von Elementen!)
Auf Grund dieses Ungleichgewichtes ist die Effizienz der benutztenAlgorithmen wichtiger als je zuvor!
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 24 / 42
Die Konstanten und schnellere Rechner
Frage
Wie wachst die maximal behandelbare Eingabegroße, wenn der Rechner umden Faktor 10 schneller wird?
tA(n) Maxalt MaxNEU
log n n n10
√n n 100n
n n 10n
n log n n 10n ·log n
log n+log 10
n3/2
n 4.64nn
2n 3.16n
n3
n 2.15n
nk
n 101/kn
cn
n n + logc 10
n! um von n auf n + 1 zu kommen,n
n braucht man einen um den Faktor n
schnelleren Rechner
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 23 / 42
Eine asymptotische untere Schranke
Definition (Ω(f ))
Fur eine beliebiges f ∈ R+0
Nsei Ω(f ) (Groß-Omega von f ) die folgende
Teilmenge von R+0
N:
Ω(f ) :=
g ∈ R+0
N | ∃n0 ∈ N ∃D > 0
∀n ≥ n0 : g(n)≥D · f (n)
Sprechweise
g ∈ Ω(f ) ⇔ g(n) ist asymptotisch und bis auf einen konstanten Faktordurch f nach unten beschrankt.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 26 / 42
Die Laufzeit von Straight Insertion Sort
Die Anzahl der Elementaroperationen von Stright Insertion Sort (SIS) auf nElementen ergab sich im schlechtesten Fall als
3
2n2 +
7
2n − 4
und im besten Fall als5n − 4.
Satz (Laufzeit von SIS)
Es giltTSIS (n) = O(n2) und TSIS,best(n) = O(n).
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 25 / 42
Beispiele
0.3 · n log n − 20n = Ω(n log n)
denn fur log n ≥ 100 gilt 0.3n log n − 20n ≥ 0.1n log n.
0.1 · n2 − 20n + 1 = Ω(n2)
denn fur n ≥ 10 ·√
9999 + 1000 gilt 0.1 · n2 − 20n + 1 ≥ 0.09n2.
n10 log n = Ω(n10)
denn n10 log n ≥ n10 fur n ≥ 2.
TSIS = Ω(n2) und TSIS,best = Ω(n)
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 28 / 42
Eine asymptotische untere Schranke
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 27 / 42
Asymptotische Gleichheit
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 30 / 42
Asymptotische Gleichheit
Definition (Θ(f ))
Fur eine beliebiges f ∈ R+0
Nsei Θ(f ) (Theta von f ) die folgende Teilmenge
von R+0
N:
Θ(f ) := O(f ) ∩ Ω(f ) =
g ∈ R+0
N | ∃n0 ∈ N ∃C , D > 0
∀n ≥ n0 : C · f (n) ≥ g(n) ≥ D · f (n)
Sprechweise
g ∈ Θ(f ) ⇔ g(n) ist asymptotisch und bis auf konstante Faktoren vonderselben Großenordnung wie f .
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 29 / 42
Eine striktere asymptotische obere Schranke
Definition (o(f ))
Fur eine beliebiges f ∈ R+0
Nsei o(f ) die folgende Teilmenge von R
+0
N:
o(f ) :=
g ∈ R+0
N | limn→∞
g(n)
f (n)= 0
Sprechweise
g ∈ o(f ) ⇔ g(n) wachst asymptotisch streng langsamer als f (n).
Beispielen
log n= o(n)
n2 log n = o(n9/2)
n10 = o(2n)
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 32 / 42
Beispiele
0.3 · n log n − 20n = Θ(n log n)
denn fur log n ≥ 100 gilt 0.3n log n − 20n ≥ 0.1n log n.
0.1 · n2 − 20n + 1 = Θ(n2)
denn fur n ≥ 10 ·√
9999 + 1000 gilt 0.1 · n2 − 20n + 1 ≥ 0.09n2.
n10 log n = Θ(n10 log n)
denn n10 log n ≥ n10 fur n ≥ 2.
TSIS = Θ(n2) und TSIS,best = Θ(n)
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 31 / 42
Eine kurze UbersichtMan kann eine Analogie wischen den asymptotischen Notationen und denGroßenvergleichen reeller Zahlen ziehen:
Asymptotisch Reelle Zahleng ∈ O(f ) g ≤ fg ∈ Ω(f ) g ≥ fg ∈ Θ(f ) g = fg ∈ o(f ) g < fg ∈ ω(f ) g > f
Im Gegensatz zu reellen Zahlen muss aber nicht jedes Paar von Funktionenbezuglich dieser Relationen vergleichbar sein.
Beispiel
f (n) = n2 und g(n) =
n falls n gerade
n3 falls n ungerade
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 34 / 42
Eine striktere asymptotische untere Schranke
Definition (ω(f ))
Fur eine beliebiges f ∈ R+0
Nsei ω(f ) die folgende Teilmenge von R
+0
N:
ω(f ) :=
g ∈ R+0
N | limn→∞
g(n)
f (n)= ∞
Sprechweise
g ∈ o(f ) ⇔ g(n) wachst asymptotisch echt schneller als f (n).
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 33 / 42
Die Grenzwertregel
Lemma (Grenzwertregel)
Falls f (n) > 0 fur alle n ≥ n0 und eine Konstante C ≥ 0 existiert mit
limn→∞
g(n)
f (n)= C ,
dann ist g ∈ O(f ). Ist C > 0, gilt sogar g ∈ Θ(f ).
Beweis: Ubungsaufgabe
Korollar
g ∈ o(f ) ⇒ g ∈ O(f )
Beweis.
g ∈ o(f ) ist genau dann der Fall, wenn die Voraussetzung derGrenzwertregel fur C = 0 erfullt ist.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 36 / 42
Rechenregeln
Satz (Rechenregeln fur O)
Sei C > 0 eine Konstante und f , f1, f2, g , g1, g2, h ∈ RPZN mit g ∈ O(f ) undgi ∈ O(fi ) fur i = 1, 2.
Dann gilt:
1 O(C · f ) = O(f )
2 g1 + g2 ∈ O(f1 + f2)
3 g1 · g2 ∈ O(f1 · f2)4 O(f1 + f2) = O (max(f1, f2))
5 Falls g ∈ O(f ) und f ∈ O(h), dann gilt g ∈ O(h), bzw.
g ∈ O(f ) ⇒ O(g) ⊆ O(f ).
Die Aussagen gelten auch fur Ω(.), Θ(.) und o(.).
Beweis: Ubungsaufgabe.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 35 / 42
Terme kleiner Ordnung
Lemma
Gilt f (n) fur n ≥ n0 und |g | ∈ o(f ), und ist h ∈ O(f + g), so ist
h ∈ O(f ).
Beweis
Da h ∈ O(f + g) gilt, existiert ein C > 0 und ein n1, so dass
h(n) ≤ C · (f (n) + g(n)) fur n ≥ n1.
Wegen g ∈ o(f ) gilt weiterhin limn→∞g(n)f (n) = 0 und somit existiert fur jedes
ε > 0 ein n2 ≥ n0 so dass fur n ≥ n2
g(n)
f (n)≤ ε ⇔ g(n) ≤ ε · f (n).
. . .
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 38 / 42
Polynome
KorollarSei g ein Polynom der Form
g(n) = aknk + ak−1n
k−1 + · · · + a1n + a0
mit ak , ak−1, . . . , a1, a0 ∈ R und ak > 0. Dann gilt
g ∈ Θ(nk).
Beweis.
limn→∞
g(n)
nk= lim
n→∞
(
ak +ak−1
n+ · · · + a1
nk−1+
a0
nk
)
= ak > 0.
Damit folgt die Behauptung aus der Grenzwertregel.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 37 / 42
O von Summen variabler Lange
Beispiel
In einem Algorithmus wird eine Schleife insgesamt n-mal durchlaufen. Deri-te Durchlauf verursacht Kosten von O(n · 2i).
Da die maximalen Kosten pro Runde O(n · 2n) sind, ist
O(n · (n · 2n)) = O(n2 · 2n)
eine gultige asymptotische obere Schranke.
Aber: 2 + 22 + · · · + 2n−1 + 2n = 2n+1 − 2 = O(2n).
Damit konnten die Gesamtkosten unter Umstanden O(n · 2n) sein.
Problem: Die Zahl der Summanden ist nicht konstant, sondern wachst mitn. Damit greift die Additivitat nicht.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 40 / 42
Terme kleiner Ordnung
Beweis (Fortsetzung)
Damit ergibt sich fur n ≥ maxn0, n2, n2
h(n) ≤ C · (f (n) + g(n)) ≤ C · (f (n) + εf (n)) = C (1 + ε)f (n)
und somit h ∈ O(f ).
Eine analoge Aussage gilt fur Ω(.), Θ(.) und o(.).
FazitIn Summen sind nur die dominierenden Terme entscheidend.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 39 / 42
O von Summen variabler Lange
Lemma (O von Summen variabler Lange)
Sei g : N × N → R+0 eine Abbildung. Ferner sei fur jedes n ∈ N eine
Zahlenfolge an1 , . . . , a
nl(n) der Lange l(n) gegeben.
Gibt es eine Konstante C > 0 und ein n0 ∈ N, so dass fur alle n ≥ n0 und1 ≤ i ≤ l(n) folgendes gilt:
0 ≤ ani ≤ C · g(n, i).
(Wir sagen: ani ist uniform durch ein Vielfaches von g(n, i) beschrankt)
Dann gilt fur jedes n ∈ N:
l(n)∑
i=1
ani = O
l(n)∑
i=1
g(n, i)
.
Man beachte, dass die Konstante C fur alle Folgenglieder ani und alle
Folgen gilt. Deshalb”uniform“.
Algorithmen und Datenstrukturen SS09
M. Brinkmeier
TU Ilmenau Seite 41 / 42