summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java52
1 files changed, 26 insertions, 26 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java b/src/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java
index 552e3139..ef3a3d9e 100644
--- a/src/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java
+++ b/src/de/lmu/ifi/dbs/elki/distance/distancefunction/minkowski/MinimumDistanceFunction.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2013
+ Copyright (C) 2014
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -25,26 +25,24 @@ package de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski;
import de.lmu.ifi.dbs.elki.data.NumberVector;
import de.lmu.ifi.dbs.elki.data.spatial.SpatialComparable;
-import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractSpatialDoubleDistanceNorm;
+import de.lmu.ifi.dbs.elki.distance.distancefunction.AbstractSpatialNorm;
import de.lmu.ifi.dbs.elki.utilities.Alias;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer;
/**
- * Maximum distance function to compute the Minimum distance for a pair of
- * FeatureVectors.
+ * Maximum distance for {@link NumberVector}s.
*
* @author Erich Schubert
*/
@Alias({ "minimum", "min", "de.lmu.ifi.dbs.elki.distance.distancefunction.MinimumDistanceFunction" })
-public class MinimumDistanceFunction extends AbstractSpatialDoubleDistanceNorm {
+public class MinimumDistanceFunction extends AbstractSpatialNorm {
/**
* Static instance. Use this.
*/
public static final MinimumDistanceFunction STATIC = new MinimumDistanceFunction();
/**
- * Provides a Minimum distance function that can compute the Minimum distance
- * (that is a DoubleDistance) for FeatureVectors.
+ * Constructor - use {@link #STATIC} instead.
*
* @deprecated Use static instance!
*/
@@ -54,13 +52,13 @@ public class MinimumDistanceFunction extends AbstractSpatialDoubleDistanceNorm {
}
@Override
- public double doubleDistance(NumberVector<?> v1, NumberVector<?> v2) {
+ public double distance(NumberVector v1, NumberVector v2) {
final int dim = dimensionality(v1, v2);
double agg = Double.POSITIVE_INFINITY;
- for (int d = 0; d < dim; d++) {
+ for(int d = 0; d < dim; d++) {
final double xd = v1.doubleValue(d), yd = v2.doubleValue(d);
final double val = (xd >= yd) ? xd - yd : yd - xd;
- if (val < agg) {
+ if(val < agg) {
agg = val;
}
}
@@ -68,13 +66,13 @@ public class MinimumDistanceFunction extends AbstractSpatialDoubleDistanceNorm {
}
@Override
- public double doubleNorm(NumberVector<?> v) {
+ public double norm(NumberVector v) {
final int dim = v.getDimensionality();
double agg = Double.POSITIVE_INFINITY;
- for (int d = 0; d < dim; d++) {
+ for(int d = 0; d < dim; d++) {
final double xd = v.doubleValue(d);
final double val = (xd >= 0.) ? xd : -xd;
- if (val < agg) {
+ if(val < agg) {
agg = val;
}
}
@@ -82,31 +80,33 @@ public class MinimumDistanceFunction extends AbstractSpatialDoubleDistanceNorm {
}
@Override
- public double doubleMinDist(SpatialComparable mbr1, SpatialComparable mbr2) {
+ public double minDist(SpatialComparable mbr1, SpatialComparable mbr2) {
// Some optimizations for simpler cases.
- if (mbr1 instanceof NumberVector) {
- if (mbr2 instanceof NumberVector) {
- return doubleDistance((NumberVector<?>) mbr1, (NumberVector<?>) mbr2);
+ if(mbr1 instanceof NumberVector) {
+ if(mbr2 instanceof NumberVector) {
+ return distance((NumberVector) mbr1, (NumberVector) mbr2);
}
}
// TODO: add optimization for point to MBR?
final int dim = dimensionality(mbr1, mbr2);
double agg = Double.POSITIVE_INFINITY;
- for (int d = 0; d < dim; d++) {
+ for(int d = 0; d < dim; d++) {
final double diff;
final double d1 = mbr2.getMin(d) - mbr1.getMax(d);
- if (d1 > 0.) {
+ if(d1 > 0.) {
diff = d1;
- } else {
+ }
+ else {
final double d2 = mbr1.getMin(d) - mbr2.getMax(d);
- if (d2 > 0.) {
+ if(d2 > 0.) {
diff = d2;
- } else {
+ }
+ else {
// The objects overlap in this dimension.
return 0.;
}
}
- if (diff < agg) {
+ if(diff < agg) {
agg = diff;
}
}
@@ -125,13 +125,13 @@ public class MinimumDistanceFunction extends AbstractSpatialDoubleDistanceNorm {
@Override
public boolean equals(Object obj) {
- if (obj == null) {
+ if(obj == null) {
return false;
}
- if (obj == this) {
+ if(obj == this) {
return true;
}
- if (this.getClass().equals(obj.getClass())) {
+ if(this.getClass().equals(obj.getClass())) {
return true;
}
return super.equals(obj);