Algorithmen und Datenstrukturen 1. Vorlesung
|
|
- Ingeborg Breiner
- vor 6 Jahren
- Abrufe
Transkript
1 Algorithmen und Datenstrukturen 1. Vorlesung Martin Dietzfelbinger 7. April 2008 FG KTuEA, TU Ilmenau AuD
2 Hörer: Informatikstudierende im 2. Semester, Ingenieurinformatik im 4. Semester. Andere Interessenten willkommen! FG KTuEA, TU Ilmenau AuD
3 Hörer: Informatikstudierende im 2. Semester, Ingenieurinformatik im 4. Semester. Andere Interessenten willkommen! Übungen: Informatik: 2 Ü, d.h. wöchentlich, Frau Dr. Hübel, Herr Dr. Brinkmeier Ing.-Informatik: 1 Ü, d.h. 14-täglich, Frau Dr. Hübel FG KTuEA, TU Ilmenau AuD
4 Hörer: Informatikstudierende im 2. Semester, Ingenieurinformatik im 4. Semester. Andere Interessenten willkommen! Übungen: Informatik: 2 Ü, d.h. wöchentlich, Frau Dr. Hübel, Herr Dr. Brinkmeier Ing.-Informatik: 1 Ü, d.h. 14-täglich, Frau Dr. Hübel Materialien zur Vorlesung (Folien, Übungsblätter usw.): FG KTuEA, TU Ilmenau AuD
5 Hörer: Informatikstudierende im 2. Semester, Ingenieurinformatik im 4. Semester. Andere Interessenten willkommen! Übungen: Informatik: 2 Ü, d.h. wöchentlich, Frau Dr. Hübel, Herr Dr. Brinkmeier Ing.-Informatik: 1 Ü, d.h. 14-täglich, Frau Dr. Hübel Materialien zur Vorlesung (Folien, Übungsblätter usw.): Vorlesung und Übungen definieren den Prüfungsstoff. FG KTuEA, TU Ilmenau AuD
6 Hörer: Informatikstudierende im 2. Semester, Ingenieurinformatik im 4. Semester. Andere Interessenten willkommen! Übungen: Informatik: 2 Ü, d.h. wöchentlich, Frau Dr. Hübel, Herr Dr. Brinkmeier Ing.-Informatik: 1 Ü, d.h. 14-täglich, Frau Dr. Hübel Materialien zur Vorlesung (Folien, Übungsblätter usw.): Vorlesung und Übungen definieren den Prüfungsstoff. Prüfung: Klausur (90 Minuten). FG KTuEA, TU Ilmenau AuD
7 Literatur FG KTuEA, TU Ilmenau AuD
8 Literatur Grundlagen, Voraussetzungen: Prof. Günter Schäfer, Algorithmen und Programmierung für Informatiker, WS 2007/08 FG KTuEA, TU Ilmenau AuD
9 Literatur Grundlagen, Voraussetzungen: Prof. Günter Schäfer, Algorithmen und Programmierung für Informatiker, WS 2007/08 Wird vorausgesetzt! FG KTuEA, TU Ilmenau AuD
10 Literatur Grundlagen, Voraussetzungen: Prof. Günter Schäfer, Algorithmen und Programmierung für Informatiker, WS 2007/08 Wird vorausgesetzt! Dr. Jackisch, Dr. Hübel, Algorithmen und Programmierung (für Ing.-Inf.), WS 2006/06 FG KTuEA, TU Ilmenau AuD
11 Literatur Grundlagen, Voraussetzungen: Prof. Günter Schäfer, Algorithmen und Programmierung für Informatiker, WS 2007/08 Wird vorausgesetzt! Dr. Jackisch, Dr. Hübel, Algorithmen und Programmierung (für Ing.-Inf.), WS 2006/06 Wird vorausgesetzt! FG KTuEA, TU Ilmenau AuD
12 Literatur Grundlagen, Voraussetzungen: Prof. Günter Schäfer, Algorithmen und Programmierung für Informatiker, WS 2007/08 Wird vorausgesetzt! Dr. Jackisch, Dr. Hübel, Algorithmen und Programmierung (für Ing.-Inf.), WS 2006/06 Wird vorausgesetzt! G. Saake, K. U. Sattler. Algorithmen und Datenstrukturen - Eine Einführung mit Java. dpunkt.verlag, 3. Auflage, FG KTuEA, TU Ilmenau AuD
13 Literatur Grundlagen, Voraussetzungen: Prof. Günter Schäfer, Algorithmen und Programmierung für Informatiker, WS 2007/08 Wird vorausgesetzt! Dr. Jackisch, Dr. Hübel, Algorithmen und Programmierung (für Ing.-Inf.), WS 2006/06 Wird vorausgesetzt! G. Saake, K. U. Sattler. Algorithmen und Datenstrukturen - Eine Einführung mit Java. dpunkt.verlag, 3. Auflage, Enthält alles aus diesen Vorlesungen und noch viel mehr. FG KTuEA, TU Ilmenau AuD
14 Literatur FG KTuEA, TU Ilmenau AuD
15 Zur Vorlesung: Literatur R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 2. Auflage, Teubner FG KTuEA, TU Ilmenau AuD
16 Zur Vorlesung: Literatur R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 2. Auflage, Teubner T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, FG KTuEA, TU Ilmenau AuD
17 Zur Vorlesung: Literatur R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 2. Auflage, Teubner T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms, Second Edition, MIT Press (Auch auf deutsch erhältlich.) FG KTuEA, TU Ilmenau AuD
18 Zur Vorlesung: Literatur R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 2. Auflage, Teubner T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms, Second Edition, MIT Press (Auch auf deutsch erhältlich.) R. Sedgewick, Algorithmen, Pearson, (C-, C++- und Java-Versionen.) Extra-Buch: Graphalgorithmen. FG KTuEA, TU Ilmenau AuD
19 Zur Arbeitsweise: FG KTuEA, TU Ilmenau AuD
20 Zur Arbeitsweise: Der Stoff ist zu kompliziert und zu umfangreich, um durch reines Zuhören verstanden zu werden. FG KTuEA, TU Ilmenau AuD
21 Zur Arbeitsweise: Der Stoff ist zu kompliziert und zu umfangreich, um durch reines Zuhören verstanden zu werden. Regelmäßig Vorlesung nacharbeiten. FG KTuEA, TU Ilmenau AuD
22 Zur Arbeitsweise: Der Stoff ist zu kompliziert und zu umfangreich, um durch reines Zuhören verstanden zu werden. Regelmäßig Vorlesung nacharbeiten. Semesterbegleitend! FG KTuEA, TU Ilmenau AuD
23 Zur Arbeitsweise: Der Stoff ist zu kompliziert und zu umfangreich, um durch reines Zuhören verstanden zu werden. Regelmäßig Vorlesung nacharbeiten. Semesterbegleitend! Bücher konsultieren. FG KTuEA, TU Ilmenau AuD
24 Zur Arbeitsweise: Der Stoff ist zu kompliziert und zu umfangreich, um durch reines Zuhören verstanden zu werden. Regelmäßig Vorlesung nacharbeiten. Semesterbegleitend! Bücher konsultieren. Übungsblätter drucken, lesen, zur Übung mitbringen, vorher Lösung ausdenken, Lösungsweg aufschreiben, an Lösungen mitarbeiten. FG KTuEA, TU Ilmenau AuD
25 Zur Arbeitsweise: Der Stoff ist zu kompliziert und zu umfangreich, um durch reines Zuhören verstanden zu werden. Regelmäßig Vorlesung nacharbeiten. Semesterbegleitend! Bücher konsultieren. Übungsblätter drucken, lesen, zur Übung mitbringen, vorher Lösung ausdenken, Lösungsweg aufschreiben, an Lösungen mitarbeiten. Regelmäßig Übungen nacharbeiten. Semesterbegleitend! FG KTuEA, TU Ilmenau AuD
26 Zur Arbeitsweise: Der Stoff ist zu kompliziert und zu umfangreich, um durch reines Zuhören verstanden zu werden. Regelmäßig Vorlesung nacharbeiten. Semesterbegleitend! Bücher konsultieren. Übungsblätter drucken, lesen, zur Übung mitbringen, vorher Lösung ausdenken, Lösungsweg aufschreiben, an Lösungen mitarbeiten. Regelmäßig Übungen nacharbeiten. Semesterbegleitend! Bei Verständnisproblemen frühzeitig fragen! FG KTuEA, TU Ilmenau AuD
27 Kapitel 1 Einführung und Grundlagen FG KTuEA, TU Ilmenau AuD
28 Datenstrukturen! FG KTuEA, TU Ilmenau AuD
29 Listen, Stacks, Queues Datenstrukturen! FG KTuEA, TU Ilmenau AuD
30 Listen, Stacks, Queues Einfache Suchbäume Datenstrukturen! FG KTuEA, TU Ilmenau AuD
31 Listen, Stacks, Queues Einfache Suchbäume Balancierte Suchbäume Datenstrukturen! FG KTuEA, TU Ilmenau AuD
32 Datenstrukturen! Listen, Stacks, Queues Einfache Suchbäume Balancierte Suchbäume Hashtabellen implementieren Wörterbücher FG KTuEA, TU Ilmenau AuD
33 Listen, Stacks, Queues Einfache Suchbäume Balancierte Suchbäume Datenstrukturen! Hashtabellen implementieren Wörterbücher Heaps implementieren Vorrangswarteschlangen (Priority Queues) FG KTuEA, TU Ilmenau AuD
34 Listen, Stacks, Queues Einfache Suchbäume Balancierte Suchbäume Datenstrukturen! Hashtabellen implementieren Wörterbücher Heaps implementieren Vorrangswarteschlangen (Priority Queues) Union-Find-Strukturen FG KTuEA, TU Ilmenau AuD
35 Listen, Stacks, Queues Einfache Suchbäume Balancierte Suchbäume Datenstrukturen! Hashtabellen implementieren Wörterbücher Heaps implementieren Vorrangswarteschlangen (Priority Queues) Union-Find-Strukturen Datenstrukturen für Graphen FG KTuEA, TU Ilmenau AuD
36 Graph: FG KTuEA, TU Ilmenau AuD
37 Graph: Digraph / gerichteter Graph: FG KTuEA, TU Ilmenau AuD
38 Spezifikation des Verhaltens von Datenstrukturen (vereinfacht) FG KTuEA, TU Ilmenau AuD
39 Spezifikation des Verhaltens von Datenstrukturen (vereinfacht): (Abstrakte) Datentypen FG KTuEA, TU Ilmenau AuD
40 Spezifikation des Verhaltens von Datenstrukturen (vereinfacht): Syntax: Signatur (Abstrakte) Datentypen Semantik: Mathematisches Modell FG KTuEA, TU Ilmenau AuD
41 Algorithmen! FG KTuEA, TU Ilmenau AuD
42 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a 1, a 2,..., a n FG KTuEA, TU Ilmenau AuD
43 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a 1, a 2,..., a n von natürlichen / ganzen / reellen Zahlen von Objekten aus einem total geordneten Bereich (U, <) FG KTuEA, TU Ilmenau AuD
44 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a 1, a 2,..., a n von natürlichen / ganzen / reellen Zahlen von Objekten aus einem total geordneten Bereich (U, <) Z.B.: Zahlentupel, Strings (Zeichenreihen), FG KTuEA, TU Ilmenau AuD
45 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a 1, a 2,..., a n 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 AuD
46 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a 1, a 2,..., a n 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 a 1, a 2,..., a n in aufsteigende Reihenfolge. FG KTuEA, TU Ilmenau AuD
47 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a 1, a 2,..., a n 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 a 1, a 2,..., a n in aufsteigende Reihenfolge. Vorher: (5, 2, 9, 3, 6, 5, 8) FG KTuEA, TU Ilmenau AuD
48 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a 1, a 2,..., a n 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 a 1, a 2,..., a n in aufsteigende Reihenfolge. Vorher: (5, 2, 9, 3, 6, 5, 8) Nachher: (2, 3, 5, 5, 6, 8, 9) FG KTuEA, TU Ilmenau AuD
49 Sortieren durch Einfügen (Insertion Sort) FG KTuEA, TU Ilmenau AuD
50 Sortieren durch Einfügen (Insertion Sort) Eingabe (a 1,..., a n ) in Array (Feld) A[1..n] FG KTuEA, TU Ilmenau AuD
51 Sortieren durch Einfügen (Insertion Sort) Eingabe (a 1,..., a n ) in Array (Feld) A[1..n] Idee: FG KTuEA, TU Ilmenau AuD
52 Sortieren durch Einfügen (Insertion Sort) Eingabe (a 1,..., a n ) in Array (Feld) A[1..n] Idee: Für i = 2, 3,..., n: FG KTuEA, TU Ilmenau AuD
53 Sortieren durch Einfügen (Insertion Sort) Eingabe (a 1,..., a n ) in Array (Feld) A[1..n] Idee: Für i = 2, 3,..., n: Suche die Stelle in der sortierten Version von a 1,..., a i 1, an die a i gehört, FG KTuEA, TU Ilmenau AuD
54 Sortieren durch Einfügen (Insertion Sort) Eingabe (a 1,..., a n ) in Array (Feld) A[1..n] Idee: Für i = 2, 3,..., n: Suche die Stelle in der sortierten Version von a 1,..., a i 1, an die a i gehört, und füge a i dort ein. FG KTuEA, TU Ilmenau AuD
55 Sortieren durch Einfügen (Insertion Sort) Eingabe (a 1,..., a n ) in Array (Feld) A[1..n] Idee: Für i = 2, 3,..., n: Suche die Stelle in der sortierten Version von a 1,..., a i 1, an die a i gehört, und füge a i dort ein. Algorithmus Straight Insertion Sort (Pseudocode) FG KTuEA, TU Ilmenau AuD
56 Sortieren durch Einfügen (Insertion Sort) Eingabe (a 1,..., a n ) in Array (Feld) A[1..n] Idee: Für i = 2, 3,..., n: Suche die Stelle in der sortierten Version von a 1,..., a i 1, an die a i gehört, und füge a i dort ein. Algorithmus Straight Insertion Sort (Pseudocode) (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 AuD
57 Was ist ein Algorithmus? Erklärung: FG KTuEA, TU Ilmenau AuD
58 Was ist ein Algorithmus? Erklärung: Ein Algorithmus A FG KTuEA, TU Ilmenau AuD
59 Was ist ein Algorithmus? Erklärung: Ein Algorithmus A ist eine durch einen endlichen Text FG KTuEA, TU Ilmenau AuD
60 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 AuD
61 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 zugelassenen Eingaben) FG KTuEA, TU Ilmenau AuD
62 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 zugelassenen Eingaben) eindeutig eine Reihe von auszuführenden Schritten vorschreibt. FG KTuEA, TU Ilmenau AuD
63 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 zugelassenen Eingaben) eindeutig eine Reihe von auszuführenden Schritten vorschreibt. Wenn nach endlich vielen Schritten diese Ausführung anhält, FG KTuEA, TU Ilmenau AuD
64 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 zugelassenen 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 AuD
65 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 zugelassenen 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 FG KTuEA, TU Ilmenau AuD
66 Allgemeine Merkmale eines Algorithmus FG KTuEA, TU Ilmenau AuD
67 Allgemeine Merkmale eines Algorithmus Endlicher Text FG KTuEA, TU Ilmenau AuD
68 Allgemeine Merkmale eines Algorithmus Endlicher Text Ein Algorithmus für eine große (oft: unendliche!) Menge von Eingaben x FG KTuEA, TU Ilmenau AuD
69 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 AuD
70 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 AuD
71 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 AuD
72 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 AuD
73 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 AuD
74 Erweiterungen des Algorithmusbegriffs FG KTuEA, TU Ilmenau AuD
75 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 AuD
76 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 AuD
77 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, usw. FG KTuEA, TU Ilmenau AuD
78 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, usw. Randomisierung: Algorithmus führt Zufallsexperimente durch FG KTuEA, TU Ilmenau AuD
79 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, usw. Randomisierung: Algorithmus führt Zufallsexperimente durch Verteilte Algorithmen : Mehrere Rechner arbeiten zusammen, kommunizieren, zeitliche Abfolge nicht vorhersagbar FG KTuEA, TU Ilmenau AuD
80 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, 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 AuD
81 Algorithmen in dieser Vorlesung: FG KTuEA, TU Ilmenau AuD
82 Algorithmen in dieser Vorlesung: Darstellung von Algorithmen, Bausteine für Algorithmen (besonders Iteration, Rekursion) FG KTuEA, TU Ilmenau AuD
83 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 AuD
84 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 AuD
85 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 AuD
86 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 AuD
87 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), Medianbestimmung FG KTuEA, TU Ilmenau AuD
88 Grundbegriffe der Graphentheorie FG KTuEA, TU Ilmenau AuD
89 Grundbegriffe der Graphentheorie Grundlegende Algorithmen für Graphen: FG KTuEA, TU Ilmenau AuD
90 Grundbegriffe der Graphentheorie Grundlegende Algorithmen für Graphen: Breitensuche, Tiefensuche, Zusammenhangskomponenten, Entdecken von Kreisen, minimale Spannbäume FG KTuEA, TU Ilmenau AuD
91 Algorithmus Straight Insertion Sort (Pseudocode) FG KTuEA, TU Ilmenau AuD
92 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 AuD
93 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 AuD
94 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 AuD
95 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 AuD
96 (a) Korrektheit : Damit die Frage sinnvoll ist, müssen wir die zu lösende Aufgabe spezifizieren. FG KTuEA, TU Ilmenau AuD
97 (a) Korrektheit : Damit die Frage 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 AuD
98 Berechnungsprobleme FG KTuEA, TU Ilmenau AuD
99 Berechnungsprobleme Erklärung: Ein Berechnungsproblem P besteht aus FG KTuEA, TU Ilmenau AuD
100 Berechnungsprobleme Erklärung: Ein Berechnungsproblem P besteht aus (i) einer Menge I von möglichen Eingaben ( Inputs, Instanzen ) FG KTuEA, TU Ilmenau AuD
101 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 AuD
102 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 AuD
103 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 AuD
104 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 AuD
105 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 AuD
106 Varianten FG KTuEA, TU Ilmenau AuD
107 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 AuD
108 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 AuD
109 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, d k ), wobei ein Schlüssel k wiederholt vorkommen darf, ist jede sortierte Anordnung legal. FG KTuEA, TU Ilmenau AuD
110 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, d k ), wobei ein Schlüssel k wiederholt vorkommen darf, ist jede sortierte Anordnung legal. Online-Situation: Eingabe wird in Raten geliefert, Zwischenausgaben werden verlangt. FG KTuEA, TU Ilmenau AuD
111 Spezifikation des Sortierproblems Parameter: Der Grundbereich, aus dem die zu sortierenden Objekte stammen, ist ein Parameter der Spezifikation. FG KTuEA, TU Ilmenau AuD
112 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 AuD
113 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). ( Mathematik-Vorlesung) FG KTuEA, TU Ilmenau AuD
114 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). ( Mathematik-Vorlesung) Beispiele: Zahlenmengen, Mengen von Strings. FG KTuEA, TU Ilmenau AuD
115 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). ( Mathematik-Vorlesung) Beispiele: Zahlenmengen, Mengen von Strings. D: Eine Menge (von Datensätzen ). FG KTuEA, TU Ilmenau AuD
116 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). ( Mathematik-Vorlesung) Beispiele: Zahlenmengen, Mengen von Strings. D: Eine Menge (von Datensätzen ). Jeder Datensatz a hat einen Sortierschlüssel : key : D U. I = O = Seq(D) = D < = n 0 Dn FG KTuEA, TU Ilmenau AuD
117 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). ( Mathematik-Vorlesung) Beispiele: Zahlenmengen, Mengen von Strings. D: Eine Menge (von Datensätzen ). Jeder Datensatz a hat einen Sortierschlüssel : key : D U. I = O = Seq(D) = D < = n 0 Dn = {(a 1..., a n ) n N, a 1,..., a n D}, FG KTuEA, TU Ilmenau AuD
118 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). ( Mathematik-Vorlesung) Beispiele: Zahlenmengen, Mengen von Strings. D: Eine Menge (von Datensätzen ). Jeder Datensatz a hat einen Sortierschlüssel : key : D U. I = O = Seq(D) = D < = n 0 Dn = {(a 1..., a n ) n N, a 1,..., a n D}, die Menge aller endlichen Folgen von Datensätzen. FG KTuEA, TU Ilmenau AuD
119 Beispiel: U = N, D = N {a,..., z} key : D (i, b) i U FG KTuEA, TU Ilmenau AuD
120 Beispiel: U = N, D = N {a,..., z} key : D (i, b) 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 AuD
121 Beispiel: U = N, D = N {a,..., z} key : D (i, b) 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 AuD
122 x = (a 1,..., a n ) I und y = (b 1,..., b m ) O stehen in der Relation R genau dann wenn FG KTuEA, TU Ilmenau AuD
123 x = (a 1,..., a n ) I und y = (b 1,..., b m ) O stehen in der Relation R genau dann wenn n = m FG KTuEA, TU Ilmenau AuD
124 x = (a 1,..., a n ) I und y = (b 1,..., b m ) O stehen in der Relation R genau dann wenn n = m und es gibt eine Permutation π von {1,..., n} FG KTuEA, TU Ilmenau AuD
125 x = (a 1,..., a n ) I und y = (b 1,..., b m ) O stehen in der Relation R genau dann wenn n = m und es gibt eine Permutation π von {1,..., n} mit b i = a π(i), 1 i n und key(b 1 ) key(b 2 ) key(b n ). FG KTuEA, TU Ilmenau AuD
126 x = (a 1,..., a n ) I und y = (b 1,..., b m ) O stehen in der Relation R genau dann wenn n = m und es gibt eine Permutation π von {1,..., n} mit b i = a π(i), 1 i n und key(b 1 ) key(b 2 ) key(b n ). 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)) ( ) wäre π = passend FG KTuEA, TU Ilmenau AuD
127 Alternative für die Spezifikation einer Lösung des Sortierproblems: O = {π π Permutation einer Menge {1,..., n}, n N} FG KTuEA, TU Ilmenau AuD
128 Alternative für die Spezifikation einer Lösung des Sortierproblems: O = {π π Permutation einer Menge {1,..., n}, n N} Definition: x = (a 1,..., a n ) wird durch π sortiert, wenn key(a π(1) ) key(a π(2) ) key(a π(n) ) gilt. FG KTuEA, TU Ilmenau AuD
129 Alternative für die Spezifikation einer Lösung des Sortierproblems: O = {π π Permutation einer Menge {1,..., n}, n N} Definition: x = (a 1,..., a n ) wird durch π sortiert, wenn key(a π(1) ) key(a π(2) ) key(a π(n) ) gilt. x = (a 1,..., a n ) und π stehen in der Relation R, FG KTuEA, TU Ilmenau AuD
130 Alternative für die Spezifikation einer Lösung des Sortierproblems: O = {π π Permutation einer Menge {1,..., n}, n N} Definition: x = (a 1,..., a n ) wird durch π sortiert, wenn key(a π(1) ) key(a π(2) ) key(a π(n) ) gilt. x = (a 1,..., a n ) und π stehen in der Relation R, wenn x durch π sortiert wird. FG KTuEA, TU Ilmenau AuD
131 Löst Straight Insertion Sort das Sortierproblem? Gilt für jede Eingabe (a 1,..., a n ) in A[1..n], dass nachher dieselben Elemente im Array stehen, aber nach Schlüsseln aufsteigend sortiert? FG KTuEA, TU Ilmenau AuD
132 Korrektheitsbeweis Durch vollständige Induktion über i = 1, 2,..., n zeigt man die folgende Behauptung: FG KTuEA, TU Ilmenau AuD
133 Korrektheitsbeweis Durch vollständige Induktion über i = 1, 2,..., n zeigt man die folgende Behauptung: (IB i ) Nach Durchlauf Nummer i (in i) der äußeren Schleife FG KTuEA, TU Ilmenau AuD
134 Korrektheitsbeweis Durch vollständige Induktion über i = 1, 2,..., n zeigt man die folgende Behauptung: (IB i ) 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 AuD
135 Korrektheitsbeweis Durch vollständige Induktion über i = 1, 2,..., n zeigt man die folgende Behauptung: (IB i ) 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 AuD
136 Korrektheitsbeweis Durch vollständige Induktion über i = 1, 2,..., n zeigt man die folgende Behauptung: (IB i ) 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 AuD
137 Korrektheitsbeweis Durch vollständige Induktion über i = 1, 2,..., n zeigt man die folgende Behauptung: (IB i ) 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.: (IB i 1 ) gilt, d. h.a[1..i 1] ist sortiert, und Schleifendurchlauf i beginnt. FG KTuEA, TU Ilmenau AuD
138 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 der key(x) ist. FG KTuEA, TU Ilmenau AuD
139 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 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 AuD
140 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 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 AuD
141 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 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. (IB i ) erfüllt. FG KTuEA, TU Ilmenau AuD
142 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 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. (IB i ) erfüllt. Also gilt (IB n ), also ist nach Abschluss des Ablaufs das Array sortiert. FG KTuEA, TU Ilmenau AuD
143 Methoden für Korrektheitsbeweise FG KTuEA, TU Ilmenau AuD
144 Methoden für Korrektheitsbeweise Diskrete Mathematik FG KTuEA, TU Ilmenau AuD
145 Methoden für Korrektheitsbeweise Diskrete Mathematik Vollständige Induktion FG KTuEA, TU Ilmenau AuD
146 Methoden für Korrektheitsbeweise Diskrete Mathematik Vollständige Induktion Schleifen FG KTuEA, TU Ilmenau AuD
147 Methoden für Korrektheitsbeweise Diskrete Mathematik Vollständige Induktion Schleifen Andere Formen der Induktion FG KTuEA, TU Ilmenau AuD
148 Methoden für Korrektheitsbeweise Diskrete Mathematik Vollständige Induktion Schleifen Andere Formen der Induktion Rekursive Prozeduren FG KTuEA, TU Ilmenau AuD
149 (b) Laufzeitanalyse FG KTuEA, TU Ilmenau AuD
150 (b) Laufzeitanalyse Kosten, Aufwand, Eingabe x abläuft. Rechenzeit, wenn Algorithmus A auf FG KTuEA, TU Ilmenau AuD
151 Kosten, Aufwand, Eingabe x abläuft. (b) Laufzeitanalyse Eingabegröße: n = x = size(x). Rechenzeit, wenn Algorithmus A auf FG KTuEA, TU Ilmenau AuD
152 Kosten, Aufwand, Eingabe x abläuft. (b) Laufzeitanalyse Eingabegröße: n = x = size(x). I n = {x I size(x) = n} Rechenzeit, wenn Algorithmus A auf FG KTuEA, TU Ilmenau AuD
153 Kosten, Aufwand, Eingabe x abläuft. (b) Laufzeitanalyse Eingabegröße: n = x = size(x). Rechenzeit, wenn Algorithmus A auf I n = {x I size(x) = n} Größenklasse FG KTuEA, TU Ilmenau AuD
154 Kosten, Aufwand, Eingabe x abläuft. (b) Laufzeitanalyse Eingabegröße: n = x = size(x). Rechenzeit, wenn Algorithmus A auf I n = {x I size(x) = n} Größenklasse Beim Sortierproblem: size((a 1,..., a n )) = n FG KTuEA, TU Ilmenau AuD
155 Kosten für Elementaroperationen: FG KTuEA, TU Ilmenau AuD
156 Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung FG KTuEA, TU Ilmenau AuD
157 Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur,... FG KTuEA, TU Ilmenau AuD
158 Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur,... Unabhängig vom konkreten Input x. FG KTuEA, TU Ilmenau AuD
159 Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur,... Unabhängig vom konkreten Input x. Wir schreiben: für: O(1) FG KTuEA, TU Ilmenau AuD
160 Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur,... Unabhängig vom konkreten Input x. Wir schreiben: O(1) für: nicht größer als eine (von x unabhängige) Konstante c FG KTuEA, TU Ilmenau AuD
161 Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur,... Unabhängig vom konkreten Input x. Wir schreiben: O(1) für: nicht größer als eine (von x unabhängige) Konstante c (z.b. c op, für eine Operation op) FG KTuEA, TU Ilmenau AuD
162 Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur,... Unabhängig vom konkreten Input x. Wir schreiben: O(1) für: nicht größer als eine (von x unabhängige) Konstante c (z.b. c op, für eine Operation op) Gesamtlaufzeit: FG KTuEA, TU Ilmenau AuD
163 Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur,... Unabhängig vom konkreten Input x. Wir schreiben: O(1) für: nicht größer als eine (von x unabhängige) Konstante c (z.b. c op, für eine Operation op) Gesamtlaufzeit: Nicht größer als die Summe aller Konstanten für die Einzeloperationen. FG KTuEA, TU Ilmenau AuD
164 Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur,... Unabhängig vom konkreten Input x. Wir schreiben: O(1) für: nicht größer als eine (von x unabhängige) Konstante c (z.b. c op, für eine Operation op) 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 AuD
165 Straight Insertion Sort: FG KTuEA, TU Ilmenau AuD
166 Straight Insertion Sort: (1) (3) und (7): FG KTuEA, TU Ilmenau AuD
167 Straight Insertion Sort: (1) (3) und (7): Wird (n 1)-mal ausgeführt. FG KTuEA, TU Ilmenau AuD
168 Straight Insertion Sort: (1) (3) und (7): Wird (n 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests FG KTuEA, TU Ilmenau AuD
169 Straight Insertion Sort: (1) (3) und (7): Wird (n 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests FG KTuEA, TU Ilmenau AuD
170 Straight Insertion Sort: (1) (3) und (7): Wird (n 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests Kosten n O(1) FG KTuEA, TU Ilmenau AuD
171 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) FG KTuEA, TU Ilmenau AuD
172 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: FG KTuEA, TU Ilmenau AuD
173 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). FG KTuEA, TU Ilmenau AuD
174 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 FG KTuEA, TU Ilmenau AuD
175 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. FG KTuEA, TU Ilmenau AuD
176 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 k i = #{l l < i und key(a i ) < key(a l )}. FG KTuEA, TU Ilmenau AuD
177 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 k i = #{l l < i und key(a i ) < key(a l )}. Kosten für einen Durchlauf: (k i + 1) O(1) FG KTuEA, TU Ilmenau AuD
178 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 k i = #{l l < i und key(a i ) < key(a l )}. Kosten für einen Durchlauf: (k i + 1) O(1) = O(k i ). FG KTuEA, TU Ilmenau AuD
179 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 k i = #{l l < i und key(a i ) < key(a l )}. Kosten für einen Durchlauf: (k i + 1) O(1) = O(k i ). Notation: #A oder A : Kardinalität von A. FG KTuEA, TU Ilmenau AuD
180 Kosten insgesamt: O(n) + (k 2 + 1) O(1) + (k 3 + 1) O(1) + + (k n + 1) O(1) = FG KTuEA, TU Ilmenau AuD
181 Kosten insgesamt: O(n) + (k 2 + 1) O(1) + (k 3 + 1) O(1) + + (k n + 1) O(1) = = O(n + 2 i n k i ). Typisch: Charakteristische Operationen sind entscheidend, FG KTuEA, TU Ilmenau AuD
182 Kosten insgesamt: O(n) + (k 2 + 1) O(1) + (k 3 + 1) O(1) + + (k n + 1) O(1) = = O(n + 2 i n k i ). Typisch: Charakteristische Operationen sind entscheidend, Hier: Vergleiche zwischen Elementen (Zeile (4)), Anzahl k i + 1. FG KTuEA, TU Ilmenau AuD
183 Kosten insgesamt: O(n) + (k 2 + 1) O(1) + (k 3 + 1) O(1) + + (k n + 1) O(1) = = O(n + 2 i n k i ). Typisch: Charakteristische Operationen sind entscheidend, Hier: Vergleiche zwischen Elementen (Zeile (4)), Anzahl k i + 1. Oder: Zuweisungen von Elementen (Zeilen (5) und (7)), Anzahl k i + 1. FG KTuEA, TU Ilmenau AuD
184 Worst case (Schlechtester Fall): k i = i 1, für alle i, d. h. x ist absteigend sortiert. FG KTuEA, TU Ilmenau AuD
185 Worst case (Schlechtester Fall): k i = 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 AuD
186 Worst case (Schlechtester Fall): k i = 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)). Wegen n(n 1) 2 i n (i 1) = 2 < n2 2 FG KTuEA, TU Ilmenau AuD
187 Worst case (Schlechtester Fall): k i = 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)). Wegen n(n 1) 2 i n (i 1) = 2 < n2 2 Gesamtaufwand für S.I.S.: O(n + n 2 ) = O(n 2 ). FG KTuEA, TU Ilmenau AuD
188 Worst case (Schlechtester Fall): k i = 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)). Wegen n(n 1) 2 i n (i 1) = 2 < n2 2 Gesamtaufwand für S.I.S.: O(n + n 2 ) = O(n 2 ). Best case (Bester Fall): k i = 0, für alle i. FG KTuEA, TU Ilmenau AuD
189 Worst case (Schlechtester Fall): k i = 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)). Wegen n(n 1) 2 i n (i 1) = 2 < n2 2 Gesamtaufwand für S.I.S.: O(n + n 2 ) = O(n 2 ). Best case (Bester Fall): k i = 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 AuD
190 Worst case (Schlechtester Fall): k i = 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)). Wegen n(n 1) 2 i n (i 1) = 2 < n2 2 Gesamtaufwand für S.I.S.: O(n + n 2 ) = O(n 2 ). Best case (Bester Fall): k i = 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 AuD
191 Worst case (Schlechtester Fall): k i = 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)). Wegen n(n 1) 2 i n (i 1) = 2 < n2 2 Gesamtaufwand für S.I.S.: O(n + n 2 ) = O(n 2 ). Best case (Bester Fall): k i = 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 AuD
192 Worst case (Schlechtester Fall): k i = 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)). Wegen n(n 1) 2 i n (i 1) = 2 < n2 2 Gesamtaufwand für S.I.S.: O(n + n 2 ) = O(n 2 ). Best case (Bester Fall): k i = 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 AuD
193 Fazit: FG KTuEA, TU Ilmenau AuD
194 Fazit: Selbst für feste Implementierung eines Algorithmus A auf fester Maschine FG KTuEA, TU Ilmenau AuD
195 Fazit: Selbst für feste Implementierung eines Algorithmus A auf fester Maschine und feste Eingabegröße n = size(x) = x kann der Berechnungsaufwand höchst unterschiedlich sein. FG KTuEA, TU Ilmenau AuD
196 Fazit: Selbst für feste Implementierung eines Algorithmus A auf fester Maschine und feste Eingabegröße n = size(x) = x kann der Berechnungsaufwand höchst unterschiedlich sein. Begriff Laufzeit von Algorithmus A auf Eingaben x vom Umfang n = size(x) ist meist sinnlos. FG KTuEA, TU Ilmenau AuD
197 Fazit: Selbst für feste Implementierung eines Algorithmus A auf fester Maschine und feste Eingabegröße n = size(x) = x kann der Berechnungsaufwand höchst unterschiedlich sein. Begriff Laufzeit von Algorithmus A auf Eingaben x vom Umfang n = size(x) Sinnvoll: Obere Schranken ist meist sinnlos. FG KTuEA, TU Ilmenau AuD
SS10 Algorithmen und Datenstrukturen Vorbemerkungen und 1. Kapitel
SS10 Algorithmen und Datenstrukturen Vorbemerkungen und 1. Kapitel Martin Dietzfelbinger April 2010 Hörer: Informatikstudierende im 2. Semester. Andere Interessenten sehr willkommen! Material: Eigene Notizen!
MehrAlgorithmen und Datenstrukturen SS09
Foliensatz 1 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 Einiges Vorweg Organisatorisches Hörer: Vorlesung: Übungen: Homepage: Prüfungsstoff:
MehrAlgorithmentheorie 1. Vorlesung
Algorithmentheorie. Vorlesung Martin Dietzfelbinger 6. April 2006 Methode, Material Vorlesung Vorlesungsskript (Netz, Copyshop) Folien (im Netz) Vorlesung nachbereiten! Übung Übungsblätter (im Netz) Übung
MehrAlgorithmentheorie 1. Vorlesung
Algorithmentheorie 1. Vorlesung Martin Dietzfelbinger 6. April 2006 FG KTuEA, TU Ilmenau AT 06.04.2006 Methode, Material Vorlesung Vorlesungsskript (Netz, Copyshop) Folien (im Netz) Vorlesung nachbereiten!
MehrNAME, VORNAME: Studiennummer: Matrikel:
TU Ilmenau, Fakultat IA Institut für Theoretische Informatik FG Komplexitätstheorie und Effiziente Algorithmen Prof. Dr. (USA) M. Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS08, Ing.-Inf.
MehrAlgorithmen und Datenstrukturen. Organisatorisches. Christian Komusiewicz Ernst-Abbe-Platz 2, R3315
Algorithmen und Datenstrukturen Christian Komusiewicz Ernst-Abbe-Platz 2, R3315 christian.komusiewicz@uni-jena.de Friedrich-Schiller-Universität Jena Institut für Informatik http://users.fmi.uni-jena.de/
MehrDatenstrukturen, Algorithmen und Programmierung 2
Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1. VO SS 2008 8. April 2008 Petra Mutzel Kurzvorstellung
MehrAlgorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik
Foliensatz 15 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 16 Untere Schranken für das Vergleichsbasierte Sortieren TU
MehrKlausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min
TU Ilmenau, Fakultät für Informatik und Automatisierung FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. M. Dietzfelbinger, Dipl.-Ing. C. Mattern Klausur Algorithmen und Datenstrukturen
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen VO 708.031 Um was geht es? Datenstrukturen Algorithmen Algorithmus Versuch einer Erklärung: Ein Algorithmus nimmt bestimmte Daten als Input und transformiert diese nach festen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
MehrStud.-Nummer: Datenstrukturen & Algorithmen Seite 1
Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge
MehrAlgorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
MehrAlle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).
8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame
MehrADS. 1. Vorlesung. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm
ADS 1. Vorlesung Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm 6.10.2016 ORGANISATORISCHES Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm Der Dozent 2 Prof. Dr. Wolfgang Schramm
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
MehrAlgorithmen & Datenstrukturen
Algorithmen & Datenstrukturen Prof. Dr. Gerd Stumme Universität Kassel FB Elektrotechnik/Informatik FG Wissensverarbeitung Sommersemester 2009 Ziele der Veranstaltung 1 Kennenlernen grundlegender Algorithmen
MehrKapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin
Kapitel 1 Einleitung 1.1. Begriff des Algorithmus Eine der ältesten Beschreibungstechniken für Abläufe: Benannt nach dem Mathematiker Al-Khwarizmi (ca. 780...840), der am Hof der Kalifen von Bagdad wirkte.
MehrCounting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit
Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält
Mehr3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen
3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge
Mehr4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1
Allgemeines. Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition.. (a) Ein Graph G =(V, E) heißt kreisfrei, wenn er keinen Kreis besitzt. Beispiel: Ein kreisfreier Graph: FG KTuEA, TU Ilmenau
MehrAlgorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
Mehrf 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale
Mehr4. Sortieren 4.1 Vorbemerkungen
. Seite 1/21 4. Sortieren 4.1 Vorbemerkungen allgemeines Sortierproblem spezielle Sortierprobleme Ordne a 1,..., a n so um, dass Elemente in aufsteigender Reihenfolge stehen. Die a i stammen aus vollständig
MehrAlgorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor
Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor Organisatorisches: Vorlesung 4 SWS, Zentralübung 2 SWS: 6 Credit Points Mi 9:45 11:15 Raum 1200 (Vorlesung) Do 8:00
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch
Mehr15. Elementare Graphalgorithmen
Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen
MehrKapitel 3 Zur Korrektheit und Effizienz von Algorithmen
Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Ziel: Kurze Einführung in den Pseudocode zur Beschreibung von Algorithmen Induktionsbeweise als wichtiges Hilfsmittel, um die Korrektheit eines Algorithmus
Mehr8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrKapitel 6 Elementare Sortieralgorithmen
Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine
MehrTechnische Universität München
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrAufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.
Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise
Mehr1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung
Organisatorisches Algorithmen und Datenstrukturen Kapitel 3: Divide & Conquer Frank Heitmann heitmann@informatik.uni-hamburg.de 1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G-021. 2 Studie zum
MehrBucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.
Bucketsort Beispiel Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt 1 2 A.78.17 0 1 B.12.17 Sonst: Skalieren ( Aufwand O(n) ) 3.39 2.21.23.26 Idee:
MehrInhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe
Inhaltsverzeichnis Einführende Bemerkungen 11 Das Fach Informatik 11 Zielsetzung der Vorlesung 12 1. Grundbegriffe 1 3 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Information und Nachricht 1.1.1 Information 1.1.2 Nachricht
MehrQuicksort ist ein Divide-and-Conquer-Verfahren.
. Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.
MehrBabeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Rekursion Rekursion Neue Denkweise Wikipedia: Als Rekursion bezeichnet man den Aufruf
MehrInformatikgrundlagen (WS 2016/2017)
Informatikgrundlagen (WS 2016/2017) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde
MehrDefinition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:
HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter
MehrAlgorithmen und Datenstrukturen Sommersemester 2007
Algorithmen und Datenstrukturen Sommersemester 2007 Steffen Reith reith@informatik.fh-wiesbaden.de Fachhochschule Wiesbaden 4. April 2007 Steffen Reith Algorithmen und Datenstrukturen 4. April 2007 1 /
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dr. Michael Brinkmeier Technische Universität Ilmenau Fakultät Informatik und Automatisierung Fachgebiet Automaten und Formale Sprachen 4.7.2007 Dr. Michael Brinkmeier (TU
Mehr2.2 Allgemeine (vergleichsbasierte) Sortierverfahren
. Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
MehrTutoraufgabe 1 (Starke Zusammenhangskomponenten):
für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Allgemeine Hinweise: Datenstrukturen und Algorithmen SS1 Übungsblatt (Abgabe 4.0.01) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder
MehrGrundlagen: Algorithmen und Datenstrukturen
Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 2011 Übungsblatt 1 16. September 2011 Grundlagen: Algorithmen und
MehrTheoretische Informatik: Berechenbarkeit und Formale Sprachen
Theoretische Informatik: Berechenbarkeit und Formale Sprachen Prof. Dr. F. Otto Fachbereich Elektrotechnik/Informatik, Universität Kassel 34109 Kassel, Germany E-mail: otto@theory.informatik.uni-kassel.de
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft
MehrDatenstrukturen, Algorithmen und Programmierung 2
Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1. VO SS 2009 14. April 2009 Petra Mutzel Kurzvorstellung
Mehr2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.
2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 1 Beispiel Minimum-Suche Eingabe bei Minimum
MehrUE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 9 Sortieren Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69, A-4040 Linz Sortieren :: Problemstellung
MehrDatenstrukturen und Algorithmen 2. Klausur SS 2001
UNIVERSITÄT PADERBORN FACHBEREICH 7 (MATHEMATIK INFORMATIK) Datenstrukturen und Algorithmen 2. Klausur SS 200 Lösungsansätze Dienstag, 8. September 200 Name, Vorname:...................................................
MehrAlgorithmen und Datenstrukturen WS 2007/2008
Algorithmen und Datenstrukturen WS 2007/2008 Fakultät Informatik Software-Engineering und Technische Informatik Prof. Dr. Matthias Franz mfranz@htwg-konstanz.de www-home.htwg-konstanz.de/~mfranz/heim.html
MehrAlgorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012
Algorithmen und Datenstrukturen Tafelübung 14 Jens Wetzl 8. Februar 2012 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:
MehrGrundlagen der Informatik
Jörn Fischer j.fischer@hs-mannheim.de Willkommen zur Vorlesung Grundlagen der Informatik ADS-Teil Page 2 Überblick Inhalt 1 Eigenschaften von Algorithmen Algorithmenbegriff O-Notation Entwurfstechniken
MehrAufgabe (Schreibtischtest, Algorithmenanalyse)
Aufgabe (Schreibtischtest, Algorithmenanalyse) Führen Sie einen Schreibtischtest für den Algorithmus Positionsort für das folgende Eingabe-Array durch. Geben Sie nach jedem Durchlauf der for-schleife mit
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare
MehrEinführung in die Informatik I Kapitel II.3: Sortieren
1 Einführung in die Informatik I Kapitel II.3: Sortieren Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät
MehrAlgorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert
Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert Organisatorisches: Vorlesung 4 SWS, Zentralübung 2 SWS: 6 Credit Points Mi 10:30-12:00 Raum 1200 (Vorlesung) Do 8:15-9:45 Raum 1200 (Vorlesung)
MehrEinführung in die Informatik I (autip)
Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis
MehrInformatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo g@accaputo.ch 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,
MehrAbstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.
Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung
Mehr7. Übung zu Algorithmen I 1. Juni 2016
7. Übung zu Algorithmen I 1. Juni 2016 Lukas Barth lukas.barth@kit.edu (mit Folien von Lisa Kohl) Roadmap Ganzzahliges Sortieren mit reellen Zahlen Schnellere Priority Queues Bucket Queue Radix Heap Organisatorisches
MehrÜbung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung
MehrTutoraufgabe 1 (Sortieralgorithmus):
Prof. aa Dr. Ir. Joost-Pieter Katoen Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung 4 (Abgabe 2..2) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Sortieralgorithmus):
MehrKap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!
Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund Überblick Einführung in das Sortierproblem Insertion-Sort Selection-Sort Merge-Sort 4. VO
MehrHeapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
MehrRobert Sedgewick. Algorithmen in Java. Teil 1-4 Grundlagen Datenstrukturen Sortieren Suchen. Java-Beratung durch Michael Schidlowsky
Robert Sedgewick Algorithmen in Java Teil 1-4 Grundlagen Datenstrukturen Sortieren Suchen Java-Beratung durch Michael Schidlowsky 3., überarbeitete Auflage \ PEARSON ein Imprint von Pearson Education München
MehrÜbersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.
Übersicht Datenstrukturen und Vorlesung 1: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/ Diese Präsentation verwendet
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2016/17 13. Vorlesung Binäre Suchbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Dynamische Menge verwaltet Elemente einer sich ändernden Menge
MehrKapitel 8 Fortgeschrittene Sortieralgorithmen
Kapitel 8 Fortgeschrittene Sortieralgorithmen Zur Erinnerung: in Kapitel 6 Elementare Sortierverfahren Sortierverfahren, die auf Vergleichen von Werten basieren. Aufwand zum Sortieren von Feldern von n
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 Organisatorisches Vorlesung: Übungsbetreuung: Übungen: Programmierübungen: Alexander Wolff (E29) Jan Haunert (E27) Markus Ankenbrand Titus Dose Alexej
MehrDatenstrukturen und Algorithmen D-INFK
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik Peter Widmayer
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Einleitung und Grundlagen Maike Buchin 18.4.2017 Verantwortliche Dozentin Organisation der Übungen Übungsleiter Korrekteure Maike Buchin Maike.Buchin@rub.de Raum NA 1/70 Sprechzeiten:
Mehr5. Übungsblatt zu Algorithmen I im SoSe 2016
Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Dennis Hofheinz Lukas Barth, Lisa Kohl 5. Übungsblatt zu Algorithmen I im SoSe 2016 https://crypto.iti.kit.edu/index.php?id=algo-sose16
MehrEinführung in die Informatik 1
Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,
MehrAlgorithmen und Datenstrukturen. Kapitel 3: Sortierverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Algorithmen und Datenstrukturen Kapitel 3: Sortierverfahren Skript zur Vorlesung Algorithmen und Datenstrukturen Sommersemester
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Tanya Braun (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge Bachelor
MehrKapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
MehrRobert Sedgewick. Algorithmen in Java. »il 1-4 Grundlagen Datenstrykturen Sortleren Suchen. java-beratung durch Michael Schidlowsky
Robert Sedgewick Algorithmen in Java»il 1-4 Grundlagen Datenstrykturen Sortleren Suchen java-beratung durch Michael Schidlowsky 3., überarbeitete Auflage PEARSON ein Imprint von Pearson Education München
MehrVorlesung 3: Graphenalgorithmen. Markus Püschel David Steurer Peter Widmayer. PDF download goo.gl/ym3spq
Vorlesung 3: Graphenalgorithmen Markus Püschel David Steurer Peter Widmayer PDF download goo.gl/ym3spq Algorithmen und Datenstrukturen, Herbstsemester 2017, ETH Zürich Gerichtete Graphen und Abhängigkeiten
MehrInhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85
Inhaltsverzeichnis Vorwort 13 Umfang 14 Einsatz als Unterrichtsmittel 14 Algorithmen mit Praxisbezug 15 Programmiersprache 16 Danksagung 17 Vorwort des Java-Beraters 18 Hinweise zu den Übungen 19 Teil
MehrTheoretische Informatik: Berechenbarkeit und Formale Sprachen
Theoretische Informatik: Berechenbarkeit und Formale Sprachen Prof. Dr. F. Otto Fachbereich Elektrotechnik/Informatik, Universität Kassel 34109 Kassel, Germany E-mail: otto@theory.informatik.uni-kassel.de
MehrFHZ. K13 Rekursion. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt
Inhalt 1. Einführung 1. Beispiel: Fakultät 2. Beispiel: Zahlenfolge 3. Beispiel: Formale Sprache 4. Unterschied Iteration/Rekursion 2. Rekursive Methoden 1. Beispiel: Fakultät 2. Beispiel: "Türme
Mehr3. Übungsblatt zu Algorithmen I im SoSe 2017
Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen
MehrÜbungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:
Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls
MehrWas bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch
Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch verschiedene Datenstrukturen: lineare Datenstrukturen: Array,
MehrWillkommen zur Vorlesung. Algorithmen und Datenstrukturen
Willkommen zur Vorlesung Algorithmen und Datenstrukturen Mein Name: Andreas Berndt Zum Dozenten Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen Derzeitige Sprachen:
MehrÜbung Datenstrukturen. Sortieren
Übung Datenstrukturen Sortieren Aufgabe 1 Gegeben sei nebenstehender Sortieralgorithmus für ein Feld a[] ganzer Zahlen mit N Elementen: a) Um welches Sortierverfahren handelt es sich? b) Geben Sie möglichst
MehrInformatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
MehrAlgorithmen & Komplexität
Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik Was ist ein Algorithmus? Ein Algorithmus ist eine eindeutige Handlungsvorschrift, [bestehend] aus endlich vielen, wohldefinierten
Mehr2. Algorithmenbegriff
2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen
MehrAlgorithmen und Datenstrukturen
Lehrstuhl für Informatik I Algorithmen und Datenstrukturen Wintersemester 2013/14 Organisatorisches Vorlesung: Übungsbetreuung: Übungen: Programmiertutorium: Alexander Wolff (E29) Krzysztof Fleszar (E13)
MehrDatenstrukturen und Algorithmen
Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/54 Datenstrukturen und Algorithmen Vorlesung 1: Algorithmische Komplexität Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification
Mehr8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
MehrKapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Mehr