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