The algorithm design manual

書誌事項

The algorithm design manual

Steven S. Skiena

(Texts in computer science)

Springer, c2020

3rd ed

大学図書館所蔵 件 / 11

この図書・雑誌をさがす

注記

Includes bibliographical references (p. 719-768) and index

内容説明・目次

内容説明

"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.

目次

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

「Nielsen BookData」 より

関連文献: 1件中  1-1を表示

詳細情報

  • NII書誌ID(NCID)
    BC03826005
  • ISBN
    • 9783030542559
  • 出版国コード
    sz
  • タイトル言語コード
    eng
  • 本文言語コード
    eng
  • 出版地
    Cham
  • ページ数/冊数
    17, 793 p.
  • 大きさ
    25 cm
  • 親書誌ID
ページトップへ