MLPACK  1.0.4
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 
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