MLPACK  1.0.10
range_search_rules.hpp
Go to the documentation of this file.
1 
22 #ifndef __MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_RULES_HPP
23 #define __MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_RULES_HPP
24 
25 #include "../neighbor_search/ns_traversal_info.hpp"
26 
27 namespace mlpack {
28 namespace range {
29 
30 
31 template<typename MetricType, typename TreeType>
33 {
34  public:
46  RangeSearchRules(const arma::mat& referenceSet,
47  const arma::mat& querySet,
48  const math::Range& range,
49  std::vector<std::vector<size_t> >& neighbors,
50  std::vector<std::vector<double> >& distances,
51  MetricType& metric);
52 
59  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
60 
69  double Score(const size_t queryIndex, TreeType& referenceNode);
70 
82  double Rescore(const size_t queryIndex,
83  TreeType& referenceNode,
84  const double oldScore) const;
85 
94  double Score(TreeType& queryNode, TreeType& referenceNode);
95 
107  double Rescore(TreeType& queryNode,
108  TreeType& referenceNode,
109  const double oldScore) const;
110 
112 
113  const TraversalInfoType& TraversalInfo() const { return traversalInfo; }
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 
139 
143  void AddResult(const size_t queryIndex,
144  TreeType& referenceNode);
145 
147 };
148 
149 }; // namespace range
150 }; // namespace mlpack
151 
152 // Include implementation.
153 #include "range_search_rules_impl.hpp"
154 
155 #endif