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