Probability and Computing: Randomized Algorithms and Probabilistic Analysis

Michael Mitzenmacher