summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/database/query/distance
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/database/query/distance')
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDatabaseDistanceQuery.java25
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDistanceQuery.java57
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/distance/DBIDDistanceQuery.java15
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/distance/DBIDRangeDistanceQuery.java74
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/distance/DistanceQuery.java48
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceQuery.java20
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceSimilarityQuery.java20
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/distance/SpatialDistanceQuery.java12
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/distance/SpatialPrimitiveDistanceQuery.java16
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/query/distance/package-info.java3
10 files changed, 147 insertions, 143 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDatabaseDistanceQuery.java b/src/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDatabaseDistanceQuery.java
index f530b72a..2edd9d0b 100644
--- a/src/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDatabaseDistanceQuery.java
+++ b/src/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDatabaseDistanceQuery.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
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
@@ -23,10 +23,8 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-import de.lmu.ifi.dbs.elki.database.ids.DBID;
import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
/**
* Run a database query in a database context.
@@ -34,9 +32,8 @@ import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
* @author Erich Schubert
*
* @param <O> Database object type.
- * @param <D> Distance result type.
*/
-public abstract class AbstractDatabaseDistanceQuery<O, D extends Distance<D>> extends AbstractDistanceQuery<O, D> {
+public abstract class AbstractDatabaseDistanceQuery<O> extends AbstractDistanceQuery<O> {
/**
* Constructor.
*
@@ -47,25 +44,25 @@ public abstract class AbstractDatabaseDistanceQuery<O, D extends Distance<D>> ex
}
@Override
- public D distance(O o1, DBIDRef id2) {
- if(o1 instanceof DBID) {
- return distance((DBID) o1, id2);
+ public double distance(O o1, DBIDRef id2) {
+ if(o1 instanceof DBIDRef) {
+ return distance((DBIDRef) o1, id2);
}
throw new UnsupportedOperationException("This distance function is only defined for known DBIDs.");
}
@Override
- public D distance(DBIDRef id1, O o2) {
- if(o2 instanceof DBID) {
- return distance(id1, (DBID) o2);
+ public double distance(DBIDRef id1, O o2) {
+ if(o2 instanceof DBIDRef) {
+ return distance(id1, (DBIDRef) o2);
}
throw new UnsupportedOperationException("This distance function is only defined for known DBIDs.");
}
@Override
- public D distance(O o1, O o2) {
- if(o1 instanceof DBID && o2 instanceof DBID) {
- return distance((DBID) o1, (DBID) o2);
+ public double distance(O o1, O o2) {
+ if(o1 instanceof DBIDRef && o2 instanceof DBIDRef) {
+ return distance((DBIDRef) o1, (DBIDRef) o2);
}
throw new UnsupportedOperationException("This distance function is only defined for known DBIDs.");
}
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDistanceQuery.java b/src/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDistanceQuery.java
index 933bd0d3..8f35eb58 100644
--- a/src/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDistanceQuery.java
+++ b/src/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDistanceQuery.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
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
@@ -24,9 +24,7 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
*/
import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
-import de.lmu.ifi.dbs.elki.database.query.AbstractDataBasedQuery;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
/**
* A distance query serves as adapter layer for database and primitive
@@ -35,16 +33,21 @@ import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
* @author Erich Schubert
*
* @param O Input object type
- * @param D Distance result type
*/
-public abstract class AbstractDistanceQuery<O, D extends Distance<D>> extends AbstractDataBasedQuery<O> implements DistanceQuery<O, D> {
+public abstract class AbstractDistanceQuery<O> implements DistanceQuery<O> {
+ /**
+ * The data to use for this query
+ */
+ final protected Relation<? extends O> relation;
+
/**
* Constructor.
*
* @param relation Relation to use.
*/
public AbstractDistanceQuery(Relation<? extends O> relation) {
- super(relation);
+ super();
+ this.relation = relation;
}
/**
@@ -55,7 +58,7 @@ public abstract class AbstractDistanceQuery<O, D extends Distance<D>> extends Ab
* @return the distance between the two objects specified by their object ids
*/
@Override
- public abstract D distance(DBIDRef id1, DBIDRef id2);
+ public abstract double distance(DBIDRef id1, DBIDRef id2);
/**
* Returns the distance between the two objects specified by their object ids.
@@ -65,7 +68,7 @@ public abstract class AbstractDistanceQuery<O, D extends Distance<D>> extends Ab
* @return the distance between the two objects specified by their object ids
*/
@Override
- public abstract D distance(O o1, DBIDRef id2);
+ public abstract double distance(O o1, DBIDRef id2);
/**
* Returns the distance between the two objects specified by their object ids.
@@ -75,7 +78,7 @@ public abstract class AbstractDistanceQuery<O, D extends Distance<D>> extends Ab
* @return the distance between the two objects specified by their object ids
*/
@Override
- public abstract D distance(DBIDRef id1, O o2);
+ public abstract double distance(DBIDRef id1, O o2);
/**
* Returns the distance between the two objects specified by their object ids.
@@ -85,40 +88,10 @@ public abstract class AbstractDistanceQuery<O, D extends Distance<D>> extends Ab
* @return the distance between the two objects specified by their object ids
*/
@Override
- public abstract D distance(O o1, O o2);
-
- @Override
- public D getDistanceFactory() {
- return getDistanceFunction().getDistanceFactory();
- }
+ public abstract double distance(O o1, O o2);
- /**
- * Provides an infinite distance.
- *
- * @return an infinite distance
- */
- @Override
- public D infiniteDistance() {
- return getDistanceFunction().getDistanceFactory().infiniteDistance();
- }
-
- /**
- * Provides a null distance.
- *
- * @return a null distance
- */
- @Override
- public D nullDistance() {
- return getDistanceFunction().getDistanceFactory().nullDistance();
- }
-
- /**
- * Provides an undefined distance.
- *
- * @return an undefined distance
- */
@Override
- public D undefinedDistance() {
- return getDistanceFunction().getDistanceFactory().undefinedDistance();
+ public Relation<? extends O> getRelation() {
+ return relation;
}
} \ No newline at end of file
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/distance/DBIDDistanceQuery.java b/src/de/lmu/ifi/dbs/elki/database/query/distance/DBIDDistanceQuery.java
index e619bc57..b9966b53 100644
--- a/src/de/lmu/ifi/dbs/elki/database/query/distance/DBIDDistanceQuery.java
+++ b/src/de/lmu/ifi/dbs/elki/database/query/distance/DBIDDistanceQuery.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
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
@@ -27,7 +27,6 @@ import de.lmu.ifi.dbs.elki.database.ids.DBID;
import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
import de.lmu.ifi.dbs.elki.distance.distancefunction.DBIDDistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
/**
* Run a distance query based on DBIDs
@@ -36,14 +35,12 @@ import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
*
* @apiviz.landmark
* @apiviz.uses DBIDDistanceFunction
- *
- * @param <D> Distance result type.
*/
-public class DBIDDistanceQuery<D extends Distance<D>> extends AbstractDatabaseDistanceQuery<DBID, D> {
+public class DBIDDistanceQuery extends AbstractDatabaseDistanceQuery<DBID> {
/**
* The distance function we use.
*/
- final protected DBIDDistanceFunction<D> distanceFunction;
+ final protected DBIDDistanceFunction distanceFunction;
/**
* Constructor.
@@ -51,13 +48,13 @@ public class DBIDDistanceQuery<D extends Distance<D>> extends AbstractDatabaseDi
* @param relation Database to use.
* @param distanceFunction Our distance function
*/
- public DBIDDistanceQuery(Relation<DBID> relation, DBIDDistanceFunction<D> distanceFunction) {
+ public DBIDDistanceQuery(Relation<DBID> relation, DBIDDistanceFunction distanceFunction) {
super(relation);
this.distanceFunction = distanceFunction;
}
@Override
- public D distance(DBIDRef id1, DBIDRef id2) {
+ public double distance(DBIDRef id1, DBIDRef id2) {
if(id1 == null) {
throw new UnsupportedOperationException("This distance function can only be used for objects stored in the database.");
}
@@ -68,7 +65,7 @@ public class DBIDDistanceQuery<D extends Distance<D>> extends AbstractDatabaseDi
}
@Override
- public DBIDDistanceFunction<D> getDistanceFunction() {
+ public DBIDDistanceFunction getDistanceFunction() {
return distanceFunction;
}
} \ No newline at end of file
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/distance/DBIDRangeDistanceQuery.java b/src/de/lmu/ifi/dbs/elki/database/query/distance/DBIDRangeDistanceQuery.java
new file mode 100644
index 00000000..d5457dd5
--- /dev/null
+++ b/src/de/lmu/ifi/dbs/elki/database/query/distance/DBIDRangeDistanceQuery.java
@@ -0,0 +1,74 @@
+package de.lmu.ifi.dbs.elki.database.query.distance;
+
+/*
+ This file is part of ELKI:
+ Environment for Developing KDD-Applications Supported by Index-Structures
+
+ Copyright (C) 2014
+ Ludwig-Maximilians-Universität München
+ Lehr- und Forschungseinheit für Datenbanksysteme
+ ELKI Development Team
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import de.lmu.ifi.dbs.elki.database.ids.DBID;
+import de.lmu.ifi.dbs.elki.database.ids.DBIDRange;
+import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
+import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil;
+import de.lmu.ifi.dbs.elki.database.relation.Relation;
+import de.lmu.ifi.dbs.elki.distance.distancefunction.DBIDDistanceFunction;
+import de.lmu.ifi.dbs.elki.distance.distancefunction.DBIDRangeDistanceFunction;
+
+/**
+ * Run a distance query based on DBIDRanges
+ *
+ * @author Erich Schubert
+ *
+ * @apiviz.landmark
+ * @apiviz.uses DBIDRangeDistanceFunction
+ */
+public class DBIDRangeDistanceQuery extends DBIDDistanceQuery {
+ /**
+ * The distance function we use.
+ */
+ final protected DBIDRangeDistanceFunction distanceFunction;
+
+ /**
+ * The DBID range we are accessing.
+ */
+ final protected DBIDRange range;
+
+ /**
+ * Constructor.
+ *
+ * @param relation Database to use.
+ * @param distanceFunction Our distance function
+ */
+ public DBIDRangeDistanceQuery(Relation<DBID> relation, DBIDRangeDistanceFunction distanceFunction) {
+ super(relation, distanceFunction);
+ this.range = DBIDUtil.assertRange(relation.getDBIDs());
+ this.distanceFunction = distanceFunction;
+ }
+
+ @Override
+ public double distance(DBIDRef id1, DBIDRef id2) {
+ return distanceFunction.distance(range.getOffset(id1), range.getOffset(id2));
+ }
+
+ @Override
+ public DBIDDistanceFunction getDistanceFunction() {
+ return distanceFunction;
+ }
+} \ No newline at end of file
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/distance/DistanceQuery.java b/src/de/lmu/ifi/dbs/elki/database/query/distance/DistanceQuery.java
index 12e76ace..07bd6c53 100644
--- a/src/de/lmu/ifi/dbs/elki/database/query/distance/DistanceQuery.java
+++ b/src/de/lmu/ifi/dbs/elki/database/query/distance/DistanceQuery.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
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
@@ -27,20 +27,18 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
import de.lmu.ifi.dbs.elki.database.query.DatabaseQuery;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
/**
- * A distance query serves as adapter layer for database and primitive distances.
+ * A distance query serves as adapter layer for database and primitive
+ * distances.
*
* @author Erich Schubert
*
* @apiviz.landmark
- * @apiviz.has Distance
*
* @param O Input object type
- * @param D Distance result type
*/
-public interface DistanceQuery<O, D extends Distance<?>> extends DatabaseQuery {
+public interface DistanceQuery<O> extends DatabaseQuery {
/**
* Returns the distance between the two objects specified by their object ids.
*
@@ -48,7 +46,7 @@ public interface DistanceQuery<O, D extends Distance<?>> extends DatabaseQuery {
* @param id2 second object id
* @return the distance between the two objects specified by their object ids
*/
- D distance(DBIDRef id1, DBIDRef id2);
+ double distance(DBIDRef id1, DBIDRef id2);
/**
* Returns the distance between the two objects specified by their object ids.
@@ -57,7 +55,7 @@ public interface DistanceQuery<O, D extends Distance<?>> extends DatabaseQuery {
* @param id2 second object id
* @return the distance between the two objects specified by their object ids
*/
- D distance(O o1, DBIDRef id2);
+ double distance(O o1, DBIDRef id2);
/**
* Returns the distance between the two objects specified by their object ids.
@@ -66,7 +64,7 @@ public interface DistanceQuery<O, D extends Distance<?>> extends DatabaseQuery {
* @param o2 second object
* @return the distance between the two objects specified by their object ids
*/
- D distance(DBIDRef id1, O o2);
+ double distance(DBIDRef id1, O o2);
/**
* Returns the distance between the two objects specified by their object ids.
@@ -75,44 +73,16 @@ public interface DistanceQuery<O, D extends Distance<?>> extends DatabaseQuery {
* @param o2 second object
* @return the distance between the two objects specified by their object ids
*/
- D distance(O o1, O o2);
-
- /**
- * Method to get the distance functions factory.
- *
- * @return Factory for distance objects
- */
- D getDistanceFactory();
+ double distance(O o1, O o2);
/**
* Get the inner distance function.
*
* @return Distance function
*/
- DistanceFunction<? super O, D> getDistanceFunction();
-
- /**
- * Provides an infinite distance.
- *
- * @return an infinite distance
- */
- D infiniteDistance();
+ DistanceFunction<? super O> getDistanceFunction();
/**
- * Provides a null distance.
- *
- * @return a null distance
- */
- D nullDistance();
-
- /**
- * Provides an undefined distance.
- *
- * @return an undefined distance
- */
- D undefinedDistance();
-
- /**
* Access the underlying data query.
*
* @return data query in use
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceQuery.java b/src/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceQuery.java
index ab3046ed..92125ae7 100644
--- a/src/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceQuery.java
+++ b/src/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceQuery.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
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
@@ -26,7 +26,6 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
import de.lmu.ifi.dbs.elki.distance.distancefunction.PrimitiveDistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
/**
* Run a database query in a database context.
@@ -37,13 +36,12 @@ import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
* @apiviz.uses PrimitiveDistanceFunction
*
* @param <O> Database object type.
- * @param <D> Distance result type.
*/
-public class PrimitiveDistanceQuery<O, D extends Distance<D>> extends AbstractDistanceQuery<O, D> {
+public class PrimitiveDistanceQuery<O> extends AbstractDistanceQuery<O> {
/**
* The distance function we use.
*/
- final protected PrimitiveDistanceFunction<? super O, D> distanceFunction;
+ final protected PrimitiveDistanceFunction<? super O> distanceFunction;
/**
* Constructor.
@@ -51,32 +49,32 @@ public class PrimitiveDistanceQuery<O, D extends Distance<D>> extends AbstractDi
* @param relation Representation to use.
* @param distanceFunction Our distance function
*/
- public PrimitiveDistanceQuery(Relation<? extends O> relation, PrimitiveDistanceFunction<? super O, D> distanceFunction) {
+ public PrimitiveDistanceQuery(Relation<? extends O> relation, PrimitiveDistanceFunction<? super O> distanceFunction) {
super(relation);
this.distanceFunction = distanceFunction;
}
@Override
- public D distance(DBIDRef id1, DBIDRef id2) {
+ public double distance(DBIDRef id1, DBIDRef id2) {
O o1 = relation.get(id1);
O o2 = relation.get(id2);
return distance(o1, o2);
}
@Override
- public D distance(O o1, DBIDRef id2) {
+ public double distance(O o1, DBIDRef id2) {
O o2 = relation.get(id2);
return distance(o1, o2);
}
@Override
- public D distance(DBIDRef id1, O o2) {
+ public double distance(DBIDRef id1, O o2) {
O o1 = relation.get(id1);
return distance(o1, o2);
}
@Override
- public D distance(O o1, O o2) {
+ public double distance(O o1, O o2) {
if(o1 == null) {
throw new UnsupportedOperationException("This distance function can only be used for object instances.");
}
@@ -87,7 +85,7 @@ public class PrimitiveDistanceQuery<O, D extends Distance<D>> extends AbstractDi
}
@Override
- public PrimitiveDistanceFunction<? super O, D> getDistanceFunction() {
+ public PrimitiveDistanceFunction<? super O> getDistanceFunction() {
return distanceFunction;
}
} \ No newline at end of file
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceSimilarityQuery.java b/src/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceSimilarityQuery.java
index 52f79f06..b90abc23 100644
--- a/src/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceSimilarityQuery.java
+++ b/src/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceSimilarityQuery.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
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
@@ -27,7 +27,6 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
import de.lmu.ifi.dbs.elki.database.query.DistanceSimilarityQuery;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
import de.lmu.ifi.dbs.elki.distance.distancefunction.PrimitiveDistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
import de.lmu.ifi.dbs.elki.distance.similarityfunction.PrimitiveSimilarityFunction;
/**
@@ -38,14 +37,13 @@ import de.lmu.ifi.dbs.elki.distance.similarityfunction.PrimitiveSimilarityFuncti
* @apiviz.uses PrimitiveSimilarityFunction
*
* @param <O> Object type
- * @param <D> Distance type
*/
-public class PrimitiveDistanceSimilarityQuery<O, D extends Distance<D>> extends PrimitiveDistanceQuery<O, D> implements DistanceSimilarityQuery<O, D> {
+public class PrimitiveDistanceSimilarityQuery<O> extends PrimitiveDistanceQuery<O> implements DistanceSimilarityQuery<O> {
/**
* Typed reference to the similarity function (usually the same as the
* distance function!)
*/
- private PrimitiveSimilarityFunction<? super O, D> similarityFunction;
+ private PrimitiveSimilarityFunction<? super O> similarityFunction;
/**
* Constructor.
@@ -55,37 +53,37 @@ public class PrimitiveDistanceSimilarityQuery<O, D extends Distance<D>> extends
* @param similarityFunction similarity function (usually the same as the
* distance function!)
*/
- public PrimitiveDistanceSimilarityQuery(Relation<? extends O> relation, PrimitiveDistanceFunction<? super O, D> distanceFunction, PrimitiveSimilarityFunction<? super O, D> similarityFunction) {
+ public PrimitiveDistanceSimilarityQuery(Relation<? extends O> relation, PrimitiveDistanceFunction<? super O> distanceFunction, PrimitiveSimilarityFunction<? super O> similarityFunction) {
super(relation, distanceFunction);
this.similarityFunction = similarityFunction;
}
@Override
- public D similarity(DBIDRef id1, DBIDRef id2) {
+ public double similarity(DBIDRef id1, DBIDRef id2) {
O o1 = relation.get(id1);
O o2 = relation.get(id2);
return similarity(o1, o2);
}
@Override
- public D similarity(O o1, DBIDRef id2) {
+ public double similarity(O o1, DBIDRef id2) {
O o2 = relation.get(id2);
return similarity(o1, o2);
}
@Override
- public D similarity(DBIDRef id1, O o2) {
+ public double similarity(DBIDRef id1, O o2) {
O o1 = relation.get(id1);
return similarity(o1, o2);
}
@Override
- public D similarity(O o1, O o2) {
+ public double similarity(O o1, O o2) {
return this.similarityFunction.similarity(o1, o2);
}
@Override
- public PrimitiveSimilarityFunction<? super O, D> getSimilarityFunction() {
+ public PrimitiveSimilarityFunction<? super O> getSimilarityFunction() {
return similarityFunction;
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/distance/SpatialDistanceQuery.java b/src/de/lmu/ifi/dbs/elki/database/query/distance/SpatialDistanceQuery.java
index 14839dd7..1340130e 100644
--- a/src/de/lmu/ifi/dbs/elki/database/query/distance/SpatialDistanceQuery.java
+++ b/src/de/lmu/ifi/dbs/elki/database/query/distance/SpatialDistanceQuery.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
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
@@ -26,7 +26,6 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
import de.lmu.ifi.dbs.elki.data.spatial.SpatialComparable;
import de.lmu.ifi.dbs.elki.database.ids.DBID;
import de.lmu.ifi.dbs.elki.distance.distancefunction.SpatialPrimitiveDistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
/**
* Query interface for spatial distance queries.
@@ -34,9 +33,8 @@ import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
* @author Erich Schubert
*
* @param <V> Vector type
- * @param <D> Distance type
*/
-public interface SpatialDistanceQuery<V extends SpatialComparable, D extends Distance<D>> extends DistanceQuery<V, D> {
+public interface SpatialDistanceQuery<V extends SpatialComparable> extends DistanceQuery<V> {
/**
* Computes the minimum distance between the given MBR and the FeatureVector
* object according to this distance function.
@@ -46,7 +44,7 @@ public interface SpatialDistanceQuery<V extends SpatialComparable, D extends Dis
* @return the minimum distance between the given MBR and the FeatureVector
* object according to this distance function
*/
- D minDist(SpatialComparable mbr, V v);
+ double minDist(SpatialComparable mbr, V v);
/**
* Computes the minimum distance between the given MBR and the FeatureVector
@@ -57,7 +55,7 @@ public interface SpatialDistanceQuery<V extends SpatialComparable, D extends Dis
* @return the minimum distance between the given MBR and the FeatureVector
* object according to this distance function
*/
- D minDist(SpatialComparable mbr, DBID id);
+ double minDist(SpatialComparable mbr, DBID id);
/**
* Get the inner distance function.
@@ -65,5 +63,5 @@ public interface SpatialDistanceQuery<V extends SpatialComparable, D extends Dis
* @return Distance function
*/
@Override
- SpatialPrimitiveDistanceFunction<? super V, D> getDistanceFunction();
+ SpatialPrimitiveDistanceFunction<? super V> getDistanceFunction();
} \ No newline at end of file
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/distance/SpatialPrimitiveDistanceQuery.java b/src/de/lmu/ifi/dbs/elki/database/query/distance/SpatialPrimitiveDistanceQuery.java
index c5a601bd..4453a2ef 100644
--- a/src/de/lmu/ifi/dbs/elki/database/query/distance/SpatialPrimitiveDistanceQuery.java
+++ b/src/de/lmu/ifi/dbs/elki/database/query/distance/SpatialPrimitiveDistanceQuery.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.database.query.distance;
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
@@ -27,7 +27,6 @@ import de.lmu.ifi.dbs.elki.data.spatial.SpatialComparable;
import de.lmu.ifi.dbs.elki.database.ids.DBID;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
import de.lmu.ifi.dbs.elki.distance.distancefunction.SpatialPrimitiveDistanceFunction;
-import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
/**
* Distance query for spatial distance functions
@@ -36,35 +35,34 @@ import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
* @apiviz.uses SpatialPrimitiveDistanceFunction
*
* @param <V> Vector type to use
- * @param <D> Distance result type
*/
-public class SpatialPrimitiveDistanceQuery<V extends SpatialComparable, D extends Distance<D>> extends PrimitiveDistanceQuery<V, D> implements SpatialDistanceQuery<V, D> {
+public class SpatialPrimitiveDistanceQuery<V extends SpatialComparable> extends PrimitiveDistanceQuery<V> implements SpatialDistanceQuery<V> {
/**
* The distance function we use.
*/
- final protected SpatialPrimitiveDistanceFunction<? super V, D> distanceFunction;
+ final protected SpatialPrimitiveDistanceFunction<? super V> distanceFunction;
/**
* @param relation Representation to use
* @param distanceFunction Distance function to use
*/
- public SpatialPrimitiveDistanceQuery(Relation<? extends V> relation, SpatialPrimitiveDistanceFunction<? super V, D> distanceFunction) {
+ public SpatialPrimitiveDistanceQuery(Relation<? extends V> relation, SpatialPrimitiveDistanceFunction<? super V> distanceFunction) {
super(relation, distanceFunction);
this.distanceFunction = distanceFunction;
}
@Override
- public D minDist(SpatialComparable mbr, V v) {
+ public double minDist(SpatialComparable mbr, V v) {
return distanceFunction.minDist(mbr, v);
}
@Override
- public D minDist(SpatialComparable mbr, DBID id) {
+ public double minDist(SpatialComparable mbr, DBID id) {
return distanceFunction.minDist(mbr, relation.get(id));
}
@Override
- public SpatialPrimitiveDistanceFunction<? super V, D> getDistanceFunction() {
+ public SpatialPrimitiveDistanceFunction<? super V> getDistanceFunction() {
return distanceFunction;
}
} \ No newline at end of file
diff --git a/src/de/lmu/ifi/dbs/elki/database/query/distance/package-info.java b/src/de/lmu/ifi/dbs/elki/database/query/distance/package-info.java
index 97bc471d..0d949669 100644
--- a/src/de/lmu/ifi/dbs/elki/database/query/distance/package-info.java
+++ b/src/de/lmu/ifi/dbs/elki/database/query/distance/package-info.java
@@ -2,12 +2,13 @@
* <p>Prepared queries for distances.</p>
*
* @apiviz.exclude .*Instance
+ * @apiviz.exclude de.lmu.ifi.dbs.elki.index.distance.*
*/
/*
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