fastmks_rules.hpp

Go to the documentation of this file.
00001 
00022 #ifndef __MLPACK_METHODS_FASTMKS_FASTMKS_RULES_HPP
00023 #define __MLPACK_METHODS_FASTMKS_FASTMKS_RULES_HPP
00024 
00025 #include <mlpack/core.hpp>
00026 #include <mlpack/core/tree/cover_tree/cover_tree.hpp>
00027 
00028 namespace mlpack {
00029 namespace fastmks {
00030 
00034 template<typename KernelType, typename TreeType>
00035 class FastMKSRules
00036 {
00037  public:
00038   FastMKSRules(const arma::mat& referenceSet,
00039                const arma::mat& querySet,
00040                arma::Mat<size_t>& indices,
00041                arma::mat& products,
00042                KernelType& kernel);
00043 
00045   double BaseCase(const size_t queryIndex, const size_t referenceIndex);
00046 
00055   double Score(const size_t queryIndex, TreeType& referenceNode);
00056 
00065   double Score(TreeType& queryNode, TreeType& referenceNode);
00066 
00078   double Rescore(const size_t queryIndex,
00079                  TreeType& referenceNode,
00080                  const double oldScore) const;
00081 
00093   double Rescore(TreeType& queryNode,
00094                  TreeType& referenceNode,
00095                  const double oldScore) const;
00096 
00098   size_t BaseCases() const { return baseCases; }
00100   size_t& BaseCases() { return baseCases; }
00101 
00103   size_t Scores() const { return scores; }
00105   size_t& Scores() { return scores; }
00106 
00107  private:
00109   const arma::mat& referenceSet;
00111   const arma::mat& querySet;
00112 
00114   arma::Mat<size_t>& indices;
00116   arma::mat& products;
00117 
00119   arma::vec queryKernels;
00121   arma::vec referenceKernels;
00122 
00124   KernelType& kernel;
00125 
00127   size_t lastQueryIndex;
00129   size_t lastReferenceIndex;
00131   double lastKernel;
00132 
00134   double CalculateBound(TreeType& queryNode) const;
00135 
00137   void InsertNeighbor(const size_t queryIndex,
00138                       const size_t pos,
00139                       const size_t neighbor,
00140                       const double distance);
00141 
00143   size_t baseCases;
00145   size_t scores;
00146 };
00147 
00148 }; // namespace fastmks
00149 }; // namespace mlpack
00150 
00151 // Include implementation.
00152 #include "fastmks_rules_impl.hpp"
00153 
00154 #endif

Generated on 13 Aug 2014 for MLPACK by  doxygen 1.6.1