With approximately 2500 problems, this book provides a collection of practical problems on the basic and advanced data structures, design, and analysis of algorithms. To make this book suitable for self-instruction, about one-third of the algorithms are supported by solutions, and some others are supported by hints and comments. This book is intended for students wishing to deepen their knowledge of algorithm design in an undergraduate or beginning graduate class on algorithms, for those teaching courses in this area, for use by practicing programmers who wish to hone and expand their skills, and as a self-study text for graduate students who are preparing for the qualifying examination on algorithms for a Ph.D. program in Computer Science or Computer Engineering. About all, it is a good source for exam problems for those who teach algorithms and data structure. The format of each chapter is just a little bit of instruction followed by lots of problems.
This book is intended to augment the problem sets found in any standard algorithms textbook.
This book
• begins with four chapters on background material that most algorithms instructors would like their students to have mastered before setting foot in an algorithms class. The introductory chapters include mathematical induction, complexity notations, recurrence relations, and basic algorithm analysis methods.
• provides many problems on basic and advanced data structures including basic data structures (arrays, stack, queue, and linked list), hash, tree, search, and sorting algorithms.
• provides many problems on algorithm design techniques: divide and conquer, dynamic programming, greedy algorithms, graph algorithms, and backtracking algorithms.
• is rounded out with a chapter on NP-completeness.