mlpack  master
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 
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 
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 arma::mat & referenceSet
The reference set.
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.
The TraversalInfo class holds traversal information which is used in dual-tree (and single-tree) trav...
size_t lastReferenceIndex
The last reference index.
void AddResult(const size_t queryIndex, TreeType &referenceNode)
Add all the points in the given node to the results for the given query point.
size_t BaseCases() const
Get the number of base cases.
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: binarize.hpp:18
std::vector< std::vector< double > > & distances
The vector the resultant neighbor distances should be stored in.
double Score(const size_t queryIndex, TreeType &referenceNode)
Get the score for recursion order.
size_t lastQueryIndex
The last query index.
size_t baseCases
The number of base cases.
const arma::mat & querySet
The query set.
const TraversalInfoType & TraversalInfo() const
bool sameSet
If true, the query and reference set are taken to be the same.
tree::TraversalInfo< TreeType > TraversalInfoType
The RangeSearchRules class is a template helper class used by RangeSearch class when performing range...
const math::Range & range
The range of distances for which we are searching.
double BaseCase(const size_t queryIndex, const size_t referenceIndex)
Compute the base case between the given query point and reference point.
size_t scores
THe number of scores.
size_t Scores() const
Get the number of scores (that is, calls to RangeDistance()).
double Rescore(const size_t queryIndex, TreeType &referenceNode, const double oldScore) const
Re-evaluate the score for recursion order.
MetricType & metric
The instantiated metric.
std::vector< std::vector< size_t > > & neighbors
The vector the resultant neighbor indices should be stored in.