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