Beschreibung:
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.
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.