This textbook is a concise introduction to the basic toolbox of structures that allow efficient
organization and retrieval of data key algorithms for problems on graphs and generic
techniques for modeling understanding and solving algorithmic problems. The authors aim for a
balance between simplicity and efficiency between theory and practice and between classical
results and the forefront of research. 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 optimization
collective communication and computation and load balancing. The authors also discuss
important issues such as algorithm engineering memory hierarchies algorithm libraries and
certifying algorithms. Moving beyond the sequential algorithms and data structures of the
earlier related title this book takes into account the paradigm shift towards the parallel
processing required to solve modern performance-critical applications and how this impacts on
the teaching of algorithms. The book is suitable for undergraduate and graduate students and
professionals familiar with programming and basic mathematical language. Most chapters have the
same basic structure: the authors discuss a problem as it occurs in a real-life situation they
illustrate the most important applications and then they introduce simple solutions as
informally as possible and as formally as necessary so the reader really understands the issues
at hand. As they move to more advanced and optional issues their approach gradually leads to a
more mathematical treatment including theorems and proofs. The book includes many examples
pictures informal explanations and exercises and the implementation notes introduce clean
efficient implementations in languages such as C++ and Java.