Algorithms and Data Structures The Basic Toolbox

This concise introduction is ideal for readers familiar with programming and basic mathematical language. It uses pictures, words and high-level pseudocode to explain algorithms and presents efficient implementations using real programming languages.

Saved in:
Bibliographic Details
Main Authors Mehlhorn, Kurt, Sanders, Peter
Format eBook Book
LanguageEnglish
Published Berlin, Heidelberg Springer Nature 2008
Springer
Springer Berlin / Heidelberg
Springer Berlin Heidelberg
Edition1
Subjects
Online AccessGet full text
ISBN9783540779780
3540779787
9783540779773
3540779779
DOI10.1007/978-3-540-77978-0

Cover

Table of Contents:
  • Intro -- Preface -- Contents -- 1 Appetizer: Integer Arithmetics -- 2 Introduction -- 3 Representing Sequences by Arrays and Linked Lists -- 4 Hash Tables and Associative Arrays -- 5 Sorting and Selection -- 6 Priority Queues -- 7 Sorted Sequences -- 8 Graph Representation -- 9 Graph Traversal -- 10 Shortest Paths -- 11 Minimum Spanning Trees -- 12 Generic Approaches to Optimization -- A Appendix -- References -- Index
  • Intro -- Appetizer: Integer Arithmetics -- Addition -- Multiplication: The School Method -- Result Checking -- A Recursive Version of the School Method -- Karatsuba Multiplication -- Algorithm Engineering -- The Programs -- Proofs of Lemma 1.5 and Theorem 1.7 -- Implementation Notes -- Historical Notes and Further Findings -- Introduction -- Asymptotic Notation -- The Machine Model -- Pseudocode -- Designing Correct Algorithms and Programs -- An Example -- Binary Search -- Basic Algorithm Analysis -- Average-Case Analysis -- Randomized Algorithms -- Graphs -- P and NP -- Implementation Notes -- Historical Notes and Further Findings -- Representing Sequences by Arrays and Linked Lists -- Linked Lists -- Unbounded Arrays -- *Amortized Analysis -- Stacks and Queues -- Lists Versus Arrays -- Implementation Notes -- Historical Notes and Further Findings -- Hash Tables and Associative Arrays -- Hashing with Chaining -- Universal Hashing -- Hashing with Linear Probing -- Chaining Versus Linear Probing -- *Perfect Hashing -- Implementation Notes -- Historical Notes and Further Findings -- Sorting and Selection -- Simple Sorters -- Mergesort -- an O( nlogn) Sorting Algorithm -- A Lower Bound -- Quicksort -- Selection -- Breaking the Lower Bound -- *External Sorting -- Implementation Notes -- Historical Notes and Further Findings -- Priority Queues -- Binary Heaps -- Addressable Priority Queues -- *External Memory -- Implementation Notes -- Historical Notes and Further Findings -- Sorted Sequences -- Binary Search Trees -- (a,b)-Trees and Red--Black Trees -- More Operations -- Amortized Analysis of Update Operations -- Augmented Search Trees -- Implementation Notes -- Historical Notes and Further Findings -- Graph Representation -- Unordered Edge Sequences -- Adjacency Arrays -- Static Graphs -- Adjacency Lists -- Dynamic Graphs
  • The Adjacency Matrix Representation -- Implicit Representations -- Implementation Notes -- Historical Notes and Further Findings -- Graph Traversal -- Breadth-First Search -- Depth-First Search -- Implementation Notes -- Historical Notes and Further Findings -- Shortest Paths -- From Basic Concepts to a Generic Algorithm -- Directed Acyclic Graphs -- Nonnegative Edge Costs (Dijkstra's Algorithm) -- *Average-Case Analysis of Dijkstra's Algorithm -- Monotone Integer Priority Queues -- Arbitrary Edge Costs (Bellman--Ford Algorithm) -- All-Pairs Shortest Paths and Node Potentials -- Shortest-Path Queries -- Implementation Notes -- Historical Notes and Further Findings -- Minimum Spanning Trees -- Cut and Cycle Properties -- The Jarník--Prim Algorithm -- Kruskal's Algorithm -- The Union--Find Data Structure -- *External Memory -- Applications -- Implementation Notes -- Historical Notes and Further Findings -- Generic Approaches to Optimization -- Linear Programming -- a Black-Box Solver -- Greedy Algorithms -- Never Look Back -- Dynamic Programming -- Building It Piece by Piece -- Systematic Search -- When in Doubt, Use Brute Force -- Local Search -- Think Globally, Act Locally -- Evolutionary Algorithms -- Implementation Notes -- Historical Notes and Further Findings -- Appendix -- Mathematical Symbols -- Mathematical Concepts -- Basic Probability Theory -- Useful Formulae -- References -- Index