Algorithmen und Datenstrukturen - Eine Einführung mit Java
von: Gunter Saake, Kai-Uwe Sattler
dpunkt, 2014
ISBN: 9783864914393
Sprache: Deutsch
576 Seiten, Download: 23510 KB
Format: EPUB, PDF, auch als Online-Lesen
Inhaltsverzeichnis
1 Vorbemerkungen und Überblick
1.1 Informatik, Algorithmen und Datenstrukturen
1.2 Historischer Überblick: Algorithmen
1.3 Historie von Programmiersprachen und Java
1.4 Grundkonzepte der Programmierung in Java
2 Algorithmische Grundkonzepte
2.1 Intuitiver Algorithmusbegriff
2.1.1 Beispiele für Algorithmen
2.1.2 Bausteine für Algorithmen
2.1.3 Pseudocode-Notation für Algorithmen
2.3.2 Signaturen von Datentypen
2.3.5 Felder und Zeichenketten
2.4.2 Algorithmus zur Termauswertung
3.1 Überblick über Algorithmenparadigmen
3.2.3 Auswertung von Funktionen
3.2.4 Erweiterung der Funktionsdefinition
3.2.6 Beispiele für applikative Algorithmen
3.3.1 Grundlagen imperativer Algorithmen
3.3.3 Beispiele für imperative Algorithmen
3.4.1 Logik der Fakten und Regeln
3.6.1 Ausdrücke und Anweisungen
3.6.3 Applikative Algorithmen und Rekursion
4 Literaturhinweise zum Teil I
5.1 Suchen in sortierten Folgen
5.2.1 Sortieren: Grundbegriffe
5.2.2 Sortieren durch Einfügen
5.2.3 Sortieren durch Selektion
5.2.4 Sortieren durch Vertauschen: BubbleSort
5.2.5 Sortieren durch Mischen: MergeSort
5.2.7 Sortierverfahren im Vergleich
6.5 Interpreter für formale Algorithmenmodelle in Java
6.5.1 Java: Markov-Interpreter
6.5.2 Registermaschine in Java
7 Eigenschaften von Algorithmen
7.1 Berechenbarkeit und Entscheidbarkeit
7.1.1 Existenz nichtberechenbarer Funktionen
7.1.2 Konkrete nichtberechenbare Funktionen
7.1.4 Nichtentscheidbare Probleme
7.1.5 Post’sches Korrespondenzproblem
7.2 Korrektheit von Algorithmen
7.2.2 Korrektheit von imperativen Algorithmen
7.2.3 Korrektheitsbeweise für Anweisungstypen
7.2.4 Korrektheit imperativer Algorithmen an Beispielen
7.2.5 Korrektheit applikativer Algorithmen
8.1.1 Schrittweise Verfeinerung
8.1.2 Einsatz von Algorithmenmustern
8.1.3 Problemreduzierung durch Rekursion
8.2.1 Greedy-Algorithmen am Beispiel
8.2.2 Greedy: Optimales Kommunikationsnetz
8.2.3 Verfeinerung der Suche nach billigster Kante
8.3 Rekursion: Divide-and-conquer
8.3.1 Das Prinzip »Teile und herrsche «
8.3.2 Beispiel: Spielpläne für Turniere
8.4.1 Prinzip des Backtracking
8.4.2 Beispiel: Das Acht-Damen-Problem
8.4.3 Beispiel: Tic Tac Toe mit Backtracking
8.5.2 Rekursive Lösung des Rucksackproblems
8.5.3 Prinzip der dynamischen Programmierung
9.2.1 Definition von Petri-Netzen
9.2.2 Formalisierung von Petri-Netzen
9.2.3 Das Beispiel der fünf Philosophen
9.3 Programmieren nebenläufiger Abläufe
9.3.2 Programmieren mit Semaphoren
9.3.3 Philosophenproblem mit Semaphoren
9.3.4 Verklemmungsfreie Philosophen
9.4 Beispielrealisierung in Java
10 Literaturhinweise zum Teil II
11.2 Algebraische Spezifikation
11.2.1 Spezifikationen und Modelle
11.2.2 Termalgebra und Quotiententermalgebra
11.2.3 Probleme mit initialer Semantik
11.3 Beispiele für abstrakte Datentypen
11.3.1 Der Kellerspeicher (Stack)
11.3.2 Beispiel für Kellernutzung
11.3.3 Die Warteschlange (Queue)
12 Klassen, Schnittstellen und Objekte in Java
12.1 Grundzüge der Objektorientierung
12.2 Klassen und Objekte in Java
12.4 Abstrakte Klassen und Schnittstellen
12.6 Umsetzung abstrakter Datentypen
12.6.1 Lambda-Ausdrücke in Java 8
13 Grundlegende Datenstrukturen
13.1 Stack und Queue als Datentypen
13.1.1 Implementierung des Stacks
13.1.2 Implementierung der Queue
13.1.3 Bewertung der Implementierungen
13.3 Doppelt verkettete Listen