mlpack
master
|
A binary space partitioning tree, such as a KD-tree or a ball tree. More...
Classes | |
class | BreadthFirstDualTreeTraverser |
class | DualTreeTraverser |
A dual-tree traverser for binary space trees; see dual_tree_traverser.hpp. More... | |
class | SingleTreeTraverser |
A single-tree traverser for binary space trees; see single_tree_traverser.hpp for implementation. More... | |
Public Types | |
typedef MatType::elem_type | ElemType |
The type of element held in MatType. More... | |
typedef MatType | Mat |
So other classes can use TreeType::Mat. More... | |
typedef SplitType< BoundType< MetricType >, MatType > | Split |
Public Member Functions | |
BinarySpaceTree (const MatType &data, const size_t maxLeafSize=20) | |
Construct this as the root node of a binary space tree using the given dataset. More... | |
BinarySpaceTree (const MatType &data, std::vector< size_t > &oldFromNew, const size_t maxLeafSize=20) | |
Construct this as the root node of a binary space tree using the given dataset. More... | |
BinarySpaceTree (const MatType &data, std::vector< size_t > &oldFromNew, std::vector< size_t > &newFromOld, const size_t maxLeafSize=20) | |
Construct this as the root node of a binary space tree using the given dataset. More... | |
BinarySpaceTree (MatType &&data, const size_t maxLeafSize=20) | |
Construct this as the root node of a binary space tree using the given dataset. More... | |
BinarySpaceTree (MatType &&data, std::vector< size_t > &oldFromNew, const size_t maxLeafSize=20) | |
Construct this as the root node of a binary space tree using the given dataset. More... | |
BinarySpaceTree (MatType &&data, std::vector< size_t > &oldFromNew, std::vector< size_t > &newFromOld, const size_t maxLeafSize=20) | |
Construct this as the root node of a binary space tree using the given dataset. More... | |
BinarySpaceTree (BinarySpaceTree *parent, const size_t begin, const size_t count, SplitType< BoundType< MetricType >, MatType > &splitter, const size_t maxLeafSize=20) | |
Construct this node as a child of the given parent, starting at column begin and using count points. More... | |
BinarySpaceTree (BinarySpaceTree *parent, const size_t begin, const size_t count, std::vector< size_t > &oldFromNew, SplitType< BoundType< MetricType >, MatType > &splitter, const size_t maxLeafSize=20) | |
Construct this node as a child of the given parent, starting at column begin and using count points. More... | |
BinarySpaceTree (BinarySpaceTree *parent, const size_t begin, const size_t count, std::vector< size_t > &oldFromNew, std::vector< size_t > &newFromOld, SplitType< BoundType< MetricType >, MatType > &splitter, const size_t maxLeafSize=20) | |
Construct this node as a child of the given parent, starting at column begin and using count points. More... | |
BinarySpaceTree (const BinarySpaceTree &other) | |
Create a binary space tree by copying the other tree. More... | |
BinarySpaceTree (BinarySpaceTree &&other) | |
Move constructor for a BinarySpaceTree; possess all the members of the given tree. More... | |
template<typename Archive > | |
BinarySpaceTree (Archive &ar, const typename std::enable_if_t< Archive::is_loading::value > *=0) | |
Initialize the tree from a boost::serialization archive. More... | |
~BinarySpaceTree () | |
Deletes this node, deallocating the memory for the children and calling their destructors in turn. More... | |
size_t | Begin () const |
Return the index of the beginning point of this subset. More... | |
size_t & | Begin () |
Modify the index of the beginning point of this subset. More... | |
const BoundType< MetricType > & | Bound () const |
Return the bound object for this node. More... | |
BoundType< MetricType > & | Bound () |
Return the bound object for this node. More... | |
void | Center (arma::vec ¢er) const |
Store the center of the bounding region in the given vector. More... | |
BinarySpaceTree & | Child (const size_t child) const |
Return the specified child (0 will be left, 1 will be right). More... | |
BinarySpaceTree *& | ChildPtr (const size_t child) |
size_t | Count () const |
Return the number of points in this subset. More... | |
size_t & | Count () |
Modify the number of points in this subset. More... | |
const MatType & | Dataset () const |
Get the dataset which the tree is built on. More... | |
MatType & | Dataset () |
Modify the dataset which the tree is built on. Be careful! More... | |
size_t | Descendant (const size_t index) const |
Return the index (with reference to the dataset) of a particular descendant of this node. More... | |
ElemType | FurthestDescendantDistance () const |
Return the furthest possible descendant distance. More... | |
ElemType | FurthestPointDistance () const |
Return the furthest distance to a point held in this node. More... | |
template<typename VecType > | |
size_t | GetFurthestChild (const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) |
Return the index of the furthest child node to the given query point. More... | |
size_t | GetFurthestChild (const BinarySpaceTree &queryNode) |
Return the index of the furthest child node to the given query node. More... | |
template<typename VecType > | |
size_t | GetNearestChild (const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) |
Return the index of the nearest child node to the given query point. More... | |
size_t | GetNearestChild (const BinarySpaceTree &queryNode) |
Return the index of the nearest child node to the given query node. More... | |
bool | IsLeaf () const |
Return whether or not this node is a leaf (true if it has no children). More... | |
BinarySpaceTree * | Left () const |
Gets the left child of this node. More... | |
BinarySpaceTree *& | Left () |
Modify the left child of this node. More... | |
ElemType | MaxDistance (const BinarySpaceTree &other) const |
Return the maximum distance to another node. More... | |
template<typename VecType > | |
ElemType | MaxDistance (const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) const |
Return the maximum distance to another point. More... | |
MetricType | Metric () const |
Get the metric that the tree uses. More... | |
ElemType | MinDistance (const BinarySpaceTree &other) const |
Return the minimum distance to another node. More... | |
template<typename VecType > | |
ElemType | MinDistance (const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) const |
Return the minimum distance to another point. More... | |
ElemType | MinimumBoundDistance () const |
Return the minimum distance from the center of the node to any bound edge. More... | |
size_t | NumChildren () const |
Return the number of children in this node. More... | |
size_t | NumDescendants () const |
Return the number of descendants of this node. More... | |
size_t | NumPoints () const |
Return the number of points in this node (0 if not a leaf). More... | |
BinarySpaceTree * | Parent () const |
Gets the parent of this node. More... | |
BinarySpaceTree *& | Parent () |
Modify the parent of this node. More... | |
ElemType | ParentDistance () const |
Return the distance from the center of this node to the center of the parent node. More... | |
ElemType & | ParentDistance () |
Modify the distance from the center of this node to the center of the parent node. More... | |
size_t | Point (const size_t index) const |
Return the index (with reference to the dataset) of a particular point in this node. More... | |
math::RangeType< ElemType > | RangeDistance (const BinarySpaceTree &other) const |
Return the minimum and maximum distance to another node. More... | |
template<typename VecType > | |
math::RangeType< ElemType > | RangeDistance (const VecType &point, typename std::enable_if_t< IsVector< VecType >::value > *=0) const |
Return the minimum and maximum distance to another point. More... | |
BinarySpaceTree * | Right () const |
Gets the right child of this node. More... | |
BinarySpaceTree *& | Right () |
Modify the right child of this node. More... | |
template<typename Archive > | |
void | Serialize (Archive &ar, const unsigned int version) |
Serialize the tree. More... | |
const StatisticType & | Stat () const |
Return the statistic object for this node. More... | |
StatisticType & | Stat () |
Return the statistic object for this node. More... | |
Protected Member Functions | |
BinarySpaceTree () | |
A default constructor. More... | |
Private Member Functions | |
void | SplitNode (const size_t maxLeafSize, SplitType< BoundType< MetricType >, MatType > &splitter) |
Splits the current node, assigning its left and right children recursively. More... | |
void | SplitNode (std::vector< size_t > &oldFromNew, const size_t maxLeafSize, SplitType< BoundType< MetricType >, MatType > &splitter) |
Splits the current node, assigning its left and right children recursively. More... | |
template<typename BoundType2 > | |
void | UpdateBound (BoundType2 &boundToUpdate) |
Update the bound of the current node. More... | |
void | UpdateBound (bound::HollowBallBound< MetricType > &boundToUpdate) |
Update the bound of the current node. More... | |
Private Attributes | |
size_t | begin |
The index of the first point in the dataset contained in this node (and its children). More... | |
BoundType< MetricType > | bound |
The bound object for this node. More... | |
size_t | count |
The number of points of the dataset contained in this node (and its children). More... | |
MatType * | dataset |
The dataset. More... | |
ElemType | furthestDescendantDistance |
The worst possible distance to the furthest descendant, cached to speed things up. More... | |
BinarySpaceTree * | left |
The left child node. More... | |
ElemType | minimumBoundDistance |
The minimum distance from the center to any edge of the bound. More... | |
BinarySpaceTree * | parent |
The parent node (NULL if this is the root of the tree). More... | |
ElemType | parentDistance |
The distance from the centroid of this node to the centroid of the parent. More... | |
BinarySpaceTree * | right |
The right child node. More... | |
StatisticType | stat |
Any extra data contained in the node. More... | |
A binary space partitioning tree, such as a KD-tree or a ball tree.
Once the bound and type of dataset is defined, the tree will construct itself. Call the constructor with the dataset to build the tree on, and the entire tree will be built.
This particular tree does not allow growth, so you cannot add or delete nodes from it. If you need to add or delete a node, the better procedure is to rebuild the tree entirely.
This tree does take one runtime parameter in the constructor, which is the max leaf size to be used.
MetricType | The metric used for tree-building. The BoundType may place restrictions on the metrics that can be used. |
StatisticType | Extra data contained in the node. See statistic.hpp for the necessary skeleton interface. |
MatType | The dataset class. |
BoundType | The bound used for each node. HRectBound, the default, requires that an LMetric<> is used for MetricType (so, EuclideanDistance, ManhattanDistance, etc.). |
SplitType | The class that partitions the dataset/points at a particular node into two parts. Its definition decides the way this split is done. |
Definition at line 54 of file binary_space_tree.hpp.
typedef MatType::elem_type mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::ElemType |
The type of element held in MatType.
Definition at line 60 of file binary_space_tree.hpp.
typedef MatType mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Mat |
So other classes can use TreeType::Mat.
Definition at line 58 of file binary_space_tree.hpp.
typedef SplitType<BoundType<MetricType>, MatType> mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Split |
Definition at line 62 of file binary_space_tree.hpp.
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | const MatType & | data, |
const size_t | maxLeafSize = 20 |
||
) |
Construct this as the root node of a binary space tree using the given dataset.
This will copy the input matrix; if you don't want this, consider using the constructor that takes an rvalue reference and use std::move().
data | Dataset to create tree from. This will be copied! |
maxLeafSize | Size of each leaf in the tree. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | const MatType & | data, |
std::vector< size_t > & | oldFromNew, | ||
const size_t | maxLeafSize = 20 |
||
) |
Construct this as the root node of a binary space tree using the given dataset.
This will copy the input matrix and modify its ordering; a mapping of the old point indices to the new point indices is filled. If you don't want the matrix to be copied, consider using the constructor that takes an rvalue reference and use std::move().
data | Dataset to create tree from. This will be copied! |
oldFromNew | Vector which will be filled with the old positions for each new point. |
maxLeafSize | Size of each leaf in the tree. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | const MatType & | data, |
std::vector< size_t > & | oldFromNew, | ||
std::vector< size_t > & | newFromOld, | ||
const size_t | maxLeafSize = 20 |
||
) |
Construct this as the root node of a binary space tree using the given dataset.
This will copy the input matrix and modify its ordering; a mapping of the old point indices to the new point indices is filled, as well as a mapping of the new point indices to the old point indices. If you don't want the matrix to be copied, consider using the constructor that takes an rvalue reference and use std::move().
data | Dataset to create tree from. This will be copied! |
oldFromNew | Vector which will be filled with the old positions for each new point. |
newFromOld | Vector which will be filled with the new positions for each old point. |
maxLeafSize | Size of each leaf in the tree. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | MatType && | data, |
const size_t | maxLeafSize = 20 |
||
) |
Construct this as the root node of a binary space tree using the given dataset.
This will take ownership of the data matrix; if you don't want this, consider using the constructor that takes a const reference to a dataset.
data | Dataset to create tree from. |
maxLeafSize | Size of each leaf in the tree. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | MatType && | data, |
std::vector< size_t > & | oldFromNew, | ||
const size_t | maxLeafSize = 20 |
||
) |
Construct this as the root node of a binary space tree using the given dataset.
This will take ownership of the data matrix; a mapping of the old point indices to the new point indices is filled. If you don't want the matrix to have its ownership taken, consider using the constructor that takes a const reference to a dataset.
data | Dataset to create tree from. |
oldFromNew | Vector which will be filled with the old positions for each new point. |
maxLeafSize | Size of each leaf in the tree. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | MatType && | data, |
std::vector< size_t > & | oldFromNew, | ||
std::vector< size_t > & | newFromOld, | ||
const size_t | maxLeafSize = 20 |
||
) |
Construct this as the root node of a binary space tree using the given dataset.
This will take ownership of the data matrix; a mapping of the old point indices to the new point indices is filled, as well as a mapping of the new point indices to the old point indices. If you don't want the matrix to have its ownership taken, consider using the constructor that takes a const reference to a dataset.
data | Dataset to create tree from. |
oldFromNew | Vector which will be filled with the old positions for each new point. |
newFromOld | Vector which will be filled with the new positions for each old point. |
maxLeafSize | Size of each leaf in the tree. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType > * | parent, |
const size_t | begin, | ||
const size_t | count, | ||
SplitType< BoundType< MetricType >, MatType > & | splitter, | ||
const size_t | maxLeafSize = 20 |
||
) |
Construct this node as a child of the given parent, starting at column begin and using count points.
The ordering of that subset of points in the parent's data matrix will be modified! This is used for recursive tree-building by the other constructors which don't specify point indices.
parent | Parent of this node. Its dataset will be modified! |
begin | Index of point to start tree construction with. |
count | Number of points to use to construct tree. |
splitter | Instantiated node splitter object. |
maxLeafSize | Size of each leaf in the tree. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType > * | parent, |
const size_t | begin, | ||
const size_t | count, | ||
std::vector< size_t > & | oldFromNew, | ||
SplitType< BoundType< MetricType >, MatType > & | splitter, | ||
const size_t | maxLeafSize = 20 |
||
) |
Construct this node as a child of the given parent, starting at column begin and using count points.
The ordering of that subset of points in the parent's data matrix will be modified! This is used for recursive tree-building by the other constructors which don't specify point indices.
A mapping of the old point indices to the new point indices is filled, but it is expected that the vector is already allocated with size greater than or equal to (begin + count), and if that is not true, invalid memory reads (and writes) will occur.
parent | Parent of this node. Its dataset will be modified! |
begin | Index of point to start tree construction with. |
count | Number of points to use to construct tree. |
oldFromNew | Vector which will be filled with the old positions for each new point. |
splitter | Instantiated node splitter object. |
maxLeafSize | Size of each leaf in the tree. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType > * | parent, |
const size_t | begin, | ||
const size_t | count, | ||
std::vector< size_t > & | oldFromNew, | ||
std::vector< size_t > & | newFromOld, | ||
SplitType< BoundType< MetricType >, MatType > & | splitter, | ||
const size_t | maxLeafSize = 20 |
||
) |
Construct this node as a child of the given parent, starting at column begin and using count points.
The ordering of that subset of points in the parent's data matrix will be modified! This is used for recursive tree-building by the other constructors which don't specify point indices.
A mapping of the old point indices to the new point indices is filled, as well as a mapping of the new point indices to the old point indices. It is expected that the vector is already allocated with size greater than or equal to (begin_in + count_in), and if that is not true, invalid memory reads (and writes) will occur.
parent | Parent of this node. Its dataset will be modified! |
begin | Index of point to start tree construction with. |
count | Number of points to use to construct tree. |
oldFromNew | Vector which will be filled with the old positions for each new point. |
newFromOld | Vector which will be filled with the new positions for each old point. |
maxLeafSize | Size of each leaf in the tree. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | const BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType > & | other | ) |
Create a binary space tree by copying the other tree.
Be careful! This can take a long time and use a lot of memory.
other | Tree to be replicated. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType > && | other | ) |
Move constructor for a BinarySpaceTree; possess all the members of the given tree.
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree | ( | Archive & | ar, |
const typename std::enable_if_t< Archive::is_loading::value > * | = 0 |
||
) |
Initialize the tree from a boost::serialization archive.
ar | Archive to load tree from. Must be an iarchive, not an oarchive. |
mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::~BinarySpaceTree | ( | ) |
Deletes this node, deallocating the memory for the children and calling their destructors in turn.
This will invalidate any pointers or references to any nodes which are children of this one.
|
protected |
A default constructor.
This is meant to only be used with boost::serialization, which is allowed with the friend declaration below. This does not return a valid tree! The method must be protected, so that the serialization shim can work with the default constructor.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Center().
|
inline |
Return the index of the beginning point of this subset.
Definition at line 483 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::begin.
|
inline |
Modify the index of the beginning point of this subset.
Definition at line 485 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::begin.
|
inline |
Return the bound object for this node.
Definition at line 304 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::bound.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::MaxDistance(), mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::MinDistance(), and mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::RangeDistance().
|
inline |
Return the bound object for this node.
Definition at line 306 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::bound.
|
inline |
Store the center of the bounding region in the given vector.
Definition at line 493 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::BinarySpaceTree(), mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::SplitNode(), and mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::UpdateBound().
BinarySpaceTree& mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Child | ( | const size_t | child | ) | const |
Return the specified child (0 will be left, 1 will be right).
If the index is greater than 1, this will return the right child.
child | Index of child to return. |
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::ParentDistance().
|
inline |
Definition at line 405 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Descendant(), mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::NumDescendants(), mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::NumPoints(), mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Point(), and mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::right.
|
inline |
Return the number of points in this subset.
Definition at line 488 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::count.
|
inline |
Modify the number of points in this subset.
Definition at line 490 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::count.
|
inline |
Get the dataset which the tree is built on.
Definition at line 332 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::dataset.
|
inline |
Modify the dataset which the tree is built on. Be careful!
Definition at line 334 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::dataset.
size_t mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Descendant | ( | const size_t | index | ) | const |
Return the index (with reference to the dataset) of a particular descendant of this node.
The index should be greater than zero but less than the number of descendants.
index | Index of the descendant. |
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::ChildPtr().
ElemType mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::FurthestDescendantDistance | ( | ) | const |
Return the furthest possible descendant distance.
This returns the maximum distance from the centroid to the edge of the bound and not the empirical quantity which is the actual furthest descendant distance. So the actual furthest descendant distance may be less than what this method returns (but it will never be greater than this).
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Metric().
ElemType mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::FurthestPointDistance | ( | ) | const |
Return the furthest distance to a point held in this node.
If this is not a leaf node, then the distance is 0 because the node holds no points.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Metric().
size_t mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::GetFurthestChild | ( | const VecType & | point, |
typename std::enable_if_t< IsVector< VecType >::value > * | = 0 |
||
) |
Return the index of the furthest child node to the given query point.
If this is a leaf node, it will return NumChildren() (invalid index).
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Metric().
size_t mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::GetFurthestChild | ( | const BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType > & | queryNode | ) |
Return the index of the furthest child node to the given query node.
If it can't decide, it will return NumChildren() (invalid index).
size_t mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::GetNearestChild | ( | const VecType & | point, |
typename std::enable_if_t< IsVector< VecType >::value > * | = 0 |
||
) |
Return the index of the nearest child node to the given query point.
If this is a leaf node, it will return NumChildren() (invalid index).
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Metric().
size_t mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::GetNearestChild | ( | const BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType > & | queryNode | ) |
Return the index of the nearest child node to the given query node.
If it can't decide, it will return NumChildren() (invalid index).
bool mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::IsLeaf | ( | ) | const |
Return whether or not this node is a leaf (true if it has no children).
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Stat().
|
inline |
Gets the left child of this node.
Definition at line 317 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::left.
|
inline |
Modify the left child of this node.
Definition at line 319 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::left.
|
inline |
Return the maximum distance to another node.
Definition at line 444 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Bound().
|
inline |
Return the maximum distance to another point.
Definition at line 466 of file binary_space_tree.hpp.
|
inline |
Get the metric that the tree uses.
Definition at line 337 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::FurthestDescendantDistance(), mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::FurthestPointDistance(), mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::GetFurthestChild(), mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::GetNearestChild(), mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::MinimumBoundDistance(), and mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::NumChildren().
|
inline |
Return the minimum distance to another node.
Definition at line 438 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Bound().
|
inline |
Return the minimum distance to another point.
Definition at line 457 of file binary_space_tree.hpp.
ElemType mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::MinimumBoundDistance | ( | ) | const |
Return the minimum distance from the center of the node to any bound edge.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Metric().
size_t mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::NumChildren | ( | ) | const |
Return the number of children in this node.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Metric().
size_t mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::NumDescendants | ( | ) | const |
Return the number of descendants of this node.
For a non-leaf in a binary space tree, this is the number of points at the descendant leaves. For a leaf, this is the number of points in the leaf.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::ChildPtr().
size_t mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::NumPoints | ( | ) | const |
Return the number of points in this node (0 if not a leaf).
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::ChildPtr().
|
inline |
Gets the parent of this node.
Definition at line 327 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::parent.
|
inline |
Modify the parent of this node.
Definition at line 329 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::parent.
|
inline |
Return the distance from the center of this node to the center of the parent node.
Definition at line 392 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::parentDistance.
|
inline |
Modify the distance from the center of this node to the center of the parent node.
Definition at line 395 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Child(), and mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::parentDistance.
size_t mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Point | ( | const size_t | index | ) | const |
Return the index (with reference to the dataset) of a particular point in this node.
This will happily return invalid indices if the given index is greater than the number of points in this node (obtained with NumPoints()) – be careful.
index | Index of point for which a dataset index is wanted. |
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::ChildPtr().
|
inline |
Return the minimum and maximum distance to another node.
Definition at line 450 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Bound().
|
inline |
Return the minimum and maximum distance to another point.
Definition at line 476 of file binary_space_tree.hpp.
|
inline |
Gets the right child of this node.
Definition at line 322 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::right.
|
inline |
Modify the right child of this node.
Definition at line 324 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::right.
void mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Serialize | ( | Archive & | ar, |
const unsigned int | version | ||
) |
Serialize the tree.
|
private |
Splits the current node, assigning its left and right children recursively.
maxLeafSize | Maximum number of points held in a leaf. |
splitter | Instantiated SplitType object. |
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Center().
|
private |
Splits the current node, assigning its left and right children recursively.
Also returns a list of the changed indices.
oldFromNew | Vector holding permuted indices. |
maxLeafSize | Maximum number of points held in a leaf. |
splitter | Instantiated SplitType object. |
|
inline |
Return the statistic object for this node.
Definition at line 309 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::stat.
|
inline |
Return the statistic object for this node.
Definition at line 311 of file binary_space_tree.hpp.
References mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::IsLeaf(), and mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::stat.
|
private |
Update the bound of the current node.
This method does not take into account bound-specific properties.
boundToUpdate | The bound to update. |
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Center().
|
private |
Update the bound of the current node.
This method is designed for HollowBallBound only.
boundToUpdate | The bound to update. |
|
private |
The index of the first point in the dataset contained in this node (and its children).
Definition at line 73 of file binary_space_tree.hpp.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Begin().
|
private |
The bound object for this node.
Definition at line 78 of file binary_space_tree.hpp.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Bound().
|
private |
The number of points of the dataset contained in this node (and its children).
Definition at line 76 of file binary_space_tree.hpp.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Count().
|
private |
The dataset.
If we are the root of the tree, we own the dataset and must delete it.
Definition at line 90 of file binary_space_tree.hpp.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Dataset().
|
private |
The worst possible distance to the furthest descendant, cached to speed things up.
Definition at line 85 of file binary_space_tree.hpp.
|
private |
The left child node.
Definition at line 66 of file binary_space_tree.hpp.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Left().
|
private |
The minimum distance from the center to any edge of the bound.
Definition at line 87 of file binary_space_tree.hpp.
|
private |
The parent node (NULL if this is the root of the tree).
Definition at line 70 of file binary_space_tree.hpp.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Parent().
|
private |
The distance from the centroid of this node to the centroid of the parent.
Definition at line 82 of file binary_space_tree.hpp.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::ParentDistance().
|
private |
The right child node.
Definition at line 68 of file binary_space_tree.hpp.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::ChildPtr(), and mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Right().
|
private |
Any extra data contained in the node.
Definition at line 80 of file binary_space_tree.hpp.
Referenced by mlpack::tree::BinarySpaceTree< MetricType, StatisticType, MatType, BoundType, SplitType >::Stat().