The Algorithm Design Manual

Specificaties
Gebonden, blz. | Engels
Springer International Publishing | 3e druk, 2020
ISBN13: 9783030542559
Rubricering
Springer International Publishing 3e druk, 2020 9783030542559
Onderdeel van serie Texts in Computer Science
Verwachte levertijd ongeveer 9 werkdagen

Samenvatting

"My absolute favorite for this kind of interview preparation is Steven Skiena’s The Algorithm Design Manual. More than any other book it helped me understand just how astonishingly commonplace … graph problems are -- they should be part of every working programmer’s toolkit. The book also covers basic data structures and sorting algorithms, which is a nice bonus. … every 1 – pager has a simple picture, making it easy to remember. This is a great way to learn how to identify hundreds of problem types." (Steve Yegge, Get that Job at Google)

"Steven Skiena’s Algorithm Design Manual retains its title as the best and most comprehensive practical algorithm guide to help identify and solve problems. … Every programmer should read this book, and anyone working in the field should keep it close to hand. … This is the best investment … a programmer or aspiring programmer can make." (Harold Thimbleby, Times Higher Education)

"It is wonderful to open to a random spot and discover an interesting algorithm. This is the only textbook I felt compelled to bring with me out of my student days.... The color really adds a lot of energy to the new edition of the book!" (Cory Bart, University of Delaware)

"The is the most approachable book on algorithms I have."   (Megan Squire, Elon University)

---

This newly expanded and updated third edition of the best-selling classic continues to take the "mystery" out of designing algorithms, and analyzing their efficiency.  It serves as the primary textbook of choice for algorithm design courses and interview self-study, while maintaining its status as the premier practical reference guide to algorithms for programmers, researchers, and students.

 

The reader-friendly Algorithm Design Manual provides straightforward access to combinatorial algorithms technology, stressing design over analysis.  The first part, Practical Algorithm Design, provides accessible instruction on methods for designing and analyzing computer algorithms.  The second part, the Hitchhiker's Guide to Algorithms, is intended for browsing and reference, and comprises the catalog of algorithmic resources, implementations, and an extensive bibliography. 

NEW to the third edition: 

-- New and expanded coverage of randomized algorithms, hashing, divide and conquer, approximation algorithms, and quantum computing 

-- Provides full online support for lecturers, including an improved website component with lecture slides and videos 

-- Full color illustrations and code instantly clarify difficult concepts 

-- Includes several new "war stories" relating experiences from real-world applications

 -- Over 100 new problems, including programming-challenge problems from LeetCode and Hackerrank. 

-- Provides up-to-date links leading to the best implementations available in C, C++, and Java

 

Additional Learning Tools: 

-- Contains a unique catalog identifying the 75 algorithmic problems that arise most often in practice, leading the reader down the right path to solve them 

-- Exercises include "job interview problems" from major software companies 

-- Highlighted "take home lessons" emphasize essential concepts 

-- The "no theorem-proof" style provides a uniquely accessible and intuitive approach to a challenging subject 

-- Many algorithms are presented with actual code (written in C) -- Provides comprehensive references to both survey articles and the primary literature

 

Written by a well-known algorithms researcher who received the IEEE Computer Science and Engineering Teaching Award, this substantially enhanced third edition of The Algorithm Design Manual is an essential learning tool for students and professionals needed a solid grounding in algorithms.   Professor Skiena is also the author of the popular Springer texts, The Data Science Design Manual and Programming Challenges: The Programming Contest Training Manual.

Specificaties

ISBN13:9783030542559
Taal:Engels
Bindwijze:gebonden
Uitgever:Springer International Publishing
Druk:3

Inhoudsopgave

<p>{*DRAFT*}</p><p>Introduction to Algorithm Design</p><p>Algorithm Analysis<br></p><p>Data Structures<br></p><p>Sorting and Searching<br></p><p>Divide and Conquer<br></p><p>Randomized Algorithms and Hashing<br></p><p>Graph Traversal<br></p>Weighted Graph Algorithms<br><p></p><p>Combinatorial Search and Heuristic Methods<br></p><p>Dynamic Programming<br></p><p>NP-Completeness<br></p><p>Dealing with Hard Problems&nbsp;<br></p><p>How to Design Algorithms</p><p>14 A Catalog of Algorithmic Problems 437</p><p>15 Data Structures 439</p><p>15.1 Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440</p><p>15.2 Priority Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445</p><p>15.3 Sux Trees and Arrays . . . . . . . . . . . . . . . . . . . . . . . 448</p><p>15.4 Graph Data Structures . . . . . . . . . . . . . . . . . . . . . . . . 452</p><p>15.5 Set Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . 456</p><p>15.6 Kd-Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460</p><p>16 Numerical Problems 465</p><p>16.1 Solving Linear Equations . . . . . . . . . . . . . . . . . . . . . . 467</p><p>16.2 Bandwidth Reduction . . . . . . . . . . . . . . . . . . . . . . . . 470</p><p>16.3 Matrix Multiplication . . . . . . . . . . . . . . . . . . . . . . . . 472</p><p>16.4 Determinants and Permanents . . . . . . . . . . . . . . . . . . . 475</p><p>16.5 Constrained/Unconstrained Optimization . . . . . . . . . . . . . 478</p><p>16.6 Linear Programming . . . . . . . . . . . . . . . . . . . . . . . . . 482</p><p>16.7 Random Number Generation . . . . . . . . . . . . . . . . . . . . 486</p><p>16.8 Factoring and Primality Testing . . . . . . . . . . . . . . . . . . . 490</p><p>16.9 Arbitrary-Precision Arithmetic . . . . . . . . . . . . . . . . . . . 493</p><p>16.10Knapsack Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 497</p><p>16.11Discrete Fourier Transform . . . . . . . . . . . . . . . . . . . . . 501</p><p>17 Combinatorial Problems 505</p><p>17.1 Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506</p><p>17.2 Searching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510</p><p>17.3 Median and Selection . . . . . . . . . . . . . . . . . . . . . . . . . 514</p><p>17.4 Generating Permutations . . . . . . . . . . . . . . . . . . . . . . 517</p><p>17.5 Generating Subsets . . . . . . . . . . . . . . . . . . . . . . . . . . 521</p><p>17.6 Generating Partitions . . . . . . . . . . . . . . . . . . . . . . . . 524</p><p>17.7 Generating Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . 528</p><p>17.8 Calendrical Calculations . . . . . . . . . . . . . . . . . . . . . . . 532</p><p>17.9 Job Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534</p><p>17.10Satisability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537</p><p>18 Graph Problems: Polynomial-Time 541</p><p>18.1 Connected Components . . . . . . . . . . . . . . . . . . . . . . . 542</p><p>18.2 Topological Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . 546</p><p>18.3 Minimum Spanning Tree . . . . . . . . . . . . . . . . . . . . . . . 549</p><p>18.4 Shortest Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554</p><p>18.5 Transitive Closure and Reduction . . . . . . . . . . . . . . . . . . 559</p><p>18.6 Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562</p><p>18.7 Eulerian Cycle/Chinese Postman . . . . . . . . . . . . . . . . . . 565</p><p>18.8 Edge and Vertex Connectivity . . . . . . . . . . . . . . . . . . . . 568</p><p>16 CONTENTS</p><p>18.9 Network Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571</p><p>18.10Drawing Graphs Nicely . . . . . . . . . . . . . . . . . . . . . . . 574</p><p>18.11Drawing Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578</p><p>18.12Planarity Detection and Embedding . . . . . . . . . . . . . . . . 581</p><p>19 Graph Problems: NP-Hard 585</p><p>19.1 Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586</p><p>19.2 Independent Set . . . . . . . . . . . . . . . . . . . . . . . . . . . 589</p><p>19.3 Vertex Cover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591</p><p>19.4 Traveling Salesman Problem . . . . . . . . . . . . . . . . . . . . . 594</p><p>19.5 Hamiltonian Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . 598</p><p>19.6 Graph Partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601</p><p>19.7 Vertex Coloring . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604</p><p>19.8 Edge Coloring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608</p><p>19.9 Graph Isomorphism . . . . . . . . . . . . . . . . . . . . . . . . . 610</p><p>19.10Steiner Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614</p><p>19.11Feedback Edge/Vertex Set . . . . . . . . . . . . . . . . . . . . . . 618</p><p>20 Computational Geometry 621</p><p>20.1 Robust Geometric Primitives . . . . . . . . . . . . . . . . . . . . 622</p><p>20.2 Convex Hull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626</p><p>20.3 Triangulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630</p><p>20.4 Voronoi Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . 634</p><p>20.5 Nearest Neighbor Search . . . . . . . . . . . . . . . . . . . . . . . 637</p><p>20.6 Range Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641</p><p>20.7 Point Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644</p><p>20.8 Intersection Detection . . . . . . . . . . . . . . . . . . . . . . . . 648</p><p>20.9 Bin Packing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652</p><p>20.10Medial-Axis Transform . . . . . . . . . . . . . . . . . . . . . . . . 655</p><p>20.11Polygon Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . 658</p><p>20.12Simplifying Polygons . . . . . . . . . . . . . . . . . . . . . . . . . 661</p><p>20.13Shape Similarity . . . . . . . . . . . . . . . . . . . . . . . . . . . 664</p><p>20.14Motion Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . 667</p><p>20.15Maintaining Line Arrangements . . . . . . . . . . . . . . . . . . . 671</p><p>20.16Minkowski Sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674</p><p>21 Set and String Problems 677</p><p>21.1 Set Cover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678</p><p>21.2 Set Packing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682</p><p>21.3 String Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . 685</p><p>21.4 Approximate String Matching . . . . . . . . . . . . . . . . . . . . 688</p><p>21.5 Text Compression . . . . . . . . . . . . . . . . . . . . . . . . . . 693</p><p>21.6 Cryptography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697</p><p>21.7 Finite State Machine Minimization . . . . . . . . . . . . . . . . . 702</p><p>21.8 Longest Common Substring/Subsequence . . . . . . . . . . . . . 706</p><p>21.9 Shortest Common Superstring . . . . . . . . . . . . . . . . . . . . 709</p><p>CONTENTS 17</p><p>22 Algorithmic Resources 713</p><p>22.1 Algorithm Libraries . . . . . . . . . . . . . . . . . . . . . . . . . 713</p><p>22.1.1 LEDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713</p><p>22.1.2 CGAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714</p><p>22.1.3 Boost Graph Library . . . . . . . . . . . . . . . . . . . . . 714</p><p>22.1.4 Netlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714</p><p>22.1.5 Collected Algorithms of the ACM . . . . . . . . . . . . . 715</p><p>22.1.6 GitHub and SourceForge . . . . . . . . . . . . . . . . . . . 715</p><p>22.1.7 The Stanford GraphBase . . . . . . . . . . . . . . . . . . 715</p><p>22.1.8 Combinatorica . . . . . . . . . . . . . . . . . . . . . . . . 716</p><p>22.1.9 Programs from Books . . . . . . . . . . . . . . . . . . . . 716</p><p>22.2 Data Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717</p><p>22.3 Online Bibliographic Resources . . . . . . . . . . . . . . . . . . . 718</p><p>22.4 Professional Consulting Services . . . . . . . . . . . . . . . . . . 718</p><p>23 Bibliography 719</p><p></p><p>Index 771</p>

Rubrieken

    Personen

      Trefwoorden

        The Algorithm Design Manual