mlpack  master
breadth_first_dual_tree_traverser.hpp
Go to the documentation of this file.
1 
15 #ifndef MLPACK_CORE_TREE_BINARY_SPACE_TREE_BREADTH_FIRST_DUAL_TREE_TRAVERSER_HPP
16 #define MLPACK_CORE_TREE_BINARY_SPACE_TREE_BREADTH_FIRST_DUAL_TREE_TRAVERSER_HPP
17 
18 #include <mlpack/prereqs.hpp>
19 #include <queue>
20 
21 #include "../binary_space_tree.hpp"
22 
23 namespace mlpack {
24 namespace tree {
25 
26 template<typename TreeType, typename TraversalInfoType>
27 struct QueueFrame
28 {
29  TreeType* queryNode;
30  TreeType* referenceNode;
31  size_t queryDepth;
32  double score;
33  TraversalInfoType traversalInfo;
34 };
35 
36 template<typename MetricType,
37  typename StatisticType,
38  typename MatType,
39  template<typename BoundMetricType, typename...> class BoundType,
40  template<typename SplitBoundType, typename SplitMatType>
41  class SplitType>
42 template<typename RuleType>
43 class BinarySpaceTree<MetricType, StatisticType, MatType, BoundType,
44  SplitType>::BreadthFirstDualTreeTraverser
45 {
46  public:
50  BreadthFirstDualTreeTraverser(RuleType& rule);
51 
54 
62  void Traverse(BinarySpaceTree& queryNode,
64  void Traverse(BinarySpaceTree& queryNode,
65  std::priority_queue<QueueFrameType>& referenceQueue);
66 
68  size_t NumPrunes() const { return numPrunes; }
70  size_t& NumPrunes() { return numPrunes; }
71 
73  size_t NumVisited() const { return numVisited; }
75  size_t& NumVisited() { return numVisited; }
76 
78  size_t NumScores() const { return numScores; }
80  size_t& NumScores() { return numScores; }
81 
83  size_t NumBaseCases() const { return numBaseCases; }
85  size_t& NumBaseCases() { return numBaseCases; }
86 
87  private:
89  RuleType& rule;
90 
92  size_t numPrunes;
93 
95  size_t numVisited;
96 
98  size_t numScores;
99 
101  size_t numBaseCases;
102 
105  typename RuleType::TraversalInfoType traversalInfo;
106 };
107 
108 } // namespace tree
109 } // namespace mlpack
110 
111 // Include implementation.
112 #include "breadth_first_dual_tree_traverser_impl.hpp"
113 
114 #endif // MLPACK_CORE_TREE_BINARY_SPACE_TREE_BREADTH_FIRST_DUAL_TREE_TRAVERSER_HPP
115 
size_t NumBaseCases() const
Get the number of times a base case was calculated.
QueueFrame< BinarySpaceTree, typename RuleType::TraversalInfoType > QueueFrameType
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: binarize.hpp:18
size_t & NumBaseCases()
Modify the number of times a base case was calculated.
RuleType & rule
Reference to the rules with which the trees will be traversed.
size_t numScores
The number of times a node combination was scored.
The core includes that mlpack expects; standard C++ includes and Armadillo.
size_t NumScores() const
Get the number of times a node combination was scored.
RuleType::TraversalInfoType traversalInfo
Traversal information, held in the class so that it isn&#39;t continually being reallocated.
size_t numBaseCases
The number of times a base case was calculated.
A binary space partitioning tree, such as a KD-tree or a ball tree.
size_t numVisited
The number of node combinations that have been visited during traversal.
size_t NumVisited() const
Get the number of visited combinations.
size_t & NumVisited()
Modify the number of visited combinations.
size_t & NumScores()
Modify the number of times a node combination was scored.