package de.lmu.ifi.dbs.elki.index.tree.metrical.mtreevariants.mktrees;
/*
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
Copyright (C) 2011
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 .
*/
import java.util.List;
import de.lmu.ifi.dbs.elki.database.ids.DBID;
import de.lmu.ifi.dbs.elki.database.query.DistanceResultPair;
import de.lmu.ifi.dbs.elki.database.query.distance.DistanceQuery;
import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction;
import de.lmu.ifi.dbs.elki.distance.distancevalue.Distance;
import de.lmu.ifi.dbs.elki.index.tree.metrical.mtreevariants.AbstractMTree;
import de.lmu.ifi.dbs.elki.index.tree.metrical.mtreevariants.AbstractMTreeNode;
import de.lmu.ifi.dbs.elki.index.tree.metrical.mtreevariants.MTreeEntry;
import de.lmu.ifi.dbs.elki.persistent.PageFile;
/**
* Abstract class for all M-Tree variants supporting processing of reverse
* k-nearest neighbor queries by using the k-nn distances of the entries, where
* k is less than or equal to the given parameter.
*
* @author Elke Achtert
* @param the type of DatabaseObject to be stored in the metrical index
* @param the type of Distance used in the metrical index
* @param the type of MetricalNode used in the metrical index
* @param the type of MetricalEntry used in the metrical index
*/
public abstract class AbstractMkTree, N extends AbstractMTreeNode, E extends MTreeEntry> extends AbstractMTree {
/**
* Constructor.
*
* @param pagefile Page file
* @param distanceQuery Distance query
* @param distanceFunction Distance function
*/
public AbstractMkTree(PageFile pagefile, DistanceQuery distanceQuery, DistanceFunction distanceFunction) {
super(pagefile, distanceQuery, distanceFunction);
}
/**
* Performs a reverse k-nearest neighbor query for the given object ID. The
* query result is in ascending order to the distance to the query object.
*
* @param id the query object id
* @param k the number of nearest neighbors to be returned
* @return a List of the query results
*/
public abstract List> reverseKNNQuery(final DBID id, int k);
}