MLPACK
1.0.4
|
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 00050 double Prescore(TreeType& queryNode, 00051 TreeType& referenceNode, 00052 TreeType& referenceChildNode, 00053 const double baseCaseResult) const; 00054 00063 double Score(const size_t queryIndex, TreeType& referenceNode) const; 00064 00075 double Score(const size_t queryIndex, 00076 TreeType& referenceNode, 00077 const double baseCaseResult) const; 00078 00090 double Rescore(const size_t queryIndex, 00091 TreeType& referenceNode, 00092 const double oldScore) const; 00093 00102 double Score(TreeType& queryNode, TreeType& referenceNode) const; 00103 00114 double Score(TreeType& queryNode, 00115 TreeType& referenceNode, 00116 const double baseCaseResult) const; 00117 00129 double Rescore(TreeType& queryNode, 00130 TreeType& referenceNode, 00131 const double oldScore) const; 00132 00133 private: 00135 const arma::mat& referenceSet; 00136 00138 const arma::mat& querySet; 00139 00141 arma::Mat<size_t>& neighbors; 00142 00144 arma::mat& distances; 00145 00147 MetricType& metric; 00148 00158 void InsertNeighbor(const size_t queryIndex, 00159 const size_t pos, 00160 const size_t neighbor, 00161 const double distance); 00162 }; 00163 00164 }; // namespace neighbor 00165 }; // namespace mlpack 00166 00167 // Include implementation. 00168 #include "neighbor_search_rules_impl.hpp" 00169 00170 #endif // __MLPACK_METHODS_NEIGHBOR_SEARCH_NEIGHBOR_SEARCH_RULES_HPP