Analysis and Design of Algorithms provides a structured view of algorithm design techniques in a concise, easy-to-read manner.
The book begins with a clear explanation of the basics: what algorithms are, their practical applications, asymptotic notation, and data structures. The second section covers the algorithmic design techniques of divide and conquer, greedy, dynamic programming, branch and bound, and graph traversal. For each of these techniques, the book presents templates and guidelines on when to use and not to use each technique. The third major section of the book covers NP-completeness and the inherent hardness of problems.
Using the material provided in this book, students and professionals can master the processes to use in solving the most difficult algorithmic problems. Users can explore various techniques, and learn to decide which algorithm design technique to use for a given problem. Many sections contain innovative mnemonics to aid the readers in remembering the templates and key takeaways.