[MRG] Locality Sensitive Hashing for approximate nearest neighbor search(GSoC)

Yes I guess you are correct about `max_candidates`. It should be `min`.

I think there is a reason to use the conditions as `len(candidates) < max_candidates or len(set(candidates)) < n_neighbors` in the LSH Forest paper. Loop will terminate if only both of these conditions fail or `max_depth` reaches `min_hash_match`. If only `len(distinct_candidates) < n_neighbors` is used results will solely depend on random projections without referring actual similarity measure because total candidates will be equal to requested number of neighbors. If `len(distinct_candidates) < max_candidates` is used, there will be unnecessarily excessive number of distinct candidates to compute actual distance and it doesn't have any reference to number of neighbors. 
The synchronous ascending algorithm is designed in that way as indicated in the paper.