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