1. Datenverarbeitung und Organisation - oth

Werbung
Algorithmen und Datenstrukturen
Prof. Jürgen Sauer
Algorithmen und Datenstrukturen
Skriptum zur Vorlesung im WS 2001 / 2002
1
Algorithmen und Datenstrukturen
1. Objektorientierte Programmierung mit Datenstrukturen und
Algorithmen
1.1 Ein einführendes Beispiel: Das Durchlaufen eines Binärbaums
1.1.1 Rekursive Problemlösung
1.1.2 Nichtrekursive Problemlösung
1.1.3 Verallgemeinerung
1.2 Begriffe und Erläuterungen zu Datenstrukturen und Programmierverfahren
1.2.1 Algorithmus (Verarbeitung von Daten)
1.2.1.1 Datenstruktur und Programmierverfahren
1.2.1.2 Der intuitive Algorithmus-Begriff
1.2.1.3 Bausteine für Algorithmen
1.2.1.4 Formeln, Eigenschaften von Algorithmen
1.2.1.5 Komplexität
1.2.1.6 Laufzeitberechnungen („Big-O“)
1.2.1.7 O(logN)-Algorithmen
1.2.1.8 Effizienz
1.2.2 Daten und Datenstrukturen
1.2.2.1 Der Begriff Datenstruktur
1.2.2.2 Relationen und Ordnungen
1.2.2.3 Klassifikation von Datenstrukturen
1. Lineare Ordnungsgruppen
2. Bäume
3. Graphen
4. Dateien
5. Datenbanken
1.2.3 Definitionsmethoden für Datenstrukturen
1.2.3.1 Der abstrakte Datentyp (ADT)
1.2.3.2 Die axiomatische Methode
1.2.3.3 Die konstruktive Methode
1.2.3.4 Die objektorientierte Modellierung abstrakter Datentypen
Die Spezifikation abstrakter Datentypen
Klassendiagramme der Unified Modelling Language
1.2.3.5 Die Implementierung abstrakter Datentypen in C++
1.2.3.5.1 Das Konzept der benutzerdefinierten Datentypen class bzw. struct
1.2.3.5.2 Generische ADT (Klassenschablonen)
1.2.3.6 Die Implementierung abstrakter Datentypen in Java
1.2.3.6.1 Modellierung von Zustand und Verhalten
1.2.3.6.2 Referenzen, einfache Typen und Referenztypen
1.2.3.6.3 Superklassen und Subklassen, Vererbung und Klassenhierarchie
1.2.3.6.4 Schnittstellen und Pakete
2
Algorithmen und Datenstrukturen
1.2.3.6.5 Polymorphismus und Binden
1.3 Sammlungen (Container) und Ordnungen
1.3.1 Ausgangspunkt: Das Konzept für Sammlungen in Smalltalk
1.3.2 Behälter-Klassen
1.3.2.1 Lineare Kollektionen
1. Sammlungen mit direktem Zugriff
2. Sammlungen mit sequentiellem Zugriff
1.3.2.2 Nichtlineare Kollektionen
1. Hierarchische Sammlung
2. Gruppenkollektionen
Set
Graph
Netzwerk
2. Implementierung von Datenstrukturen und Algorithmen in
Programmiersprachen
2.1 Datenstrukturen und Algorithmen in C++
2.2 Datenstrukturen und Algorithmen in Java
2.2.1 Durchwandern von Daten mit Iteratoren
2.2.2 Die Klasse Vector
2.2.3 Die Klasse Stack
2.2.4 Die Klasse Bitset für Bitmengen
2.2.5 Die Klasse Hashtable und assoziative Speicher
2.2.6 Die abstrakte Klasse Dictionary
2.2.7 Die Klasse Properties
2.2.8 Collection-API
2.2.8.1 Die Schnittstelle Collection, Iterator, Comparator
2.2.8.2 Die Behälterklassen und Schnittstellen des Typs List
2.2.8.3 Die Behälterklassen des Typs Set
2.2.8.4 Die Behälterklassen des Typs Map
2.2.8.5 Implementierung von Graphen-Algorithmen
1. Kürzeste Pfade in gerichteten, ungewichteten Graphen
2. Berechnung der kürzesten Pfadlängen in gewichteten Graphen
3. Berechnung eines minimal spannenden Baums in einem zusammenhängenden
ungewichteten Graphen (Algorithmus von Prim)
2.2.9 Algorithmen
2.2.9.1 Datenmanipulation
2.2.9.2 Größter und kleinster Wert einer Collection
2.2.9.3 Sortieren
2.2.9.4 Suchen von Elementen
2.2.9.5 Typsichere Datenstrukturen
3
Algorithmen und Datenstrukturen
3. Algorithmen
3.1 Ausgesuchte algorithmische Probleme
3.1.1
3.1.1.1
Spezielle Sortieralgorithmen
Interne Sortierverfahren
Quicksort
Heap-Sort
Sortieren durch Mischen
3.1.1.2 Externe Sortierverfahren
3.1.1.2.1 Direktes Mischen
1. 2-Wege-Mischsortieren
2. Mehrwege-Mischsortieren
3. Mehrphasen-Mischsortieren
3.1.1.2.2 Natürliches Mischen
3.1.2
Suche in Texten
3.1.2.1 Ein einfacher Algorithmus zum Suchen in Zeichenfolgen
1. Das naive Verfahren zur Textsuche
2. Mustererkennung über den Vergleich des ersten und letzten Zeichens
3.1.2.2 Das Verfahren von Knith-Morris-Pratt
3.1.2.3 Das Verfahren von Boyer-Moore
3.2 Entwurfstechniken von Algorithmen
3.2.1
3.2.1.1
3.2.1.2
3.2.2
3.2.3
Greedy-Algorithmen
Ein einfaches Planungsproblem
Huffman-Codes
Divide and Conquer
Dynamisches Programmieren
3.4 Rekursive Algorithmen
3.3.1
3.3.2
Prinzip der Rekursion an Beispielen
Rekursive Kurven
3.4 Backtracking-Algorithmen
4. Bäume
4.1 Grundlagen
4.1.1
4.1.2
4.1.3
4.1.4
Grundbegriffe und Definitionen
Darstellung von Bäumen
Berechnungsgrundlagen
Klassifizierung von Bäumen
4
Algorithmen und Datenstrukturen
4.2 Freie binäre Intervallbäume
4.2.1 Ordnungsrelation, Suchaufwand und Darstellung
4.2.2 Operationen
1. Generieren
a) Erzeugen eines binären Suchbaums in Pascal
b) Erzeugen von Binärbaumknoten bzw. eines binären Baums in C++
2. Suchen und Einfügen
a) Implementierung in Pascal
b) Implementierung in C++
3. Löschen von Knoten
4.2.3 Ordnungen und Durchlaufprinzipien
a) Implementierung in Pascal
b) Funktionsschablonen für das Durchlaufen binärer Bäume in C++
4.2.4 Fädelung
4.3 Balancierte Bäume
4.3.1 Statisch optimierte Bäume
4.3.2 AVL-Baum
4.3.3 Splay-Bäume
4.3.4 Rot-Schwarz-Bäume
4.3.5 AA-Bäume
4.4 Die Bayer-Baum-Familie
4.4.1 Grundlagen und Definitionen
4.4.1.1 Ausgeglichene T-äre Bäume
4.4.1.2 (a,b)-Bäume
4.4.2 Darstellung
4.4.3 Suchen eines Schlüssels
4.4.4 Einfügen
4.4.5 Löschen
4.4.6 Auf Externspeichern mit Direktzugriff gespeicherte Bayer-Bäume
4.5 Alphabetische Suchbäume und mehrdimensionale Suchbäume
5. Graphenalgorithmen
5.1 Graphen
5.1.1 Gerichteter Graph
5.1.2 Ungerichteter Graph
5.2 Kürzeste Pfade
5.2.1 Grundlagen
5.2.2 Dijkstra´s Algorithmus
5
Algorithmen und Datenstrukturen
5.3 Minimale Spannbäume
5.2.1 Grundlagen
5.2.2 Kruskal’s Algorithmus
5.4 Fluß in Netzwerken
6
Algorithmen und Datenstrukturen
Prof. Jürgen Sauer
Algorithmen und Datenstrukturen
Übungsblätter zur Vorlesung im WS 2001 / 2002
7
Algorithmen und Datenstrukturen
1. Übungsblatt: Bearbeiten binärer Baumknoten in Java1
2. Übungsblatt: Bearbeitung binärer Suchbaumknoten2
3. Übungsblatt: Implementierung eines binären Suchbaums für Comparable-Objekte3
4. Übungsblatt: Die generische Klasse „AVL-Baum“ in Java4
5. Übungsblatt: Perfekt ausgeglichene binäre Bäume, statisch optimierte Bäume5
6. Übungsblatt: Rot-Schwarz-Bäume6
7. Übungsblatt: AA-Bäume7
8. Übungsblatt: Splay-Baum8
9. Übungsblatt: Bayer-Baum9
10. Übungsblatt: Auf Platte / Diskette gespeicherte Bayer-Bäume10
11. Übungsblatt: Hash-Coding11
12. Übungsblatt: Binary Heap12
13. Übungsblatt: Binomial Heap, Fibonacci Heap
14. Übungsblatt: Fibonacci-Heap, Priority-Queue
15. Übungsblatt: Backtracking-Algorithmen13
1
pr42000
pr42000
3
pr42000
4
pr43210
5
pr43205
6
pr43220
7
pr43225
8
pr43215
9
pr44200
10
pr44_2
11
pr22141, pr22142
12
pr13228
13
pr32410
2
8
Algorithmen und Datenstrukturen
Prof. Jürgen Sauer
Algorithmen und Datenstrukturen
Aufgabenblätter zur Vorlesung im WS 2001 / 2002
9
Algorithmen und Datenstrukturen
1. Aufgabenblatt: Binäre Suchbäume (PBB, AVL-Baum, Rot-Schwarz-Baum, AA-Baum,
Splay-Baum)
2. Aufgabenblatt: Bayer-Baum
3. Aufgabenblatt: Nichtrekursiver Quicksort
4. Aufgabenblatt: Heap-Sort
5. Aufgabenblatt: Hash-Coding
6. Aufgabenblatt: Berechnung kürzester Pfade, Minimal spannender Baum
7. Aufgabenblatt: Doppelt verkette, ringförmig geschlossene Liste
8. Aufgabenblatt: Topologisches Sortieren
9. Aufgabenblatt: Josephus-Problem
10. Aufgabenblatt:
10
Herunterladen