Book description
- Solides Lehrbuch - grundlegend und umfassend * Java als Implementierungssprache, unter Berücksichtigung der Spezifika von Java mit Netzanschluss: Programmbeispiele/Animationen Autoren sind sehr angesehen und kompetent
Table of contents
- Vorwort
- Vorwort zur 4. Auflage
- Vorwort zur 3. Auflage
- Vorwort zur 2. Auflage
- Vorwort zur 1. Auflage
- Danksagungen
- Inhaltsverzeichnis
- Teil I Grundlegende Konzepte
- 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.1.4 Struktogramme
- 2.1.5 Rekursion
- 2.2 Sprachen und Grammatiken
- 2.2.1 Begriffsbildung
- 2.2.2 Reguläre Ausdrücke
- 2.2.3 Backus-Naur-Form (BNF)
- 2.3 Elementare Datentypen
- 2.3.1 Datentypen als Algebren
- 2.3.2 Signaturen von Datentypen
- 2.3.3 Der Datentyp bool
- 2.3.4 Der Datentyp integer
- 2.3.5 Felder und Zeichenketten
- 2.4 Terme
- 2.4.1 Bildung von Termen
- 2.4.2 Algorithmus zur Termauswertung
- 2.5 Datentypen in Java
- 2.5.1 Primitive Datentypen
- 2.5.2 Referenzdatentypen
- 2.5.3 Operatoren
- 3 Algorithmenparadigmen
- 3.1 Überblick über Algorithmenparadigmen
- 3.2 Applikative Algorithmen
- 3.2.1 Terme mit Unbestimmten
- 3.2.2 Funktionsdefinitionen
- 3.2.3 Auswertung von Funktionen
- 3.2.4 Erweiterung der Funktionsdefinition
- 3.2.5 Applikative Algorithmen
- 3.2.6 Beispiele für applikative Algorithmen
- 3.3 Imperative Algorithmen
- 3.3.1 Grundlagen imperativer Algorithmen
- 3.3.2 Komplexe Anweisungen
- 3.3.3 Beispiele für imperative Algorithmen
- 3.4 Das logische Paradigma
- 3.4.1 Logik der Fakten und Regeln
- 3.4.2 Deduktive Algorithmen
- 3.5 Weitere Paradigmen
- 3.5.1 Genetische Algorithmen
- 3.5.2 Neuronale Netze
- 3.6 Umsetzung in Java
- 3.6.1 Ausdrücke und Anweisungen
- 3.6.2 Methoden
- 3.6.3 Applikative Algorithmen und Rekursion
- 4 Literaturhinweise zum Teil I
- Teil II Algorithmen
- 5 Ausgewählte Algorithmen
- 5.1 Suchen in sortierten Folgen
- 5.1.1 Sequenzielle Suche
- 5.1.2 Binäre Suche
- 5.2 Sortieren
- 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.6 QuickSort
- 5.2.7 Sortierverfahren im Vergleich
- 6 Formale Algorithmenmodelle
- 6.1 Registermaschinen
- 6.2 Abstrakte Maschinen
- 6.3 Markov-Algorithmen
- 6.4 Church’sche These
- 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.3 Das Halteproblem
- 7.1.4 Nichtentscheidbare Probleme
- 7.1.5 Post’sches Korrespondenzproblem
- 7.2 Korrektheit von Algorithmen
- 7.2.1 Relative Korrektheit
- 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
- 7.3 Komplexität
- 7.3.1 Motivierendes Beispiel
- 7.3.2 Asymptotische Analyse
- 7.3.3 Komplexitätsklassen
- 7.3.4 Analyse von Algorithmen
- 8 Entwurf von Algorithmen
- 8.1 Entwurfsprinzipien
- 8.1.1 Schrittweise Verfeinerung
- 8.1.2 Einsatz von Algorithmenmustern
- 8.1.3 Problemreduzierung durch Rekursion
- 8.2 Algorithmenmuster: Greedy
- 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 Rekursion: Backtracking
- 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 Dynamische Programmierung
- 8.5.1 Das Rucksackproblem
- 8.5.2 Rekursive Lösung des Rucksackproblems
- 8.5.3 Prinzip der dynamischen Programmierung
- 9 Verteilte Berechnungen
- 9.1 Kommunizierende Prozesse
- 9.2 Modell der Petri-Netze
- 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.1 Koordinierte Prozesse
- 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
- Teil III Datenstrukturen
- 11 Abstrakte Datentypen
- 11.1 Signaturen und Algebren
- 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)
- 11.4 Entwurf von Datentypen
- 12 Klassen, Schnittstellen und Objekte in Java
- 12.1 Grundzüge der Objektorientierung
- 12.2 Klassen und Objekte in Java
- 12.3 Vererbung
- 12.4 Abstrakte Klassen und Schnittstellen
- 12.5 Ausnahmen
- 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.2 Verkettete Listen
- 13.3 Doppelt verkettete Listen
- 13.4 Das Iterator-Konzept
- 13.5 Java Collection Framework
- 13.6 J2SE 5.0 und Generics
- 14 Bäume
- 14.1 Bäume: Begriffe und Konzepte
- 14.2 Binärer Baum: Datentyp und Basisalgorithmen
- 14.2.1 Der Datentyp »Binärer Baum«
- 14.2.2 Algorithmen zur Traversierung
- 14.3 Suchbäume
- 14.3.1 Suchen in Suchbäumen
- 14.3.2 Einfügen und Löschen
- 14.3.3 Komplexität der Operationen
- 14.4 Ausgeglichene Bäume
- 14.4.1 Rot-Schwarz-Bäume
- 2-3-4-Bäume
- 14.4.2 AVL-Bäume
- 14.4.3 B-Bäume
- 14.5 Digitale Bäume
- 14.5.1 Tries
- 14.5.2 Patricia-Bäume
- 14.6 Praktische Nutzung von Bäumen
- 14.6.1 Sortieren mit Bäumen: HeapSort
- 14.6.2 Sets mit binären Suchbäumen
- 15 Hashverfahren
- 15.1 Grundprinzip des Hashens
- 15.2 Grundlagen und Verfahren
- 15.2.1 Hashfunktionen
- 15.2.2 Behandlung von Kollisionen
- 15.2.3 Aufwand beim Hashen
- 15.2.4 Hashen in Java
- 15.3 Dynamische Hashverfahren
- 15.3.1 Grundideen für dynamische Hashverfahren
- 15.3.2 Erweiterbares Hashen
- 15.3.3 Umsetzung des erweiterbaren Hashens
- 16 Graphen
- 16.1 Arten von Graphen
- 16.1.1 Ungerichtete Graphen
- 16.1.2 Gerichtete Graphen
- 16.1.3 Gewichtete Graphen
- 16.2 Realisierung von Graphen
- 16.2.1 Knoten- und Kantenlisten
- 16.2.2 Adjazenzmatrix
- 16.2.3 Graphen als dynamische Datenstrukturen
- 16.2.4 Transformationen zwischen Darstellungen
- 16.2.5 Vergleich der Komplexität
- 16.2.6 Eine Java-Klasse für Graphen
- 16.3 Ausgewählte Graphenalgorithmen
- 16.3.1 Breitendurchlauf
- 16.3.2 Tiefendurchlauf
- 16.3.3 Zyklenfreiheit und topologisches Sortieren
- 16.4 Algorithmen auf gewichteten Graphen
- 16.4.1 Kürzeste Wege
- 16.4.2 Dijkstras Algorithmus
- 16.4.3 A*-Algorithmus
- 16.4.4 Kürzeste Wege mit negativen Kantengewichten
- 16.4.5 Maximaler Durchfluss
- 16.4.6 Der Ford-Fulkerson-Algorithmus für die Bestimmung des maximalen Flusses
- 16.5 Weitere Fragestellungen für Graphen
- Problem des Handlungsreisenden
- Planare Graphen
- Einfärben von Graphen
- 17 Algorithmen auf Texten
- 17.1 Probleme der Worterkennung
- 17.2 Knuth-Morris-Pratt
- 17.3 Boyer-Moore
- 17.4 Pattern Matching
- 17.4.1 Reguläre Ausdrücke
- 17.4.2 Endliche Automaten
- 17.4.3 Java-Klassen für reguläre Ausdrücke
- 17.5 Ähnlichkeit von Zeichenketten
- 17.5.1 Levenshtein-Distanz
- 17.5.2 n-Gramme
- 17.5.3 Zusammenfassung
- 18 Literaturhinweise zum Teil III
- Teil IV Anhang
- A Quelltext der Klasse IOUtils
- Abbildungsverzeichnis
- Tabellenverzeichnis
- Algorithmenverzeichnis
- Beispielverzeichnis
- Programmverzeichnis
- Literaturverzeichnis
- Index
Product information
- Title: Algorithmen und Datenstrukturen, 5th Edition
- Author(s):
- Release date: January 2014
- Publisher(s): dpunkt
- ISBN: 97833864901362
You might also like
book
Algorithmen und Datenstrukturen, 6th Edition
Algorithmen und Datenstrukturen sind Grundbausteine eines jeden Informatikstudiums. Das Buch behandelt diese Thematik in Verbindung mit …
book
Algorithmen und Datenstrukturen, 4th Edition
Solides Lehrbuch - grundlegend und umfassend * Java als Implementierungssprache, unter Berücksichtigung der Spezifika von Java …
book
API-Design, 2nd Edition
Mit Schnittstellen zum Zwecke der Arbeitsteilung, Wiederverwendung oder beispielsweise zur Bildung einer modularen Architektur haben Entwickler …
book
Programmierung, Algorithmen und Datenstrukturen
Dieser erste Band der Informatik erklärt die grundlegenden Konzepte: Programmierung, Algorithmen und Datenstrukturen. Nach einer Einführung …