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:
| Main Authors | , |
|---|---|
| Format | eBook Book |
| Language | English |
| Published |
Berlin, Heidelberg
Springer Nature
2008
Springer Springer Berlin / Heidelberg Springer Berlin Heidelberg |
| Edition | 1 |
| Subjects | |
| Online Access | Get full text |
| ISBN | 9783540779780 3540779787 9783540779773 3540779779 |
| DOI | 10.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