Randomness is a powerful tool for solving various problems in all areas of computer applications. Randomized algorithms are often more efficient, simpler (and so easier to implement), and surprisingly also more reliable than their best deterministic counterparts. This book does not only systematically teach the paradigmic algorithm design methods, such as foiling an adversary, abundance of witnesses, fingerprinting, amplification, and random sampling, but it also provides a deep insight into the nature of the success of randomization. Taking sufficient space for presenting motivation and for developing reader's intuition. It is an ideal introduction to the subject.
Randomness is a powerful phenomenon that can be harnessed to solve various problems in all areas of computer science. Randomized algorithms are often more efficient, simpler and, surprisingly, also more reliable than their deterministic counterparts. Computing tasks exist that require billions of years of computer work when solved using the fastest known deterministic algorithms, but they can be solved using randomized algorithms in a few minutes with negligible error probabilities.
Introducing the fascinating world of randomness, this book systematically teaches the main algorithm design paradigms – foiling an adversary, abundance of witnesses, fingerprinting, amplification, and random sampling, etc. – while also providing a deep insight into the nature of success in randomization. Taking sufficient time to present motivations and to develop the reader's intuition, while being rigorous throughout, this text is a very effective and efficient introduction to this exciting field.