MLPACK  1.0.11
dtb_rules.hpp
Go to the documentation of this file.
1 
22 #ifndef __MLPACK_METHODS_EMST_DTB_RULES_HPP
23 #define __MLPACK_METHODS_EMST_DTB_RULES_HPP
24 
25 #include <mlpack/core.hpp>
26 
27 #include "../neighbor_search/ns_traversal_info.hpp"
28 
29 namespace mlpack {
30 namespace emst {
31 
32 template<typename MetricType, typename TreeType>
33 class DTBRules
34 {
35  public:
36  DTBRules(const arma::mat& dataSet,
38  arma::vec& neighborsDistances,
39  arma::Col<size_t>& neighborsInComponent,
40  arma::Col<size_t>& neighborsOutComponent,
41  MetricType& metric);
42 
43  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
44 
53  double Score(const size_t queryIndex, TreeType& referenceNode);
54 
65  double Score(const size_t queryIndex,
66  TreeType& referenceNode,
67  const double baseCaseResult);
68 
80  double Rescore(const size_t queryIndex,
81  TreeType& referenceNode,
82  const double oldScore);
83 
92  double Score(TreeType& queryNode, TreeType& referenceNode);
93 
104  double Score(TreeType& queryNode,
105  TreeType& referenceNode,
106  const double baseCaseResult);
107 
119  double Rescore(TreeType& queryNode,
120  TreeType& referenceNode,
121  const double oldScore) const;
122 
124 
125  const TraversalInfoType& TraversalInfo() const { return traversalInfo; }
127 
129  size_t BaseCases() const { return baseCases; }
131  size_t& BaseCases() { return baseCases; }
132 
134  size_t Scores() const { return scores; }
136  size_t& Scores() { return scores; }
137 
138  private:
140  const arma::mat& dataSet;
141 
144 
146  arma::vec& neighborsDistances;
147 
150  arma::Col<size_t>& neighborsInComponent;
151 
154  arma::Col<size_t>& neighborsOutComponent;
155 
157  MetricType& metric;
158 
162  inline double CalculateBound(TreeType& queryNode) const;
163 
165 
167  size_t baseCases;
169  size_t scores;
170 
171 }; // class DTBRules
172 
173 } // emst namespace
174 } // mlpack namespace
175 
176 #include "dtb_rules_impl.hpp"
177 
178 #endif