diff options
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.java | 52 |
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); |