Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions
Approximate nearest neighbors and the fast Johnson-Lindenstrauss transform