mlpack  2.0.1
range_search_rules.hpp
Go to the documentation of this file.
1 
14 #ifndef __MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_RULES_HPP
15 #define __MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_RULES_HPP
16 
17 #include "../neighbor_search/ns_traversal_info.hpp"
18 
19 namespace mlpack {
20 namespace range {
21 
22 
23 template<typename MetricType, typename TreeType>
25 {
26  public:
40  RangeSearchRules(const arma::mat& referenceSet,
41  const arma::mat& querySet,
42  const math::Range& range,
43  std::vector<std::vector<size_t> >& neighbors,
44  std::vector<std::vector<double> >& distances,
45  MetricType& metric,
46  const bool sameSet = false);
47 
54  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
55 
64  double Score(const size_t queryIndex, TreeType& referenceNode);
65 
77  double Rescore(const size_t queryIndex,
78  TreeType& referenceNode,
79  const double oldScore) const;
80 
89  double Score(TreeType& queryNode, TreeType& referenceNode);
90 
102  double Rescore(TreeType& queryNode,
103  TreeType& referenceNode,
104  const double oldScore) const;
105 
107 
108  const TraversalInfoType& TraversalInfo() const { return traversalInfo; }
109  TraversalInfoType& TraversalInfo() { return traversalInfo; }
110 
112  size_t BaseCases() const { return baseCases; }
114  size_t Scores() const { return scores; }
115 
116  private:
118  const arma::mat& referenceSet;
119 
121  const arma::mat& querySet;
122 
125 
127  std::vector<std::vector<size_t> >& neighbors;
128 
130  std::vector<std::vector<double> >& distances;
131 
133  MetricType& metric;
134 
136  bool sameSet;
137 
142 
146  void AddResult(const size_t queryIndex,
147  TreeType& referenceNode);
148 
149  TraversalInfoType traversalInfo;
150 
152  size_t baseCases;
154  size_t scores;
155 };
156 
157 } // namespace range
158 } // namespace mlpack
159 
160 // Include implementation.
161 #include "range_search_rules_impl.hpp"
162 
163 #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.
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.
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.
Traversal information for NeighborSearch.
size_t baseCases
The number of base cases.
const arma::mat & querySet
The query set.
neighbor::NeighborSearchTraversalInfo< TreeType > TraversalInfoType
const TraversalInfoType & TraversalInfo() const
Simple real-valued range.
Definition: range.hpp:21
bool sameSet
If true, the query and reference set are taken to be the same.
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.