MLPACK  1.0.8
fastmks_rules.hpp
Go to the documentation of this file.
1 
22 #ifndef __MLPACK_METHODS_FASTMKS_FASTMKS_RULES_HPP
23 #define __MLPACK_METHODS_FASTMKS_FASTMKS_RULES_HPP
24 
25 #include <mlpack/core.hpp>
27 
28 namespace mlpack {
29 namespace fastmks {
30 
34 template<typename KernelType, typename TreeType>
36 {
37  public:
38  FastMKSRules(const arma::mat& referenceSet,
39  const arma::mat& querySet,
40  arma::Mat<size_t>& indices,
41  arma::mat& products,
42  KernelType& kernel);
43 
45  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
46 
55  double Score(const size_t queryIndex, TreeType& referenceNode);
56 
65  double Score(TreeType& queryNode, TreeType& referenceNode);
66 
78  double Rescore(const size_t queryIndex,
79  TreeType& referenceNode,
80  const double oldScore) const;
81 
93  double Rescore(TreeType& queryNode,
94  TreeType& referenceNode,
95  const double oldScore) const;
96 
98  size_t BaseCases() const { return baseCases; }
100  size_t& BaseCases() { return baseCases; }
101 
103  size_t Scores() const { return scores; }
105  size_t& Scores() { return scores; }
106 
107  private:
109  const arma::mat& referenceSet;
111  const arma::mat& querySet;
112 
114  arma::Mat<size_t>& indices;
116  arma::mat& products;
117 
119  arma::vec queryKernels;
121  arma::vec referenceKernels;
122 
124  KernelType& kernel;
125 
131  double lastKernel;
132 
134  double CalculateBound(TreeType& queryNode) const;
135 
137  void InsertNeighbor(const size_t queryIndex,
138  const size_t pos,
139  const size_t neighbor,
140  const double distance);
141 
143  size_t baseCases;
145  size_t scores;
146 };
147 
148 }; // namespace fastmks
149 }; // namespace mlpack
150 
151 // Include implementation.
152 #include "fastmks_rules_impl.hpp"
153 
154 #endif