O
- the type of DatabaseObject the algorithm is applied on@Reference(authors="D. Defays", title="An Efficient Algorithm for the Complete Link Cluster Method", booktitle="The Computer Journal 20.4", url="https://doi.org/10.1093/comjnl/20.4.364", bibkey="DBLP:journals/cj/Defays77") @Alias(value="Defays") public class CLINK<O> extends SLINK<O>
This algorithm runs in O(n²) time, and needs only O(n) memory. The results can differ from the standard algorithm in unfavorable ways, and are order-dependent (Defays: "Modifications of the labeling permit us to obtain different minimal superior ultrametric dissimilarities"). Unfortunately, the results are usually perceived to be substantially worse than the more expensive algorithms for complete linkage clustering. This arises from the fact that this algorithm has to add the new object to the existing tree in every step, instead of being able to always do the globally best merge.
Reference:
D. Defays
An Efficient Algorithm for the Complete Link Cluster Method
In: The Computer Journal 20.4
Modifier and Type | Class and Description |
---|---|
static class |
CLINK.Parameterizer<O>
Parameterization class.
|
Modifier and Type | Field and Description |
---|---|
private static Logging |
LOG
The logger for this class.
|
ALGORITHM_ID
DISTANCE_FUNCTION_ID
Constructor and Description |
---|
CLINK(DistanceFunction<? super O> distanceFunction)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
private void |
clinkstep3(DBIDRef id,
DBIDArrayIter i,
int n,
WritableDBIDDataStore pi,
WritableDoubleDataStore lambda,
WritableDoubleDataStore m)
Third step: Determine the values for P and L
|
private void |
clinkstep4567(DBIDRef id,
ArrayDBIDs ids,
DBIDArrayIter it,
int n,
WritableDBIDDataStore pi,
WritableDoubleDataStore lambda,
WritableDoubleDataStore m)
Fourth to seventh step of CLINK: find best insertion
|
private void |
clinkstep8(DBIDRef id,
DBIDArrayIter it,
int n,
WritableDBIDDataStore pi,
WritableDoubleDataStore lambda,
WritableDoubleDataStore m)
Update hierarchy.
|
protected Logging |
getLogger()
Get the (STATIC) logger for this class.
|
protected void |
process(DBIDRef id,
ArrayDBIDs ids,
DBIDArrayIter it,
int n,
WritableDBIDDataStore pi,
WritableDoubleDataStore lambda,
WritableDoubleDataStore m)
CLINK main loop, based on the SLINK main loop.
|
getInputTypeRestriction, run
getDistanceFunction
run
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
run
private static final Logging LOG
public CLINK(DistanceFunction<? super O> distanceFunction)
distanceFunction
- Distance functionprotected void process(DBIDRef id, ArrayDBIDs ids, DBIDArrayIter it, int n, WritableDBIDDataStore pi, WritableDoubleDataStore lambda, WritableDoubleDataStore m)
private void clinkstep3(DBIDRef id, DBIDArrayIter i, int n, WritableDBIDDataStore pi, WritableDoubleDataStore lambda, WritableDoubleDataStore m)
id
- the id of the object to be inserted into the pointer
representationi
- Iteratorn
- Stopping positionpi
- Pi data storelambda
- Lambda data storem
- Distance data storeprivate void clinkstep4567(DBIDRef id, ArrayDBIDs ids, DBIDArrayIter it, int n, WritableDBIDDataStore pi, WritableDoubleDataStore lambda, WritableDoubleDataStore m)
id
- Current objctids
- All objectsit
- Iteratorn
- Index thresholdpi
- Parent data storelambda
- Height data storem
- Distance data storeprivate void clinkstep8(DBIDRef id, DBIDArrayIter it, int n, WritableDBIDDataStore pi, WritableDoubleDataStore lambda, WritableDoubleDataStore m)
id
- Current objectit
- Iteratorn
- Last object to processpi
- Parent data storelambda
- Height data storem
- Distance data storeprotected Logging getLogger()
AbstractAlgorithm
Copyright © 2019 ELKI Development Team. License information.