mlpack  2.0.1
fastmks_rules.hpp
Go to the documentation of this file.
1 
14 #ifndef __MLPACK_METHODS_FASTMKS_FASTMKS_RULES_HPP
15 #define __MLPACK_METHODS_FASTMKS_FASTMKS_RULES_HPP
16 
17 #include <mlpack/core.hpp>
19 
20 #include "../neighbor_search/ns_traversal_info.hpp"
21 
22 namespace mlpack {
23 namespace fastmks {
24 
28 template<typename KernelType, typename TreeType>
30 {
31  public:
32  FastMKSRules(const typename TreeType::Mat& referenceSet,
33  const typename TreeType::Mat& querySet,
34  arma::Mat<size_t>& indices,
35  arma::mat& products,
36  KernelType& kernel);
37 
39  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
40 
49  double Score(const size_t queryIndex, TreeType& referenceNode);
50 
59  double Score(TreeType& queryNode, TreeType& referenceNode);
60 
72  double Rescore(const size_t queryIndex,
73  TreeType& referenceNode,
74  const double oldScore) const;
75 
87  double Rescore(TreeType& queryNode,
88  TreeType& referenceNode,
89  const double oldScore) const;
90 
92  size_t BaseCases() const { return baseCases; }
94  size_t& BaseCases() { return baseCases; }
95 
97  size_t Scores() const { return scores; }
99  size_t& Scores() { return scores; }
100 
102 
103  const TraversalInfoType& TraversalInfo() const { return traversalInfo; }
104  TraversalInfoType& TraversalInfo() { return traversalInfo; }
105 
106  private:
108  const typename TreeType::Mat& referenceSet;
110  const typename TreeType::Mat& querySet;
111 
113  arma::Mat<size_t>& indices;
115  arma::mat& products;
116 
118  arma::vec queryKernels;
120  arma::vec referenceKernels;
121 
123  KernelType& kernel;
124 
130  double lastKernel;
131 
133  double CalculateBound(TreeType& queryNode) const;
134 
136  void InsertNeighbor(const size_t queryIndex,
137  const size_t pos,
138  const size_t neighbor,
139  const double distance);
140 
142  size_t baseCases;
144  size_t scores;
145 
146  TraversalInfoType traversalInfo;
147 };
148 
149 } // namespace fastmks
150 } // namespace mlpack
151 
152 // Include implementation.
153 #include "fastmks_rules_impl.hpp"
154 
155 #endif
double Rescore(const size_t queryIndex, TreeType &referenceNode, const double oldScore) const
Re-evaluate the score for recursion order.
const TreeType::Mat & referenceSet
The reference dataset.
double BaseCase(const size_t queryIndex, const size_t referenceIndex)
Compute the base case (kernel value) between two points.
FastMKSRules(const typename TreeType::Mat &referenceSet, const typename TreeType::Mat &querySet, arma::Mat< size_t > &indices, arma::mat &products, KernelType &kernel)
Linear algebra utility functions, generally performed on matrices or vectors.
const TraversalInfoType & TraversalInfo() const
size_t Scores() const
Get the number of times Score() was called.
arma::vec queryKernels
Cached query set self-kernels (|| q || for each q).
size_t & BaseCases()
Modify the number of times BaseCase() was called.
double lastKernel
The last kernel evaluation resulting from BaseCase().
Traversal information for NeighborSearch.
size_t & Scores()
Modify the number of times Score() was called.
const TreeType::Mat & querySet
The query dataset.
size_t BaseCases() const
Get the number of times BaseCase() was called.
arma::vec referenceKernels
Cached reference set self-kernels (|| r || for each r).
double Score(const size_t queryIndex, TreeType &referenceNode)
Get the score for recursion order.
TraversalInfoType & TraversalInfo()
size_t baseCases
For benchmarking.
Include all of the base components required to write MLPACK methods, and the main MLPACK Doxygen docu...
The base case and pruning rules for FastMKS (fast max-kernel search).
arma::Mat< size_t > & indices
The indices of the maximum kernel results.
size_t lastReferenceIndex
The last reference index BaseCase() was called with.
arma::mat & products
The maximum kernels.
neighbor::NeighborSearchTraversalInfo< TreeType > TraversalInfoType
size_t lastQueryIndex
The last query index BaseCase() was called with.
double CalculateBound(TreeType &queryNode) const
Calculate the bound for a given query node.
void InsertNeighbor(const size_t queryIndex, const size_t pos, const size_t neighbor, const double distance)
Utility function to insert neighbor into list of results.
KernelType & kernel
The instantiated kernel.
size_t scores
For benchmarking.