range_search_rules.hpp
Go to the documentation of this file.00001
00022 #ifndef __MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_RULES_HPP
00023 #define __MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_RULES_HPP
00024
00025 namespace mlpack {
00026 namespace range {
00027
00028
00029 template<typename MetricType, typename TreeType>
00030 class RangeSearchRules
00031 {
00032 public:
00044 RangeSearchRules(const arma::mat& referenceSet,
00045 const arma::mat& querySet,
00046 const math::Range& range,
00047 std::vector<std::vector<size_t> >& neighbors,
00048 std::vector<std::vector<double> >& distances,
00049 MetricType& metric);
00050
00057 double BaseCase(const size_t queryIndex, const size_t referenceIndex);
00058
00067 double Score(const size_t queryIndex, TreeType& referenceNode);
00068
00080 double Rescore(const size_t queryIndex,
00081 TreeType& referenceNode,
00082 const double oldScore) const;
00083
00092 double Score(TreeType& queryNode, TreeType& referenceNode);
00093
00105 double Rescore(TreeType& queryNode,
00106 TreeType& referenceNode,
00107 const double oldScore) const;
00108
00109 private:
00111 const arma::mat& referenceSet;
00112
00114 const arma::mat& querySet;
00115
00117 const math::Range& range;
00118
00120 std::vector<std::vector<size_t> >& neighbors;
00121
00123 std::vector<std::vector<double> >& distances;
00124
00126 MetricType& metric;
00127
00129 size_t lastQueryIndex;
00131 size_t lastReferenceIndex;
00132
00136 void AddResult(const size_t queryIndex,
00137 TreeType& referenceNode);
00138 };
00139
00140 };
00141 };
00142
00143
00144 #include "range_search_rules_impl.hpp"
00145
00146 #endif