Effiziente Algorithmen und Datenstrukturen haben sich in den letzten Jahrzehnten selbst bei der Lösung aussichtslos erscheinender praktischer und theoretischer Probleme bewährt. Dieses Buch führt in die Algorithmik mit Java ein und präsentiert dafür eine Sammlung grundlegender Algorithmen und Datenstrukturen – mathematisch präzise und mit lauffertigem Java-Code.
Die Autoren entwickeln die Ideen iterativ, so dass Leserinnen und Lesern die einzelnen Schritte von der naiven Lösung bis zum fertigen Lehrbuchalgorithmus nachvollziehen können. Einzelne Algorithmen werden hinsichtlich ihrer Stärken und Schwächen und der erzielten Ergebnisse diskutiert. Dadurch lernen Nutzer, die im Buch vorgestellten Elemente des Baukastens effektiv einzusetzen. Zahlreiche Beispiele und Abbildungen sowie 100 vertiefenden Übungsaufgaben unterstützen sie dabei.
Nicht für alle Probleme kann eine Lösung aus bereits bekannten Bausteinen entwickelt werden. Wie lassen sich mithilfe der Algorithmik dennoch Lösungen finden? Die Autoren lassen ihre Leser die Entwicklung der Algorithmik miterleben und leiten aus den Beispielen allgemeine Entwurfsmethoden ab, so dass Studierende und andere Leser lernen, wie sich auch für neue Probleme Lösungen finden lassen. Eine kurze, präzise Einführung in die Theorie der Komplexitätsklassen P und NP zeigt darüber hinaus die Grenzen der effizienten Lösbarkeit und stellt gängige Auswege für die praktische Lösung NP-harter Probleme vor.
Neben elementaren Datenstrukturen, Entwurfsmethoden, Suchbäumen sowie Sortier-, Graph- und String-Algorithmen werden auch Themen wie Approximation, randomisierte Algorithmen oder das Lineare Programmieren kurz angerissen, um einen Ausblick darauf zu geben, was die Algorithmik darüber hinaus noch leisten kann.
Das fachlich ebenso wie didaktisch fundierte Buch erscheint in der Reihe der „Studienbücher Informatik“ und begleitet Studierende in Vorlesungen zu Datenstrukturen und Algorithmen. Es unterstützt sie außerdem bei der gezielten Prüfungsvorbereitung.