MLPACK  1.0.7
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 namespace mlpack {
27 namespace neighbor {
28 
29 template<typename SortPolicy, typename MetricType, typename TreeType>
31 {
32  public:
33  NeighborSearchRules(const arma::mat& referenceSet,
34  const arma::mat& querySet,
35  arma::Mat<size_t>& neighbors,
36  arma::mat& distances,
37  MetricType& metric);
38 
39  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
40 
49  double Score(const size_t queryIndex, TreeType& referenceNode);
50 
62  double Rescore(const size_t queryIndex,
63  TreeType& referenceNode,
64  const double oldScore) const;
65 
74  double Score(TreeType& queryNode, TreeType& referenceNode);
75 
87  double Rescore(TreeType& queryNode,
88  TreeType& referenceNode,
89  const double oldScore) const;
90 
91  private:
93  const arma::mat& referenceSet;
94 
96  const arma::mat& querySet;
97 
99  arma::Mat<size_t>& neighbors;
100 
102  arma::mat& distances;
103 
105  MetricType& metric;
106 
112  double lastBaseCase;
113 
117  double CalculateBound(TreeType& queryNode) const;
118 
128  void InsertNeighbor(const size_t queryIndex,
129  const size_t pos,
130  const size_t neighbor,
131  const double distance);
132 };
133 
134 }; // namespace neighbor
135 }; // namespace mlpack
136 
137 // Include implementation.
138 #include "neighbor_search_rules_impl.hpp"
139 
140 #endif // __MLPACK_METHODS_NEIGHBOR_SEARCH_NEIGHBOR_SEARCH_RULES_HPP