public static double estimateDistanceCutoff(List<? extends Vector> data, DistanceMeasure distanceMeasure) {
BruteSearch searcher = new BruteSearch(distanceMeasure);
searcher.addAll(data);
double minDistance = Double.POSITIVE_INFINITY;
for (Vector vector : data) {
double closest = searcher.searchFirst(vector, true).getWeight();
if (minDistance > 0 && closest < minDistance) {
minDistance = closest;
}
searcher.add(vector);
}