Hallo, ich versuche die Formel die im Anhang ist zu implementieren.
Das habe ich auch bereits gemacht, allerdings extrem ineffizient. Hat jemand eine Idee wie ich die doppelte-Schleife loswerde? Ideal wäre so effizient wie möglich, weights ist eine Hashmap, als Key ein Integer und Value ein Double (das Gewicht, zwischen 0 und 1) und x eine Integer-ArrayList.
[code=Java]private int length(List<Integer> x) {
double totalWeight = sigma(x);
double subWeight;
for (int j = 1; j < x.size(); j++) {
subWeight = 0;
for (int i = 0; i < j; i++)
subWeight = weights.containsKey(x.get(i)) ? weights.get(x.get(i)) : 1;
if ((totalWeight - subWeight) / (totalWeight + subWeight) < threshold)
return j;
}
return x.size();
}[/code]
[code=Java]private double sigma(List<Integer> x) {
double weight = 0;
for (Integer t : x)
weight += weights.containsKey(x) ? weights.get(x) : 1;
return weight;
}[/code]