V - Vector typeprotected static class GriDBSCAN.Instance<V extends NumberVector>
extends java.lang.Object
| Modifier and Type | Field and Description | 
|---|---|
private Border[] | 
borders
Border identifier objects (shared to conserve memory). 
 | 
protected int[] | 
cells
Number of cells per dimension. 
 | 
private WritableDataStore<Assignment> | 
clusterids
Cluster assignments. 
 | 
private Core[] | 
cores
Core identifier objects (shared to conserve memory). 
 | 
protected int | 
dim
Dimensionality. 
 | 
protected DistanceFunction<? super V> | 
distanceFunction
Distance function used. 
 | 
protected double[][] | 
domain
Value domain. 
 | 
protected double | 
epsilon
Holds the epsilon radius threshold. 
 | 
(package private) it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<ModifiableDBIDs> | 
grid
Data grid partitioning. 
 | 
protected double | 
gridwidth
Width of the grid cells. 
 | 
protected int | 
minpts
Holds the minimum cluster size. 
 | 
protected static int | 
NOISE
Noise IDs. 
 | 
protected double[] | 
offset
Grid offset. 
 | 
private boolean | 
overflown
Indicates that the number of grid cells has overflown. 
 | 
private WritableIntegerDataStore | 
temporary
Temporary assignments of a single run. 
 | 
protected static int | 
UNPROCESSED
Unprocessed IDs. 
 | 
| Constructor and Description | 
|---|
Instance(DistanceFunction<? super V> distanceFunction,
        double epsilon,
        int minpts,
        double gridwidth)
Constructor. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
protected void | 
buildGrid(Relation<V> relation,
         int numcells,
         double[] offset)
Build the data grid. 
 | 
protected int | 
checkGridCellSizes(int size,
                  long numcell)
Perform some sanity checks on the grid cells. 
 | 
private long | 
computeGridBaseOffsets()
Compute the grid base offset. 
 | 
protected int | 
expandCluster(DBIDRef seed,
             int clusterid,
             WritableIntegerDataStore clusterids,
             ModifiableDoubleDBIDList neighbors,
             ArrayModifiableDBIDs activeSet,
             RangeQuery<V> rq,
             FiniteProgress pprog)
Set-based expand cluster implementation. 
 | 
private void | 
insertIntoGrid(DBIDRef id,
              V obj,
              int d,
              int v)
Insert a single object into the grid; potentially into multiple cells (at
 most 2^d) via recursion. 
 | 
protected void | 
mergeClusterInformation(ModifiableDBIDs cellids,
                       WritableIntegerDataStore temporary,
                       WritableDataStore<Assignment> clusterids)
Merge cluster information. 
 | 
protected int | 
processCorePoint(DBIDRef seed,
                DoubleDBIDList newneighbors,
                int clusterid,
                WritableIntegerDataStore clusterids,
                ArrayModifiableDBIDs activeSet)
Process a single core point. 
 | 
Clustering<Model> | 
run(Relation<V> relation)
Performs the DBSCAN algorithm on the given database. 
 | 
private void | 
updateCoreBorderObjects(int clusterid)
Update the shared arrays for core points (to conserve memory) 
 | 
protected static final int UNPROCESSED
protected static final int NOISE
protected DistanceFunction<? super V extends NumberVector> distanceFunction
protected double epsilon
protected int minpts
protected double gridwidth
protected double[][] domain
protected int dim
protected double[] offset
protected int[] cells
it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<ModifiableDBIDs> grid
private Core[] cores
private Border[] borders
private WritableDataStore<Assignment> clusterids
private WritableIntegerDataStore temporary
private boolean overflown
public Instance(DistanceFunction<? super V> distanceFunction, double epsilon, int minpts, double gridwidth)
distanceFunction - Distance functionepsilon - Epsilonminpts - MinPtsgridwidth - Grid widthpublic Clustering<Model> run(Relation<V> relation)
relation - Relation to processprivate void updateCoreBorderObjects(int clusterid)
clusterid - Number of clustersprivate long computeGridBaseOffsets()
protected void buildGrid(Relation<V> relation, int numcells, double[] offset)
relation - Data relationnumcells - Total number of cellsoffset - Offsetprivate void insertIntoGrid(DBIDRef id, V obj, int d, int v)
id - Object IDobj - Objectd - Current dimensionv - Current cell valueprotected int checkGridCellSizes(int size,
                                 long numcell)
numcell - Number of cellssize - Relation sizeprotected int expandCluster(DBIDRef seed, int clusterid, WritableIntegerDataStore clusterids, ModifiableDoubleDBIDList neighbors, ArrayModifiableDBIDs activeSet, RangeQuery<V> rq, FiniteProgress pprog)
clusterid - ID of the current cluster.clusterids - Current object to cluster mapping.neighbors - Neighbors acquired by initial getNeighbors call.activeSet - Set to manage active candidates.rq - Range querypprog - Object progressprotected int processCorePoint(DBIDRef seed, DoubleDBIDList newneighbors, int clusterid, WritableIntegerDataStore clusterids, ArrayModifiableDBIDs activeSet)
seed - Point to processnewneighbors - New neighborsclusterid - Cluster to add toclusterids - Cluster assignment storage.activeSet - Active set of cluster seedsprotected void mergeClusterInformation(ModifiableDBIDs cellids, WritableIntegerDataStore temporary, WritableDataStore<Assignment> clusterids)
cellids - IDs in current celltemporary - Temporary assignmentsclusterids - Merged cluster assignmentCopyright © 2019 ELKI Development Team. License information.