Algorithmen und Datenstrukturen 1. Vorlesung

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen 1. Vorlesung"

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 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!

Mehr

Algorithmen und Datenstrukturen SS09

Algorithmen 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:

Mehr

Algorithmentheorie 1. Vorlesung

Algorithmentheorie 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

Mehr

Algorithmentheorie 1. Vorlesung

Algorithmentheorie 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!

Mehr

NAME, VORNAME: Studiennummer: Matrikel:

NAME, 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.

Mehr

Algorithmen und Datenstrukturen. Organisatorisches. Christian Komusiewicz Ernst-Abbe-Platz 2, R3315

Algorithmen 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/

Mehr

Datenstrukturen, Algorithmen und Programmierung 2

Datenstrukturen, 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

Mehr

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Algorithmen 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

Mehr

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Klausur 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

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-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 Ü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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen Heapsort

Algorithmen 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

Mehr

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Alle 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

Mehr

ADS. 1. Vorlesung. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

ADS. 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen & Datenstrukturen

Algorithmen & Datenstrukturen Algorithmen & Datenstrukturen Prof. Dr. Gerd Stumme Universität Kassel FB Elektrotechnik/Informatik FG Wissensverarbeitung Sommersemester 2009 Ziele der Veranstaltung 1 Kennenlernen grundlegender Algorithmen

Mehr

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Kapitel 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.

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - 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

Mehr

3.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 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

Mehr

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

4.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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

f 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

f 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

Mehr

4. Sortieren 4.1 Vorbemerkungen

4. 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

Mehr

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen 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

Mehr

15. Elementare Graphalgorithmen

15. 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

Mehr

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Kapitel 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

Mehr

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

8.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

Mehr

Kapitel 6 Elementare Sortieralgorithmen

Kapitel 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

Mehr

Technische Universität München

Technische 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

Mehr

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Aufgabe 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

Mehr

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung

1 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

Mehr

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Bucketsort. 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:

Mehr

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Inhaltsverzeichnis. 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

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort 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.

Mehr

Babeș-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 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

Mehr

Informatikgrundlagen (WS 2016/2017)

Informatikgrundlagen (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

Mehr

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Definition 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

Mehr

Algorithmen und Datenstrukturen Sommersemester 2007

Algorithmen 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 /

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

2.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

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. 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

Mehr

Tutoraufgabe 1 (Starke Zusammenhangskomponenten):

Tutoraufgabe 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

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: 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

Mehr

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Theoretische 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 Ü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

Mehr

Datenstrukturen, Algorithmen und Programmierung 2

Datenstrukturen, 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

Mehr

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

2. 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

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren

UE 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

Mehr

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Datenstrukturen 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:...................................................

Mehr

Algorithmen und Datenstrukturen WS 2007/2008

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Algorithmen 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:

Mehr

Grundlagen der Informatik

Grundlagen 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

Mehr

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Aufgabe (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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare

Mehr

Einführung in die Informatik I Kapitel II.3: Sortieren

Einfü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

Mehr

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert

Algorithmen 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)

Mehr

Einführung in die Informatik I (autip)

Einfü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

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik 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,

Mehr

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Abstrakter 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

Mehr

7. Übung zu Algorithmen I 1. Juni 2016

7. Ü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 Ü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

Mehr

Tutoraufgabe 1 (Sortieralgorithmus):

Tutoraufgabe 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):

Mehr

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!

Kap. 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

Mehr

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Heapsort / 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

Mehr

Robert 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 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 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Kapitel 8 Fortgeschrittene Sortieralgorithmen

Kapitel 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Datenstrukturen und Algorithmen D-INFK

Datenstrukturen 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

Mehr

Vorlesung Datenstrukturen

Vorlesung 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:

Mehr

5. Übungsblatt zu Algorithmen I im SoSe 2016

5. Ü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

Mehr

Einführung in die Informatik 1

Einfü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,

Mehr

Algorithmen und Datenstrukturen. Kapitel 3: Sortierverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 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:

Mehr

Robert 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 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

Mehr

Vorlesung 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 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

Mehr

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

Inhaltsverzeichnis. 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

Mehr

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Theoretische 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

FHZ. K13 Rekursion. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

FHZ. 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

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Ü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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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. 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

Mehr

Was 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 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,

Mehr

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Willkommen 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 Ü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

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik 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

Mehr

Informatik II, SS 2014

Informatik 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

Mehr

Algorithmen & Komplexität

Algorithmen & 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

Mehr

2. Algorithmenbegriff

2. Algorithmenbegriff 2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Lehrstuhl für Informatik I Algorithmen und Datenstrukturen Wintersemester 2013/14 Organisatorisches Vorlesung: Übungsbetreuung: Übungen: Programmiertutorium: Alexander Wolff (E29) Krzysztof Fleszar (E13)

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen 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

Mehr

8. 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. 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.

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 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