Skip to content

Latest commit

 

History

History
220 lines (200 loc) · 6.2 KB

README.md

File metadata and controls

220 lines (200 loc) · 6.2 KB
Roberto Nogueira  BSd EE, MSd CE
Solution Integrator Experienced - Certified by Ericsson

The Algorithm Design Manual

ebook cover

Table of Contents

I Practical Algorithm Design 
1 Introduction to Algorithm Design 
[ ] 1.1 Robot Tour Optimization 
[ ] 1.2 Selecting the Right Jobs 
[ ] 1.3 Reasoning about Correctness 
[ ] 1.4 Modeling the Problem 
[ ] 1.5 About theWar Stories
[ ] 1.6 War Story: PsychicModeling 
[ ] 1.7 Exercises

2 Algorithm Analysis
[ ] 2.1 The RAM Model of Computation
[ ] 2.2 The Big Oh Notation 
[ ] 2.3 Growth Rates and Dominance Relations 
[ ] 2.4 Working with the Big Oh 
[ ] 2.5 Reasoning About Efficiency 
[ ] 2.6 Logarithms and Their Applications 
[ ] 2.7 Properties of Logarithms
[ ] 2.8 War Story: Mystery of the Pyramids
[ ] 2.9 Advanced Analysis (*) 
[ ] 2.10 Exercises 

3 Data Structures
[ ] 3.1 Contiguous vs. Linked Data Structures 
[ ] xii CONTENTS
[ ] 3.2 Stacks and Queues 
[ ] 3.3 Dictionaries 
[ ] 3.4 Binary Search Trees
[ ] 3.5 Priority Queues 
[ ] 3.6 War Story: Stripping Triangulations 
[ ] 3.7 Hashing and Strings 
[ ] 3.8 Specialized Data Structures
[ ] 3.9 War Story: String ’em Up 
[ ] 3.10 Exercises 

4 Sorting and Searching 
[ ] 4.1 Applications of Sorting 
[ ] 4.2 Pragmatics of Sorting 
[ ] 4.3 Heapsort: Fast Sorting via Data Structures 
[ ] 4.4 War Story: Give me a Ticket on an Airplane
[ ] 4.5 Mergesort: Sorting by Divide-and-Conquer 
[ ] 4.6 Quicksort: Sorting by Randomization 
[ ] 4.7 Distribution Sort: Sorting via Bucketing 
[ ] 4.8 War Story: Skiena for the Defense 
[ ] 4.9 Binary Search and Related Algorithms 
[ ] 4.10 Divide-and-Conquer
[ ] 4.11 Exercises 

5 Graph Traversal
[ ] 5.1 Flavors of Graphs 
[ ] 5.2 Data Structures for Graphs 
[ ] 5.3 War Story: I was a Victim ofMoore’s Law 
[ ] 5.4 War Story: Getting the Graph
[ ] 5.5 Traversing a Graph 
[ ] 5.6 Breadth-First Search 
[ ] 5.7 Applications of Breadth-First Search 
[ ] 5.8 Depth-First Search 
[ ] 5.9 Applications of Depth-First Search 
[ ] 5.10 Depth-First Search on Directed Graphs 
[ ] 5.11 Exercises

6 Weighted Graph Algorithms 
[ ] 6.1 Minimum Spanning Trees
[ ] 6.2 War Story: Nothing but Nets 
[ ] 6.3 Shortest Paths 
[ ] 6.4 War Story: Dialing for Documents 
[ ] 6.5 Network Flows and Bipartite Matching 
[ ] 6.6 Design Graphs, Not Algorithms
[ ] 6.7 Exercises

7 Combinatorial Search and Heuristic Methods 
[ ] 7.1 Backtracking 
[ ] 7.2 Search Pruning 
[ ] 7.3 Sudoku 
[ ] 7.4 War Story: Covering Chessboards 
[ ] 7.5 Heuristic SearchMethods
[ ] 7.6 War Story: Only it is Not a Radio
[ ] 7.7 War Story: Annealing Arrays
[ ] 7.8 Other Heuristic SearchMethods 
[ ] 7.9 Parallel Algorithms 
[ ] 7.10 War Story: Going Nowhere Fast 
[ ] 7.11 Exercises

8 Dynamic Programming 
[ ] 8.1 Caching vs. Computation 
[ ] 8.2 Approximate String Matching 
[ ] 8.3 Longest Increasing Sequence 
[ ] 8.4 War Story: Evolution of the Lobster 
[ ] 8.5 The Partition Problem 
[ ] 8.6 Parsing Context-Free Grammars 
[ ] 8.7 Limitations of Dynamic Programming: TSP 
[ ] 8.8 War Story: What’s Past is Prolog 
[ ] 8.9 War Story: Text Compression for Bar Codes 
[ ] 8.10 Exercises 

9 Intractable Problems and Approximation Algorithms
[ ] 9.1 Problems and Reductions 
[ ] 9.2 Reductions for Algorithms
[ ] 9.3 Elementary Hardness Reductions
[ ] 9.4 Satisfiability 
[ ] 9.5 Creative Reductions 
[ ] 9.6 The Art of Proving Hardness 
[ ] 9.7 War Story: Hard Against the Clock 
[ ] 9.8 War Story: And Then I Failed 
[ ] 9.9 P vs. NP 
[ ] 9.10 Dealing with NP-complete Problems 
[ ] 9.11 Exercises

10 How to Design Algorithms 
[ ] II The Hitchhiker’s Guide to Algorithms
[ ] 11 A Catalog of Algorithmic Problems

12 Data Structures 
[ ] 12.1 Dictionaries
[ ] 12.2 Priority Queues 
[ ] 12.3 Suffix Trees and Arrays 
[ ] 12.4 Graph Data Structures 
[ ] 12.5 Set Data Structures 
[ ] 12.6 Kd-Trees

13 Numerical Problems
[ ] 13.1 Solving Linear Equations 
[ ] 13.2 Bandwidth Reduction 
[ ] 13.3 Matrix Multiplication 
[ ] 13.4 Determinants and Permanents 
[ ] 13.5 Constrained and Unconstrained Optimization 
[ ] 13.6 Linear Programming 
[ ] 13.7 Random Number Generation 
[ ] 13.8 Factoring and Primality Testing 
[ ] 13.9 Arbitrary-Precision Arithmetic 
[ ] 13.10 Knapsack Problem 
[ ] 13.11 Discrete Fourier Transform 

14 Combinatorial Problems 
[ ] 14.1 Sorting 
[ ] 14.2 Searching 
[ ] 14.3 Median and Selection 
[ ] 14.4 Generating Permutations 
[ ] 14.5 Generating Subsets 
[ ] 14.6 Generating Partitions
[ ] 14.7 Generating Graphs 
[ ] 14.8 Calendrical Calculations 
[ ] 14.9 Job Scheduling 
[ ] 14.10 Satisfiability 

15 Graph Problems: Polynomial-Time
[ ] 15.1 Connected Components
[ ] 15.2 Topological Sorting 
[ ] 15.3 Minimum Spanning Tree 
[ ] 15.4 Shortest Path 
[ ] 15.5 Transitive Closure and Reduction 
[ ] 15.6 Matching 
[ ] 15.7 Eulerian Cycle/Chinese Postman 
[ ] 15.8 Edge and Vertex Connectivity
[ ] 15.9 Network Flow 
[ ] 15.10 Drawing Graphs Nicely
[ ] 15.11 Drawing Trees
[ ] 15.12 Planarity Detection and Embedding

16 Graph Problems: Hard Problems 
[ ] 16.1 Clique
[ ] 16.2 Independent Set
[ ] 16.3 Vertex Cover
[ ] 16.4 Traveling Salesman Problem 
[ ] 16.5 Hamiltonian Cycle 
[ ] 16.6 Graph Partition 
[ ] 16.7 Vertex Coloring
[ ] 16.8 Edge Coloring 
[ ] 16.9 Graph Isomorphism 
[ ] 16.10 Steiner Tree
[ ] 16.11 Feedback Edge/Vertex Set 

17 Computational Geometry
[ ] 17.1 Robust Geometric Primitives 
[ ] 17.2 Convex Hull
[ ] 17.3 Triangulation 
[ ] 17.4 Voronoi Diagrams
[ ] 17.5 Nearest Neighbor Search 
[ ] 17.6 Range Search 
[ ] 17.7 Point Location 
[ ] 17.8 Intersection Detection 
[ ] 17.9 Bin Packing 
[ ] 17.10 Medial-Axis Transform 
[ ] 17.11 Polygon Partitioning 
[ ] 17.12 Simplifying Polygons 
[ ] 17.13 Shape Similarity 
[ ] 17.14 Motion Planning 
[ ] 17.15 Maintaining Line Arrangements 
[ ] 17.16 Minkowski Sum

18 Set and String Problems
[ ] 18.1 Set Cover 
[ ] 18.2 Set Packing 
[ ] 18.3 String Matching 
[ ] 18.4 Approximate String Matching 
[ ] 18.5 Text Compression
[ ] 18.6 Cryptography 
[ ] 18.7 Finite State Machine Minimization 
[ ] 18.8 Longest Common Substring/Subsequence 
[ ] 18.9 Shortest Common Superstring 

19 Algorithmic Resources 657
[ ] 19.1 Software Systems 
[ ] 19.2 Data Sources
[ ] 19.3 Online Bibliographic Resources 
[ ] 19.4 Professional Consulting Services 
Bibliography 665
Index 709