package GeDBIT.util;
import java.util.List;
import GeDBIT.dist.Metric;
import GeDBIT.type.IndexObject;
public class FindPivotWithLargestVar {
public static int findPivotByVar(Metric metric,
List<? extends IndexObject> data, int first, int datasize) {
int imax = 0;
double var = 0;
for (int i = 0; i < datasize; i++) {
double sqrx = 0, x = 0;
for (int j = 0; j < data.size(); j++) {
double dist = metric.getDistance(data.get(first + i),
data.get(first + j));
sqrx += dist * dist;
x += dist;
}
double currentVar = sqrx / (double) data.size()
- (x / (double) data.size()) * (x / (double) data.size());
if (currentVar > var) {
var = currentVar;
imax = i;
}
}
return imax;
}
public static int findPivotByVarold(Metric metric,
List<? extends IndexObject> data) {
int imax = 0;
double var = 0;
for (int i = 0; i < data.size(); i++) {
double sqrx = 0, x = 0;
for (int j = 0; j < data.size(); j++) {
double dist = metric.getDistance(data.get(i), data.get(j));
sqrx += dist * dist;
x += dist;
}
double currentVar = sqrx / (double) data.size()
- (x / (double) data.size()) * (x / (double) data.size());
if (currentVar > var) {
var = currentVar;
imax = i;
}
}
return imax;
}
}