14 #ifndef __MLPACK_METHODS_FASTMKS_FASTMKS_RULES_HPP
15 #define __MLPACK_METHODS_FASTMKS_FASTMKS_RULES_HPP
20 #include "../neighbor_search/ns_traversal_info.hpp"
28 template<
typename KernelType,
typename TreeType>
33 const typename TreeType::Mat&
querySet,
39 double BaseCase(
const size_t queryIndex,
const size_t referenceIndex);
49 double Score(
const size_t queryIndex, TreeType& referenceNode);
59 double Score(TreeType& queryNode, TreeType& referenceNode);
72 double Rescore(
const size_t queryIndex,
73 TreeType& referenceNode,
74 const double oldScore)
const;
87 double Rescore(TreeType& queryNode,
88 TreeType& referenceNode,
89 const double oldScore)
const;
138 const size_t neighbor,
139 const double distance);
153 #include "fastmks_rules_impl.hpp"
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.
const TraversalInfoType & TraversalInfo() const
size_t Scores() const
Get the number of times Score() was called.
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.
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.
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()
double Rescore(const size_t queryIndex, TreeType &referenceNode, const double oldScore) const
Re-evaluate the score for recursion order.
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.
size_t BaseCases() const
Get the number of times BaseCase() was called.
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.
TraversalInfoType traversalInfo
double CalculateBound(TreeType &queryNode) const
Calculate the bound for a given query node.
size_t scores
For benchmarking.