Practical Analysis of Algorithms introduces the essential concepts of algorithm analysis required by core undergraduate and graduate computer science courses, in addition to providing a review of the fundamental mathematical notions necessary to understand these concepts. Throughout the text, the explanations are aimed at the level of understanding of a typical upper-level student, and are accompanied by detailed examples and classroom-tested exercises.
Topics and features: includes numerous fully-worked examples and step-by-step proofs, assuming no strong mathematical background; describes the foundation of the analysis of algorithms theory in terms of the big-Oh, Omega, and Theta notations; examines recurrence relations, a very important tool used in the analysis of algorithms; discusses the concepts of basic operation, traditional loop counting, and best case and worst case complexities; reviews various algorithms of a probabilistic nature, and uses elements of probability theory to compute the average complexity of algorithms such as Quicksort; introduces a variety of classical finite graph algorithms, together with an analysis of their complexity; provides an appendix on probability theory, reviewing the major definitions and theorems used in the book.
This clearly-structured and easy-to-read textbook/reference applies a unique, practical approach suitable for professional short courses and tutorials, as well as for students of computer science.Dr. Dana Vrajitoru is an Associate Professor of Computer Science at Indiana University South Bend, IN, USA. Dr. William Knight is an Emeritus Associate Professor at the same institution.
Goodrich & Tamassia believe that the best way to teach algorithmic topics is to present them in a context that is motivated from applications to uses in society, computer games, computing industry, science, engineering, and the internet. The text teaches students about designing and using algorithms, illustrating connections between topics being taught and their potential applications, increasing engagement.