14 #ifndef MLPACK_CORE_TREE_GREEDY_SINGLE_TREE_TRAVERSER_IMPL_HPP 15 #define MLPACK_CORE_TREE_GREEDY_SINGLE_TREE_TRAVERSER_IMPL_HPP 23 template<
typename TreeType,
typename RuleType>
30 template<
typename TreeType,
typename RuleType>
32 const size_t queryIndex,
33 TreeType& referenceNode)
36 for (
size_t i = 0; i < referenceNode.NumPoints(); ++i)
37 rule.BaseCase(queryIndex, referenceNode.Point(i));
39 size_t bestChild = rule.GetBestChild(queryIndex, referenceNode);
40 size_t numDescendants;
44 if (!referenceNode.IsLeaf())
45 numDescendants = referenceNode.Child(bestChild).NumDescendants();
47 numDescendants = referenceNode.NumPoints();
53 if (!referenceNode.IsLeaf())
55 if (numDescendants > rule.MinimumBaseCases())
58 numPrunes += referenceNode.NumChildren() - 1;
60 Traverse(queryIndex, referenceNode.Child(bestChild));
65 for (
size_t i = 0; i <= rule.MinimumBaseCases(); ++i)
66 rule.BaseCase(queryIndex, referenceNode.Descendant(i));
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
void Traverse(const size_t queryIndex, TreeType &referenceNode)
Traverse the tree with the given point.
Definition: greedy_single_tree_traverser_impl.hpp:31
GreedySingleTreeTraverser(RuleType &rule)
Instantiate the greedy single tree traverser with the given rule set.
Definition: greedy_single_tree_traverser_impl.hpp:24