r_plus_plus_tree_split_policy.hpp
Go to the documentation of this file.
1 
14 #ifndef MLPACK_CORE_TREE_RECTANGLE_TREE_R_PLUS_PLUS_TREE_SPLIT_POLICY_HPP
15 #define MLPACK_CORE_TREE_RECTANGLE_TREE_R_PLUS_PLUS_TREE_SPLIT_POLICY_HPP
16 
17 namespace mlpack {
18 namespace tree {
19 
26 {
27  public:
29  static const int SplitRequired = 0;
31  static const int AssignToFirstTree = 1;
33  static const int AssignToSecondTree = 2;
34 
47  template<typename TreeType>
48  static int GetSplitPolicy(const TreeType& child,
49  const size_t axis,
50  const typename TreeType::ElemType cut)
51  {
52  if (child.AuxiliaryInfo().OuterBound()[axis].Hi() <= cut)
53  return AssignToFirstTree;
54  else if (child.AuxiliaryInfo().OuterBound()[axis].Lo() >= cut)
55  return AssignToSecondTree;
56 
57  return SplitRequired;
58  }
59 
67  template<typename TreeType>
68  static const
70  Bound(const TreeType& node)
71  {
72  return node.AuxiliaryInfo().OuterBound();
73  }
74 };
75 
76 } // namespace tree
77 } // namespace mlpack
78 
79 #endif // MLPACK_CORE_TREE_RECTANGLE_TREE_R_PLUS_PLUS_TREE_SPLIT_POLICY_HPP
strip_type.hpp
Definition: add_to_po.hpp:21
static const bound::HRectBound< metric::EuclideanDistance, typename TreeType::ElemType > & Bound(const TreeType &node)
Return the maximum bounding rectangle of the node.
Hyper-rectangle bound for an L-metric.
Definition: hrectbound.hpp:54
The RPlusPlusTreeSplitPolicy helps to determine the subtree into which we should insert a child of an...
static const int AssignToFirstTree
Indicate that the child should be inserted to the first subtree.
static const int AssignToSecondTree
Indicate that the child should be inserted to the second subtree.
static int GetSplitPolicy(const TreeType &child, const size_t axis, const typename TreeType::ElemType cut)
This method returns SplitRequired if a child of an intermediate node should be split, AssignToFirstTree if the child should be inserted to the first subtree, AssignToSecondTree if the child should be inserted to the second subtree.
static const int SplitRequired
Indicate that the child should be split.