skip to main content
Skip header Section
AlgorithmsSeptember 2006
Publisher:
  • McGraw-Hill, Inc.
  • Professional Book Group 11 West 19th Street New York, NY
  • United States
ISBN:978-0-07-352340-8
Published:13 September 2006
Pages:
336
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

This text, extensively class-tested over a decade at UC Berkeley and UC San Diego, explains the fundamentals of algorithms in a story line that makes the material enjoyable and easy to digest. Emphasis is placed on understanding the crisp mathematical idea behind each algorithm, in a manner that is intuitive and rigorous without being unduly formal. Features include: The use of boxes to strengthen the narrative: pieces that provide historical context, descriptions of how the algorithms are used in practice, and excursions for the mathematically sophisticated. Carefully chosen advanced topics that can be skipped in a standard one-semester course, but can be covered in an advanced algorithms course or in a more leisurely two-semester sequence. An accessible treatment of linear programming introduces students to one of the greatest achievements in algorithms. An optional chapter on the quantum algorithm for factoring provides a unique peephole into this exciting topic. In addition to the text, DasGupta also offers a Solutions Manual, which is available on the Online Learning Center. "Algorithms is an outstanding undergraduate text, equally informed by the historical roots and contemporary applications of its subject. Like a captivating novel, it is a joy to read." Tim Roughgarden Stanford University Table of contents0 Prologue1 Algorithms with Numbers2 Divide-and-Conquer Algorithms3 Decompositions of Graphs4 Paths in Graphs5 Greedy algorithms6 Dynamic Programming7 Linear Programming and Reductions8 NP-complete Problems9 Coping with NP-completeness10 Quantum Algorithms

Cited By

  1. ACM
    Makhija N and Gatterbauer W (2024). Minimally Factorizing the Provenance of Self-join Free Conjunctive Queries, Proceedings of the ACM on Management of Data, 2:2, (1-24), Online publication date: 10-May-2024.
  2. Agarwal S and Akella S (2024). Line Coverage With Multiple Robots: Algorithms and Experiments, IEEE Transactions on Robotics, 40, (1664-1683), Online publication date: 1-Jan-2024.
  3. Papadakis G, Efthymiou V, Thanos E, Hassanzadeh O and Christen P (2023). An analysis of one-to-one matching algorithms for entity resolution, The VLDB Journal — The International Journal on Very Large Data Bases, 32:6, (1369-1400), Online publication date: 1-Nov-2023.
  4. Shukla A, Erementchouk M and Mazumder P (2023). Custom CMOS Ising Machine Based on Relaxed Burer-Monteiro-Zhang Heuristic, IEEE Transactions on Computers, 72:10, (2835-2846), Online publication date: 1-Oct-2023.
  5. Karaliopoulos M, Mastakas O and Chai W (2023). Matching Supply and Demand in Online Parking Reservation Platforms, IEEE Transactions on Intelligent Transportation Systems, 24:3, (3182-3193), Online publication date: 1-Mar-2023.
  6. ACM
    J. A, Adedoyin A, Ambrosiano J, Anisimov P, Casper W, Chennupati G, Coffrin C, Djidjev H, Gunter D, Karra S, Lemons N, Lin S, Malyzhenkov A, Mascarenas D, Mniszewski S, Nadiga B, O’malley D, Oyen D, Pakin S, Prasad L, Roberts R, Romero P, Santhi N, Sinitsyn N, Swart P, Wendelberger J, Yoon B, Zamora R, Zhu W, Eidenbenz S, Bärtschi A, Coles P, Vuffray M and Lokhov A (2022). Quantum Algorithm Implementations for Beginners, ACM Transactions on Quantum Computing, 3:4, (1-92), Online publication date: 31-Dec-2022.
  7. Quilliot A and Rebaine D (2022). Linear time algorithms on mirror trees, Journal of Combinatorial Optimization, 44:5, (3495-3519), Online publication date: 1-Dec-2022.
  8. ACM
    Chrobak M, Golin M, Munro J and Young N (2021). A Simple Algorithm for Optimal Search Trees with Two-way Comparisons, ACM Transactions on Algorithms, 18:1, (1-11), Online publication date: 31-Jan-2022.
  9. ACM
    Gao X, Xu W, Liao M and Chen G (2021). Trust Prediction for Online Social Networks with Integrated Time-Aware Similarity, ACM Transactions on Knowledge Discovery from Data, 15:6, (1-30), Online publication date: 28-Jun-2021.
  10. ACM
    Mitzenmacher M and Seddighin S Dynamic algorithms for LIS and distance to monotonicity Proceedings of the 52nd Annual ACM SIGACT Symposium on Theory of Computing, (671-684)
  11. Han M, Guan N, Sun J, He Q, Deng Q and Liu W (2019). Response Time Bounds for Typed DAG Parallel Tasks on Heterogeneous Multi-Cores, IEEE Transactions on Parallel and Distributed Systems, 30:11, (2567-2581), Online publication date: 1-Nov-2019.
  12. D'emidio M, Forlizzi L, Frigioni D, Leucci S and Proietti G (2019). Hardness, approximability, and fixed-parameter tractability of the clustered shortest-path tree problem, Journal of Combinatorial Optimization, 38:1, (165-184), Online publication date: 1-Jul-2019.
  13. Wang J and Shah N Your 2 is My 1, Your 3 is My 9 Proceedings of the 18th International Conference on Autonomous Agents and MultiAgent Systems, (864-872)
  14. Anastasiadis E, Deng X, Krysta P, Li M, Qiao H and Zhang J (2019). Network Pollution Games, Algorithmica, 81:1, (124-166), Online publication date: 1-Jan-2019.
  15. Gainanov D, Kibzun A and Rasskazova V (2018). The Decomposition Problem for the Set of Paths in a Directed Graph and Its Application, Automation and Remote Control, 79:12, (2217-2236), Online publication date: 1-Dec-2018.
  16. Wu Y, Fang Y, Liu B and Zhao Z (2018). A novel service deployment approach based on resilience metrics for service-oriented system, Personal and Ubiquitous Computing, 22:5-6, (1099-1107), Online publication date: 1-Oct-2018.
  17. Tarafdar R and Han Y (2018). Finding majority for integer elements, Journal of Computing Sciences in Colleges, 33:5, (187-191), Online publication date: 1-May-2018.
  18. ACM
    Zheng Y and Zhang L (2017). Reconciliation With Nonbinary Gene Trees Revisited, Journal of the ACM, 64:4, (1-28), Online publication date: 7-Sep-2017.
  19. ACM
    Madhavan R, Kulal S and Kuncak V (2017). Contract-based resource verification for higher-order functions with memoization, ACM SIGPLAN Notices, 52:1, (330-343), Online publication date: 11-May-2017.
  20. ACM
    Shokri R, Theodorakopoulos G and Troncoso C (2016). Privacy Games Along Location Traces, ACM Transactions on Privacy and Security, 19:4, (1-31), Online publication date: 3-Feb-2017.
  21. Chen W, Paik I and Li Z (2017). Cost-Aware Streaming Workflow Allocation on Geo-Distributed Data Centers, IEEE Transactions on Computers, 66:2, (256-271), Online publication date: 1-Feb-2017.
  22. Melani A, Bertogna M, Bonifaci V, Marchetti-Spaccamela A and Buttazzo G (2017). Schedulability Analysis of Conditional Parallel Task Graphs in Multicore Systems, IEEE Transactions on Computers, 66:2, (339-353), Online publication date: 1-Feb-2017.
  23. ACM
    Madhavan R, Kulal S and Kuncak V Contract-based resource verification for higher-order functions with memoization Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, (330-343)
  24. Liao M, Liu X, Gao X, Zhong J and Chen G iSim: An Efficient Integrated Similarity Based Collaborative Filtering Approach for Trust Prediction in Service-Oriented Social Networks Service-Oriented Computing, (501-516)
  25. Narodytska N, Petit T, Siala M and Walsh T (2016). Three generalizations of the FOCUS constraint, Constraints, 21:4, (495-532), Online publication date: 1-Oct-2016.
  26. Allouche D, Bessiere C, Boizumault P, de Givry S, Gutierrez P, Lee J, Leung K, Loudni S, Métivier J, Schiex T and Wu Y (2016). Tractability-preserving transformations of global cost functions, Artificial Intelligence, 238:C, (166-189), Online publication date: 1-Sep-2016.
  27. Riechert M, Höner zu Siederdissen C and Stadler P (2016). Algebraic dynamic programming for multiple context-free grammars, Theoretical Computer Science, 639:C, (91-109), Online publication date: 1-Aug-2016.
  28. Riley L, Atkinson K, Dunne P and Payne T A Synergy Coalition Group based Dynamic Programming Algorithm for Coalition Formation Proceedings of the 2016 International Conference on Autonomous Agents & Multiagent Systems, (588-596)
  29. Anastasiadis E, Deng X, Krysta P, Li M, Qiao H and Zhang J Network Pollution Games Proceedings of the 2016 International Conference on Autonomous Agents & Multiagent Systems, (23-31)
  30. Serrano M, Melani A, Bertogna M and Quinones E Response-time analysis of DAG tasks under fixed priority scheduling with limited preemptions Proceedings of the 2016 Conference on Design, Automation & Test in Europe, (1066-1071)
  31. ACM
    Aronov B, Driemel A, Kreveld M, Löffler M and Staals F (2015). Segmentation of Trajectories on Nonmonotone Criteria, ACM Transactions on Algorithms, 12:2, (1-28), Online publication date: 12-Feb-2016.
  32. Levitin A (2016). Algorithm design strategies in CS curricula 2013, Journal of Computing Sciences in Colleges, 31:3, (78-84), Online publication date: 1-Jan-2016.
  33. Masson V (2015). Information, interaction and memory, International Journal of Game Theory, 44:4, (1015-1032), Online publication date: 1-Nov-2015.
  34. Perederieieva O, Ehrgott M, Raith A and Wang J (2015). A framework for and empirical study of algorithms for traffic assignment, Computers and Operations Research, 54:C, (90-107), Online publication date: 1-Feb-2015.
  35. Vegdahl S (2014). Visualizing NP-completeness through circuit-based widgets, Journal of Computing Sciences in Colleges, 30:1, (190-198), Online publication date: 1-Oct-2014.
  36. Parker M and Lewis C (2014). What makes big-O analysis difficult, Journal of Computing Sciences in Colleges, 29:4, (164-174), Online publication date: 1-Apr-2014.
  37. Vaidya N Iterative Byzantine Vector Consensus in Incomplete Graphs Proceedings of the 15th International Conference on Distributed Computing and Networking - Volume 8314, (14-28)
  38. Alwan N (2014). Performance analysis of dijkstra-based weighted sum minimization routing algorithm for wireless mesh networks, Modelling and Simulation in Engineering, 2014, (32-32), Online publication date: 1-Jan-2014.
  39. ACM
    Parker M and Lewis C Why is big-O analysis hard? Proceedings of the 13th Koli Calling International Conference on Computing Education Research, (201-202)
  40. Hope D and Keller B MaxMax Proceedings of the 14th international conference on Computational Linguistics and Intelligent Text Processing - Volume Part I, (368-381)
  41. ACM
    Libeskind-Hadas R A derivation-first approach to teaching algorithms Proceeding of the 44th ACM technical symposium on Computer science education, (573-578)
  42. Aronov B, Driemel A, van Kreveld M, Löffler M and Staals F Segmentation of trajectories on non-monotone criteria Proceedings of the twenty-fourth annual ACM-SIAM symposium on Discrete algorithms, (1897-1911)
  43. ACM
    Shokri R, Theodorakopoulos G, Troncoso C, Hubaux J and Le Boudec J Protecting location privacy Proceedings of the 2012 ACM conference on Computer and communications security, (617-627)
  44. ACM
    Vaidya N, Tseng L and Liang G Iterative approximate byzantine consensus in arbitrary directed graphs Proceedings of the 2012 ACM symposium on Principles of distributed computing, (365-374)
  45. ACM
    Wijsen J (2012). Certain conjunctive query answering in first-order logic, ACM Transactions on Database Systems, 37:2, (1-35), Online publication date: 1-May-2012.
  46. ACM
    Forišek M and Steinová M Metaphors and analogies for teaching algorithms Proceedings of the 43rd ACM technical symposium on Computer Science Education, (15-20)
  47. Konstantinidis S and Santean N Computing maximal Kleene closures that are embeddable in a given constrained DNA language Proceedings of the 17th international conference on DNA computing and molecular programming, (115-129)
  48. ACM
    Rolfe T (2011). Optimizations generating Armstrong numbers, ACM Inroads, 2:2, (43-46), Online publication date: 1-Jun-2011.
  49. Ko J, Kwon S and Kim C (2011). Orthogonal signaling-based queue status investigation method in IEEE 802.11, Computer Communications, 34:8, (1033-1041), Online publication date: 1-Jun-2011.
  50. Ekárt A, Sharma D and Chalakov S Modelling human preference in evolutionary art Proceedings of the 2011 international conference on Applications of evolutionary computation - Volume Part II, (303-312)
  51. ACM
    Silvestri F and Venturini R VSEncoding Proceedings of the 19th ACM international conference on Information and knowledge management, (1219-1228)
  52. Stein S, Gerding E and Jennings N Optimal Task Migration in Service-Oriented Systems Proceedings of the 2010 conference on ECAI 2010: 19th European Conference on Artificial Intelligence, (73-78)
  53. ACM
    Lokshtanov D and Nederlof J Saving space by algebraization Proceedings of the forty-second ACM symposium on Theory of computing, (321-330)
  54. ACM
    Haunert J and Brenner C Vehicle localization by matching triangulated point patterns Proceedings of the 17th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems, (344-351)
  55. Crichigno J, Xie C, Shu W, Wu M and Ghani N A multi-objective approach for throughput optimization and traffic engineering in WDM networks Proceedings of the 43rd Asilomar conference on Signals, systems and computers, (1043-1047)
  56. ACM
    Liang Y, Ju L, Chakraborty S, Mitra T and Roychoudhury A Cache-aware optimization of BAN applications Proceedings of the 6th IEEE/ACM/IFIP international conference on Hardware/Software codesign and system synthesis, (149-154)
  57. Wu C, Shankari K, Kamar E, Katz R, Culler D, Papadimitriou C, Horvitz E and Bayen A Optimizing the diamond lane: A more tractable carpool problem and algorithms 2016 IEEE 19th International Conference on Intelligent Transportation Systems (ITSC), (1389-1396)
Contributors
  • University of California, Berkeley
  • University of California, Berkeley

Recommendations

Reviews

S. Nagaraj

In today’s world, computers are ubiquitous, finding a place in almost all spheres of everyday human life. The primary task of computers is to execute programs and produce some meaningful and useful output. For these programs to execute rapidly, it is not just the hardware that is used by the computers, but also the algorithms embedded in the programs that play a crucial role. This book focuses on algorithms, and is intended to be a textbook for undergraduates. The required background has not been mentioned, but some knowledge of discrete mathematics, data structures, and programming should be adequate. The book originated from lecture notes developed by the three authors. The emphasis is not on formal proofs, but on mathematical ideas. Every chapter includes numerous exercises, but, they have not been rated in terms of difficulty. Moreover, no solutions manual has been provided. The book is made up of 11 chapters, including one that is a prologue. The authors divide the book into four logical parts. The first part, containing chapters 1 and 2, includes the RSA cryptosystem and divide-and-conquer algorithms for integer multiplication, sorting and median finding, and the fast Fourier transform. The second part, including chapters 3, 4 and 5, looks at data structures and graphs. The third part, chapters 6 and 7, looks at dynamic programming and linear programming. The fourth part looks at ways of tackling hard problems. The theory of nondeterministic polynomial time (NP) completeness, heuristics, and quantum algorithms are described in this part, which contains chapters 8, 9, and 10. There are numerous introductory books on algorithms. This book is special in that there are not many books that place emphasis on general algorithm design principles with regard to divide-and-conquer, greedy algorithms, dynamic programming, backtracking, and branch-and-bound. In this book, the authors discuss these topics, but fail to mention that they are fundamental design principles. Students who are new to the field of algorithms should be made aware of this classification. The discussion pertaining to the last two design techniques is not satisfactory. The two important techniques are covered in just five pages. The application of branch-and-bound for solving integer linear programming problems could have been mentioned. The discussion related to NP-complete problems is not illuminating in a few places. For example, the authors could have better explained decision problems, search problems, and optimization problems. On page 245, the authors write that “nobody believes that FACTORING is NP-complete,” without giving any hint to the student as to why this is so. On page 278, it is mentioned that “we already know the VERTEX COVER problem is NP-hard.” Succeeding pages also mention NP-hard problems. I searched the index, but did not find any mention of “NP-hard.” I then searched the entire book, but did not find any definition for the term “NP-hard.” I wonder how the three authors failed to define NP-hard problems, and to distinguish between NP-hard and NP-complete problems. Even those who provided feedback or beta tested the drafts of the book seem to have overlooked this. The discussion on reductions could have been on traditional lines, explaining and distinguishing Karp reducibility and Cook reducibility. The inclusion of linear programming seems unusual, despite its practical value. It is anyone’s guess whether every useful algorithm will ultimately be implemented in a computer program using a specific programming language. Nevertheless, this book pays scant attention to implementation aspects and pitfalls. There is inadequate discussion about tools (summations, probability) and methods for analyzing algorithms, models of computation, tradeoffs (for example, between time and space), running times (amortized, probabilistic, expected case, worst case), proof of correctness, real-world applications of algorithms, comparison of algorithms, and advantages and disadvantages of various algorithm design principles and their applicability to problems. The coverage and treatment of material in the book should have been deeper. Although the authors state that students appreciate mathematical ideas more than formal proofs, it may be argued that undergraduates should be introduced to formalism at the early stages. Fortunately, this book does not do away with formal proofs completely. The book contains more material than can be covered in a one-semester course. Ideally, there should be two courses: one on algorithms and another on complexity. The exercises in the book are plentiful and stimulating. The inclusion of quantum algorithms is welcome. Shortcomings aside, I recommend this book as a supplementary textbook, after having tested it in a course. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.