
O - Database object typeD - Distance typepublic class MinKDistance<O,D extends Distance<D>> extends AbstractDatabaseDistanceFunction<O,D>
reachability-distance(A,B) = max( k-distance(A), distance(A,B) )Where k-distance(A) is the distance to the k nearest neighbor of A, and distance is the actual distance of A and B. This distance is NOT symmetric. You need to pay attention to the order of arguments!
| Modifier and Type | Class and Description | 
|---|---|
| class  | MinKDistance.Instance<T extends O>Instance for an actual database. | 
| static class  | MinKDistance.Parameterizer<O,D extends Distance<D>>Parameterization class. | 
| Modifier and Type | Field and Description | 
|---|---|
| static OptionID | DISTANCE_FUNCTION_IDOptionID for the base distance used to compute reachability | 
| private int | kThe value of k | 
| static OptionID | K_IDOptionID for the "k" parameter. | 
| static OptionID | KNNQUERY_IDOptionID for the KNN query class to use (preprocessor, approximation, ...) | 
| (package private) static boolean | objectIsInKNNInclude object itself in kNN neighborhood. | 
| protected DistanceFunction<? super O,D> | parentDistanceThe distance function to determine the exact distance. | 
| Constructor and Description | 
|---|
| MinKDistance(DistanceFunction<? super O,D> parentDistance,
            int k)Full constructor. | 
| Modifier and Type | Method and Description | 
|---|---|
| protected D | computeReachdist(KNNResult<D> neighborhood,
                D truedist)Actually compute the distance, whichever way we obtained the neighborhood
 above. | 
| boolean | equals(Object obj) | 
| D | getDistanceFactory()Method to get the distance functions factory. | 
| TypeInformation | getInputTypeRestriction()Get the input data type of the function. | 
| <T extends O>  | instantiate(Relation<T> relation)Instantiate with a database to get the actual distance query. | 
| boolean | isMetric()Is this distance function metric (in particular, does it satisfy the
 triangle equation?) | 
| boolean | isSymmetric()Is this function symmetric? | 
public static final OptionID DISTANCE_FUNCTION_ID
public static final OptionID KNNQUERY_ID
public static final OptionID K_ID
protected DistanceFunction<? super O,D extends Distance<D>> parentDistance
private int k
static boolean objectIsInKNN
public MinKDistance(DistanceFunction<? super O,D> parentDistance, int k)
MinKDistance.Parameterizer for factory.parentDistance - distance function to usek - K parameterpublic <T extends O> DistanceQuery<T,D> instantiate(Relation<T> relation)
DistanceFunctionrelation - The representation to useprotected D computeReachdist(KNNResult<D> neighborhood, D truedist)
neighborhood - Neighborhoodtruedist - True distancepublic boolean isMetric()
DistanceFunctionpublic boolean isSymmetric()
DistanceFunctionisSymmetric in interface DistanceFunction<O,D extends Distance<D>>isSymmetric in class AbstractDatabaseDistanceFunction<O,D extends Distance<D>>true when symmetricpublic D getDistanceFactory()
DistanceFunctiongetDistanceFactory in interface DistanceFunction<O,D extends Distance<D>>getDistanceFactory in class AbstractDatabaseDistanceFunction<O,D extends Distance<D>>public TypeInformation getInputTypeRestriction()
DistanceFunction