Foundations of Algorithms Using C++ Pseudocode, 3/e (Hardcover)

Richard Neapolitan





After Foundations of Algorithms using C++ Pseudocode, Third Edition introduces students to algorithms and analysis of algorithms in Chapter 1, the authors have developed separate chapters on the divide-and-conquer approach, dynamic programming, greedy algorithms, backtracking algorithms, and branch-and-bound algorithms. Immediately after, the author's explore analysis of problems, and in particular, a chapter on analyzing the sorting problem followed by one on analyzing the searching problem. Following this progression, the authors introduce the theory of NP in a rigorous but yet intuitive, lucid fashion. It is at this point that the book then takes a shift in pedagogy and presents a chapter that is concerned with solving a certain type of problem rather than algorithms that share a common technique. Specifically, numerical algorithms are discussed, as well as the inclusion of the new polynomial-time algorithm for determining whether a number is prime. Finally, the authors provide a final chapter concerning parallel algorithms and applications to cryptography.


Table of Contents:

Chapter 1: Algorithms: Efficiency, Analysis, and Order
Chapter 2: Divide-and-Conquer
Chapter 3 Dynamic Programming
Chapter 4: The Greedy Approach
Chapter 5: Backtracking
Chapter 6: Branch-and-Bound
Chapter 7: Introduction to Computational Complexity: The Sorting Problem

Chapter 8: More Computational Complexity: The Searching Problem
Chapter 9: Computational Complexity and Interactability: An Introduction to the Theory of NP

Chapter 10: Number-Theoretic Algorithms

Chapter 11: Introduction to Parallel Algorithms
Appendix A: Review of Necessary Mathematics
Appendix B: Solving Recurrence Equations: With Applications to Analysis of Recursive Algorithms 
Appendix C: Data Structures for Disjoint Sets