Der Groß-O

Werbung
Der Groß-O-Kalkül

Additionsregel
 Lemma, Teil 1: Für beliebige Funktionen f und g gilt:
Zunächst ein paar einfache "Rechen"-Regeln:
 Zu beweisen: nur das rechte "="
 Zu beweisen: jede der beiden Mengen ist jeweils in der anderen Menge
enhalten
"
": Sei
Abschätzung nach oben:
Mit
gilt
Also ist
G. Zachmann
"
Informatik 1 - WS 05/06
Komplexität
22
G. Zachmann
Informatik 1 - WS 05/06
Komplexität
23
 Lemma, Teil 2: Für beliebige Funktionen f und g gilt:
": Sei
Also
Abschätzung nach oben:
Also ist Bedingung für
mit denselben c, n0 erfüllt
 Additionsregel findet Anwendung bei der Berechnung der
Komplexität, wenn Programmteile hintereinander ausgeführt
werden.
G. Zachmann
Informatik 1 - WS 05/06
Komplexität
24
G. Zachmann
Informatik 1 - WS 05/06
Multiplikationsregel
Teilmengenbeziehungen
 Lemma: Für beliebige Funktionen f und g gilt:
 Lemma: Es gelten die folgenden Aussagen:
Komplexität
25
Komplexität
27
1.
2.
3.
 Beweis von Teil 1:
1.
2.
 Multiplikationsregel findet Anwendung bei der Berechnung der
Komplexität, wenn Programmteile ineinander geschachtelt werden
(Schleifen)
Also
Zu zeigen: jedes
Sei also
ist auch in
.
Per Def gilt
Wähle
und
Damit gilt
Also
G. Zachmann
Informatik 1 - WS 05/06
Komplexität
26
G. Zachmann
Informatik 1 - WS 05/06
1
Transitivität von Groß–O
 Teil 2 & 3 : analog
 Lemma: Falls
und
, dann ist
 Beweis:
Sei
G. Zachmann
Informatik 1 - WS 05/06
Komplexität
28
G. Zachmann
und
Informatik 1 - WS 05/06
Komplexität
29
Einfache Beziehungen
 Lemma: Für alle
 Für alle k, k fest, gilt:
gilt
 Für alle k > 0 und ε > 0 gilt:
 Beweis: Übung
 Satz: Sei

, wobei
 Für beliebige positive Zahlen a, b ≠ 1 gilt:
für 0 ≤ i ≤ m.
Dann gilt
 Insbesondere:
 Insbesondere: Es seien p1 und p2 Polynome vom Grad d1 bzw. d2,
wobei die Koeffizienten vor nd1 und nd2 positiv sind.
Dann gilt:
 Beweis: Übungsaufgabe. (Gleichzeitig ein Beleg, daß die AnalysisVorlesung Anwendung hat.)
G. Zachmann
Informatik 1 - WS 05/06
Komplexität
30
G. Zachmann
Informatik 1 - WS 05/06
Komplexität
31
Komplexität
33
Beweishilfe
 Bemerkung: Groß–O definiert keine totale Ordnungsrelation auf
Lemma: Es gilt:
der Menge aller Funktionen
 Beweis: Es gibt positive Funktionen f und g so, daß
und auch
Wähle zum Beispiel
.
und
Insbesondere hat man dann in Fall (1):
 Definition "polynomielle Zeit" :
wir sagen, ein Algorithmus A mit Komplexität f(n) braucht
höchstens polynomielle Rechenzeit (polynomial time), falls es ein
Polynom P(n) gibt, so daß
. A braucht höchstens
exponentielle Rechenzeit (exponential time), falls es eine
Konstante
gibt, so daß
.
G. Zachmann
Informatik 1 - WS 05/06
Komplexität
32
G. Zachmann
Informatik 1 - WS 05/06
2
Hierarchie von Größenordnungen
Wie überprüft man diesen Limes?
Größenordnung
O(1)
O(log n)
O(log2
n)
O(n)
O(n log n)
O(n2)
O(n3)
Name
konstante Funktionen
logarithmische Funktionen
quadratisch logarithmische Funktionen
lineare Funktionen
n log n-wachsende Funktionen
O(nk)
quadratische Funktionen
kubische Funktionen
polynomielle Funktionen(k konstant)
f heißt polynomiell beschränkt ,
wenn es ein Polynom p mit
gibt.
f wächst exponentiell , wenn es ein
G. Zachmann
Informatik 1 - WS 05/06
Komplexität
34
G. Zachmann
gibt mit
Informatik 1 - WS 05/06
.
Komplexität
Skalierbarkeiten
Allg. Bestimmung des Zeitaufwands mit Groß-O
 Annahme: 1 Rechenschritt ≌ 0.001 Sekunden → Maximale
 Sei A ein Programmstück, dann ist Zeitaufwand T(A) im Fall:
Eingabelänge bei gegebener Rechenzeit:
Laufzeit T(n)
1 Sekunde
n
n log n
n?
n?
1000
140
31
10
9
2n
35
 A ist einfache Anweisung oder arithm./log. Ausdruck →
1 Minute 1 Stunde
60000
4895
3600000
204094
 A ist Folge von Anweisungen → Additionsregel anwenden
244
39
15
1897
153
 A ist if-Anweisung →
(a) if cond: B
21
 Annahme: Wir können einen 10-fach schnelleren Rechner
→
(b) if cond: B else: C →
verwenden → Statt eines Problems der Größe p kann in gleicher
T(A) = T(cond) + T(B)
T(A) = T(cond) + max(T(B), T(C))
 A ist eine Schleife (while, for, … ) →
Zeit dann berechnet werden:
Laufzeit T(n) neue Problemgröße
n
n log n
n?
n?
2n
G. Zachmann
10p
(fast 10)p
3.16 p
2.15p
3.32 + p
! 10
ln(p)
LambertW(10 p ln(p))
!
p
10p
! 3 10p
! log 10 + p
 A ist Rekursion → später
Informatik 1 - WS 05/06
Komplexität
36
G. Zachmann
Informatik 1 - WS 05/06
Komplexität
37
Beispiele zur Laufzeitabschätzung
Algorithmus prefixAverages1(X)
Eingabe: Ein Array X von n Zahlen
Ausgabe: Ein Array A von Zahlen, so daß gilt: A[i] ist das arithmetische
Mittel der Zahlen X[0], …, X[i]
Methode:
A[i] = a / (i + 1)
return A
G. Zachmann
Informatik 1 - WS 05/06
→ O(1)
n·O(n) = O(n 2 )
O(1)+O(1)+O(n)
= O(n+2) = O(n)
a = 0
→ O(1)
for j in range(0,i+1):
a += X[j]
→ O(1)
i·O(1) = O(i) ⊆
O(n), da i ≤ n
for i in range(0,n):
Komplexität
38
3
Herunterladen