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 
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.
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.
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.
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.