Front cover image for The algorithm design manual

The algorithm design manual

Print Book, English, 2020
Third edition View all formats and editions
Springer, Cham, Switzerland, 2020
viii, 17, 793 Seiten : Illustrationen
9783030542559, 3030542556
1226703451
Erscheint auch als:
{*DRAFT*}Introduction to Algorithm DesignAlgorithm AnalysisData StructuresSorting and SearchingDivide and ConquerRandomized Algorithms and HashingGraph TraversalWeighted Graph AlgorithmsCombinatorial Search and Heuristic MethodsDynamic ProgrammingNP-CompletenessDealing with Hard Problems How to Design Algorithms14 A Catalog of Algorithmic Problems 43715 Data Structures 43915.1 Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44015.2 Priority Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44515.3 Sux Trees and Arrays . . . . . . . . . . . . . . . . . . . . . . . 44815.4 Graph Data Structures . . . . . . . . . . . . . . . . . . . . . . . . 45215.5 Set Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . 45615.6 Kd-Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46016 Numerical Problems 46516.1 Solving Linear Equations . . . . . . . . . . . . . . . . . . . . . . 46716.2 Bandwidth Reduction . . . . . . . . . . . . . . . . . . . . . . . . 47016.3 Matrix Multiplication . . . . . . . . . . . . . . . . . . . . . . . . 47216.4 Determinants and Permanents . . . . . . . . . . . . . . . . . . . 47516.5 Constrained/Unconstrained Optimization . . . . . . . . . . . . . 47816.6 Linear Programming . . . . . . . . . . . . . . . . . . . . . . . . . 48216.7 Random Number Generation . . . . . . . . . . . . . . . . . . . . 48616.8 Factoring and Primality Testing . . . . . . . . . . . . . . . . . . . 49016.9 Arbitrary-Precision Arithmetic . . . . . . . . . . . . . . . . . . . 49316.10Knapsack Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 49716.11Discrete Fourier Transform . . . . . . . . . . . . . . . . . . . . . 50117 Combinatorial Problems 50517.1 Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50617.2 Searching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51017.3 Median and Selection . . . . . . . . . . . . . . . . . . . . . . . . . 51417.4 Generating Permutations . . . . . . . . . . . . . . . . . . . . . . 51717.5 Generating Subsets . . . . . . . . . . . . . . . . . . . . . . . . . . 52117.6 Generating Partitions . . . . . . . . . . . . . . . . . . . . . . . . 52417.7 Generating Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . 52817.8 Calendrical Calculations . . . . . . . . . . . . . . . . . . . . . . . 53217.9 Job Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53417.10Satisability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53718 Graph Problems: Polynomial-Time 54118.1 Connected Components . . . . . . . . . . . . . . . . . . . . . . . 54218.2 Topological Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . 54618.3 Minimum Spanning Tree . . . . . . . . . . . . . . . . . . . . . . . 54918.4 Shortest Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55418.5 Transitive Closure and Reduction . . . . . . . . . . . . . . . . . . 55918.6 Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56218.7 Eulerian Cycle/Chinese Postman . . . . . . . . . . . . . . . . . . 56518.8 Edge and Vertex Connectivity . . . . . . . . . . . . . . . . . . . . 56816 CONTENTS18.9 Network Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57118.10Drawing Graphs Nicely . . . . . . . . . . . . . . . . . . . . . . . 57418.11Drawing Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57818.12Planarity Detection and Embedding . . . . . . . . . . . . . . . . 58119 Graph Problems: NP-Hard 58519.1 Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58619.2 Independent Set . . . . . . . . . . . . . . . . . . . . . . . . . . . 58919.3 Vertex Cover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59119.4 Traveling Salesman Problem . . . . . . . . . . . . . . . . . . . . . 59419.5 Hamiltonian Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . 59819.6 Graph Partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60119.7 Vertex Coloring . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60419.8 Edge Coloring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60819.9 Graph Isomorphism . . . . . . . . . . . . . . . . . . . . . . . . . 61019.10Steiner Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61419.11Feedback Edge/Vertex Set . . . . . . . . . . . . . . . . . . . . . . 61820 Computational Geometry 62120.1 Robust Geometric Primitives . . . . . . . . . . . . . . . . . . . . 62220.2 Convex Hull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62620.3 Triangulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63020.4 Voronoi Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . 63420.5 Nearest Neighbor Search . . . . . . . . . . . . . . . . . . . . . . . 63720.6 Range Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64120.7 Point Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64420.8 Intersection Detection . . . . . . . . . . . . . . . . . . . . . . . . 64820.9 Bin Packing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65220.10Medial-Axis Transform . . . . . . . . . . . . . . . . . . . . . . . . 65520.11Polygon Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . 65820.12Simplifying Polygons . . . . . . . . . . . . . . . . . . . . . . . . . 66120.13Shape Similarity . . . . . . . . . . . . . . . . . . . . . . . . . . . 66420.14Motion Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . 66720.15Maintaining Line Arrangements . . . . . . . . . . . . . . . . . . . 67120.16Minkowski Sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67421 Set and String Problems 67721.1 Set Cover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67821.2 Set Packing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68221.3 String Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . 68521.4 Approximate String Matching . . . . . . . . . . . . . . . . . . . . 68821.5 Text Compression . . . . . . . . . . . . . . . . . . . . . . . . . . 69321.6 Cryptography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69721.7 Finite State Machine Minimization . . . . . . . . . . . . . . . . . 70221.8 Longest Common Substring/Subsequence . . . . . . . . . . . . . 70621.9 Shortest Common Superstring . . . . . . . . . . . . . . . . . . . . 709CONTENTS 1722 Algorithmic Resources 71322.1 Algorithm Libraries . . . . . . . . . . . . . . . . . . . . . . . . . 71322.1.1 LEDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71322.1.2 CGAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71422.1.3 Boost Graph Library . . . . . . . . . . . . . . . . . . . . . 71422.1.4 Netlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71422.1.5 Collected Algorithms of the ACM . . . . . . . . . . . . . 71522.1.6 GitHub and SourceForge . . . . . . . . . . . . . . . . . . . 71522.1.7 The Stanford GraphBase . . . . . . . . . . . . . . . . . . 71522.1.8 Combinatorica . . . . . . . . . . . . . . . . . . . . . . . . 71622.1.9 Programs from Books . . . . . . . . . . . . . . . . . . . . 71622.2 Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71722.3 Online Bibliographic Resources . . . . . . . . . . . . . . . . . . . 71822.4 Professional Consulting Services . . . . . . . . . . . . . . . . . . 71823 Bibliography 719Index 771