mlpack
2.0.1
|
The TreeTraits class provides compile-time information on the characteristics of a given tree type. More...
Static Public Attributes | |
static const bool | BinaryTree = false |
This is true if the tree always has only two children. More... | |
static const bool | FirstPointIsCentroid = false |
This is true if Point(0) is the centroid of the node. More... | |
static const bool | HasOverlappingChildren = true |
This is true if the subspaces represented by the children of a node can overlap. More... | |
static const bool | HasSelfChildren = false |
This is true if the points contained in the first child of a node (Child(0)) are also contained in that node. More... | |
static const bool | RearrangesDataset = false |
This is true if the tree rearranges points in the dataset when it is built. More... | |
The TreeTraits class provides compile-time information on the characteristics of a given tree type.
These include traits such as whether or not a node knows the distance to its parent node, or whether or not the subspaces represented by children can overlap.
These traits can be used for static compile-time optimization:
The traits can also be used in conjunction with SFINAE to write specialized versions of functions:
In those two examples, the boost::enable_if<> class takes a boolean template parameter which allows that function to be called when the boolean is true.
Each trait must be a static const value and not a function; only const values can be used as template parameters (or constexprs can be used too). By default (the unspecialized implementation of TreeTraits), each parameter is set to make as few assumptions about the tree as possible; so, even if TreeTraits is not specialized for a particular tree type, tree-based algorithms should still work.
When you write your own tree, you must specialize the TreeTraits class to your tree type and set the corresponding values appropriately. See mlpack/core/tree/binary_space_tree/traits.hpp for an example.
Definition at line 79 of file tree_traits.hpp.
|
static |
This is true if the tree always has only two children.
Definition at line 107 of file tree_traits.hpp.
|
static |
This is true if Point(0) is the centroid of the node.
Definition at line 91 of file tree_traits.hpp.
|
static |
This is true if the subspaces represented by the children of a node can overlap.
Definition at line 86 of file tree_traits.hpp.
|
static |
This is true if the points contained in the first child of a node (Child(0)) are also contained in that node.
Definition at line 97 of file tree_traits.hpp.
|
static |
This is true if the tree rearranges points in the dataset when it is built.
Definition at line 102 of file tree_traits.hpp.