mlpack  2.2.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
range_search_rules.hpp
Go to the documentation of this file.
1 
12 #ifndef MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_RULES_HPP
13 #define MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_RULES_HPP
14 
16 
17 namespace mlpack {
18 namespace range {
19 
27 template<typename MetricType, typename TreeType>
29 {
30  public:
44  RangeSearchRules(const arma::mat& referenceSet,
45  const arma::mat& querySet,
46  const math::Range& range,
47  std::vector<std::vector<size_t> >& neighbors,
48  std::vector<std::vector<double> >& distances,
49  MetricType& metric,
50  const bool sameSet = false);
51 
58  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
59 
68  double Score(const size_t queryIndex, TreeType& referenceNode);
69 
81  double Rescore(const size_t queryIndex,
82  TreeType& referenceNode,
83  const double oldScore) const;
84 
93  double Score(TreeType& queryNode, TreeType& referenceNode);
94 
106  double Rescore(TreeType& queryNode,
107  TreeType& referenceNode,
108  const double oldScore) const;
109 
111 
112  const TraversalInfoType& TraversalInfo() const { return traversalInfo; }
113  TraversalInfoType& TraversalInfo() { return traversalInfo; }
114 
116  size_t BaseCases() const { return baseCases; }
118  size_t Scores() const { return scores; }
119 
120  private:
122  const arma::mat& referenceSet;
123 
125  const arma::mat& querySet;
126 
128  const math::Range& range;
129 
131  std::vector<std::vector<size_t> >& neighbors;
132 
134  std::vector<std::vector<double> >& distances;
135 
137  MetricType& metric;
138 
140  bool sameSet;
141 
143  size_t lastQueryIndex;
145  size_t lastReferenceIndex;
146 
150  void AddResult(const size_t queryIndex,
151  TreeType& referenceNode);
152 
153  TraversalInfoType traversalInfo;
154 
156  size_t baseCases;
158  size_t scores;
159 };
160 
161 } // namespace range
162 } // namespace mlpack
163 
164 // Include implementation.
165 #include "range_search_rules_impl.hpp"
166 
167 #endif
const TraversalInfoType & TraversalInfo() const
The TraversalInfo class holds traversal information which is used in dual-tree (and single-tree) trav...
size_t Scores() const
Get the number of scores (that is, calls to RangeDistance()).
double Score(const size_t queryIndex, TreeType &referenceNode)
Get the score for recursion order.
double BaseCase(const size_t queryIndex, const size_t referenceIndex)
Compute the base case between the given query point and reference point.
The RangeSearchRules class is a template helper class used by RangeSearch class when performing range...
size_t BaseCases() const
Get the number of base cases.
tree::TraversalInfo< TreeType > TraversalInfoType
double Rescore(const size_t queryIndex, TreeType &referenceNode, const double oldScore) const
Re-evaluate the score for recursion order.
RangeSearchRules(const arma::mat &referenceSet, const arma::mat &querySet, const math::Range &range, std::vector< std::vector< size_t > > &neighbors, std::vector< std::vector< double > > &distances, MetricType &metric, const bool sameSet=false)
Construct the RangeSearchRules object.