protected static class BarnesHutTSNE.QuadTree
extends java.lang.Object
This tree stores in every node the number of points contained, the center of mass, and the diagonal of the cell.
| Modifier and Type | Field and Description | 
|---|---|
double[] | 
center
Center of mass (NOT center of bounding box) 
 | 
BarnesHutTSNE.QuadTree[] | 
children
Child nodes. 
 | 
double[][] | 
points
Points stored in this node. 
 | 
double | 
squareSize
Square size of this node, for Barnes-Hut approximation. 
 | 
int | 
weight
Total weight of this node. 
 | 
| Modifier | Constructor and Description | 
|---|---|
private  | 
QuadTree(double[][] data,
        BarnesHutTSNE.QuadTree[] children,
        double[] mid,
        int weight,
        double squareSize)
Constructor. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
static BarnesHutTSNE.QuadTree | 
build(int dim,
     double[][] data)
Construct the quad tree approximation. 
 | 
private static BarnesHutTSNE.QuadTree | 
build(int dim,
     double[][] data,
     int begin,
     int end)
Recursive build function. 
 | 
private static double[] | 
computeCenterofMass(int dim,
                   double[][] data,
                   int begin,
                   int end)
Computer the center of mass. 
 | 
private static double[] | 
computeExtend(int dim,
             double[][] data,
             int begin,
             int end)
Compute the bounding box of a data set. 
 | 
private static double | 
computeSquareSize(double[] minmax)
Compute the square size of a bounding box. 
 | 
private static void | 
splitRecursively(double[][] data,
                int begin,
                int end,
                int initdim,
                int dims,
                double[] minmax,
                java.util.ArrayList<double[]> singletons,
                java.util.ArrayList<BarnesHutTSNE.QuadTree> children)
Build the quadtree by recursive splitting. 
 | 
java.lang.String | 
toString()  | 
public double[] center
public double[][] points
public double squareSize
public int weight
public BarnesHutTSNE.QuadTree[] children
private QuadTree(double[][] data,
                 BarnesHutTSNE.QuadTree[] children,
                 double[] mid,
                 int weight,
                 double squareSize)
data - Data pointschildren - Child nodesmid - Center of massweight - Node weightsquareSize - Square size of the nodepublic static BarnesHutTSNE.QuadTree build(int dim, double[][] data)
dim - Dimensionalitydata - Data set (will be modified!)private static BarnesHutTSNE.QuadTree build(int dim, double[][] data, int begin, int end)
dim - Dimensionalitydata - Input data (WILL BE MODIFIED)begin - Subset beginend - Subset endprivate static void splitRecursively(double[][] data,
                                     int begin,
                                     int end,
                                     int initdim,
                                     int dims,
                                     double[] minmax,
                                     java.util.ArrayList<double[]> singletons,
                                     java.util.ArrayList<BarnesHutTSNE.QuadTree> children)
data - Input databegin - Subset beginend - Subset endinitdim - Current dimensiondims - Data dimensionalityminmax - Bounding boxsingletons - Output for singletonschildren - Output for child nodesprivate static double[] computeCenterofMass(int dim,
                                            double[][] data,
                                            int begin,
                                            int end)
dim - Dimensionalitydata - Data setbegin - Begin of subsetend - End of subsetprivate static double[] computeExtend(int dim,
                                      double[][] data,
                                      int begin,
                                      int end)
dim - Dimensionalitydata - Data setbegin - Begin of subsetend - End of subsetprivate static double computeSquareSize(double[] minmax)
Note that van der Maaten writes "diagonal", while his source code uses the maximum edge length. Barnes and Hut used the cell edge size of a square quad tree.
minmax - Bounding boxpublic java.lang.String toString()
toString in class java.lang.ObjectCopyright © 2019 ELKI Development Team. License information.