mlpack 3.4.2
r_star_tree_split.hpp
Go to the documentation of this file.
1
13#ifndef MLPACK_CORE_TREE_RECTANGLE_TREE_R_STAR_TREE_SPLIT_HPP
14#define MLPACK_CORE_TREE_RECTANGLE_TREE_R_STAR_TREE_SPLIT_HPP
15
16#include <mlpack/prereqs.hpp>
17
18namespace mlpack {
19namespace tree {
20
27{
28 public:
34 template <typename TreeType>
35 static void SplitLeafNode(TreeType *tree, std::vector<bool>& relevels);
36
41 template <typename TreeType>
42 static bool SplitNonLeafNode(TreeType *tree, std::vector<bool>& relevels);
43
48 template<typename TreeType>
49 static size_t ReinsertPoints(TreeType* tree, std::vector<bool>& relevels);
50
54 template<typename TreeType>
55 static void PickLeafSplit(
56 TreeType* tree,
57 size_t& bestAxis,
58 size_t& bestIndex);
59
60 private:
64 template <typename TreeType>
65 static void InsertNodeIntoTree(TreeType* destTree, TreeType* srcNode);
66
71 template<typename ElemType, typename TreeType>
72 static bool PairComp(const std::pair<ElemType, TreeType>& p1,
73 const std::pair<ElemType, TreeType>& p2)
74 {
75 return p1.first < p2.first;
76 }
77};
78
79} // namespace tree
80} // namespace mlpack
81
82// Include implementation
83#include "r_star_tree_split_impl.hpp"
84
85#endif
A Rectangle Tree has new points inserted at the bottom.
static size_t ReinsertPoints(TreeType *tree, std::vector< bool > &relevels)
Reinsert any points into the tree, if needed.
static bool SplitNonLeafNode(TreeType *tree, std::vector< bool > &relevels)
Split a non-leaf node using the "default" algorithm.
static void PickLeafSplit(TreeType *tree, size_t &bestAxis, size_t &bestIndex)
Given a node, return the best dimension and the best index to split on.
static void SplitLeafNode(TreeType *tree, std::vector< bool > &relevels)
Split a leaf node using the algorithm described in "The R*-tree: An Efficient and Robust Access metho...
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
The core includes that mlpack expects; standard C++ includes and Armadillo.