mlpack
master
|
The splitting procedure for the Hilbert R tree. More...
Static Public Member Functions | |
template<typename TreeType > | |
static void | SplitLeafNode (TreeType *tree, std::vector< bool > &relevels) |
Split a leaf node using the "default" algorithm. More... | |
template<typename TreeType > | |
static bool | SplitNonLeafNode (TreeType *tree, std::vector< bool > &relevels) |
Split a non-leaf node using the "default" algorithm. More... | |
Static Private Member Functions | |
template<typename TreeType > | |
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. More... | |
template<typename TreeType > | |
static void | RedistributeNodesEvenly (const TreeType *parent, const size_t firstSibling, const size_t lastSibling) |
Redistribute the children of the cooperating siblings evenly among them. More... | |
template<typename TreeType > | |
static void | RedistributePointsEvenly (TreeType *parent, const size_t firstSibling, const size_t lastSibling) |
Redistribute the points of the cooperating siblings evenly among them. More... | |
The splitting procedure for the Hilbert R tree.
The template parameter splitOrder is the order of the splitting policy. The Hilbert R tree splits a node on overflow, turning splitOrder nodes into (splitOrder + 1) nodes.
splitOrder | Number of nodes to split. |
Definition at line 29 of file hilbert_r_tree_split.hpp.
|
staticprivate |
Try to find splitOrder cooperating siblings in order to redistribute their children evenly.
Returns true on success.
parent | The parent of of the overflowing node. |
iTree | The number of the overflowing node. |
firstSibling | The first cooperating sibling. |
lastSibling | The last cooperating sibling. |
|
staticprivate |
Redistribute the children of the cooperating siblings evenly among them.
parent | The parent of of the overflowing node. |
firstSibling | The first cooperating sibling. |
lastSibling | The last cooperating sibling. |
|
staticprivate |
Redistribute the points of the cooperating siblings evenly among them.
parent | The parent of of the overflowing node. |
firstSibling | The first cooperating sibling. |
lastSibling | The last cooperating sibling. |
|
static |
Split a leaf node using the "default" algorithm.
If necessary, this split will propagate upwards through the tree.
node | The node that is being split. |
relevels | Not used. |
|
static |
Split a non-leaf node using the "default" algorithm.
If this is a root node, the tree increases in depth.
node | The node that is being split. |
relevels | Not used. |