MLPACK  1.0.11
neighbor_search_rules.hpp
Go to the documentation of this file.
1 
23 #ifndef __MLPACK_METHODS_NEIGHBOR_SEARCH_NEIGHBOR_SEARCH_RULES_HPP
24 #define __MLPACK_METHODS_NEIGHBOR_SEARCH_NEIGHBOR_SEARCH_RULES_HPP
25 
26 #include "ns_traversal_info.hpp"
27 
28 namespace mlpack {
29 namespace neighbor {
30 
31 template<typename SortPolicy, typename MetricType, typename TreeType>
33 {
34  public:
35  NeighborSearchRules(const typename TreeType::Mat& referenceSet,
36  const typename TreeType::Mat& querySet,
37  arma::Mat<size_t>& neighbors,
38  arma::mat& distances,
39  MetricType& metric);
48  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
49 
58  double Score(const size_t queryIndex, TreeType& referenceNode);
59 
71  double Rescore(const size_t queryIndex,
72  TreeType& referenceNode,
73  const double oldScore) const;
74 
83  double Score(TreeType& queryNode, TreeType& referenceNode);
84 
96  double Rescore(TreeType& queryNode,
97  TreeType& referenceNode,
98  const double oldScore) const;
99 
101  size_t BaseCases() const { return baseCases; }
103  size_t& BaseCases() { return baseCases; }
104 
106  size_t Scores() const { return scores; }
108  size_t& Scores() { return scores; }
109 
112 
114  const TraversalInfoType& TraversalInfo() const { return traversalInfo; }
117 
118  private:
120  const typename TreeType::Mat& referenceSet;
121 
123  const typename TreeType::Mat& querySet;
124 
126  arma::Mat<size_t>& neighbors;
127 
129  arma::mat& distances;
130 
132  MetricType& metric;
133 
139  double lastBaseCase;
140 
142  size_t baseCases;
144  size_t scores;
145 
149 
153  double CalculateBound(TreeType& queryNode) const;
154 
164  void InsertNeighbor(const size_t queryIndex,
165  const size_t pos,
166  const size_t neighbor,
167  const double distance);
168 };
169 
170 }; // namespace neighbor
171 }; // namespace mlpack
172 
173 // Include implementation.
174 #include "neighbor_search_rules_impl.hpp"
175 
176 #endif // __MLPACK_METHODS_NEIGHBOR_SEARCH_NEIGHBOR_SEARCH_RULES_HPP