SS12 Algorithmen und Datenstrukturen Vorbemerkungen und 1. Kapitel Christopher Mattern April 2012 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 Team: Vorlesung: Dipl.-Ing. Christopher Mattern (Vertretung von Univ.-Prof. Dr. Martin Dietzfelbinger) Übungen: Dipl.-Inf. Michael Rink, Dipl.-Ing. Christopher Mattern FG Komplexitätstheorie und Effiziente Algorithmen Fachgebietsseite: http://www.tu-ilmenau.de/ktea/ FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 1 Hörer: Informatikstudierende im 2. Semester. Andere Interessenten sehr willkommen! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 2 Hörer: Informatikstudierende im 2. Semester. Andere Interessenten sehr willkommen! Material: Eigene Notizen! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 2 Hörer: Informatikstudierende im 2. Semester. Andere Interessenten sehr willkommen! Material: Eigene Notizen! Folienkopien, Übungsblätter FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 2 Hörer: Informatikstudierende im 2. Semester. Andere Interessenten sehr willkommen! Material: Eigene Notizen! Folienkopien, Übungsblätter auf der folgenden Webseite: www.tu-ilmenau.de/iti/lehre/lehre-ss-2012/aud/ FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 2 Hörer: Informatikstudierende im 2. Semester. Andere Interessenten sehr willkommen! Material: Eigene Notizen! Folienkopien, Übungsblätter auf der folgenden Webseite: www.tu-ilmenau.de/iti/lehre/lehre-ss-2012/aud/ Ebenso: Aktuelle Mitteilungen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 2 Hörer: Informatikstudierende im 2. Semester. Andere Interessenten sehr willkommen! Material: Eigene Notizen! Folienkopien, Übungsblätter auf der folgenden Webseite: www.tu-ilmenau.de/iti/lehre/lehre-ss-2012/aud/ Ebenso: Aktuelle Mitteilungen. Zugang auch über die FG-Seite. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 2 Zur Arbeitsweise: Der Stoff ist zu kompliziert und zu umfangreich, um durch reines Zuhören verstanden zu werden. • Regelmäßig Vorlesung nacharbeiten. Semesterbegleitend! • Begleitend Bücher ansehen. • Übungsblätter drucken, lesen, zur Übung mitbringen, vorher Lösung ausdenken, Lösungsweg aufschreiben, an Lösungen mitarbeiten, Lösungen vortragen. • Regelmäßig Übungen nacharbeiten. Semesterbegleitend! • Bei Verständnisproblemen frühzeitig fragen! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 3 Übung Michael Rink Mittwoch, ungerade KW 9:00 – 10:30 Sr HU 129 Mittwoch, gerade KW 11:00 – 12:30 Sr Oe 117 Donnerstag 9:00 – 10:30 Sr HU 117 Christopher Mattern Mittwoch Freitag 9:00 – 10:30 Sr HU 210 13:00 – 14:30 Sr K 2077 Es geht diese Woche los . . . • Übungsblätter stehen im Netz. • Übung vor- und nachbereiten! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 4 Prüfungsstoff: Vorlesung + Übungsaufgaben. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 5 Prüfungsstoff: Vorlesung + Übungsaufgaben. Prüfung: Klausur (90 Minuten). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 5 Prüfungsstoff: Vorlesung + Übungsaufgaben. Prüfung: Klausur (90 Minuten). 90 Punkte. 15 Bonuspunkte über Zwischenklausur (21.05., 30 Minuten). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 5 Grundlagen, Voraussetzungen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 6 Grundlagen, Voraussetzungen • Prof. G. Schäfer, Algorithmen und Programmierung für Informatiker, WS 2011/12 www.tu-ilmenau.de/telematik/lehre/wintersemester-20112012/ Wird vorausgesetzt! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 6 Grundlagen, Voraussetzungen • Prof. G. Schäfer, Algorithmen und Programmierung für Informatiker, WS 2011/12 www.tu-ilmenau.de/telematik/lehre/wintersemester-20112012/ Wird vorausgesetzt! • G. Saake, K. U. Sattler. Algorithmen und Datenstrukturen Eine Einführung mit Java. dpunkt.verlag, 3. Auflage, 2006. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 6 Grundlagen, Voraussetzungen • Prof. G. Schäfer, Algorithmen und Programmierung für Informatiker, WS 2011/12 www.tu-ilmenau.de/telematik/lehre/wintersemester-20112012/ Wird vorausgesetzt! • G. Saake, K. U. Sattler. Algorithmen und Datenstrukturen Eine Einführung mit Java. dpunkt.verlag, 3. Auflage, 2006. • Dr. E. Hexel: Grundlagen und diskrete Strukturen, Vorlesung, WS 2011/12 Wird vorausgesetzt! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 6 Literatur FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 7 Literatur • R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 3. Auflage, Vieweg+Teubner 2004. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 7 Literatur • R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 3. Auflage, Vieweg+Teubner 2004. • T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, 2002. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 7 Literatur • R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 3. Auflage, Vieweg+Teubner 2004. • T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, 2002. • T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms, Second Edition, MIT Press 2001. (Auch auf deutsch erhältlich.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 7 Literatur • R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 3. Auflage, Vieweg+Teubner 2004. • T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, 2002. • T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms, Second Edition, MIT Press 2001. (Auch auf deutsch erhältlich.) • K. Mehlhorn, P. Sanders, Algorithms and Data Structures: The Basic Toolbox, Springer-Verlag, 2008 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 7 Literatur • R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 3. Auflage, Vieweg+Teubner 2004. • T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, 2002. • T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms, Second Edition, MIT Press 2001. (Auch auf deutsch erhältlich.) • K. Mehlhorn, P. Sanders, Algorithms and Data Structures: The Basic Toolbox, Springer-Verlag, 2008 • R. Sedgewick, Algorithms, Addison-Wesley, 2002 (auch C-, C++, Java-Versionen, auch auf deutsch bei Pearson) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 7 Kapitel 1 Einführung und Grundlagen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 8 Datenstrukturen! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 9 Datenstrukturen! • Listen, Stacks, Queues FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 9 Datenstrukturen! • Listen, Stacks, Queues • Einfache Suchbäume FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 9 Datenstrukturen! • Listen, Stacks, Queues • Einfache Suchbäume • Balancierte Suchbäume FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 9 Datenstrukturen! • Listen, Stacks, Queues • Einfache Suchbäume • Balancierte Suchbäume • Hashtabellen implementieren Wörterbücher FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 9 Datenstrukturen! • Listen, Stacks, Queues • Einfache Suchbäume • Balancierte Suchbäume • Hashtabellen implementieren Wörterbücher • Heaps implementieren Vorrangswarteschlangen (Priority Queues) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 9 Datenstrukturen! • Listen, Stacks, Queues • Einfache Suchbäume • Balancierte Suchbäume • Hashtabellen implementieren Wörterbücher • Heaps implementieren Vorrangswarteschlangen (Priority Queues) • Datenstrukturen für Graphen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 9 Spezifikation des Verhaltens von Datenstrukturen (vereinfacht) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 10 Spezifikation des Verhaltens von Datenstrukturen (vereinfacht): (Abstrakte) Datentypen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 10 Spezifikation des Verhaltens von Datenstrukturen (vereinfacht): (Abstrakte) Datentypen Syntax: Signatur Semantik: Mathematisches Modell FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 10 Spezifikation des Verhaltens von Datenstrukturen (vereinfacht): (Abstrakte) Datentypen Syntax: Signatur Semantik: Mathematisches Modell (Axiomatische Variante: evtl. in Logische Strukturen“) ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 10 Algorithmen! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 11 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a1, a2, . . . , an FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 11 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a1, a2, . . . , an • von natürlichen / ganzen / reellen Zahlen • von Objekten aus einem total geordneten Bereich (U, <) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 11 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a1, a2, . . . , an • von natürlichen / ganzen / reellen Zahlen • von Objekten aus einem total geordneten Bereich (U, <) Z.B.: Zahlentupel, Strings (Zeichenreihen), FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 11 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a1, a2, . . . , an • von natürlichen / ganzen / reellen Zahlen • von Objekten aus einem total geordneten Bereich (U, <) Z.B.: Zahlentupel, Strings (Zeichenreihen), mit Namen versehene Datensätze, usw. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 11 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a1, a2, . . . , an • von natürlichen / ganzen / reellen Zahlen • von Objekten aus einem total geordneten Bereich (U, <) Z.B.: Zahlentupel, Strings (Zeichenreihen), mit Namen versehene Datensätze, usw. sortiere a1, a2, . . . , an in aufsteigende Reihenfolge. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 11 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a1, a2, . . . , an • von natürlichen / ganzen / reellen Zahlen • von Objekten aus einem total geordneten Bereich (U, <) Z.B.: Zahlentupel, Strings (Zeichenreihen), mit Namen versehene Datensätze, usw. sortiere a1, a2, . . . , an in aufsteigende Reihenfolge. Vorher: (5, 2, 9, 3, 6, 5, 8) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 11 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a1, a2, . . . , an • von natürlichen / ganzen / reellen Zahlen • von Objekten aus einem total geordneten Bereich (U, <) Z.B.: Zahlentupel, Strings (Zeichenreihen), mit Namen versehene Datensätze, usw. sortiere a1, a2, . . . , an in aufsteigende Reihenfolge. Vorher: (5, 2, 9, 3, 6, 5, 8) Nachher: (2, 3, 5, 5, 6, 8, 9) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 11 Sortieren durch Einfügen (Insertion Sort) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 12 Sortieren durch Einfügen (Insertion Sort) Eingabe (a1, . . . , an) in Array (Feld) A[1..n] FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 12 Sortieren durch Einfügen (Insertion Sort) Eingabe (a1, . . . , an) in Array (Feld) A[1..n] Idee: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 12 Sortieren durch Einfügen (Insertion Sort) Eingabe (a1, . . . , an) in Array (Feld) A[1..n] Idee: Für i = 2, 3, . . . , n: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 12 Sortieren durch Einfügen (Insertion Sort) Eingabe (a1, . . . , an) in Array (Feld) A[1..n] Idee: Für i = 2, 3, . . . , n: Suche die Stelle in der sortierten Version von a1, . . . , ai−1, an die ai gehört, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 12 Sortieren durch Einfügen (Insertion Sort) Eingabe (a1, . . . , an) in Array (Feld) A[1..n] Idee: Für i = 2, 3, . . . , n: Suche die Stelle in der sortierten Version von a1, . . . , ai−1, an die ai gehört, und füge ai dort ein. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 12 Sortieren durch Einfügen (Insertion Sort) Eingabe (a1, . . . , an) in Array (Feld) A[1..n] Idee: Für i = 2, 3, . . . , n: Suche die Stelle in der sortierten Version von a1, . . . , ai−1, an die ai gehört, und füge ai dort ein. – Pseudocode: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 12 Sortieren durch Einfügen (Insertion Sort) Eingabe (a1, . . . , an) in Array (Feld) A[1..n] Idee: Für i = 2, 3, . . . , n: Suche die Stelle in der sortierten Version von a1, . . . , ai−1, an die ai gehört, und füge ai dort ein. – Pseudocode: Algorithmus Straight Insertion Sort FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 12 Sortieren durch Einfügen (Insertion Sort) Eingabe (a1, . . . , an) in Array (Feld) A[1..n] Idee: Für i = 2, 3, . . . , n: Suche die Stelle in der sortierten Version von a1, . . . , ai−1, an die ai gehört, und füge ai dort ein. – Pseudocode: Algorithmus Straight Insertion Sort (1) for i from 2 to n do (2) x ← A[i].key ; (3) j ← i-1 ; (4) while j ≥ 1 and x < A[j].key do (5) A[j+1] ← A[j] ; (6) j ← j-1 ; (7) A[j+1] ← x. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 12 Was ist ein Algorithmus? Erklärung: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 13 Was ist ein Algorithmus? Erklärung: Ein Algorithmus A FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 13 Was ist ein Algorithmus? Erklärung: Ein Algorithmus A ist eine durch einen endlichen Text FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 13 Was ist ein Algorithmus? Erklärung: Ein Algorithmus A ist eine durch einen endlichen Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen Eingabe x FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 13 Was ist ein Algorithmus? Erklärung: Ein Algorithmus A ist eine durch einen endlichen Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen Eingabe x aus einer Menge I FG KTuEA, TU Ilmenau (Menge der möglichen Eingaben) Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 13 Was ist ein Algorithmus? Erklärung: Ein Algorithmus A ist eine durch einen endlichen Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen Eingabe x aus einer Menge I (Menge der möglichen Eingaben) eindeutig eine Reihe von auszuführenden Schritten vorschreibt. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 13 Was ist ein Algorithmus? Erklärung: Ein Algorithmus A ist eine durch einen endlichen Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen Eingabe x aus einer Menge I (Menge der möglichen Eingaben) eindeutig eine Reihe von auszuführenden Schritten vorschreibt. Wenn nach endlich vielen Schritten diese Ausführung anhält, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 13 Was ist ein Algorithmus? Erklärung: Ein Algorithmus A ist eine durch einen endlichen Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen Eingabe x aus einer Menge I (Menge der möglichen Eingaben) eindeutig eine Reihe von auszuführenden Schritten vorschreibt. Wenn nach endlich vielen Schritten diese Ausführung anhält, wird ein Ergebnis A(x) ausgegeben. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 13 Was ist ein Algorithmus? Erklärung: Ein Algorithmus A ist eine durch einen endlichen Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen Eingabe x aus einer Menge I (Menge der möglichen Eingaben) eindeutig eine Reihe von auszuführenden Schritten vorschreibt. Wenn nach endlich vielen Schritten diese Ausführung anhält, wird ein Ergebnis A(x) ausgegeben. Mögliche Formen: Umgangssprache, Pseudocode, Programm in Programmiersprache, Programm für formales Maschinenmodell, Programm in Maschinensprache. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 13 Allgemeine Merkmale eines Algorithmus FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 14 Allgemeine Merkmale eines Algorithmus • Endlicher Text FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 14 Allgemeine Merkmale eines Algorithmus • Endlicher Text • Ein Algorithmus für eine große (oft: unendliche!) Menge von Eingaben x FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 14 Allgemeine Merkmale eines Algorithmus • Endlicher Text • Ein Algorithmus für eine große (oft: unendliche!) Menge von Eingaben x (Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine Eingabe.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 14 Allgemeine Merkmale eines Algorithmus • Endlicher Text • Ein Algorithmus für eine große (oft: unendliche!) Menge von Eingaben x (Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine Eingabe.) • Eindeutig vorgeschriebene Abfolge von Schritten, wenn Eingabe x vorliegt FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 14 Allgemeine Merkmale eines Algorithmus • Endlicher Text • Ein Algorithmus für eine große (oft: unendliche!) Menge von Eingaben x (Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine Eingabe.) • Eindeutig vorgeschriebene Abfolge von Schritten, wenn Eingabe x vorliegt • Wenn Verarbeitung anhält: Ausgabe ablesbar FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 14 Allgemeine Merkmale eines Algorithmus • Endlicher Text • Ein Algorithmus für eine große (oft: unendliche!) Menge von Eingaben x (Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine Eingabe.) • Eindeutig vorgeschriebene Abfolge von Schritten, wenn Eingabe x vorliegt • Wenn Verarbeitung anhält: Ausgabe ablesbar Nicht verlangt: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 14 Allgemeine Merkmale eines Algorithmus • Endlicher Text • Ein Algorithmus für eine große (oft: unendliche!) Menge von Eingaben x (Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine Eingabe.) • Eindeutig vorgeschriebene Abfolge von Schritten, wenn Eingabe x vorliegt • Wenn Verarbeitung anhält: Ausgabe ablesbar Nicht verlangt: Terminierung auf allen x ∈ I. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 14 Erweiterungen des Algorithmusbegriffs FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 15 Erweiterungen des Algorithmusbegriffs • Online-Algorithmen: Die Eingabe wird nicht am Anfang der Berechnung, sondern nach und nach zur Verfügung gestellt FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 15 Erweiterungen des Algorithmusbegriffs • Online-Algorithmen: Die Eingabe wird nicht am Anfang der Berechnung, sondern nach und nach zur Verfügung gestellt → Häufige Situation bei Datenstrukturen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 15 Erweiterungen des Algorithmusbegriffs • Online-Algorithmen: Die Eingabe wird nicht am Anfang der Berechnung, sondern nach und nach zur Verfügung gestellt → Häufige Situation bei Datenstrukturen → Standard bei Betriebssystemen, Systemprogrammen, Anwendungsprogrammen mit Benutzerdialog usw. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 15 Erweiterungen des Algorithmusbegriffs • Online-Algorithmen: Die Eingabe wird nicht am Anfang der Berechnung, sondern nach und nach zur Verfügung gestellt → Häufige Situation bei Datenstrukturen → Standard bei Betriebssystemen, Systemprogrammen, Anwendungsprogrammen mit Benutzerdialog usw. • Randomisierung: Algorithmus führt Zufallsexperimente durch FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 15 Erweiterungen des Algorithmusbegriffs • Online-Algorithmen: Die Eingabe wird nicht am Anfang der Berechnung, sondern nach und nach zur Verfügung gestellt → Häufige Situation bei Datenstrukturen → Standard bei Betriebssystemen, Systemprogrammen, Anwendungsprogrammen mit Benutzerdialog usw. • Randomisierung: Algorithmus führt Zufallsexperimente durch • Verteilte Algorithmen∗: Mehrere Rechner arbeiten zusammen, kommunizieren, zeitliche Abfolge nicht vorhersagbar FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 15 Erweiterungen des Algorithmusbegriffs • Online-Algorithmen: Die Eingabe wird nicht am Anfang der Berechnung, sondern nach und nach zur Verfügung gestellt → Häufige Situation bei Datenstrukturen → Standard bei Betriebssystemen, Systemprogrammen, Anwendungsprogrammen mit Benutzerdialog usw. • Randomisierung: Algorithmus führt Zufallsexperimente durch • Verteilte Algorithmen∗: Mehrere Rechner arbeiten zusammen, kommunizieren, zeitliche Abfolge nicht vorhersagbar ∗ in dieser Vorlesung nicht oder nur am Rande diskutiert FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 15 Algorithmen in dieser Vorlesung: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 16 Algorithmen in dieser Vorlesung: • Darstellung von Algorithmen, Bausteine für Algorithmen (besonders Iteration, Rekursion) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 16 Algorithmen in dieser Vorlesung: • Darstellung von Algorithmen, Bausteine für Algorithmen (besonders Iteration, Rekursion) • Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise für iterative und rekursive Verfahren FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 16 Algorithmen in dieser Vorlesung: • Darstellung von Algorithmen, Bausteine für Algorithmen (besonders Iteration, Rekursion) • Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise für iterative und rekursive Verfahren • Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 16 Algorithmen in dieser Vorlesung: • Darstellung von Algorithmen, Bausteine für Algorithmen (besonders Iteration, Rekursion) • Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise für iterative und rekursive Verfahren • Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse • Algorithmen zur Implementierung von Datentypen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 16 Algorithmen in dieser Vorlesung: • Darstellung von Algorithmen, Bausteine für Algorithmen (besonders Iteration, Rekursion) • Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise für iterative und rekursive Verfahren • Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse • Algorithmen zur Implementierung von Datentypen • Balancierte Suchbäume, einfache Hashverfahren FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 16 Algorithmen in dieser Vorlesung: • Darstellung von Algorithmen, Bausteine für Algorithmen (besonders Iteration, Rekursion) • Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise für iterative und rekursive Verfahren • Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse • Algorithmen zur Implementierung von Datentypen • Balancierte Suchbäume, einfache Hashverfahren • Sortierverfahren: Quicksort, Heapsort, Mergesort, CountingSort FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 16 Algorithmen in dieser Vorlesung: • Darstellung von Algorithmen, Bausteine für Algorithmen (besonders Iteration, Rekursion) • Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise für iterative und rekursive Verfahren • Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse • Algorithmen zur Implementierung von Datentypen • Balancierte Suchbäume, einfache Hashverfahren • Sortierverfahren: Quicksort, Heapsort, Mergesort, CountingSort Grundbegriffe der Graphentheorie FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 16 • Grundlegende Exploration von Graphen: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 17 • Grundlegende Exploration von Graphen: Breitensuche FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 17 Algorithmus Straight Insertion Sort (Pseudocode) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 18 Algorithmus Straight Insertion Sort (Pseudocode) (1) for i from 2 to n do (2) x ← A[i] ; (3) j ← i-1 ; (4) while j ≥ 1 and x.key < A[j].key do (5) A[j+1] ← A[j] ; (6) j ← j-1 ; (7) A[j+1] ← x. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 18 Algorithmus Straight Insertion Sort (Pseudocode) (1) for i from 2 to n do (2) x ← A[i] ; (3) j ← i-1 ; (4) while j ≥ 1 and x.key < A[j].key do (5) A[j+1] ← A[j] ; (6) j ← j-1 ; (7) A[j+1] ← x. Fragen: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 18 Algorithmus Straight Insertion Sort (Pseudocode) (1) for i from 2 to n do (2) x ← A[i] ; (3) j ← i-1 ; (4) while j ≥ 1 and x.key < A[j].key do (5) A[j+1] ← A[j] ; (6) j ← j-1 ; (7) A[j+1] ← x. Fragen: (a) Ist dieser Algorithmus korrekt“? ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 18 Algorithmus Straight Insertion Sort (Pseudocode) (1) for i from 2 to n do (2) x ← A[i] ; (3) j ← i-1 ; (4) while j ≥ 1 and x.key < A[j].key do (5) A[j+1] ← A[j] ; (6) j ← j-1 ; (7) A[j+1] ← x. Fragen: (a) Ist dieser Algorithmus korrekt“? ” (b) Wie lange braucht der Algorithmus, um die Berechnung zu beenden? FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 18 (a) Korrektheitsbeweise Damit die Frage nach einem Beweis der Korrektheit sinnvoll ist, müssen wir die zu lösende Aufgabe spezifizieren. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 19 (a) Korrektheitsbeweise Damit die Frage nach einem Beweis der Korrektheit sinnvoll ist, müssen wir die zu lösende Aufgabe spezifizieren. Bemerkung: Aus einer vagen Problemstellung eine präzise Spezifikation des zu lösenden Problems zu gewinnen ist ein in der Praxis extrem wichtiger Schritt, dessen Bedeutung oft unterschätzt wird. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 19 Berechnungsprobleme FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 20 Berechnungsprobleme Erklärung: Ein Berechnungsproblem P besteht aus FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 20 Berechnungsprobleme Erklärung: Ein Berechnungsproblem P besteht aus (i) einer Menge I von möglichen Eingaben ( Inputs“, Instanzen“) ” ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 20 Berechnungsprobleme Erklärung: Ein Berechnungsproblem P besteht aus (i) einer Menge I von möglichen Eingaben ( Inputs“, Instanzen“) (I kann unendlich sein!) ” ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 20 Berechnungsprobleme Erklärung: Ein Berechnungsproblem P besteht aus (i) einer Menge I von möglichen Eingaben ( Inputs“, Instanzen“) (I kann unendlich sein!) ” ” (ii) einer Menge O von möglichen Ausgaben FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 20 Berechnungsprobleme Erklärung: Ein Berechnungsproblem P besteht aus (i) einer Menge I von möglichen Eingaben ( Inputs“, Instanzen“) (I kann unendlich sein!) ” ” (ii) einer Menge O von möglichen Ausgaben (iii) einer Funktion f : I → O FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 20 Berechnungsprobleme Erklärung: Ein Berechnungsproblem P besteht aus (i) einer Menge I von möglichen Eingaben ( Inputs“, Instanzen“) (I kann unendlich sein!) ” ” (ii) einer Menge O von möglichen Ausgaben (iii) einer Funktion f : I → O Ein Algorithmus A löst P“, wenn A genau die Eingaben aus ” I verarbeitet und zu Eingabe x ∈ I Ausgabe A(x) = f (x) liefert. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 20 Berechnungsprobleme Erklärung: Ein Berechnungsproblem P besteht aus (i) einer Menge I von möglichen Eingaben ( Inputs“, Instanzen“) (I kann unendlich sein!) ” ” (ii) einer Menge O von möglichen Ausgaben (iii) einer Funktion f : I → O Ein Algorithmus A löst P“, wenn A genau die Eingaben aus ” I verarbeitet und zu Eingabe x ∈ I Ausgabe A(x) = f (x) liefert. Spezialfall O = {1, 0} =“ {true, false} =“ {Ja, Nein} ” ” (Entscheidungsproblem) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 20 Varianten FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 21 Varianten • Zu einer Eingabe x ∈ I gibt es mehrere legale Ergebnisse. Formal: In (iii) haben wir statt einer Funktion f eine Relation R ⊆ I × O mit: ∀x ∈ I ∃y ∈ O : R(x, y). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 21 Varianten • Zu einer Eingabe x ∈ I gibt es mehrere legale Ergebnisse. Formal: In (iii) haben wir statt einer Funktion f eine Relation R ⊆ I × O mit: ∀x ∈ I ∃y ∈ O : R(x, y). A löst P, wenn A genau die Eingaben aus I verarbeitet und R(x, A(x)) für jedes x ∈ I gilt. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 21 Varianten • Zu einer Eingabe x ∈ I gibt es mehrere legale Ergebnisse. Formal: In (iii) haben wir statt einer Funktion f eine Relation R ⊆ I × O mit: ∀x ∈ I ∃y ∈ O : R(x, y). A löst P, wenn A genau die Eingaben aus I verarbeitet und R(x, A(x)) für jedes x ∈ I gilt. Beispiel: Beim Sortieren von Datensätzen (k, dk ), wobei ein Schlüssel k wiederholt vorkommen darf, ist jede sortierte Anordnung eine legale Lösung. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 21 Varianten • Zu einer Eingabe x ∈ I gibt es mehrere legale Ergebnisse. Formal: In (iii) haben wir statt einer Funktion f eine Relation R ⊆ I × O mit: ∀x ∈ I ∃y ∈ O : R(x, y). A löst P, wenn A genau die Eingaben aus I verarbeitet und R(x, A(x)) für jedes x ∈ I gilt. Beispiel: Beim Sortieren von Datensätzen (k, dk ), wobei ein Schlüssel k wiederholt vorkommen darf, ist jede sortierte Anordnung eine legale Lösung. • Online-Situation: Eingabe wird in Raten“ geliefert, Zwi” schenausgaben werden verlangt. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 21 Spezifikation des Sortierproblems Parameter: Der Grundbereich, aus dem die zu sortierenden Objekte stammen, ist ein Parameter der Spezifikation. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 22 Spezifikation des Sortierproblems Parameter: Der Grundbereich, aus dem die zu sortierenden Objekte stammen, ist ein Parameter der Spezifikation. (U, <): eine total geordnete Menge (endlich oder unendlich). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 22 Spezifikation des Sortierproblems Parameter: Der Grundbereich, aus dem die zu sortierenden Objekte stammen, ist ein Parameter der Spezifikation. (U, <): eine total geordnete Menge (endlich oder unendlich). Beispiele: Zahlenmengen {1, . . . , n}, N, Z, Q; Mengen von Strings. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 22 Spezifikation des Sortierproblems Parameter: Der Grundbereich, aus dem die zu sortierenden Objekte stammen, ist ein Parameter der Spezifikation. (U, <): eine total geordnete Menge (endlich oder unendlich). Beispiele: Zahlenmengen {1, . . . , n}, N, Z, Q; Mengen von Strings. D: Eine Menge (von Datensätzen“). ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 22 Spezifikation des Sortierproblems Parameter: Der Grundbereich, aus dem die zu sortierenden Objekte stammen, ist ein Parameter der Spezifikation. (U, <): eine total geordnete Menge (endlich oder unendlich). Beispiele: Zahlenmengen {1, . . . , n}, N, Z, Q; Mengen von Strings. D: Eine Menge (von Datensätzen“). ” Jeder Datensatz a hat einen Sortierschlüssel“: key : D → U . ” S <∞ I = O = Seq(D) = D = n≥0 Dn FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 22 Spezifikation des Sortierproblems Parameter: Der Grundbereich, aus dem die zu sortierenden Objekte stammen, ist ein Parameter der Spezifikation. (U, <): eine total geordnete Menge (endlich oder unendlich). Beispiele: Zahlenmengen {1, . . . , n}, N, Z, Q; Mengen von Strings. D: Eine Menge (von Datensätzen“). ” Jeder Datensatz a hat einen Sortierschlüssel“: key : D → U . ” S <∞ I = O = Seq(D) = D = n≥0 Dn = {(a1 . . . , an) | n ∈ N, a1, . . . , an ∈ D}, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 22 Spezifikation des Sortierproblems Parameter: Der Grundbereich, aus dem die zu sortierenden Objekte stammen, ist ein Parameter der Spezifikation. (U, <): eine total geordnete Menge (endlich oder unendlich). Beispiele: Zahlenmengen {1, . . . , n}, N, Z, Q; Mengen von Strings. D: Eine Menge (von Datensätzen“). ” Jeder Datensatz a hat einen Sortierschlüssel“: key : D → U . ” S <∞ I = O = Seq(D) = D = n≥0 Dn = {(a1 . . . , an) | n ∈ N, a1, . . . , an ∈ D}, die Menge aller endlichen Folgen von Datensätzen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 22 Beispiel: U = N, D = N × {a, . . . , z} key : D 3 (i, b) 7→ i ∈ U FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 23 Beispiel: U = N, D = N × {a, . . . , z} key : D 3 (i, b) 7→ i ∈ U Ein möglicher Input: x = ((5, p), (3, q), (9, a), (6, q), (5, a), (4, u), (5, z)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 23 Beispiel: U = N, D = N × {a, . . . , z} key : D 3 (i, b) 7→ i ∈ U Ein möglicher Input: x = ((5, p), (3, q), (9, a), (6, q), (5, a), (4, u), (5, z)). Das Ergebnis beim Sortieren sollte z. B. sein: y = ((3, q), (4, u), (5, z), (5, a), (5, p), (6, q), (9, a)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 23 x = (a1, . . . , an) ∈ I und y = (b1, . . . , bm) ∈ O stehen in der Relation R genau dann wenn FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 24 x = (a1, . . . , an) ∈ I und y = (b1, . . . , bm) ∈ O stehen in der Relation R genau dann wenn n=m FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 24 x = (a1, . . . , an) ∈ I und y = (b1, . . . , bm) ∈ O stehen in der Relation R genau dann wenn n = m und es gibt eine Permutation π von {1, . . . , n} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 24 x = (a1, . . . , an) ∈ I und y = (b1, . . . , bm) ∈ O stehen in der Relation R genau dann wenn n = m und es gibt eine Permutation π von {1, . . . , n} mit bi = aπ(i), 1 ≤ i ≤ n, und key(b1) ≤ key(b2) ≤ · · · ≤ key(bn). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 24 x = (a1, . . . , an) ∈ I und y = (b1, . . . , bm) ∈ O stehen in der Relation R genau dann wenn n = m und es gibt eine Permutation π von {1, . . . , n} mit bi = aπ(i), 1 ≤ i ≤ n, und key(b1) ≤ key(b2) ≤ · · · ≤ key(bn). Beispiel: Für x = ((5, p), (3, q), (9, a), (6, q), (5, a), (4, u), (5, z)) und y = ((3, q), (4, u), (5, z), (5, a), (5, p), (6, q), (9, a)) 1 2 3 4 5 6 7 wäre π = passend. 2 6 7 5 1 4 3 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 24 Alternative Formulierung für die Spezifikation einer Lösung des Sortierproblems: O = {π | π Permutation einer Menge {1, . . . , n}, n ∈ N} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 25 Alternative Formulierung für die Spezifikation einer Lösung des Sortierproblems: O = {π | π Permutation einer Menge {1, . . . , n}, n ∈ N} Definition: x = (a1, . . . , an) wird durch π sortiert, wenn key(aπ(1)) ≤ key(aπ(2)) ≤ · · · ≤ key(aπ(n)) gilt. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 25 Alternative Formulierung für die Spezifikation einer Lösung des Sortierproblems: O = {π | π Permutation einer Menge {1, . . . , n}, n ∈ N} Definition: x = (a1, . . . , an) wird durch π sortiert, wenn key(aπ(1)) ≤ key(aπ(2)) ≤ · · · ≤ key(aπ(n)) gilt. x = (a1, . . . , an) und π stehen in der Relation R0, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 25 Alternative Formulierung für die Spezifikation einer Lösung des Sortierproblems: O = {π | π Permutation einer Menge {1, . . . , n}, n ∈ N} Definition: x = (a1, . . . , an) wird durch π sortiert, wenn key(aπ(1)) ≤ key(aπ(2)) ≤ · · · ≤ key(aπ(n)) gilt. x = (a1, . . . , an) und π stehen in der Relation R0, wenn x durch π sortiert wird. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 25 Löst Straight Insertion Sort das Sortierproblem? Gilt für jede Eingabe (a1, . . . , an) in A[1..n], dass nachher dieselben Elemente im Array stehen, aber nach Schlüsseln aufsteigend sortiert? FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 26 Korrektheitsbeweis an Beispiel: Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man die folgende Behauptung: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 27 Korrektheitsbeweis an Beispiel: Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man die folgende Behauptung: (IBi) Nach Durchlauf Nummer i (in i) der äußeren Schleife FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 27 Korrektheitsbeweis an Beispiel: Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man die folgende Behauptung: (IBi) Nach Durchlauf Nummer i (in i) der äußeren Schleife stehen in A[1..i] dieselben Elemente wie vorher, aber aufsteigend sortiert. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 27 Korrektheitsbeweis an Beispiel: Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man die folgende Behauptung: (IBi) Nach Durchlauf Nummer i (in i) der äußeren Schleife stehen in A[1..i] dieselben Elemente wie vorher, aber aufsteigend sortiert. I.A.: i = 1: Nach Durchlauf für i = 1“ ist vor Beginn. ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 27 Korrektheitsbeweis an Beispiel: Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man die folgende Behauptung: (IBi) Nach Durchlauf Nummer i (in i) der äußeren Schleife stehen in A[1..i] dieselben Elemente wie vorher, aber aufsteigend sortiert. I.A.: i = 1: Nach Durchlauf für i = 1“ ist vor Beginn. ” Anfangs ist das Teilarray A[1..1] (nur ein Eintrag) sortiert. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 27 Korrektheitsbeweis an Beispiel: Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man die folgende Behauptung: (IBi) Nach Durchlauf Nummer i (in i) der äußeren Schleife stehen in A[1..i] dieselben Elemente wie vorher, aber aufsteigend sortiert. I.A.: i = 1: Nach Durchlauf für i = 1“ ist vor Beginn. ” Anfangs ist das Teilarray A[1..1] (nur ein Eintrag) sortiert. I.V.: (IBi−1) gilt, d. h.A[1..i − 1] ist sortiert, und Schleifendurchlauf i beginnt. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 27 Ind.-Schritt: Betrachte Schleifendurchlauf i. Die innere Schleife (2)–(7) transportiert x = A[i] (via x) an die Position j unmittelbar rechts von dem Eintrag in A[1..i − 1] mit dem größten Schlüssel, der ≤ key(x) ist. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 28 Ind.-Schritt: Betrachte Schleifendurchlauf i. Die innere Schleife (2)–(7) transportiert x = A[i] (via x) an die Position j unmittelbar rechts von dem Eintrag in A[1..i − 1] mit dem größten Schlüssel, der ≤ key(x) ist. Oder an Position 1, wenn key(A[i]) kleiner als alle Schlüssel in A[1..i − 1] ist. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 28 Ind.-Schritt: Betrachte Schleifendurchlauf i. Die innere Schleife (2)–(7) transportiert x = A[i] (via x) an die Position j unmittelbar rechts von dem Eintrag in A[1..i − 1] mit dem größten Schlüssel, der ≤ key(x) ist. Oder an Position 1, wenn key(A[i]) kleiner als alle Schlüssel in A[1..i − 1] ist. Die Einträge A[j],. . . ,A[i − 1] werden um eine Position nach rechts verschoben, um für A[i] Platz zu machen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 28 Ind.-Schritt: Betrachte Schleifendurchlauf i. Die innere Schleife (2)–(7) transportiert x = A[i] (via x) an die Position j unmittelbar rechts von dem Eintrag in A[1..i − 1] mit dem größten Schlüssel, der ≤ key(x) ist. Oder an Position 1, wenn key(A[i]) kleiner als alle Schlüssel in A[1..i − 1] ist. Die Einträge A[j],. . . ,A[i − 1] werden um eine Position nach rechts verschoben, um für A[i] Platz zu machen. ⇒ Ind.-Beh. (IBi) erfüllt. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 28 Ind.-Schritt: Betrachte Schleifendurchlauf i. Die innere Schleife (2)–(7) transportiert x = A[i] (via x) an die Position j unmittelbar rechts von dem Eintrag in A[1..i − 1] mit dem größten Schlüssel, der ≤ key(x) ist. Oder an Position 1, wenn key(A[i]) kleiner als alle Schlüssel in A[1..i − 1] ist. Die Einträge A[j],. . . ,A[i − 1] werden um eine Position nach rechts verschoben, um für A[i] Platz zu machen. ⇒ Ind.-Beh. (IBi) erfüllt. Also gilt (IBn), also ist nach Abschluss des Ablaufs das Array sortiert. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 28 Methoden für Korrektheitsbeweise FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 29 Methoden für Korrektheitsbeweise • Diskrete Mathematik FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 29 Methoden für Korrektheitsbeweise • Diskrete Mathematik • Vollständige Induktion FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 29 Methoden für Korrektheitsbeweise • Diskrete Mathematik • Vollständige Induktion → Schleifen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 29 Methoden für Korrektheitsbeweise • Diskrete Mathematik • Vollständige Induktion → Schleifen Wesentlich: Formulierung der Induktionsbehauptung. Schleifeninvariante“. ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 29 Methoden für Korrektheitsbeweise • Diskrete Mathematik • Vollständige Induktion → Schleifen Wesentlich: Formulierung der Induktionsbehauptung. Schleifeninvariante“. ” • Andere Formen der Induktion FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 29 Methoden für Korrektheitsbeweise • Diskrete Mathematik • Vollständige Induktion → Schleifen Wesentlich: Formulierung der Induktionsbehauptung. Schleifeninvariante“. ” • Andere Formen der Induktion → Rekursive Prozeduren FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 29 (b) Laufzeitanalysen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 30 (b) Laufzeitanalysen Kosten, Aufwand, Rechenzeit“, wenn Algorithmus A auf ” Eingabe x abläuft. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 30 (b) Laufzeitanalysen Kosten, Aufwand, Rechenzeit“, wenn Algorithmus A auf ” Eingabe x abläuft. Eingabegröße: n = |x| = size(x). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 30 (b) Laufzeitanalysen Kosten, Aufwand, Rechenzeit“, wenn Algorithmus A auf ” Eingabe x abläuft. Eingabegröße: n = |x| = size(x). (Bedeutung ist abhängig von Problem P.) In = {x ∈ I | size(x) = n} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 30 (b) Laufzeitanalysen Kosten, Aufwand, Rechenzeit“, wenn Algorithmus A auf ” Eingabe x abläuft. Eingabegröße: n = |x| = size(x). (Bedeutung ist abhängig von Problem P.) In = {x ∈ I | size(x) = n} – Größenklasse FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 30 (b) Laufzeitanalysen Kosten, Aufwand, Rechenzeit“, wenn Algorithmus A auf ” Eingabe x abläuft. Eingabegröße: n = |x| = size(x). (Bedeutung ist abhängig von Problem P.) In = {x ∈ I | size(x) = n} – Größenklasse Beim Sortierproblem: size((a1, . . . , an)) = n. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 30 Kosten – Rechenzeiten Kosten für Elementaroperationen: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 31 Kosten – Rechenzeiten Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 31 Kosten – Rechenzeiten Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Jede Elementaroperation op ist mit einer Konstanten cop bewertet, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 31 Kosten – Rechenzeiten Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Jede Elementaroperation op ist mit einer Konstanten cop bewertet, abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur, . . . FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 31 Kosten – Rechenzeiten Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Jede Elementaroperation op ist mit einer Konstanten cop bewertet, abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur, . . . Idee: op benötigt höchstens Zeit cop (Takte oder µs) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 31 Kosten – Rechenzeiten Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Jede Elementaroperation op ist mit einer Konstanten cop bewertet, abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur, . . . Idee: op benötigt höchstens Zeit cop (Takte oder µs) Unabhängig vom konkreten Input x. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 31 Kosten – Rechenzeiten Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Jede Elementaroperation op ist mit einer Konstanten cop bewertet, abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur, . . . Idee: op benötigt höchstens Zeit cop (Takte oder µs) Unabhängig vom konkreten Input x. Die Konstanten cop werden nie explizit genannt; vereinfachend oft: cop = 1 ( 1 RAM-Schritt“). ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 31 Kosten – Rechenzeiten Oder wir schreiben: O(1) für: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 32 Kosten – Rechenzeiten Oder wir schreiben: O(1) für: nicht größer als eine (von x unabhängige) Konstante c“ ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 32 Kosten – Rechenzeiten Oder wir schreiben: O(1) für: nicht größer als eine (von x unabhängige) Konstante c“ ” (z.B. cop, für eine Operation op) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 32 Kosten – Rechenzeiten Oder wir schreiben: O(1) für: nicht größer als eine (von x unabhängige) Konstante c“ ” (z.B. cop, für eine Operation op) Grund: Analyse des Algorithmus anhand von Pseudocode o.ä. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 32 Kosten – Rechenzeiten Oder wir schreiben: O(1) für: nicht größer als eine (von x unabhängige) Konstante c“ ” (z.B. cop, für eine Operation op) Grund: Analyse des Algorithmus anhand von Pseudocode o.ä. Technische Besonderheiten von konkreten Rechnern (Cachearchitekturen, Mehrkernprozessoren, Coprozessoren,. . . ), Implementierungen, Compileroptimierungen zu berücksichtigen wäre viel zu komplex! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 32 Kosten – Rechenzeiten kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 33 Kosten – Rechenzeiten kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 33 Kosten – Rechenzeiten kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann: tA(x) := X kop(x) · cop. op Operation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 33 Kosten – Rechenzeiten kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann: tA(x) := X kop(x) · cop. op Operation oder im Fall cop = 1: X tA(x) := kop(x) = #(ausgeführte Op.). op Operation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 33 Kosten – Rechenzeiten kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann: tA(x) := X kop(x) · cop. op Operation oder im Fall cop = 1: X tA(x) := kop(x) = #(ausgeführte Op.). op Operation Wir nennen tA(x) die Kosten von A auf x. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 33 Kosten – Rechenzeiten kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann: tA(x) := X kop(x) · cop. op Operation oder im Fall cop = 1: X tA(x) := kop(x) = #(ausgeführte Op.). op Operation Wir nennen tA(x) die Kosten von A auf x. Ungefähres Maß für die Rechenzeit! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 33 Kosten – Rechenzeiten kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann: tA(x) := X kop(x) · cop. op Operation oder im Fall cop = 1: X tA(x) := kop(x) = #(ausgeführte Op.). op Operation Wir nennen tA(x) die Kosten von A auf x. Ungefähres Maß für die Rechenzeit! Oft Rechenzeit“ statt Kosten“. ” ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 33 Gesamtlaufzeit: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 34 Gesamtlaufzeit: Nicht größer als die Summe aller Konstanten für die Einzeloperationen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 34 Gesamtlaufzeit: Nicht größer als die Summe aller Konstanten für die Einzeloperationen. Entscheidend: Wie oft wird jede Operation ausgeführt? FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 34 Beispiel: Straight Insertion Sort ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests → ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests → Kosten n · O(1) ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests → Kosten n · O(1) = O(n) ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests → Kosten n · O(1) = O(n) (4)–(6) für i: ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests → Kosten n · O(1) = O(n) (4)–(6) für i: Entscheidend: Anzahl der Tests in (4). ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests → Kosten n · O(1) = O(n) (4)–(6) für i: Entscheidend: Anzahl der Tests in (4). Der Test j ≥ 1“ wird zwischen 1-mal und i-mal durchgeführt, ” der Test x.key < A[j].key“ ” zwischen 1-mal und (i − 1)-mal ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests → Kosten n · O(1) = O(n) (4)–(6) für i: Entscheidend: Anzahl der Tests in (4). Der Test j ≥ 1“ wird zwischen 1-mal und i-mal durchgeführt, ” der Test x.key < A[j].key“ ” zwischen 1-mal und (i − 1)-mal, inputabhängig. ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests → Kosten n · O(1) = O(n) (4)–(6) für i: Entscheidend: Anzahl der Tests in (4). Der Test j ≥ 1“ wird zwischen 1-mal und i-mal durchgeführt, ” der Test x.key < A[j].key“ ” zwischen 1-mal und (i − 1)-mal, inputabhängig. Setze∗ ki = #{l | l < i und key(ai) < key(al)}. ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests → Kosten n · O(1) = O(n) (4)–(6) für i: Entscheidend: Anzahl der Tests in (4). Der Test j ≥ 1“ wird zwischen 1-mal und i-mal durchgeführt, ” der Test x.key < A[j].key“ ” zwischen 1-mal und (i − 1)-mal, inputabhängig. Setze∗ ki = #{l | l < i und key(ai) < key(al)}. Kosten für (4)–(6) bei ai: (ki + 1) · O(1) ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Beispiel: Straight Insertion Sort (1)–(3) und (7): Wird (n − 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests → Kosten n · O(1) = O(n) (4)–(6) für i: Entscheidend: Anzahl der Tests in (4). Der Test j ≥ 1“ wird zwischen 1-mal und i-mal durchgeführt, ” der Test x.key < A[j].key“ ” zwischen 1-mal und (i − 1)-mal, inputabhängig. Setze∗ ki = #{l | l < i und key(ai) < key(al)}. Kosten für (4)–(6) bei ai: (ki + 1) · O(1) = O(ki). ∗ Notation: #A oder |A|: Kardinalität von A. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 35 Kosten insgesamt: O(n) + (k2 + 1) · O(1) + (k3 + 1) · O(1) + · · · + (kn + 1) · O(1) = FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 36 Kosten insgesamt: O(n) + (k2 + 1) · O(1) + (k3 + 1) · O(1) + · · · + (kn + 1) · O(1) = = O(n + X ki). 2≤i≤n Typisch: Charakteristische Operationen“ sind entscheidend, ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 36 Kosten insgesamt: O(n) + (k2 + 1) · O(1) + (k3 + 1) · O(1) + · · · + (kn + 1) · O(1) = = O(n + X ki). 2≤i≤n Typisch: Charakteristische Operationen“ sind entscheidend, ” Hier: Vergleiche zwischen Elementen (Zeile (4)), Anzahl ≤ ki + 1. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 36 Kosten insgesamt: O(n) + (k2 + 1) · O(1) + (k3 + 1) · O(1) + · · · + (kn + 1) · O(1) = = O(n + X ki). 2≤i≤n Typisch: Charakteristische Operationen“ sind entscheidend, ” Hier: Vergleiche zwischen Elementen (Zeile (4)), Anzahl ≤ ki + 1. Oder: Zuweisungen von Elementen (Zeilen (5) und (7)), Anzahl ki + 1. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 36 Definition: P Fx = 2≤i≤n ki = #{(l, i) | 1 ≤ l < i ≤ n, key(al) > key(ai)} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 37 Definition: P Fx = 2≤i≤n ki = #{(l, i) | 1 ≤ l < i ≤ n, key(al) > key(ai)} Anzahl der Fehlstände“ in x = (a1, . . . , an) ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 37 Definition: P Fx = 2≤i≤n ki = #{(l, i) | 1 ≤ l < i ≤ n, key(al) > key(ai)} Anzahl der Fehlstände“ in x = (a1, . . . , an) ” Z. B. gibt es in (4, 7, 5, 3) vier Fehlstände. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 37 Worst case“ (Schlechtester Fall): ” P < Wegen Fx = 2≤i≤n(i − 1) = n(n−1) 2 FG KTuEA, TU Ilmenau n2 2: Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 38 Worst case“ (Schlechtester Fall): ” P < Wegen Fx = 2≤i≤n(i − 1) = n(n−1) 2 n2 2: Gesamtaufwand für S.I.S.: O(n + n2) = O(n2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 38 Worst case“ (Schlechtester Fall): ” P < Wegen Fx = 2≤i≤n(i − 1) = n(n−1) 2 n2 2: Gesamtaufwand für S.I.S.: O(n + n2) = O(n2). Es kann auch eine so große Laufzeit auftreten: Betrachte Eingabe mit ki = i − 1 für alle i, d. h. x ist absteigend sortiert. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 38 Worst case“ (Schlechtester Fall): ” P < Wegen Fx = 2≤i≤n(i − 1) = n(n−1) 2 n2 2: Gesamtaufwand für S.I.S.: O(n + n2) = O(n2). Es kann auch eine so große Laufzeit auftreten: Betrachte Eingabe mit ki = i − 1 für alle i, d. h. x ist absteigend sortiert. Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 38 Worst case“ (Schlechtester Fall): ” P < Wegen Fx = 2≤i≤n(i − 1) = n(n−1) 2 n2 2: Gesamtaufwand für S.I.S.: O(n + n2) = O(n2). Es kann auch eine so große Laufzeit auftreten: Betrachte Eingabe mit ki = i − 1 für alle i, d. h. x ist absteigend sortiert. Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)). Best case“ (Bester Fall): ki = 0, für alle i. ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 38 Worst case“ (Schlechtester Fall): ” P < Wegen Fx = 2≤i≤n(i − 1) = n(n−1) 2 n2 2: Gesamtaufwand für S.I.S.: O(n + n2) = O(n2). Es kann auch eine so große Laufzeit auftreten: Betrachte Eingabe mit ki = i − 1 für alle i, d. h. x ist absteigend sortiert. Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)). Best case“ (Bester Fall): ki = 0, für alle i. ” Beispiel: x = ((2, q), (4, u), (5, z), (7, a), (8, p), (9, q), (11, a)), FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 38 Worst case“ (Schlechtester Fall): ” P < Wegen Fx = 2≤i≤n(i − 1) = n(n−1) 2 n2 2: Gesamtaufwand für S.I.S.: O(n + n2) = O(n2). Es kann auch eine so große Laufzeit auftreten: Betrachte Eingabe mit ki = i − 1 für alle i, d. h. x ist absteigend sortiert. Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)). Best case“ (Bester Fall): ki = 0, für alle i. ” Beispiel: x = ((2, q), (4, u), (5, z), (7, a), (8, p), (9, q), (11, a)), Aufwand pro Durchlauf durch Schleife (2)–(7): O(1) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 38 Worst case“ (Schlechtester Fall): ” P < Wegen Fx = 2≤i≤n(i − 1) = n(n−1) 2 n2 2: Gesamtaufwand für S.I.S.: O(n + n2) = O(n2). Es kann auch eine so große Laufzeit auftreten: Betrachte Eingabe mit ki = i − 1 für alle i, d. h. x ist absteigend sortiert. Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)). Best case“ (Bester Fall): ki = 0, für alle i. ” Beispiel: x = ((2, q), (4, u), (5, z), (7, a), (8, p), (9, q), (11, a)), Aufwand pro Durchlauf durch Schleife (2)–(7): O(1) Gesamtaufwand für S.I.S.: n · O(1) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 38 Worst case“ (Schlechtester Fall): ” P < Wegen Fx = 2≤i≤n(i − 1) = n(n−1) 2 n2 2: Gesamtaufwand für S.I.S.: O(n + n2) = O(n2). Es kann auch eine so große Laufzeit auftreten: Betrachte Eingabe mit ki = i − 1 für alle i, d. h. x ist absteigend sortiert. Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)). Best case“ (Bester Fall): ki = 0, für alle i. ” Beispiel: x = ((2, q), (4, u), (5, z), (7, a), (8, p), (9, q), (11, a)), Aufwand pro Durchlauf durch Schleife (2)–(7): O(1) Gesamtaufwand für S.I.S.: n · O(1) = O(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 38 Average case“ (Mittlerer Fall): ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 39 Average case“ (Mittlerer Fall): ” Vereinfachung: Für alle i 6= j: key(ai) < key(aj ) oder key(ai) > key(aj ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 39 Average case“ (Mittlerer Fall): ” Vereinfachung: Für alle i 6= j: key(ai) < key(aj ) oder key(ai) > key(aj ). Unter der Annahme, dass jede Anordnung der Schlüssel (a1, . . . , an) mit derselben Wahrscheinlichkeit 1/n! auftritt FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 39 Average case“ (Mittlerer Fall): ” Vereinfachung: Für alle i 6= j: key(ai) < key(aj ) oder key(ai) > key(aj ). Unter der Annahme, dass jede Anordnung der Schlüssel (a1, . . . , an) mit derselben Wahrscheinlichkeit 1/n! auftritt (Beispiel bei Schlüsseln 2, 3, 7: (2, 3, 7), (2, 7, 3), (3, 2, 7), (3, 7, 2), (7, 2, 3), (7, 3, 2): je 61 ) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 39 Average case“ (Mittlerer Fall): ” Vereinfachung: Für alle i 6= j: key(ai) < key(aj ) oder key(ai) > key(aj ). Unter der Annahme, dass jede Anordnung der Schlüssel (a1, . . . , an) mit derselben Wahrscheinlichkeit 1/n! auftritt (Beispiel bei Schlüsseln 2, 3, 7: (2, 3, 7), (2, 7, 3), (3, 2, 7), (3, 7, 2), (7, 2, 3), (7, 3, 2): je 61 ) P bilde Mittelwert/Erwartungswert für Fx = 2≤i≤n ki. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 39 Kann Erwartungswert berechnen: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 40 Kann Erwartungswert berechnen: 1 n 1 E(Fx) = 2 · 2 = 4 n(n − 1) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 40 Kann Erwartungswert berechnen: 1 n 1 E(Fx) = 2 · 2 = 4 n(n − 1) (Grund: In jeder Anordnung (a01, . . . , a0n) der Schlüssel kann man Einträge an Positionen l und i vertauschen. Einmal liefert das Paar (l, i) einen Fehlstand, einmal nicht. Daher führt jedes der n2 Paare (l, i) mit Wahrscheinlichkeit genau 12 zu einem Fehlstand, trägt also 12 zur erwarteten Anzahl der Fehlstände bei.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 40 Kann Erwartungswert berechnen: 1 n 1 E(Fx) = 2 · 2 = 4 n(n − 1) (Grund: In jeder Anordnung (a01, . . . , a0n) der Schlüssel kann man Einträge an Positionen l und i vertauschen. Einmal liefert das Paar (l, i) einen Fehlstand, einmal nicht. Daher führt jedes der n2 Paare (l, i) mit Wahrscheinlichkeit genau 12 zu einem Fehlstand, trägt also 12 zur erwarteten Anzahl der Fehlstände bei.) Aufwand von Straight Insertion Sort im mittleren Fall, auf Inputs der Länge n, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 40 Kann Erwartungswert berechnen: 1 n 1 E(Fx) = 2 · 2 = 4 n(n − 1) (Grund: In jeder Anordnung (a01, . . . , a0n) der Schlüssel kann man Einträge an Positionen l und i vertauschen. Einmal liefert das Paar (l, i) einen Fehlstand, einmal nicht. Daher führt jedes der n2 Paare (l, i) mit Wahrscheinlichkeit genau 12 zu einem Fehlstand, trägt also 12 zur erwarteten Anzahl der Fehlstände bei.) Aufwand von Straight Insertion Sort im mittleren Fall, auf Inputs der Länge n, unter der Gleichverteilungsannahme: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 40 Kann Erwartungswert berechnen: 1 n 1 E(Fx) = 2 · 2 = 4 n(n − 1) (Grund: In jeder Anordnung (a01, . . . , a0n) der Schlüssel kann man Einträge an Positionen l und i vertauschen. Einmal liefert das Paar (l, i) einen Fehlstand, einmal nicht. Daher führt jedes der n2 Paare (l, i) mit Wahrscheinlichkeit genau 12 zu einem Fehlstand, trägt also 12 zur erwarteten Anzahl der Fehlstände bei.) Aufwand von Straight Insertion Sort im mittleren Fall, auf Inputs der Länge n, unter der Gleichverteilungsannahme: O(n2), aber auch Ω(n2) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 40 Kann Erwartungswert berechnen: 1 n 1 E(Fx) = 2 · 2 = 4 n(n − 1) (Grund: In jeder Anordnung (a01, . . . , a0n) der Schlüssel kann man Einträge an Positionen l und i vertauschen. Einmal liefert das Paar (l, i) einen Fehlstand, einmal nicht. Daher führt jedes der n2 Paare (l, i) mit Wahrscheinlichkeit genau 12 zu einem Fehlstand, trägt also 12 zur erwarteten Anzahl der Fehlstände bei.) Aufwand von Straight Insertion Sort im mittleren Fall, auf Inputs der Länge n, unter der Gleichverteilungsannahme: O(n2), aber auch Ω(n2) Zusammengefasst: Θ(n2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 40 Größenordnungen von Funktionen Notation: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 41 Größenordnungen von Funktionen Notation: N = {0, 1, 2, 3, . . .} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 41 Größenordnungen von Funktionen Notation: N = {0, 1, 2, 3, . . .} N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 41 Größenordnungen von Funktionen Notation: N = {0, 1, 2, 3, . . .} N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .} R+ 0 = {x ∈ R | x ≥ 0} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 41 Größenordnungen von Funktionen Notation: N = {0, 1, 2, 3, . . .} N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .} R+ 0 = {x ∈ R | x ≥ 0} R+ = {x ∈ R | x > 0} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 41 Größenordnungen von Funktionen Notation: N = {0, 1, 2, 3, . . .} N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .} R+ 0 = {x ∈ R | x ≥ 0} R+ = {x ∈ R | x > 0} Uns interessieren meistens (als Rechenaufwand oder Abschätzungen hierfür) nur Funktionen, die schließlich“ po” sitiv oder nichtnegativ sind. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 41 Größenordnungen von Funktionen Notation: N = {0, 1, 2, 3, . . .} N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .} R+ 0 = {x ∈ R | x ≥ 0} R+ = {x ∈ R | x > 0} Uns interessieren meistens (als Rechenaufwand oder Abschätzungen hierfür) nur Funktionen, die schließlich“ po” sitiv oder nichtnegativ sind. – Abkürzung: F + := {f | f : N → R, ∃n0∀n ≥ n0 : f (n) > 0}. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 41 Größenordnungen von Funktionen Notation: N = {0, 1, 2, 3, . . .} N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .} R+ 0 = {x ∈ R | x ≥ 0} R+ = {x ∈ R | x > 0} Uns interessieren meistens (als Rechenaufwand oder Abschätzungen hierfür) nur Funktionen, die schließlich“ po” sitiv oder nichtnegativ sind. – Abkürzung: F + := {f | f : N → R, ∃n0∀n ≥ n0 : f (n) > 0}. F0+ := {f | f : N → R, ∃n0∀n ≥ n0 : f (n) ≥ 0}. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 41 O-Notation Informal: g ist von der Ordnung f“ (Notation O(f )), wenn: ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 42 O-Notation Informal: g ist von der Ordnung f“ (Notation O(f )), wenn: ” 2f (n) g(n) f (n) n ≥ n0 Für genügend große n ist 0 ≤ g(n) ≤ c · f (n), für c > 0 konstant. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 42 O-Notation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 43 O-Notation Formal: Definition FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 43 O-Notation Formal: Definition Sei f ∈ F +. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 43 O-Notation Formal: Definition Sei f ∈ F +. O(f ) := { g ∈ F0+ | ∃n0 ∈ N ∃c > 0 ∀n ≥ n0 : g(n) ≤ c · f (n)} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 43 O-Notation Formal: Definition Sei f ∈ F +. O(f ) := { g ∈ F0+ | ∃n0 ∈ N ∃c > 0 ∀n ≥ n0 : g(n) ≤ c · f (n)} g ∈ O(f ) heißt, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 43 O-Notation Formal: Definition Sei f ∈ F +. O(f ) := { g ∈ F0+ | ∃n0 ∈ N ∃c > 0 ∀n ≥ n0 : g(n) ≤ c · f (n)} g ∈ O(f ) heißt, dass g asymptotisch (für genügend große n) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 43 O-Notation Formal: Definition Sei f ∈ F +. O(f ) := { g ∈ F0+ | ∃n0 ∈ N ∃c > 0 ∀n ≥ n0 : g(n) ≤ c · f (n)} g ∈ O(f ) heißt, dass g asymptotisch (für genügend große n) und unter Vernachlässigung konstanter Faktoren FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 43 O-Notation Formal: Definition Sei f ∈ F +. O(f ) := { g ∈ F0+ | ∃n0 ∈ N ∃c > 0 ∀n ≥ n0 : g(n) ≤ c · f (n)} g ∈ O(f ) heißt, dass g asymptotisch (für genügend große n) und unter Vernachlässigung konstanter Faktoren höchstens so schnell wächst wie f . FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 43 O-Notation Beispiele: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 44 O-Notation Beispiele: (a) Wenn g(n) = 2n + 7 log n und f (n) = n, dann ist g ∈ O(f ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 44 O-Notation Beispiele: (a) Wenn g(n) = 2n + 7 log n und f (n) = n, dann ist g ∈ O(f ). (b) Wenn g(n) = 2n + 7 log n und f (n) = n2, dann ist g ∈ O(f ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 44 O-Notation Beispiele: (a) Wenn g(n) = 2n + 7 log n und f (n) = n, dann ist g ∈ O(f ). (b) Wenn g(n) = 2n + 7 log n und f (n) = n2, dann ist g ∈ O(f ). (c) Wenn g(n) = 4n3 − 13n2 + 10 und f (n) = n3 log n, dann ist g ∈ O(f ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 44 O-Notation Beispiele: (a) Wenn g(n) = 2n + 7 log n und f (n) = n, dann ist g ∈ O(f ). (b) Wenn g(n) = 2n + 7 log n und f (n) = n2, dann ist g ∈ O(f ). (c) Wenn g(n) = 4n3 − 13n2 + 10 und f (n) = n3 log n, dann ist g ∈ O(f ). (d) Wenn g(n) = 3+2 sin(n) und f (n) = 1, dann ist g ∈ O(f ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 44 O-Notation Beispiele: (a) Wenn g(n) = 2n + 7 log n und f (n) = n, dann ist g ∈ O(f ). (b) Wenn g(n) = 2n + 7 log n und f (n) = n2, dann ist g ∈ O(f ). (c) Wenn g(n) = 4n3 − 13n2 + 10 und f (n) = n3 log n, dann ist g ∈ O(f ). (d) Wenn g(n) = 3+2 sin(n) und f (n) = 1, dann ist g ∈ O(f ). (e) Wenn g(n) = 2n für gerade n und g(n) = 2/n für ungerade n, und f (n) = n, dann ist g ∈ O(f ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 44 O(f (n))-Notation“ ” Schreib- und Sprechweisen: (i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 45 O(f (n))-Notation“ ” Schreib- und Sprechweisen: (i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ). (ii) g(n) ist O(f (n))“. ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 45 O(f (n))-Notation“ ” Schreib- und Sprechweisen: (i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ). (ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“ ” ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 45 O(f (n))-Notation“ ” Schreib- und Sprechweisen: (i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ). (ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“ ” ” Warnung: Das =“ bedeutet nicht Gleichheit, ist nicht ” symmetrisch. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 45 O(f (n))-Notation“ ” Schreib- und Sprechweisen: (i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ). (ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“ ” ” Warnung: Das =“ bedeutet nicht Gleichheit, ist nicht ” symmetrisch. Intuition: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 45 O(f (n))-Notation“ ” Schreib- und Sprechweisen: (i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ). (ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“ ” ” Warnung: Das =“ bedeutet nicht Gleichheit, ist nicht ” symmetrisch. Intuition: O(f (n)) steht für ein beliebiges Element von O(f ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 45 O(f (n))-Notation“ ” Schreib- und Sprechweisen: (i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ). (ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“ ” ” Warnung: Das =“ bedeutet nicht Gleichheit, ist nicht ” symmetrisch. Intuition: O(f (n)) steht für ein beliebiges Element von O(f ). (Eine anonyme Funktion g ∈ F0+, von der man nur weiß, dass sie für genügend große n durch c · f (n) beschränkt ist.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 45 O(f (n))-Notation“ ” Schreib- und Sprechweisen: (i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ). (ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“ ” ” Warnung: Das =“ bedeutet nicht Gleichheit, ist nicht ” symmetrisch. Intuition: O(f (n)) steht für ein beliebiges Element von O(f ). (Eine anonyme Funktion g ∈ F0+, von der man nur weiß, dass sie für genügend große n durch c · f (n) beschränkt ist.) Damit z. B. auch sinnvoll: 3n3 + 2n2 − 5n + 4 = 3n3 + O(n2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 45 O(f (n))-Notation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 46 O(f (n))-Notation Beispiele: (a) 2n + 7 log n = O(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 46 O(f (n))-Notation Beispiele: (a) 2n + 7 log n = O(n). (b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n für alle n ≥ 10 erfüllt g(n) = O(n2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 46 O(f (n))-Notation Beispiele: (a) 2n + 7 log n = O(n). (b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n für alle n ≥ 10 erfüllt g(n) = O(n2). (c) 2n2 − 30n + 3 = O(n2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 46 O(f (n))-Notation Beispiele: (a) 2n + 7 log n = O(n). (b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n für alle n ≥ 10 erfüllt g(n) = O(n2). (c) 2n2 − 30n + 3 = O(n2). (d) 4 · 2n + 3 · n2 = 4 · 2n + O(n2) = O(2n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 46 O(f (n))-Notation Beispiele: (a) 2n + 7 log n = O(n). (b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n für alle n ≥ 10 erfüllt g(n) = O(n2). (c) 2n2 − 30n + 3 = O(n2). (d) 4 · 2n + 3 · n2 = 4 · 2n + O(n2) = O(2n). (e) 4n2 log n + 2n(log n)3 = 4n2 log n + O(n2) = O(n3). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 46 O(f (n))-Notation Beispiele: (a) 2n + 7 log n = O(n). (b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n für alle n ≥ 10 erfüllt g(n) = O(n2). (c) 2n2 − 30n + 3 = O(n2). (d) 4 · 2n + 3 · n2 = 4 · 2n + O(n2) = O(2n). (e) 4n2 log n + 2n(log n)3 = 4n2 log n + O(n2) = O(n3). (e0) 4n2 log n + 2n(log n)3 = O(n2 log n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 46 O(f (n))-Notation Beispiele: (a) 2n + 7 log n = O(n). (b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n für alle n ≥ 10 erfüllt g(n) = O(n2). (c) 2n2 − 30n + 3 = O(n2). (d) 4 · 2n + 3 · n2 = 4 · 2n + O(n2) = O(2n). (e) 4n2 log n + 2n(log n)3 = 4n2 log n + O(n2) = O(n3). (e0) 4n2 log n + 2n(log n)3 = O(n2 log n). (f) 3 + 2 sin(n) = O(1). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 46 Konvention: Möglichst kleine und möglichst einfache Funktionen innerhalb des O(. . .)-Terms. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 47 Konvention: Möglichst kleine und möglichst einfache Funktionen innerhalb des O(. . .)-Terms. 17n2/(log n)3 + 13n3/2 = O(n2/(log n)3) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 (klein) 47 Konvention: Möglichst kleine und möglichst einfache Funktionen innerhalb des O(. . .)-Terms. 17n2/(log n)3 + 13n3/2 = O(n2/(log n)3) 17n2/(log n)3 + 13n3/2 = O(n2) FG KTuEA, TU Ilmenau (klein) oder (besonders einfach) Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 47 o-Notation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 48 o-Notation g(n) wächst asymptotisch streng langsamer als f (n).“ ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 48 o-Notation g(n) wächst asymptotisch streng langsamer als f (n).“ ” f (n) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 g(n) 48 o-Notation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 49 o-Notation Definition Für f ∈ F +: n o g(n) o(f ) := g ∈ F0+ lim =0 n→∞ f (n) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 49 o-Notation Definition Für f ∈ F +: n o g(n) o(f ) := g ∈ F0+ lim =0 n→∞ f (n) Schreibe g(n) = o(f (n))“ für g ∈ o(f ). ” (Sprich: g(n) ist klein-oh von f (n)“.) ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 49 o-Notation Definition Für f ∈ F +: n o g(n) o(f ) := g ∈ F0+ lim =0 n→∞ f (n) Schreibe g(n) = o(f (n))“ für g ∈ o(f ). ” (Sprich: g(n) ist klein-oh von f (n)“.) ” Beispiele: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 49 o-Notation Definition Für f ∈ F +: n o g(n) o(f ) := g ∈ F0+ lim =0 n→∞ f (n) Schreibe g(n) = o(f (n))“ für g ∈ o(f ). ” (Sprich: g(n) ist klein-oh von f (n)“.) ” Beispiele: (a) n/ log n = o(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 49 o-Notation Definition Für f ∈ F +: n o g(n) o(f ) := g ∈ F0+ lim =0 n→∞ f (n) Schreibe g(n) = o(f (n))“ für g ∈ o(f ). ” (Sprich: g(n) ist klein-oh von f (n)“.) ” Beispiele: (a) n/ log n = o(n). (b) 5n2 log n + 7n2.1 = o(n5/2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 49 o-Notation Definition Für f ∈ F +: n o g(n) o(f ) := g ∈ F0+ lim =0 n→∞ f (n) Schreibe g(n) = o(f (n))“ für g ∈ o(f ). ” (Sprich: g(n) ist klein-oh von f (n)“.) ” Beispiele: (a) n/ log n = o(n). (b) 5n2 log n + 7n2.1 = o(n5/2). (c) n10 = o(2n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 49 Ω-Notation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 50 Ω-Notation g(n) ist asymptotisch und bis auf einen konstanten Faktor ” durch f (n) nach unten beschränkt.“ FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 50 Ω-Notation g(n) ist asymptotisch und bis auf einen konstanten Faktor ” durch f (n) nach unten beschränkt.“ f (n) g(n) 3/4f (n) n ≥ n0 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 50 Ω-Notation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 51 Ω-Notation Definition Sei f ∈ F +. Ω(f ) := {g ∈ F + | ∃n0 ∈ N ∃d > 0 ∀n ≥ n0 : g(n) ≥ d · f (n)} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 51 Ω-Notation Definition Sei f ∈ F +. Ω(f ) := {g ∈ F + | ∃n0 ∈ N ∃d > 0 ∀n ≥ n0 : g(n) ≥ d · f (n)} Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ). ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 51 Ω-Notation Definition Sei f ∈ F +. Ω(f ) := {g ∈ F + | ∃n0 ∈ N ∃d > 0 ∀n ≥ n0 : g(n) ≥ d · f (n)} Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ). ” (Sprich: g(n) ist Groß-Omega von f (n)“.) ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 51 Ω-Notation Definition Sei f ∈ F +. Ω(f ) := {g ∈ F + | ∃n0 ∈ N ∃d > 0 ∀n ≥ n0 : g(n) ≥ d · f (n)} Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ). ” (Sprich: g(n) ist Groß-Omega von f (n)“.) ” Beispiele: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 51 Ω-Notation Definition Sei f ∈ F +. Ω(f ) := {g ∈ F + | ∃n0 ∈ N ∃d > 0 ∀n ≥ n0 : g(n) ≥ d · f (n)} Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ). ” (Sprich: g(n) ist Groß-Omega von f (n)“.) ” Beispiele: (a) 0.3n log n − 20n = Ω(n log n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 51 Ω-Notation Definition Sei f ∈ F +. Ω(f ) := {g ∈ F + | ∃n0 ∈ N ∃d > 0 ∀n ≥ n0 : g(n) ≥ d · f (n)} Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ). ” (Sprich: g(n) ist Groß-Omega von f (n)“.) ” Beispiele: (a) 0.3n log n − 20n = Ω(n log n). (b) FG KTuEA, TU Ilmenau 1 2 10 n − 20n + 1 = Ω(n2). Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 51 Ω-Notation Definition Sei f ∈ F +. Ω(f ) := {g ∈ F + | ∃n0 ∈ N ∃d > 0 ∀n ≥ n0 : g(n) ≥ d · f (n)} Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ). ” (Sprich: g(n) ist Groß-Omega von f (n)“.) ” Beispiele: (a) 0.3n log n − 20n = Ω(n log n). (b) 1 2 10 n − 20n + 1 = Ω(n2). (c) n10 log n = Ω(n10). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 51 Manchmal benutzt: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 52 Manchmal benutzt: Für f ∈ F +: ω(f ) := {g ∈ F + | limn→∞ fg(n) (n) = ∞} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 52 Manchmal benutzt: Für f ∈ F +: ω(f ) := {g ∈ F + | limn→∞ fg(n) (n) = ∞} g(n) wächst asymptotisch echt schneller als f .“ ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 52 Manchmal benutzt: Für f ∈ F +: ω(f ) := {g ∈ F + | limn→∞ fg(n) (n) = ∞} g(n) wächst asymptotisch echt schneller als f .“ ” Schreibe g(n) = ω(f (n))“ für g ∈ ω(f ). ” (Sprich: g(n) ist klein-omega von f (n)“.) ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 52 Manchmal benutzt: Für f ∈ F +: ω(f ) := {g ∈ F + | limn→∞ fg(n) (n) = ∞} g(n) wächst asymptotisch echt schneller als f .“ ” Schreibe g(n) = ω(f (n))“ für g ∈ ω(f ). ” (Sprich: g(n) ist klein-omega von f (n)“.) ” Klar: Für f, g ∈ F + gilt: g ∈ ω(f ) ⇔ f ∈ o(g). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 52 Θ-Notation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 53 Θ-Notation g(n) ist asymptotisch und bis auf konstante Faktoren von ” derselben Größenordnung wie f (n).“ FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 53 Θ-Notation g(n) ist asymptotisch und bis auf konstante Faktoren von ” derselben Größenordnung wie f (n).“ f (n) 3/2f (n) g(n) 3/4f (n) n ≥ n0 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 53 Θ-Notation FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 54 Θ-Notation Für f ∈ F + definiere: Θ(f ) := O(f ) ∩ Ω(f ) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 54 Θ-Notation Für f ∈ F + definiere: Θ(f ) := O(f ) ∩ Ω(f ) , d.h. Θ(f ) = {g ∈ F + | ∃n0 ∈ N ∃c, d > 0 ∀n ≥ n0 : d · f (n) ≤ g(n) ≤ c · f (n)} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 54 Θ-Notation Für f ∈ F + definiere: Θ(f ) := O(f ) ∩ Ω(f ) , d.h. Θ(f ) = {g ∈ F + | ∃n0 ∈ N ∃c, d > 0 ∀n ≥ n0 : d · f (n) ≤ g(n) ≤ c · f (n)} Beobachtung: g ∈ Θ(f ) ⇔ O(g) = O(f ). Schreibe g(n) = Θ(f (n))“ für g ∈ Θ(f ). ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 54 Θ-Notation Für f ∈ F + definiere: Θ(f ) := O(f ) ∩ Ω(f ) , d.h. Θ(f ) = {g ∈ F + | ∃n0 ∈ N ∃c, d > 0 ∀n ≥ n0 : d · f (n) ≤ g(n) ≤ c · f (n)} Beobachtung: g ∈ Θ(f ) ⇔ O(g) = O(f ). Schreibe g(n) = Θ(f (n))“ für g ∈ Θ(f ). ” (Sprich: g(n) ist Theta von f (n)“.) ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 54 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 55 Rechenregeln Lemma 1 (Grenzwertregel) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 55 Rechenregeln Lemma 1 (Grenzwertregel) Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n) (n) = c für ein c > 0, so ist g(n) = Θ(f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 55 Rechenregeln Lemma 1 (Grenzwertregel) Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n) (n) = c für ein c > 0, so ist g(n) = Θ(f (n)). Beweis: limn→∞ fg(n) (n) = c impliziert: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 55 Rechenregeln Lemma 1 (Grenzwertregel) Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n) (n) = c für ein c > 0, so ist g(n) = Θ(f (n)). Beweis: limn→∞ fg(n) (n) = c impliziert: Es gibt n0, so dass für n ≥ n0 gilt: c/2 < FG KTuEA, TU Ilmenau g(n) f (n) Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 < 2c. 55 Rechenregeln Lemma 1 (Grenzwertregel) Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n) (n) = c für ein c > 0, so ist g(n) = Θ(f (n)). Beweis: limn→∞ fg(n) (n) = c impliziert: Es gibt n0, so dass für n ≥ n0 gilt: c/2 < g(n) f (n) < 2c. Also: g(n) = Θ(f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 55 Rechenregeln Lemma 1 (Grenzwertregel) Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n) (n) = c für ein c > 0, so ist g(n) = Θ(f (n)). Beweis: limn→∞ fg(n) (n) = c impliziert: Es gibt n0, so dass für n ≥ n0 gilt: c/2 < g(n) f (n) < 2c. Also: g(n) = Θ(f (n)). Beachte: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 55 Rechenregeln Lemma 1 (Grenzwertregel) Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n) (n) = c für ein c > 0, so ist g(n) = Θ(f (n)). Beweis: limn→∞ fg(n) (n) = c impliziert: Es gibt n0, so dass für n ≥ n0 gilt: c/2 < g(n) f (n) < 2c. Also: g(n) = Θ(f (n)). Beachte: c = 0: limn→∞ fg(n) (n) = 0 bedeutet: g(n) = o(f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 55 Rechenregeln Lemma 1 (Grenzwertregel) Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n) (n) = c für ein c > 0, so ist g(n) = Θ(f (n)). Beweis: limn→∞ fg(n) (n) = c impliziert: Es gibt n0, so dass für n ≥ n0 gilt: c/2 < g(n) f (n) < 2c. Also: g(n) = Θ(f (n)). Beachte: c = 0: limn→∞ fg(n) (n) = 0 bedeutet: g(n) = o(f (n)). Daraus folgt: g(n) = O(f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 55 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 56 Rechenregeln Folgerung aus der Grenzwertregel: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 56 Rechenregeln Folgerung aus der Grenzwertregel: Wenn g ein Polynom ist: g(n) = ak nk + ak−1nk−1 + · · · + a1n + a0 für ak , . . . , a1, a0 ∈ R, wobei ak > 0, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 56 Rechenregeln Folgerung aus der Grenzwertregel: Wenn g ein Polynom ist: g(n) = ak nk + ak−1nk−1 + · · · + a1n + a0 für ak , . . . , a1, a0 ∈ R, wobei ak > 0, und f (n) = nk , dann g(n) ak−1 a1 a0 lim = lim ak + + · · · + k−1 + k = ak , n→∞ f (n) n→∞ n n n FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 56 Rechenregeln Folgerung aus der Grenzwertregel: Wenn g ein Polynom ist: g(n) = ak nk + ak−1nk−1 + · · · + a1n + a0 für ak , . . . , a1, a0 ∈ R, wobei ak > 0, und f (n) = nk , dann g(n) ak−1 a1 a0 lim = lim ak + + · · · + k−1 + k = ak , n→∞ f (n) n→∞ n n n damit: ak nk + ak−1nk−1 + · · · + a1n + a0 = Θ(nk ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 56 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 57 Rechenregeln Lemma 2 (Transitivität) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 57 Rechenregeln Lemma 2 (Transitivität) Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 57 Rechenregeln Lemma 2 (Transitivität) Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+: Wenn g(n) = O(f (n)) und h(n) = O(g(n)), FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 57 Rechenregeln Lemma 2 (Transitivität) Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+: Wenn g(n) = O(f (n)) und h(n) = O(g(n)), dann folgt h(n) = O(f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 57 Rechenregeln Lemma 2 (Transitivität) Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+: Wenn g(n) = O(f (n)) und h(n) = O(g(n)), dann folgt h(n) = O(f (n)). D.h.: Wenn g ∈ O(f ), dann ist O(g) ⊆ O(f ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 57 Rechenregeln Lemma 2 (Transitivität) Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+: Wenn g(n) = O(f (n)) und h(n) = O(g(n)), dann folgt h(n) = O(f (n)). D.h.: Wenn g ∈ O(f ), dann ist O(g) ⊆ O(f ). Kurz: h(n) = O(g(n)) = O(f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 57 Rechenregeln Lemma 2 (Transitivität) Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+: Wenn g(n) = O(f (n)) und h(n) = O(g(n)), dann folgt h(n) = O(f (n)). D.h.: Wenn g ∈ O(f ), dann ist O(g) ⊆ O(f ). Kurz: h(n) = O(g(n)) = O(f (n)). Achtung: In der O(f (n))-Notation bedeutet =“ keine Gleich” heit, die Relation ist nicht symmetrisch. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 57 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” Ist g(n) = O(d · f (n)) und d > 0 beliebig, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” Ist g(n) = O(d · f (n)) und d > 0 beliebig, dann gilt g(n) = O(f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” Ist g(n) = O(d · f (n)) und d > 0 beliebig, dann gilt g(n) = O(f (n)). D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” Ist g(n) = O(d · f (n)) und d > 0 beliebig, dann gilt g(n) = O(f (n)). D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ). Beispiele: Nicht g(n) = O(3n log2.8 n) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” Ist g(n) = O(d · f (n)) und d > 0 beliebig, dann gilt g(n) = O(f (n)). D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ). Beispiele: Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n); FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” Ist g(n) = O(d · f (n)) und d > 0 beliebig, dann gilt g(n) = O(f (n)). D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ). Beispiele: Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n); nicht g(n) = O(n/3) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” Ist g(n) = O(d · f (n)) und d > 0 beliebig, dann gilt g(n) = O(f (n)). D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ). Beispiele: Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n); nicht g(n) = O(n/3), sondern g(n) = O(n); FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” Ist g(n) = O(d · f (n)) und d > 0 beliebig, dann gilt g(n) = O(f (n)). D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ). Beispiele: Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n); nicht g(n) = O(n/3), sondern g(n) = O(n); nicht g(n) = O(2.5) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” Ist g(n) = O(d · f (n)) und d > 0 beliebig, dann gilt g(n) = O(f (n)). D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ). Beispiele: Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n); nicht g(n) = O(n/3), sondern g(n) = O(n); nicht g(n) = O(2.5), sondern g(n) = O(1). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln Lemma 3 ( Konstante Faktoren weglassen“) ” Ist g(n) = O(d · f (n)) und d > 0 beliebig, dann gilt g(n) = O(f (n)). D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ). Beispiele: Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n); nicht g(n) = O(n/3), sondern g(n) = O(n); nicht g(n) = O(2.5), sondern g(n) = O(1). Analog bei o(·), Ω(·), ω(·), Θ(·). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 58 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 59 Rechenregeln Lemma 4 (Linearität und Maximumsregel) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 59 Rechenregeln Lemma 4 (Linearität und Maximumsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 59 Rechenregeln Lemma 4 (Linearität und Maximumsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n) + g2(n) = O(f1(n) + f2(n)) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 59 Rechenregeln Lemma 4 (Linearität und Maximumsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n) + g2(n) = O(f1(n) + f2(n)) = O(max{f1(n), f2(n)}). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 59 Rechenregeln Lemma 4 (Linearität und Maximumsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n) + g2(n) = O(f1(n) + f2(n)) = O(max{f1(n), f2(n)}). Anwendung: Hintereinanderausführung von Algorithmen: Rechenzeiten addieren sich, auch in der O-Abschätzung. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 59 Rechenregeln Lemma 4 (Linearität und Maximumsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n) + g2(n) = O(f1(n) + f2(n)) = O(max{f1(n), f2(n)}). Anwendung: Hintereinanderausführung von Algorithmen: Rechenzeiten addieren sich, auch in der O-Abschätzung. Analog bei o(·), Ω(·), ω(·), Θ(·). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 59 Beispiele: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 60 Beispiele: 10n log n + 5n2 = O(n log n) + O(n2) = O(n2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 60 Beispiele: 10n log n + 5n2 = O(n log n) + O(n2) = O(n2). 10n log n + 5n2 = Θ(n log n) + Θ(n2) = Θ(n2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 60 Beispiele: 10n log n + 5n2 = O(n log n) + O(n2) = O(n2). 10n log n + 5n2 = Θ(n log n) + Θ(n2) = Θ(n2). 10n log n + 5n2 = Ω(n log n) + Ω(n2) = Ω(n2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 60 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 61 Rechenregeln Lemma 5 (Weglassen von Termen kleinerer Ordnung“) ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 61 Rechenregeln Lemma 5 (Weglassen von Termen kleinerer Ordnung“) ” + Ist f ∈ F und |g(n)| = o(f (n)), FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 61 Rechenregeln Lemma 5 (Weglassen von Termen kleinerer Ordnung“) ” + Ist f ∈ F und |g(n)| = o(f (n)), und ist h(n) = O(f (n) + g(n)), FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 61 Rechenregeln Lemma 5 (Weglassen von Termen kleinerer Ordnung“) ” + Ist f ∈ F und |g(n)| = o(f (n)), und ist h(n) = O(f (n) + g(n)), so ist h(n) = O(f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 61 Rechenregeln Lemma 5 (Weglassen von Termen kleinerer Ordnung“) ” + Ist f ∈ F und |g(n)| = o(f (n)), und ist h(n) = O(f (n) + g(n)), so ist h(n) = O(f (n)). Analog bei o(·), Ω(·), ω(·), Θ(·). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 61 Rechenregeln Lemma 5 (Weglassen von Termen kleinerer Ordnung“) ” + Ist f ∈ F und |g(n)| = o(f (n)), und ist h(n) = O(f (n) + g(n)), so ist h(n) = O(f (n)). Analog bei o(·), Ω(·), ω(·), Θ(·). Fazit: In Summen suche den dominierenden Term“; ” lasse die anderen weg. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 61 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 62 Rechenregeln Lemma 6 (Multiplikationsregel) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 62 Rechenregeln Lemma 6 (Multiplikationsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 62 Rechenregeln Lemma 6 (Multiplikationsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n)g2(n) = O(f1(n)f2(n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 62 Rechenregeln Lemma 6 (Multiplikationsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n)g2(n) = O(f1(n)f2(n)). Analog bei o(·), Ω(·), ω(·), Θ(·). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 62 Rechenregeln Lemma 6 (Multiplikationsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n)g2(n) = O(f1(n)f2(n)). Analog bei o(·), Ω(·), ω(·), Θ(·). Bei o(·) genügt sogar: g1(n) = O(f1(n)) und g2(n) = o(f2(n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 62 Rechenregeln Lemma 6 (Multiplikationsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n)g2(n) = O(f1(n)f2(n)). Analog bei o(·), Ω(·), ω(·), Θ(·). Bei o(·) genügt sogar: g1(n) = O(f1(n)) und g2(n) = o(f2(n)). Anwendung: Sei g1(n) = O(f1(n)) und g2(n) = O(f2(n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 62 Rechenregeln Lemma 6 (Multiplikationsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n)g2(n) = O(f1(n)f2(n)). Analog bei o(·), Ω(·), ω(·), Θ(·). Bei o(·) genügt sogar: g1(n) = O(f1(n)) und g2(n) = o(f2(n)). Anwendung: Sei g1(n) = O(f1(n)) und g2(n) = O(f2(n)). Wird eine Schleife g1(n)-mal ausgeführt, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 62 Rechenregeln Lemma 6 (Multiplikationsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n)g2(n) = O(f1(n)f2(n)). Analog bei o(·), Ω(·), ω(·), Θ(·). Bei o(·) genügt sogar: g1(n) = O(f1(n)) und g2(n) = o(f2(n)). Anwendung: Sei g1(n) = O(f1(n)) und g2(n) = O(f2(n)). Wird eine Schleife g1(n)-mal ausgeführt, wobei die Kosten für die einmalige Ausführung höchstens g2(n) betragen, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 62 Rechenregeln Lemma 6 (Multiplikationsregel) Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt g1(n)g2(n) = O(f1(n)f2(n)). Analog bei o(·), Ω(·), ω(·), Θ(·). Bei o(·) genügt sogar: g1(n) = O(f1(n)) und g2(n) = o(f2(n)). Anwendung: Sei g1(n) = O(f1(n)) und g2(n) = O(f2(n)). Wird eine Schleife g1(n)-mal ausgeführt, wobei die Kosten für die einmalige Ausführung höchstens g2(n) betragen, dann sind die Gesamtkosten O(f1(n)f2(n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 62 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 63 Rechenregeln Beweise: zu Lemma 2: Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 63 Rechenregeln Beweise: zu Lemma 2: Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n). Wähle c1 > 0 und n1 so groß, dass gilt: ∀n ≥ n1 : h(n) ≤ c1 · g(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 63 Rechenregeln Beweise: zu Lemma 2: Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n). Wähle c1 > 0 und n1 so groß, dass gilt: ∀n ≥ n1 : h(n) ≤ c1 · g(n). Setze n2 := max{n0, n1}. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 63 Rechenregeln Beweise: zu Lemma 2: Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n). Wähle c1 > 0 und n1 so groß, dass gilt: ∀n ≥ n1 : h(n) ≤ c1 · g(n). Setze n2 := max{n0, n1}. Dann gilt für n ≥ n2: h(n) ≤ c1g(n) ≤ c1(c0f (n)) = (c1c0)f (n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 63 Rechenregeln Beweise: zu Lemma 2: Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n). Wähle c1 > 0 und n1 so groß, dass gilt: ∀n ≥ n1 : h(n) ≤ c1 · g(n). Setze n2 := max{n0, n1}. Dann gilt für n ≥ n2: h(n) ≤ c1g(n) ≤ c1(c0f (n)) = (c1c0)f (n). Also: h(n) = O(f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 63 Rechenregeln Beweise: zu Lemma 2: Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n). Wähle c1 > 0 und n1 so groß, dass gilt: ∀n ≥ n1 : h(n) ≤ c1 · g(n). Setze n2 := max{n0, n1}. Dann gilt für n ≥ n2: h(n) ≤ c1g(n) ≤ c1(c0f (n)) = (c1c0)f (n). Also: h(n) = O(f (n)). zu Lemma 3: Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 63 Rechenregeln Beweise: zu Lemma 2: Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n). Wähle c1 > 0 und n1 so groß, dass gilt: ∀n ≥ n1 : h(n) ≤ c1 · g(n). Setze n2 := max{n0, n1}. Dann gilt für n ≥ n2: h(n) ≤ c1g(n) ≤ c1(c0f (n)) = (c1c0)f (n). Also: h(n) = O(f (n)). zu Lemma 3: Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n). Dann gilt für alle n ≥ 0 auch g(n) ≤ (c0/d) · (d · f (n)), d. h. g(n) = O(d · f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 63 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 64 Rechenregeln zu Lemma 4: Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt: ∀n ≥ ni : gi(n) ≤ ci · fi(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 64 Rechenregeln zu Lemma 4: Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt: ∀n ≥ ni : gi(n) ≤ ci · fi(n). Setze n0 := max{n0, n1} und c0 = max{c0 + c1}. Dann gilt für n ≥ n0: g1(n) + g2(n) ≤ c1f1(n) + c2f2(n) ≤ c0(f1(n) + f2(n)), also g1(n) + g2(n) = O(f1(n) + f2(n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 64 Rechenregeln zu Lemma 4: Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt: ∀n ≥ ni : gi(n) ≤ ci · fi(n). Setze n0 := max{n0, n1} und c0 = max{c0 + c1}. Dann gilt für n ≥ n0: g1(n) + g2(n) ≤ c1f1(n) + c2f2(n) ≤ c0(f1(n) + f2(n)), also g1(n) + g2(n) = O(f1(n) + f2(n)). Zudem für n ≥ n0: f1(n) + f2(n) ≤ 2 max{f1(n), f2(n)}. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 64 Rechenregeln zu Lemma 4: Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt: ∀n ≥ ni : gi(n) ≤ ci · fi(n). Setze n0 := max{n0, n1} und c0 = max{c0 + c1}. Dann gilt für n ≥ n0: g1(n) + g2(n) ≤ c1f1(n) + c2f2(n) ≤ c0(f1(n) + f2(n)), also g1(n) + g2(n) = O(f1(n) + f2(n)). Zudem für n ≥ n0: f1(n) + f2(n) ≤ 2 max{f1(n), f2(n)}. Also g1(n) + g2(n) ≤ 2c0 max{f1(n), f2(n)}. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 64 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 65 Rechenregeln zu Lemma 5: Wähle n1 so groß, dass für n ≥ n1 gilt: |g(n)| ≤ f (n). Wähle n2 und c > 0 so groß, dass für n ≥ n2 gilt: h(n) ≤ c(f (n) + g(n)). Dann gilt für n ≥ max{n1, n2}: h(n) ≤ c(f (n) + g(n)) ≤ c · 2f (n), also h(n) = O(f (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 65 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 66 Rechenregeln zu Lemma 6: Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt: ∀n ≥ ni : gi(n) ≤ ci · fi(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 66 Rechenregeln zu Lemma 6: Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt: ∀n ≥ ni : gi(n) ≤ ci · fi(n). Setze n0 := max{n0, n1} und c0 = c0c1. Dann gilt für n ≥ n0: g1(n) · g2(n) ≤ c1f1(n)c2f2(n) ≤ c0(f1(n) · f2(n)), also g1(n) · g2(n) = O(f1(n) · f2(n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 66 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 67 Rechenregeln O-Notation in Summen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 67 Rechenregeln O-Notation in Summen Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 67 Rechenregeln O-Notation in Summen Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen. n Durchläufe, Kosten beim i-ten Durchlauf: O(n · 2i). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 67 Rechenregeln O-Notation in Summen Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen. n Durchläufe, Kosten beim i-ten Durchlauf: O(n · 2i). Maximum: O(n · 2n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 67 Rechenregeln O-Notation in Summen Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen. n Durchläufe, Kosten beim i-ten Durchlauf: O(n · 2i). Maximum: O(n · 2n). Multiplikationsregel liefert: O(n · (n · 2n)) = O(n2 · 2n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 67 Rechenregeln O-Notation in Summen Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen. n Durchläufe, Kosten beim i-ten Durchlauf: O(n · 2i). Maximum: O(n · 2n). Multiplikationsregel liefert: O(n · (n · 2n)) = O(n2 · 2n). Aber: 2 + 22 + 23 + · · · + 2n−1 + 2n = 2n+1 − 2 = O(2n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 67 Rechenregeln O-Notation in Summen Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen. n Durchläufe, Kosten beim i-ten Durchlauf: O(n · 2i). Maximum: O(n · 2n). Multiplikationsregel liefert: O(n · (n · 2n)) = O(n2 · 2n). Aber: 2 + 22 + 23 + · · · + 2n−1 + 2n = 2n+1 − 2 = O(2n). Vermutung: Gesamtkosten sind nur O(n · 2n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 67 Rechenregeln FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 68 Rechenregeln Lemma 7 (O-Notation in Summen) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 68 Rechenregeln Lemma 7 (O-Notation in Summen) Sei g : N × N → R+ 0. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 68 Rechenregeln Lemma 7 (O-Notation in Summen) Sei g : N × N → R+ 0. Für jedes n ∈ N sei an,1, . . . , an,t(n) Zahlenfolge mit ∃c > 0∃n0∀n ≥ n0∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ c · g(n, i). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 68 Rechenregeln Lemma 7 (O-Notation in Summen) Sei g : N × N → R+ 0. Für jedes n ∈ N sei an,1, . . . , an,t(n) Zahlenfolge mit ∃c > 0∃n0∀n ≥ n0∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ c · g(n, i). ( an,i ist uniform durch ein Vielfaches von g(n, i) be” schränkt“; man schreibt kurz: an,i = O(g(n, i))) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 68 Rechenregeln Lemma 7 (O-Notation in Summen) Sei g : N × N → R+ 0. Für jedes n ∈ N sei an,1, . . . , an,t(n) Zahlenfolge mit ∃c > 0∃n0∀n ≥ n0∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ c · g(n, i). ( an,i ist uniform durch ein Vielfaches von g(n, i) be” schränkt“; man schreibt kurz: an,i = O(g(n, i))) Dann gilt (die Variable ist n): FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 68 Rechenregeln Lemma 7 (O-Notation in Summen) Sei g : N × N → R+ 0. Für jedes n ∈ N sei an,1, . . . , an,t(n) Zahlenfolge mit ∃c > 0∃n0∀n ≥ n0∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ c · g(n, i). ( an,i ist uniform durch ein Vielfaches von g(n, i) be” schränkt“; man schreibt kurz: an,i = O(g(n, i))) Dann gilt (die Variable ist n): X X an,i = O 1≤i≤t(n) FG KTuEA, TU Ilmenau g(n, i) 1≤i≤t(n) Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 68 Achtung! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 69 Achtung! Wenn es für jedes n ≥ n0 ein cn gibt mit FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 69 Achtung! Wenn es für jedes n ≥ n0 ein cn gibt mit ∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ cn · g(n, i), FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 69 Achtung! Wenn es für jedes n ≥ n0 ein cn gibt mit ∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ cn · g(n, i), (an,i nicht-uniform beschränkt), FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 69 Achtung! Wenn es für jedes n ≥ n0 ein cn gibt mit ∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ cn · g(n, i), (an,i nicht-uniform beschränkt), dann kann man nicht folgern, dass X X an,i = O 1≤i≤t(n) g(n, i) 1≤i≤t(n) ist. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 69 O-Notation bei Kosten Beispiel Straight Insertion Sort“, Eingabe x: ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 70 O-Notation bei Kosten Beispiel Straight Insertion Sort“, Eingabe x: ” Mit Multiplikationsregel: Der i-te Durchlauf durch die äußere Schleife hat Kosten Θ(1)+ ki · Θ(1) = Θ(1 + ki), wobei ki = #{` < i | key(a`) > key(ai)} (abhängig von x!). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 70 O-Notation bei Kosten Beispiel Straight Insertion Sort“, Eingabe x: ” Mit Multiplikationsregel: Der i-te Durchlauf durch die äußere Schleife hat Kosten Θ(1)+ ki · Θ(1) = Θ(1 + ki), wobei ki = #{` < i | key(a`) > key(ai)} (abhängig von x!). Mit Summationsregel: Der gesamte Ablauf hat Kosten X tS.I.S(x) = Θ(n + ki) = Θ(n + Fx). 2≤i≤n FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 70 O-Notation bei Kosten Beispiel Straight Insertion Sort“, Eingabe x: ” Mit Multiplikationsregel: Der i-te Durchlauf durch die äußere Schleife hat Kosten Θ(1)+ ki · Θ(1) = Θ(1 + ki), wobei ki = #{` < i | key(a`) > key(ai)} (abhängig von x!). Mit Summationsregel: Der gesamte Ablauf hat Kosten X tS.I.S(x) = Θ(n + ki) = Θ(n + Fx). 2≤i≤n Fx: Anzahl der Fehlstände“ ` < i, key(a`) > key(ai). ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 70 Kosten – Rechenzeiten Oft: Detaillierte Aussagen für einzelne Inputs gar nicht erwünscht. Vergröberung: Größenklassen Eingabegröße: n = |x| = size(x). In = {x ∈ I | size(x) = n} – Größenklasse Beim Sortierproblem z. B.: size((a1, . . . , an)) = n FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 71 Worst-case-Kosten worst-case-Kosten oder Kosten im schlechtesten Fall: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 72 Worst-case-Kosten worst-case-Kosten oder Kosten im schlechtesten Fall: Sei A Algorithmus für Inputs aus I. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 72 Worst-case-Kosten worst-case-Kosten oder Kosten im schlechtesten Fall: Sei A Algorithmus für Inputs aus I. In = {x ∈ I | size(x) = n} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 72 Worst-case-Kosten worst-case-Kosten oder Kosten im schlechtesten Fall: Sei A Algorithmus für Inputs aus I. In = {x ∈ I | size(x) = n} worst-case-Kosten: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 72 Worst-case-Kosten worst-case-Kosten oder Kosten im schlechtesten Fall: Sei A Algorithmus für Inputs aus I. In = {x ∈ I | size(x) = n} worst-case-Kosten: TA(n) = max{tA(x) | x ∈ In} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 72 Worst-case-Kosten worst-case-Kosten oder Kosten im schlechtesten Fall: Sei A Algorithmus für Inputs aus I. In = {x ∈ I | size(x) = n} worst-case-Kosten: TA(n) = max{tA(x) | x ∈ In} Wenn man betonen will, dass es um die worst-case Kosten geht: TA,worst(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 72 Worst-case-Kosten Beispiel S.I.S.: Für den Input x = (n, n − 1, . . . , 1) gilt n + Fx = n + X 2≤i≤n FG KTuEA, TU Ilmenau n(n − 1) . (i − 1) = n + 2 Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 73 Worst-case-Kosten Beispiel S.I.S.: Für den Input x = (n, n − 1, . . . , 1) gilt n + Fx = n + X 2≤i≤n n(n − 1) . (i − 1) = n + 2 Für jeden Input gilt n + Fx ≤ n + X 2≤i≤n FG KTuEA, TU Ilmenau n(n − 1) . (i − 1) = n + 2 Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 73 Worst-case-Kosten Beispiel S.I.S.: Für den Input x = (n, n − 1, . . . , 1) gilt n + Fx = n + X 2≤i≤n n(n − 1) . (i − 1) = n + 2 Für jeden Input gilt n + Fx ≤ n + X 2≤i≤n n(n − 1) . (i − 1) = n + 2 Also: TS.I.S.,worst(n) = Θ(n + n2) = Θ(n2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 73 Best-case-Kosten best-case-Kosten oder Kosten im besten Fall: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 74 Best-case-Kosten best-case-Kosten oder Kosten im besten Fall: TA,best(n) = min{tA(x) | x ∈ In} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 74 Best-case-Kosten best-case-Kosten oder Kosten im besten Fall: TA,best(n) = min{tA(x) | x ∈ In} Beispiel S.I.S.: Für den Input (1, 2, . . . , n) gilt n + Tx = n + 0 = n; FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 74 Best-case-Kosten best-case-Kosten oder Kosten im besten Fall: TA,best(n) = min{tA(x) | x ∈ In} Beispiel S.I.S.: Für den Input (1, 2, . . . , n) gilt n + Tx = n + 0 = n; für jeden Input gilt n + FG KTuEA, TU Ilmenau P 2≤i≤n ki ≥ n. Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 74 Best-case-Kosten best-case-Kosten oder Kosten im besten Fall: TA,best(n) = min{tA(x) | x ∈ In} Beispiel S.I.S.: Für den Input (1, 2, . . . , n) gilt n + Tx = n + 0 = n; für jeden Input gilt n + P 2≤i≤n ki ≥ n. Also: TS.I.S.,best(n) = O(n), sogar = Θ(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 74 Average-case Kosten average-case-Kosten oder durchschnittliche Kosten: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 75 Average-case Kosten average-case-Kosten oder durchschnittliche Kosten: Gegeben sei, für jedes n ∈ N, eine Wahrscheinlichkeitsverteilung Prn auf In. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 75 Average-case Kosten average-case-Kosten oder durchschnittliche Kosten: Gegeben sei, für jedes n ∈ N, eine Wahrscheinlichkeitsverteilung Prn auf In. D.h.: Für jedes x ∈ In ist eine Wahrscheinlichkeit Prn(x) festgelegt. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 75 Average-case Kosten average-case-Kosten oder durchschnittliche Kosten: Gegeben sei, für jedes n ∈ N, eine Wahrscheinlichkeitsverteilung Prn auf In. D.h.: Für jedes x ∈ In ist eine Wahrscheinlichkeit Prn(x) festgelegt. (Empirisch, oder per Festlegung.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 75 Average-case Kosten average-case-Kosten oder durchschnittliche Kosten: Gegeben sei, für jedes n ∈ N, eine Wahrscheinlichkeitsverteilung Prn auf In. D.h.: Für jedes x ∈ In ist eine Wahrscheinlichkeit Prn(x) festgelegt. (Empirisch, oder per Festlegung.) TA,av(n) = E(tA) = X Prn(x) · tA(x). x∈In FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 75 Average-case Kosten average-case-Kosten oder durchschnittliche Kosten: Gegeben sei, für jedes n ∈ N, eine Wahrscheinlichkeitsverteilung Prn auf In. D.h.: Für jedes x ∈ In ist eine Wahrscheinlichkeit Prn(x) festgelegt. (Empirisch, oder per Festlegung.) TA,av(n) = E(tA) = X Prn(x) · tA(x). x∈In (Erwartungswert, berechnet mit Prn; Mittelwert“) ” FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 75 Average-case Kosten Beispiel S.I.S.: Wahrscheinlichkeitsannahme (Standard für das Sortierproblem): Alle Schlüssel in der Eingabe verschieden, jede Anordnung der Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 76 Average-case Kosten Beispiel S.I.S.: Wahrscheinlichkeitsannahme (Standard für das Sortierproblem): Alle Schlüssel in der Eingabe verschieden, jede Anordnung der Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!. Jedes Paar von Positionen (l, i) ist mit W. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 1 2 ein Fehlstand. 76 Average-case Kosten Beispiel S.I.S.: Wahrscheinlichkeitsannahme (Standard für das Sortierproblem): Alle Schlüssel in der Eingabe verschieden, jede Anordnung der Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!. Jedes Paar von Positionen (l, i) ist mit W. 1 n 1 E(Fx) = 2 · 2 = 4 n(n − 1) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 1 2 ein Fehlstand. 76 Average-case Kosten Beispiel S.I.S.: Wahrscheinlichkeitsannahme (Standard für das Sortierproblem): Alle Schlüssel in der Eingabe verschieden, jede Anordnung der Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!. Jedes Paar von Positionen (l, i) ist mit W. 1 n 1 E(Fx) = 2 · 2 = 4 n(n − 1) Aufwand von Straight Insertion Fall, auf Inputs der Länge n, FG KTuEA, TU Ilmenau 1 2 Sort Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 ein Fehlstand. im mittleren 76 Average-case Kosten Beispiel S.I.S.: Wahrscheinlichkeitsannahme (Standard für das Sortierproblem): Alle Schlüssel in der Eingabe verschieden, jede Anordnung der Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!. Jedes Paar von Positionen (l, i) ist mit W. 1 n 1 E(Fx) = 2 · 2 = 4 n(n − 1) 1 2 ein Fehlstand. Aufwand von Straight Insertion Sort im mittleren Fall, auf Inputs der Länge n, unter der genannten Gleichverteilungsannahme: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 76 Average-case Kosten Beispiel S.I.S.: Wahrscheinlichkeitsannahme (Standard für das Sortierproblem): Alle Schlüssel in der Eingabe verschieden, jede Anordnung der Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!. Jedes Paar von Positionen (l, i) ist mit W. 1 n 1 E(Fx) = 2 · 2 = 4 n(n − 1) 1 2 ein Fehlstand. Aufwand von Straight Insertion Sort im mittleren Fall, auf Inputs der Länge n, unter der genannten Gleichverteilungsannahme: TS.I.S,av(n) = Θ(n + 14 n(n − 1)) = Θ(n2). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 76 Analyse von Kosten – Fazit Fazit: FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 77 Analyse von Kosten – Fazit Fazit: Selbst für feste Implementierung eines Algorithmus A auf fester Maschine FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 77 Analyse von Kosten – Fazit Fazit: Selbst für feste Implementierung eines Algorithmus A auf fester Maschine und feste Eingabegröße“ n = size(x) = |x| ” kann der Berechnungsaufwand auf verschiedenen Inputs sehr unterschiedlich sein. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 77 Analyse von Kosten – Fazit Fazit: Selbst für feste Implementierung eines Algorithmus A auf fester Maschine und feste Eingabegröße“ n = size(x) = |x| ” kann der Berechnungsaufwand auf verschiedenen Inputs sehr unterschiedlich sein. Begriff Die Laufzeit von Algorithmus A auf Eingaben x vom ” Umfang n = size(x)“ ist meist sinnlos. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 77 Analyse von Kosten – Fazit Fazit: Selbst für feste Implementierung eines Algorithmus A auf fester Maschine und feste Eingabegröße“ n = size(x) = |x| ” kann der Berechnungsaufwand auf verschiedenen Inputs sehr unterschiedlich sein. Begriff Die Laufzeit von Algorithmus A auf Eingaben x vom ” Umfang n = size(x)“ ist meist sinnlos. Sinnvoll: Schlechtester und bester Fall, durchschnittlicher Fall. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 77 Analyse von Kosten – Fazit In allen drei Situationen (worst c., best c., average c.): FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 78 Analyse von Kosten – Fazit In allen drei Situationen (worst c., best c., average c.): Obere Schranken FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 78 Analyse von Kosten – Fazit In allen drei Situationen (worst c., best c., average c.): Obere Schranken → O-Notation. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 78 Analyse von Kosten – Fazit In allen drei Situationen (worst c., best c., average c.): Obere Schranken → O-Notation. Untere Schranken FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 78 Analyse von Kosten – Fazit In allen drei Situationen (worst c., best c., average c.): Obere Schranken → O-Notation. Untere Schranken → Ω-Notation . FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 78 Analyse von Kosten – Fazit In allen drei Situationen (worst c., best c., average c.): Obere Schranken → O-Notation. Untere Schranken → Ω-Notation . Asymptotisches Verhalten, präzise: Θ-Notation. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 78 Analyse von Kosten – Fazit In allen drei Situationen (worst c., best c., average c.): Obere Schranken → O-Notation. Untere Schranken → Ω-Notation . Asymptotisches Verhalten, präzise: Θ-Notation. Konstante Faktoren ignorieren! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 78 Ignorieren konstanter Faktoren – Beispiel: Alternativer Sortieralgorithmus: Mergesort. (1. Sem.) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 79 Ignorieren konstanter Faktoren – Beispiel: Alternativer Sortieralgorithmus: Mergesort. (1. Sem.) Rechenzeit/Kosten: Θ(n log n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 79 Ignorieren konstanter Faktoren – Beispiel: Alternativer Sortieralgorithmus: Mergesort. (1. Sem.) Rechenzeit/Kosten: Θ(n log n). Mergesort wird für genügend große Inputs“ schneller sein als ” Straight Insertion Sort, auch wenn wir die Konstanten nicht kennen. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 79 Ein Vergleich: 10n log n versus n2/5 5.5 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 −0.5 ·104 FG KTuEA, TU Ilmenau 10n log(n) n2/5 0 100 200 n 300 Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 400 500 80 Ein Vergleich: 10n log n versus n2/5 2.2 2 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 −0.2 ·107 FG KTuEA, TU Ilmenau 10n log(n) n2/5 0 0.2 0.4 n 0.6 Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 0.8 1 ·104 81 Wachstumsordnungen Einfach“: Funktionen mit unterschiedlich schnellem ” Wachstum bilden Hierarchie. Beispiele (s. Übung): f1(n) = √ log log n, f4(n) = n, f7(n) = n log n, f10(n) = n2, f13(n) = n5 · 2n, FG KTuEA, TU Ilmenau f2(n) = log n, f5(n) = logn n , f8(n) = n(log n)2, f11(n) = n3, f14(n) = en, f3(n) = (log n)2, f6(n) = n, f9(n) = n3/2, f12(n) = 2n, f15(n) = 3n Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 82 Wachstumsordnungen Einfach“: Funktionen mit unterschiedlich schnellem ” Wachstum bilden Hierarchie. Beispiele (s. Übung): f1(n) = √ log log n, f4(n) = n, f7(n) = n log n, f10(n) = n2, f13(n) = n5 · 2n, f16(n) = (n/e)n, FG KTuEA, TU Ilmenau f2(n) = log n, f5(n) = logn n , f8(n) = n(log n)2, f11(n) = n3, f14(n) = en, f17(n) = n!, f3(n) = (log n)2, f6(n) = n, f9(n) = n3/2, f12(n) = 2n, f15(n) = 3n f18(n) = nn. Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 82 Wachstumsordnungen Einfach“: Funktionen mit unterschiedlich schnellem ” Wachstum bilden Hierarchie. Beispiele (s. Übung): f2(n) = log n, f3(n) = (log n)2, f5(n) = logn n , f6(n) = n, f8(n) = n(log n)2, f9(n) = n3/2, f11(n) = n3, f12(n) = 2n, f14(n) = en, f15(n) = 3n f17(n) = n!, f18(n) = nn. fi+1(n) in folgendem Sinn: lim = ∞, für 1 ≤ i ≤ 17. n→∞ fi (n) Bem.: In dieser Vorlesung: log x bedeutet log2 x. f1(n) = √ log log n, f4(n) = n, f7(n) = n log n, f10(n) = n2, f13(n) = n5 · 2n, f16(n) = (n/e)n, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 82 Vergleich einiger Wachstumsordnungen Zeit für eine (Elementar-)Operation: 10 ns. tA(n) 10 100 1000 log √n n n n log n n3/2 n2 n3 1.1n 2n n! nn 33ns 32ns 100ns 0.3µs 0.3µs 1µs 10µs 26ns 10µs 36ms 1.7m 66ns 0.1µs 1µs 6.6µs 10µs 0.1ms 10ms 0.1ms 4.0·1014y 3.0·10142y 3.2·10184y 0.1µs 0.3µs 10µs 0.1ms 0.3ms 10ms 10s 7.8·1025y FG KTuEA, TU Ilmenau n 104 105 106 107 108 0.1µs 1µs 0.1ms 1.3ms 10ms 1s 2.8h 0.2µs 3.1µs 1ms 16ms 0.3s 1.7m 115d 0.2µs 10µs 10ms 0.2s 10s 2.8h 317y 0.2µs 31µs 0.1s 2.3s 5.2m 11d 3.2·105y 0.3µs 0.1ms 1s 27s 2.7h 3.2y Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 83 Hilft ein schnellerer Rechner? Wie wächst die maximal behandelbare Eingabegröße, wenn der Rechner um den Faktor 10 schneller wird? tA(n) Maxalt MaxNEU 10 log n n n √ n n 100n n n 10n log n n 10n · log n+log n log n 10 n3/2 n 4.64n n2 n 3.16n n3 n 2.15n nk n 101/k n cn n n + logc 10 n! um von n auf n + 1 zu kommen, braucht man einen um den Faktor n nn schnelleren Rechner FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 84 Hilft ein schnellerer Rechner? Um die steigende Rechnergeschwindigkeit wenigstens einigermaßen ausnutzen zu können, sind Algorithmen mit polynomieller Laufzeit (kleine Exponenten) wesentlich. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 85 Hilft ein schnellerer Rechner? Angetrieben durch die höheren Rechengeschwindigkeiten und die noch rascher wachsenden Speicherkapazitäten wächst in vielen Bereichen die Menge der zu bewältigenden Daten noch schneller als die Rechnergeschwindigkeit. Um die steigende Rechnergeschwindigkeit wenigstens einigermaßen ausnutzen zu können, sind Algorithmen mit polynomieller Laufzeit (kleine Exponenten) wesentlich. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 85 Hilft ein schnellerer Rechner? Angetrieben durch die höheren Rechengeschwindigkeiten und die noch rascher wachsenden Speicherkapazitäten wächst in vielen Bereichen die Menge der zu bewältigenden Daten noch schneller als die Rechnergeschwindigkeit. Beispiele: Indizes der Internet-Suchmaschinen. Um die steigende Rechnergeschwindigkeit wenigstens einigermaßen ausnutzen zu können, sind Algorithmen mit polynomieller Laufzeit (kleine Exponenten) wesentlich. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 85 Hilft ein schnellerer Rechner? Angetrieben durch die höheren Rechengeschwindigkeiten und die noch rascher wachsenden Speicherkapazitäten wächst in vielen Bereichen die Menge der zu bewältigenden Daten noch schneller als die Rechnergeschwindigkeit. Beispiele: Indizes der Internet-Suchmaschinen. Routenplaner, Fahrplan-, Ticketsysteme der Bahn. Um die steigende Rechnergeschwindigkeit wenigstens einigermaßen ausnutzen zu können, sind Algorithmen mit polynomieller Laufzeit (kleine Exponenten) wesentlich. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 85 Hilft ein schnellerer Rechner? Angetrieben durch die höheren Rechengeschwindigkeiten und die noch rascher wachsenden Speicherkapazitäten wächst in vielen Bereichen die Menge der zu bewältigenden Daten noch schneller als die Rechnergeschwindigkeit. Beispiele: Indizes der Internet-Suchmaschinen. Routenplaner, Fahrplan-, Ticketsysteme der Bahn. Computergraphik (Szenen aus zig Milliarden von Elementen!) Um die steigende Rechnergeschwindigkeit wenigstens einigermaßen ausnutzen zu können, sind Algorithmen mit polynomieller Laufzeit (kleine Exponenten) wesentlich. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1 85