mlpack  2.0.1
breadth_first_dual_tree_traverser.hpp
Go to the documentation of this file.
1 
17 #ifndef __MLPACK_CORE_TREE_BINARY_SPACE_TREE_BREADTH_FIRST_DUAL_TREE_TRAVERSER_HPP
18 #define __MLPACK_CORE_TREE_BINARY_SPACE_TREE_BREADTH_FIRST_DUAL_TREE_TRAVERSER_HPP
19 
20 #include <mlpack/core.hpp>
21 #include <queue>
22 
23 #include "../binary_space_tree.hpp"
24 
25 namespace mlpack {
26 namespace tree {
27 
28 template<typename TreeType, typename TraversalInfoType>
29 struct QueueFrame
30 {
31  TreeType* queryNode;
32  TreeType* referenceNode;
33  size_t queryDepth;
34  double score;
35  TraversalInfoType traversalInfo;
36 };
37 
38 template<typename MetricType,
39  typename StatisticType,
40  typename MatType,
41  template<typename BoundMetricType> class BoundType,
42  template<typename SplitBoundType, typename SplitMatType>
43  class SplitType>
44 template<typename RuleType>
45 class BinarySpaceTree<MetricType, StatisticType, MatType, BoundType,
46  SplitType>::BreadthFirstDualTreeTraverser
47 {
48  public:
52  BreadthFirstDualTreeTraverser(RuleType& rule);
53 
56 
64  void Traverse(BinarySpaceTree& queryNode,
66  void Traverse(BinarySpaceTree& queryNode,
67  std::priority_queue<QueueFrameType>& referenceQueue);
68 
70  size_t NumPrunes() const { return numPrunes; }
72  size_t& NumPrunes() { return numPrunes; }
73 
75  size_t NumVisited() const { return numVisited; }
77  size_t& NumVisited() { return numVisited; }
78 
80  size_t NumScores() const { return numScores; }
82  size_t& NumScores() { return numScores; }
83 
85  size_t NumBaseCases() const { return numBaseCases; }
87  size_t& NumBaseCases() { return numBaseCases; }
88 
89  private:
91  RuleType& rule;
92 
94  size_t numPrunes;
95 
97  size_t numVisited;
98 
100  size_t numScores;
101 
103  size_t numBaseCases;
104 
107  typename RuleType::TraversalInfoType traversalInfo;
108 };
109 
110 } // namespace tree
111 } // namespace mlpack
112 
113 // Include implementation.
114 #include "breadth_first_dual_tree_traverser_impl.hpp"
115 
116 #endif // __MLPACK_CORE_TREE_BINARY_SPACE_TREE_BREADTH_FIRST_DUAL_TREE_TRAVERSER_HPP
117 
QueueFrame< BinarySpaceTree, typename RuleType::TraversalInfoType > QueueFrameType
Linear algebra utility functions, generally performed on matrices or vectors.
size_t & NumBaseCases()
Modify the number of times a base case was calculated.
size_t NumVisited() const
Get the number of visited combinations.
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.
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.
Include all of the base components required to write MLPACK methods, and the main MLPACK Doxygen docu...
size_t & NumVisited()
Modify the number of visited combinations.
size_t & NumScores()
Modify the number of times a node combination was scored.
size_t NumScores() const
Get the number of times a node combination was scored.
size_t NumBaseCases() const
Get the number of times a base case was calculated.