MLPACK  1.0.10
dual_tree_traverser.hpp
Go to the documentation of this file.
1 
25 #ifndef __MLPACK_CORE_TREE_BINARY_SPACE_TREE_DUAL_TREE_TRAVERSER_HPP
26 #define __MLPACK_CORE_TREE_BINARY_SPACE_TREE_DUAL_TREE_TRAVERSER_HPP
27 
28 #include <mlpack/core.hpp>
29 
30 #include "binary_space_tree.hpp"
31 
32 namespace mlpack {
33 namespace tree {
34 
35 template<typename BoundType,
36  typename StatisticType,
37  typename MatType,
38  typename SplitType>
39 template<typename RuleType>
40 class BinarySpaceTree<BoundType, StatisticType, MatType, SplitType>::
41  DualTreeTraverser
42 {
43  public:
47  DualTreeTraverser(RuleType& rule);
48 
56  void Traverse(BinarySpaceTree& queryNode,
57  BinarySpaceTree& referenceNode);
58 
60  size_t NumPrunes() const { return numPrunes; }
62  size_t& NumPrunes() { return numPrunes; }
63 
65  size_t NumVisited() const { return numVisited; }
67  size_t& NumVisited() { return numVisited; }
68 
70  size_t NumScores() const { return numScores; }
72  size_t& NumScores() { return numScores; }
73 
75  size_t NumBaseCases() const { return numBaseCases; }
77  size_t& NumBaseCases() { return numBaseCases; }
78 
79  private:
81  RuleType& rule;
82 
84  size_t numPrunes;
85 
87  size_t numVisited;
88 
90  size_t numScores;
91 
93  size_t numBaseCases;
94 
97  typename RuleType::TraversalInfoType traversalInfo;
98 };
99 
100 }; // namespace tree
101 }; // namespace mlpack
102 
103 // Include implementation.
104 #include "dual_tree_traverser_impl.hpp"
105 
106 #endif // __MLPACK_CORE_TREE_BINARY_SPACE_TREE_DUAL_TREE_TRAVERSER_HPP
107