For many applications a randomized algorithm is either the simplest algorithm available, or the fastest, or both. This tutorial presents the basic concepts in the design and analysis of randomized algorithms. The first part of the book presents tools from probability theory and probabilistic analysis that are recurrent in algorithmic applications. Algorithmic examples are given to illustrate the use of each tool in a concrete setting. In the second part of the book, each of the seven chapters focuses on one important area of application of randomized algorithms: data structures; geometric algorithms; graph algorithms; number theory; enumeration; parallel algorithms; and on-line algorithms. A comprehensive and representative selection of the algorithms in these areas is also given. This book should prove invaluable as a reference for researchers and professional programmers, as well as for students.

• Only book currently published in the growing field of randomized algorithms • Topic has applications in computer science, operations research, mathematics and statistics • Practical and self-contained • Written by two well-known researchers in the field

### Contents

Part I. Tools and Techniques: 1. Introduction; 2. Game-theoretic techniques; 3. Moments and deviations; 4. Tail inequalities; 5. The probabilistic method; 6. Markov chains and random walks; 7. Algebraic techniques; Part II. Applications: 8. Data structures; 9. Geometric algorithms and linear programming; 10. Graph algorithms; 11. Approximate counting; 12. Parallel and distributed algorithms; 13. Online algorithms; 14. Number theory and algebra; Appendix A: notational index; Appendix B: mathematical background; Appendix C: basic probability theory.

### Reviews

'The techniques described by Rajeev Motwani and Prabhaker Raghavan are wide-ranging and powerful, so this book is an important one. As far as I have been able to find out this is the only book on the entire subject … this excellent volume does us proud!' American Scientist

'This book can serve as an excellent basis for a graduate course. It is highly recommended for students and researchers who wish to deepen their knowledge of the subject. Finally, I believe that the book, with its vast coverage, will be an invaluable source for active researchers in the field.' Y. Aumann, Computing Reviews