Appetizer: Integer Arithmetic.- Introduction.- Representing Sequences by 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.- Generic Approaches to Optimization.- Collective Communication and Computation.- Load Balancing.- App. A, Mathematical Background.- App. B, Computer Architecture Aspects.- App. C, Support for Parallelism in C++.- App. D, The Message Passing Interface (MPI).- App. E, List of Commercial Products, Trademarks and Licenses.
Peter Sanders is a professor of computer science at the Karlsruhe Institute of Technology. He is a leading researcher in the area of theoretical and experimental algorithm analysis, in particular related to efficient algorithms for parallel processing and communication in networks. He won the Gottfried Wilhelm Leibniz Prize of the German Research Foundation in 2012. Kurt Mehlhorn has been a professor of computer science at Saarland University since 1975, and a director of the Max Planck Institute for Informatics in Saarbrucken. He was appointed a Fellow of the ACM (1999) "for important contributions in complexity theory and in the design, analysis, and practice of combinatorial and geometric algorithms." He has coauthored over 250 refereed conference papers and journal articles, in collaboration with 200 researchers. He received the Gottfried Wilhelm Leibniz Prize of the German Research Foundation in 1987 and the Konrad Zuse Medal of the German Society for Informatics in 1995. Martin Dietzfelbinger is a professor of computer science at the Ilmenau University of Technology. His research interests include complexity theory and algorithms, in particular the design and analysis of randomized data structures and algorithms, hash functions, applications of hashing, sorting, algorithm engineering, and the complexity of parallel and distributed computation. Roman Dementiev is a senior staff application engineer in the Intel Architecture, Graphics and Software group. He holds a Ph.D. in computer science from Saarland University. His interests include parallel algorithms, compute accelerators and processor architectures, hardware transactional memory, hardware performance and power monitoring, memory hierarchies, software libraries, and scalable software architectures. The authors have considerable experience teaching on the topic of algorithms and working on related industrial projects.