skip to main content
Skip header Section
Introduction to the Design and Analysis of Algorithms (2nd Edition)February 2006
Publisher:
  • Addison-Wesley Longman Publishing Co., Inc.
  • 75 Arlington Street, Suite 300 Boston, MA
  • United States
ISBN:978-0-321-35828-8
Published:01 February 2006
Skip Bibliometrics Section
Bibliometrics
Abstract

No abstract available.

Cited By

  1. Goncharenko V, Lebedev G and Mikhailin D (2019). Online Two-Dimensional Route Planning for a Group of Unmanned Aerial Vehicles, Journal of Computer and Systems Sciences International, 58:1, (147-158), Online publication date: 1-Jan-2019.
  2. ACM
    Hamirwasia V, Karlapalem K and Valluri S FAST Proceedings of Real-Time Business Intelligence and Analytics, (1-10)
  3. Omar Y, Osama H and Badr A (2019). Double Hashing Sort Algorithm, Computing in Science and Engineering, 19:2, (63-69), Online publication date: 1-Mar-2017.
  4. Maniccam S (2015). Splitting tower of Hanoi into odd even disks, Journal of Computing Sciences in Colleges, 30:5, (100-106), Online publication date: 1-May-2015.
  5. ACM
    Cao J, Xiao Q, Ghinita G, Li N, Bertino E and Tan K Efficient and accurate strategies for differentially-private sliding window queries Proceedings of the 16th International Conference on Extending Database Technology, (191-202)
  6. Maniccam S (2012). Towers of Hanoi related problems, Journal of Computing Sciences in Colleges, 27:5, (205-213), Online publication date: 1-May-2012.
  7. Pevac I (2012). First experiences with tutor for recursive algorithm time efficiency analysis, Journal of Computing Sciences in Colleges, 28:1, (56-65), Online publication date: 1-Oct-2012.
  8. ACM
    Rolfe T (2011). Optimizations generating Armstrong numbers, ACM Inroads, 2:2, (43-46), Online publication date: 1-Jun-2011.
  9. ACM
    Sinha R and Wirth A (2010). Engineering burstsort, Journal of Experimental Algorithmics (JEA), 15, (2.1-2.24), Online publication date: 1-Mar-2010.
  10. Yao J and Xiao Y (2010). Data structures for the most frequently used algorithm, Journal of Computing Sciences in Colleges, 26:2, (223-230), Online publication date: 1-Dec-2010.
  11. Kratchanov K, Golemanov T, Golemanova E and Ercan T Control network programming with SPIDER Proceedings of the 14th international conference on Knowledge-based and intelligent information and engineering systems: Part II, (253-262)
  12. Kratchanov K, Golemanova E, Golemanov T and Ercan T Non-procedural implementation of local heuristic search in control network programming Proceedings of the 14th international conference on Knowledge-based and intelligent information and engineering systems: Part II, (263-272)
  13. ACM
    Lo C, Tai Y and Psarris K Hardware implementation for network intrusion detection rules with regular expression support Proceedings of the 2008 ACM symposium on Applied computing, (1535-1539)
  14. ACM
    Thierens D A bivariate probabilistic model-building genetic algorithm for graph bipartitioning Proceedings of the 10th annual conference companion on Genetic and evolutionary computation, (2089-2092)
  15. Sinha R and Wirth A Engineering burstsort Proceedings of the 7th international conference on Experimental algorithms, (14-27)
  16. ACM
    Rolfe T (2007). An alternative dynamic programming solution for the 0/1 knapsack, ACM SIGCSE Bulletin, 39:4, (54-56), Online publication date: 1-Dec-2007.
Contributors
  • Villanova University

Recommendations

Reviews

I-Lun Tseng

What makes this book extraordinary is the fact that the author uses an alternative method to teach algorithms. Instead of explaining every detail of a procedure for solving a specific problem, the book teaches you how to use design strategies, or design techniques, to attack many different problems. This focus on developing problem solving skills is essential for those seeking to design new algorithms, as well as solve new problems. The book could be the result of an idea published by the author in a previous paper [1], in which the author suggests reclassifying algorithm design techniques. Ten algorithm design techniques (including brute force, divide-and-conquer, decrease-and-conquer, transform-and-conquer, space-time tradeoffs, dynamic programming, the greedy technique, iterative improvement, backtracking, and branch-and-bound) are included in the book. Each of the design techniques has a dedicated chapter, except for backtracking and branch-and-bound, which are put together in one chapter as ways to deal with difficult problems. The discussion of these ten design techniques constitutes the major part of the book. Chapter 1 briefly introduces algorithms and basic data structures. Chapter 2 presents fundamental techniques for the analysis of algorithms, along with examples. The mathematics used in the chapter has explicit steps, and is quite easy to understand. Chapter 3 introduces the most basic design strategy, brute force. Selection sort, bubble sort, and sequential search algorithms all fall into this category. Problems that can be solved by using the brute force strategy (such as the convex-hull, the traveling salesman, and the knapsack problems) are also presented. Chapter 4 discusses the divide-and-conquer technique. Algorithms such as merge sort, quicksort, and binary search are covered. Also, the idea of using divide-and-conquer in solving problems, such as the multiplication of large integers, Strassen's matrix multiplication, closest-pair, and convex-hull, is explained. Chapter 5 presents decrease-and-conquer algorithms, which include insertion sort, depth-first search (DFS), breadth-first search (BFS), topological sort, and many others. Permutation-generation and subset-generation algorithms are also presented; they can be applied in the brute force strategy, however the concepts of the algorithms fit into this chapter. The author did not clearly explain, however, why some of the other algorithms, such as DFS and BFS, belong to this design strategy. Chapter 6 introduces the transform-and-conquer technique. Each of the sections is easy to read and understand. The author, however, could have given clear reasons why Adelson-Velsky Landis (AVL) trees belong to "instance simplification" while 2-3 trees, heaps, and heapsort belong to "representation change." Chapters 7 through 10 discuss other design strategies, including space-time tradeoffs, dynamic programming, the greedy method, and iterative improvement. All of the chapters have a similar format: a brief introduction to the strategy, followed by its corresponding algorithms. Chapters 11 and 12 contain a lucid introduction to the theory of nondeterministic polynomial time (NP) completeness and approximation algorithms for some NP-hard problems. Backtracking and branch-and-bound are also presented, for tackling some difficult problems. The book is not only well structured, but also well organized. The algorithms presented in the book range from simple and straightforward (in the early chapters) to sophisticated and complex (in the later chapters), yet they all fit into the specific chapters in which they are presented. The book is intended for use as a textbook in a typical one-semester undergraduate course. In my opinion, the book serves its function quite well, since it covers the most basic, yet important, algorithm design and analysis techniques that an introductory algorithm course should contain. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.