13 #ifndef MLPACK_CORE_TREE_RECTANGLE_TREE_HILBERT_R_TREE_SPLIT_HPP 14 #define MLPACK_CORE_TREE_RECTANGLE_TREE_HILBERT_R_TREE_SPLIT_HPP 28 template<
size_t splitOrder = 2>
39 template<
typename TreeType>
40 static void SplitLeafNode(TreeType* tree, std::vector<bool>& relevels);
49 template<
typename TreeType>
62 template<
typename TreeType>
75 template<
typename TreeType>
77 const size_t firstSibling,
78 const size_t lastSibling);
87 template<
typename TreeType>
89 const size_t firstSibling,
90 const size_t lastSibling);
97 #include "hilbert_r_tree_split_impl.hpp" Linear algebra utility functions, generally performed on matrices or vectors.
static void RedistributeNodesEvenly(const TreeType *parent, const size_t firstSibling, const size_t lastSibling)
Redistribute the children of the cooperating siblings evenly among them.
The core includes that mlpack expects; standard C++ includes and Armadillo.
The splitting procedure for the Hilbert R tree.
static bool SplitNonLeafNode(TreeType *tree, std::vector< bool > &relevels)
Split a non-leaf node using the "default" algorithm.
static void RedistributePointsEvenly(TreeType *parent, const size_t firstSibling, const size_t lastSibling)
Redistribute the points of the cooperating siblings evenly among them.
static bool FindCooperatingSiblings(TreeType *parent, const size_t iTree, size_t &firstSibling, size_t &lastSibling)
Try to find splitOrder cooperating siblings in order to redistribute their children evenly...
static void SplitLeafNode(TreeType *tree, std::vector< bool > &relevels)
Split a leaf node using the "default" algorithm.