neighbor_search_rules.hpp
Go to the documentation of this file.00001
00023 #ifndef __MLPACK_METHODS_NEIGHBOR_SEARCH_NEIGHBOR_SEARCH_RULES_HPP
00024 #define __MLPACK_METHODS_NEIGHBOR_SEARCH_NEIGHBOR_SEARCH_RULES_HPP
00025
00026 namespace mlpack {
00027 namespace neighbor {
00028
00029 template<typename SortPolicy, typename MetricType, typename TreeType>
00030 class NeighborSearchRules
00031 {
00032 public:
00033 NeighborSearchRules(const arma::mat& referenceSet,
00034 const arma::mat& querySet,
00035 arma::Mat<size_t>& neighbors,
00036 arma::mat& distances,
00037 MetricType& metric);
00038
00039 double BaseCase(const size_t queryIndex, const size_t referenceIndex);
00040
00049 double Score(const size_t queryIndex, TreeType& referenceNode);
00050
00062 double Rescore(const size_t queryIndex,
00063 TreeType& referenceNode,
00064 const double oldScore) const;
00065
00074 double Score(TreeType& queryNode, TreeType& referenceNode);
00075
00087 double Rescore(TreeType& queryNode,
00088 TreeType& referenceNode,
00089 const double oldScore) const;
00090
00091 private:
00093 const arma::mat& referenceSet;
00094
00096 const arma::mat& querySet;
00097
00099 arma::Mat<size_t>& neighbors;
00100
00102 arma::mat& distances;
00103
00105 MetricType& metric;
00106
00108 size_t lastQueryIndex;
00110 size_t lastReferenceIndex;
00112 double lastBaseCase;
00113
00117 double CalculateBound(TreeType& queryNode) const;
00118
00128 void InsertNeighbor(const size_t queryIndex,
00129 const size_t pos,
00130 const size_t neighbor,
00131 const double distance);
00132 };
00133
00134 };
00135 };
00136
00137
00138 #include "neighbor_search_rules_impl.hpp"
00139
00140 #endif // __MLPACK_METHODS_NEIGHBOR_SEARCH_NEIGHBOR_SEARCH_RULES_HPP