Skip to main content
Top

2018 | Book

Datenstrukturen und Algorithmen

insite
SEARCH

About this book

Effiziente Algorithmen und Datenstrukturen sind ein zentrales Thema der Informatik. Beide Themen sind untrennbar miteinander verknüpft, denn Algorithmen arbeiten auf Datenstrukturen und Datenstrukturen enthalten wiederum Algorithmen als Komponenten. Dieses Buch vermittelt grundlegende Lösungsverfahren zu den wichtigsten Problembereichen bei der Arbeit mit Datenstrukturen und Algorithmen. Leser lernen neue Algorithmen zu entwerfen und ihre Kosten in Bezug auf Laufzeit und Speicherplatz zu analysieren.
Die Autoren führen in programmiersprachliche Konzepte für Datenstrukturen ein und erläutern Datentypen, die die Bausteine für die Implementierung komplexer Algorithmen und Datenstrukturen bilden. Neben der Darstellung von Sortieralgorithmen und Graphen setzt das Buch mit Kapiteln zu geometrischen Algorithmen und Techniken zur Kürzeste-Wege-Suche mittels Kontraktionshierarchien einige besondere Schwerpunkte. Jedes Kapitel schließt mit Aufgaben und Literaturhinweisen für alle, die die Thematik vertiefen wollen. Alle Programmbeispiele in dem Buch sind in Java formuliert. Grundlage des Buchs sind Veranstaltungen zu Datenstrukturen und zu geometrischen Algorithmen, die Ralf Hartmut Güting seit vielen Jahren an der Fernuniversität Hagen anbietet. Der Stoff umfasst eine einsemestrige vierstündige Vorlesung. Für die Neuauflage wurde das Lehrbuch erweitert und aktualisiert. Es richtet sich an Softwareentwickler und dient als Lehrbuch im Studiengang Informatik.

Table of Contents

Frontmatter
Kapitel 1. Einführung
Zusammenfassung
Algorithmen und Datenstrukturen sind Thema dieses Buches. Algorithmen arbeiten auf Datenstrukturen und Datenstrukturen enthalten Algorithmen als Komponenten; insofern sind beide untrennbar miteinander verknüpft. In der Einleitung wollen wir diese Begriffe etwas beleuchten und sie einordnen in eine “Umgebung” eng damit zusammenhängender Konzepte wie Funktion, Prozedur, Abstrakter Datentyp, Datentyp, Algebra, Typ (in einer Programmiersprache), Klasse und Modul.
Ralf Hartmut Güting, Stefan Dieker
Kapitel 2. Programmiersprachliche Konzepte für Datenstrukturen
Zusammenfassung
Im ersten Kapitel haben wir gesagt, dass wir unter einer Datenstruktur die Implementierung eines Datentyps auf algorithmischer Ebene verstehen wollen. Die Implementierung stützt sich letztendlich ab auf Primitive, die von einer Programmiersprache zur Verfügung gestellt werden. Diese Primitive sind wiederum Datentypen, eben die Typen der Programmiersprache.
Ralf Hartmut Güting, Stefan Dieker
Kapitel 3. Grundlegende Datentypen
Zusammenfassung
In diesem Kapitel führen wir einige elementare Datentypen ein, die Bausteine für die Implementierung komplexer Algorithmen und Datenstrukturen bilden, nämlich Listen, Stacks, Queues, Abbildungen und Bäume. Für Listen werden beispielhaft zwei verschiedene Modelle (Algebren) definiert. Die erste Algebra ist einfach und bietet die Grundoperationen an. Die zweite Algebra ist komplexer, da explizit Positionen in einer Liste verwaltet werden, entspricht dafür aber eher der üblichen Benutzung von Listen in einer imperativen oder objektorientierten Programmiersprache.
Ralf Hartmut Güting, Stefan Dieker
Kapitel 4. Datentypen zur Darstellung von Mengen
Zusammenfassung
Die Darstellung von Mengen ist offensichtlich eine der grundlegendsten Aufgaben überhaupt. Wir haben im letzten Kapitel bereits einige Bausteine kennengelernt, die zur Darstellung von Mengen eingesetzt werden können (Listen, Bäume). In diesem Kapitel werden verschiedene Datentypen für Mengen betrachtet, die sich durch ihre Operationssätze unterscheiden; es geht nun darum, die Grundbausteine geeignet auszuwählen und zu verfeinern, um spezielle Operationen effizient zu unterstützen.
Ralf Hartmut Güting, Stefan Dieker
Kapitel 5. Sortieralgorithmen
Zusammenfassung
Das Sortieren einer Menge von Werten über einem geordneten Wertebereich (z. B. int, real, string), das heißt, die Berechnung einer geordneten Folge aus einer ungeordneten Folge dieser Werte, ist ein zentrales und intensiv studiertes algorithmisches Problem. Sortieralgorithmen haben viele direkte Anwendungen in der Praxis, finden aber auch häufig Einsatz als Teilschritte in Algorithmen, die ganz andere Probleme lösen. Zum Beispiel für die Plane-Sweep- und Divide-and-Conquer-Algorithmen in Kapitel 8 ist Sortieren eine wesentliche Voraussetzung.
Ralf Hartmut Güting, Stefan Dieker
Kapitel 6. Graphen
Zusammenfassung
Ein Graph stellt eine Menge von Objekten zusammen mit einer Beziehung (Relation) auf diesen Objekten dar. Wir betrachten einige Beispiele.
Ralf Hartmut Güting, Stefan Dieker
Kapitel 7. Graph-Algorithmen
Zusammenfassung
Wir betrachten in Abschnitt 7.1 einen der wichtigsten Graph-Algorithmen, nämlich den Algorithmus von Dijkstra zur Bestimmung kürzester Wege von einem Startknoten aus. Abschnitt 7.2 beschreibt den Algorithmus von Floyd, der kürzeste Wege zwischen allen Paaren von Knoten des Graphen ermittelt. In Abschnitt 7.3 betrachten wir Kontraktionshierarchien, eine relativ neue Technik zur Vorverarbeitung (preprocessing) von Graphen mit dem Ziel, Kürzeste-Wege-Suchen zu beschleunigen. Abschnitt 7.4 und Abschnitt 7.5 behandeln die Berechnung der transitiven Hülle sowie die Ermittlung stark zusammenhängender Komponenten. Abschnitt 7.6 bietet eine kurze, etwas präzisere Einführung ungerichteter Graphen.
Ralf Hartmut Güting, Stefan Dieker
Kapitel 8. Geometrische Algorithmen
Zusammenfassung
In diesem Kapitel betrachten wir Algorithmen und Datenstrukturen zur Lösung geometrischer Probleme.
Ralf Hartmut Güting, Stefan Dieker
Kapitel 9. Externes Suchen und Sortieren
Zusammenfassung
Wir haben bisher stillschweigend angenommen, dass beliebig komplexe Datenstrukturen bzw. alle von einem Algorithmus benötigten Daten komplett im Hauptspeicher gehalten werden können.
Ralf Hartmut Güting, Stefan Dieker
Backmatter
Metadata
Title
Datenstrukturen und Algorithmen
Authors
Prof. Dr. Ralf Hartmut Güting
Dr. Stefan Dieker
Copyright Year
2018
Electronic ISBN
978-3-658-04676-7
Print ISBN
978-3-658-04675-0
DOI
https://doi.org/10.1007/978-3-658-04676-7

Premium Partner