Algorithmen bilden das Herzstück jeder nichttrivialen Anwendung von Computern, und die Algorithmik ist ein modernes und aktives Gebiet der Informatik. Daher sollte sich jede Informatikerin und jeder Informatiker mit den algorithmischen Grundwerkzeugen auskennen. Dies sind Strukturen zur effizienten Organisation von Daten, häufig benutzte Algorithmen und Standardtechniken für das Modellieren, Verstehen und Lösen algorithmischer Probleme. Dieses Buch ist eine straff gehaltene Einführung in die Welt dieser Grundwerkzeuge, gerichtet an Studierende und im Beruf stehende Experten, die mit dem Programmieren und mit den Grundelementen der Sprache der Mathematik vertraut sind. Die einzelnen Kapitel behandeln Arrays und verkettete Listen, Hashtabellen und assoziative Arrays, Sortieren und Auswählen, Prioritätswarteschlangen, sortierte Folgen, Darstellung von Graphen, Graphdurchläufe, kürzeste Wege, minimale Spannbäume und Optimierung. Die Algorithmen werden auf moderne Weise präsentiert, mit explizit angegebenen Invarianten, und mit Kommentaren zu neueren Entwicklungen wie Algorithm Engineering, Speicherhierarchien, Algorithmenbibliotheken und zertifizierenden Algorithmen. Die Algorithmen werden zunächst mit Hilfe von Bildern, Text und Pseudocode erläutert; dann werden Details zu effizienten Implementierungen gegeben, auch in Bezug auf konkrete Sprachen wie C++ und Java.
This is a concise and modern book on algorithm engineering. It is intended to a be an introduction, though the style makes it seem rather that one professor is trying to impress other professors (Karatsuba's algorithm for multiplication of large numbers as a "motivating example" is perhaps a somewhat idiosyncratic choice). What the book has going for it are its structure and choice of topics, which is indeed well suited for a first (+second?) course on algorithms, the sections on implementation details and practical issues of algorithms, and the fact the the particular implementations presented here are very sophisticated (the authors are, after all, two leading researchers in this field). However, the presentation overall is poor. In many parts, the explanations are long-winded, possibly in a misguided attempt to be informal, but hard to follow. Many things are presented in an unnecessarily general way, which makes it harder to understand the main underlying ideas. Important details are skipped in quite a few places, perhaps deemed obvious by the authors. In conclusion, this is probably not the first textbook on algorithms you want to read, but after having taken a first course, it might give you an interesting second look on the topic.