mlpack  3.4.2
breadth_first_dual_tree_traverser.hpp
Go to the documentation of this file.
1 
15 #ifndef MLPACK_CORE_TREE_BINARY_SPACE_TREE_BF_DUAL_TREE_TRAVERSER_HPP
16 #define MLPACK_CORE_TREE_BINARY_SPACE_TREE_BF_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,
45 {
46  public:
51 
54 
61  void Traverse(BinarySpaceTree& queryNode,
62  BinarySpaceTree& referenceNode);
63  void Traverse(BinarySpaceTree& queryNode,
64  std::priority_queue<QueueFrameType>& referenceQueue);
65 
67  size_t NumPrunes() const { return numPrunes; }
69  size_t& NumPrunes() { return numPrunes; }
70 
72  size_t NumVisited() const { return numVisited; }
74  size_t& NumVisited() { return numVisited; }
75 
77  size_t NumScores() const { return numScores; }
79  size_t& NumScores() { return numScores; }
80 
82  size_t NumBaseCases() const { return numBaseCases; }
84  size_t& NumBaseCases() { return numBaseCases; }
85 
86  private:
88  RuleType& rule;
89 
91  size_t numPrunes;
92 
94  size_t numVisited;
95 
97  size_t numScores;
98 
100  size_t numBaseCases;
101 
104  typename RuleType::TraversalInfoType traversalInfo;
105 };
106 
107 } // namespace tree
108 } // namespace mlpack
109 
110 // Include implementation.
111 #include "breadth_first_dual_tree_traverser_impl.hpp"
112 
113 #endif // MLPACK_CORE_TREE_BINARY_SPACE_TREE_BF_DUAL_TREE_TRAVERSER_HPP
mlpack::tree::QueueFrame::score
double score
Definition: breadth_first_dual_tree_traverser.hpp:32
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser
Definition: breadth_first_dual_tree_traverser.hpp:45
prereqs.hpp
The core includes that mlpack expects; standard C++ includes and Armadillo.
mlpack::tree::QueueFrame::traversalInfo
TraversalInfoType traversalInfo
Definition: breadth_first_dual_tree_traverser.hpp:33
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::BreadthFirstDualTreeTraverser
BreadthFirstDualTreeTraverser(RuleType &rule)
Instantiate the dual-tree traverser with the given rule set.
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::Traverse
void Traverse(BinarySpaceTree &queryNode, std::priority_queue< QueueFrameType > &referenceQueue)
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::NumVisited
size_t & NumVisited()
Modify the number of visited combinations.
Definition: breadth_first_dual_tree_traverser.hpp:74
mlpack::tree::BinarySpaceTree
A binary space partitioning tree, such as a KD-tree or a ball tree.
Definition: binary_space_tree.hpp:55
mlpack::tree::QueueFrame::referenceNode
TreeType * referenceNode
Definition: breadth_first_dual_tree_traverser.hpp:30
mlpack
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: add_to_cli11.hpp:21
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::NumVisited
size_t NumVisited() const
Get the number of visited combinations.
Definition: breadth_first_dual_tree_traverser.hpp:72
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::NumScores
size_t NumScores() const
Get the number of times a node combination was scored.
Definition: breadth_first_dual_tree_traverser.hpp:77
mlpack::tree::QueueFrame::queryNode
TreeType * queryNode
Definition: breadth_first_dual_tree_traverser.hpp:29
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::NumBaseCases
size_t & NumBaseCases()
Modify the number of times a base case was calculated.
Definition: breadth_first_dual_tree_traverser.hpp:84
mlpack::tree::QueueFrame
Definition: breadth_first_dual_tree_traverser.hpp:28
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::NumBaseCases
size_t NumBaseCases() const
Get the number of times a base case was calculated.
Definition: breadth_first_dual_tree_traverser.hpp:82
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::NumPrunes
size_t NumPrunes() const
Get the number of prunes.
Definition: breadth_first_dual_tree_traverser.hpp:67
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::NumScores
size_t & NumScores()
Modify the number of times a node combination was scored.
Definition: breadth_first_dual_tree_traverser.hpp:79
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::QueueFrameType
QueueFrame< BinarySpaceTree, typename RuleType::TraversalInfoType > QueueFrameType
Definition: breadth_first_dual_tree_traverser.hpp:53
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::Traverse
void Traverse(BinarySpaceTree &queryNode, BinarySpaceTree &referenceNode)
Traverse the two trees.
mlpack::tree::BinarySpaceTree::BreadthFirstDualTreeTraverser::NumPrunes
size_t & NumPrunes()
Modify the number of prunes.
Definition: breadth_first_dual_tree_traverser.hpp:69
mlpack::tree::QueueFrame::queryDepth
size_t queryDepth
Definition: breadth_first_dual_tree_traverser.hpp:31