 
                                Datenstrukturen und Algorithmen Zusammenfassung Überblick Ziel der Vorlesung: Die Hörer in die Lage zu versetzen, für gegebene Probleme passende Algorithmen und Datenstrukturen auszuwählen und gegebenenfalls neu zu entwerfen. Dazu gehört Wissen über • Entwurfsmethoden • grundlegende Algorithmen und Datenstrukturen • Wechselwirkung zwischen Datenstrukturen und Algorithmen • Analyse von Algorithmen Datenstrukturen und Algorithmen 2 Entwurfsmethoden • Entwurfsmethoden für Algorithmen und Datenstrukturen • Divide and Conquer (Quicksort, Mergesort, binäre Suche, Karatsuba-Multiplikation, Strassens Matrixmultiplikation) • Greedy (Kruskal, Prim) • dichte/dünne Repräsentation (Graphen: Adjazensmatrix-Adjazenzlisten; Mengen: charakteristischer Vektor, Elementliste) • Randomisierung (Quicksort: Wahl des split-Elements, skip-Listen: Wahl der Höhen, Hashing: universelle Hashfunktion Datenstrukturen und Algorithmen 3 Grundlegende Algorithmen • Sortieralgorithmen • Bubble, Insertion: average case  n 2   n log n  • Heap, Merge: worst case  n log n  • Quick: average case • Suchalgorithmen • lineare Suche: average case • binäre Suche: worst case  n   log n  Olog n  OV log V  E log E  • Mengenalgorithmen UNION-FIND • Graphalgorithmen Kruskal Datenstrukturen und Algorithmen 4 Grundlegende Datenstrukturen • Priority Queue (Implementierung: Heap) • Stack (Implementierung: Array oder Liste) • FIFO-queue (Implementierung: ringförmiger Array) • lineare Liste (Implementierung ggf. doppelt verkettet) • Wörterbuch - mehrere Implementierungen: O1    • AVL-Bäume - worst case Olog n  • Skip-Listen - erwartete Zeit Olog n  • (a,b)-Bäume - Seitenzugriffe O log a n  • Hash-Tabellen - erwartete Zeit Datenstrukturen und Algorithmen 5 Algorithmen  Datenstrukturen ungeordneter Array: lineare Suche geordneter Array: binäre Suche unbalancierter Suchbaum: worst case balancierter Suchbaum: best case Kruskal: Array Prim: Priority Queue Datenstrukturen und Algorithmen 6 Analyse • Aufwandsmaße • Rechenzeit, • Speicherplatz, • Zahl bestimmter Operationen • Analyse der Aufwandsfunktionen • Auflösung von Rekursionsformeln, • Klassifikation im O-Kalkül • Untere Schranken • Vergleichsbasierte Sortierverfahren benötigen im worst-case und im average case O n log n Vergleiche.   • Achtung: BucketSort ist nicht vergleichsbasiert. Datenstrukturen und Algorithmen 7 Eingabeklassen Worst case, average case, best case: • Addition von 1 im Binärsystem • Quicksort • Skip-Listen Datenstrukturen und Algorithmen 8 Analyse Mathematik • Arithmetische Reihe 1  2    n  n(n  1) / 2   2 n n 1 • geometrische Reihe 1  d  d    d  d  1 / d  1 • harmonische Reihe 1  1 / 2    1 / n  ln n • Summe der Quadrate 12  22    n 2  n 3 / 3  n 2 / 2  n / 6 • Stirlingsche Formel • Logarithmen log n!  n log n  n log e  log i  log n! n i 1 • Auflösung von Rekursionsformeln (Master Theorem) Datenstrukturen und Algorithmen 9 O-Kalkül f  O( g ) : C  0 n0 n  n0 f n   Cg(n) f  ( g ) : g  O f  f  ( g ) : f  O( g )  g  O f  f  o( g ) : C  0 n0 n  n0 f n   Cg(n) f   ( g ) : g  o( f ) Datenstrukturen und Algorithmen 10 Anwendungen... Topologisches Sortieren Komplexe Datenstruktur • Array • Liste • Queue Aufwand O V  E  Datenstrukturen und Algorithmen 11 ...Anwendungen Minimal spanning tree (Prim) Priority Queue (Heap) Aufwand O E log E  Minimal spanning tree (Kruskal) UNION-FIND (Trees) Aufwand OV log V  E  Datenstrukturen und Algorithmen 12 Probeklausur... Aufgabe 1 (Algorithmus spielen) Einfügen in einen (2,3)-Baum Datenstrukturen und Algorithmen 13 ...Probeklausur... Aufgabe 2 (Algorithmus entwickeln und analysieren) Idee: Benachbarte Waggons können vertauscht werden. Also ist BubbleSort möglich. Datenstrukturen und Algorithmen 14 ...Probeklausur... Aufgabe 3 (Datenstruktur entwickeln) siehe Musterlösung im Netz. Datenstrukturen und Algorithmen 15 ...Probeklausur Aufgabe 4 (Quickies) Datenstrukturen und Algorithmen 16