Algorithms are at the heart of every nontrivial computer application,
and algorithmics is a modern and active area of computer science. Every
computer scientist and every professional programmer should know about
the basic algorithmic toolbox: structures that allow efficient
organization and retrieval of data, frequently used algorithms, and
basic techniques for modeling, understanding and solving algorithmic
problems.
This book is a concise introduction addressed to students and
professionals familiar with programming and basic mathematical language.
Individual chapters cover arrays and linked lists, hash tables and
associative arrays, sorting and selection, priority queues, sorted
sequences, graph representation, graph traversal, shortest paths,
minimum spanning trees, and optimization. The algorithms are presented
in a modern way, with explicitly formulated invariants, and comment on
recent trends such as algorithm engineering, memory hierarchies,
algorithm libraries and certifying algorithms. The authors use pictures,
words and high-level pseudocode to explain the algorithms, and then they
present more detail on efficient implementations using real programming
languages like C++ and Java.
The authors have extensive experience teaching these subjects to
undergraduates and graduates, and they offer a clear presentation, with
examples, pictures, informal explanations, exercises, and some linkage
to the real world. Most chapters have the same basic structure: a
motivation for the problem, comments on the most important applications,
and then simple solutions presented as informally as possible and as
formally as necessary. For the more advanced issues, this approach leads
to a more mathematical treatment, including some theorems and proofs.
Finally, each chapter concludes with a section on further findings,
providing views on the state of research, generalizations and advanced
solutions.