mlpack  1.0.12
dtb_rules.hpp
Go to the documentation of this file.
1 
14 #ifndef __MLPACK_METHODS_EMST_DTB_RULES_HPP
15 #define __MLPACK_METHODS_EMST_DTB_RULES_HPP
16 
17 #include <mlpack/core.hpp>
18 
19 #include "../neighbor_search/ns_traversal_info.hpp"
20 
21 namespace mlpack {
22 namespace emst {
23 
24 template<typename MetricType, typename TreeType>
25 class DTBRules
26 {
27  public:
28  DTBRules(const arma::mat& dataSet,
30  arma::vec& neighborsDistances,
31  arma::Col<size_t>& neighborsInComponent,
32  arma::Col<size_t>& neighborsOutComponent,
33  MetricType& metric);
34 
35  double BaseCase(const size_t queryIndex, const size_t referenceIndex);
36 
45  double Score(const size_t queryIndex, TreeType& referenceNode);
46 
57  double Score(const size_t queryIndex,
58  TreeType& referenceNode,
59  const double baseCaseResult);
60 
72  double Rescore(const size_t queryIndex,
73  TreeType& referenceNode,
74  const double oldScore);
75 
84  double Score(TreeType& queryNode, TreeType& referenceNode);
85 
96  double Score(TreeType& queryNode,
97  TreeType& referenceNode,
98  const double baseCaseResult);
99 
111  double Rescore(TreeType& queryNode,
112  TreeType& referenceNode,
113  const double oldScore) const;
114 
116 
117  const TraversalInfoType& TraversalInfo() const { return traversalInfo; }
118  TraversalInfoType& TraversalInfo() { return traversalInfo; }
119 
121  size_t BaseCases() const { return baseCases; }
123  size_t& BaseCases() { return baseCases; }
124 
126  size_t Scores() const { return scores; }
128  size_t& Scores() { return scores; }
129 
130  private:
132  const arma::mat& dataSet;
133 
136 
138  arma::vec& neighborsDistances;
139 
142  arma::Col<size_t>& neighborsInComponent;
143 
146  arma::Col<size_t>& neighborsOutComponent;
147 
149  MetricType& metric;
150 
154  inline double CalculateBound(TreeType& queryNode) const;
155 
156  TraversalInfoType traversalInfo;
157 
159  size_t baseCases;
161  size_t scores;
162 
163 }; // class DTBRules
164 
165 } // emst namespace
166 } // mlpack namespace
167 
168 #include "dtb_rules_impl.hpp"
169 
170 #endif
A Union-Find data structure.
Definition: union_find.hpp:32
double CalculateBound(TreeType &queryNode) const
Update the bound for the given query node.
size_t scores
The number of node combinations that have been scored.
Definition: dtb_rules.hpp:161
double BaseCase(const size_t queryIndex, const size_t referenceIndex)
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: load.hpp:23
arma::vec & neighborsDistances
The distance to the candidate nearest neighbor for each component.
Definition: dtb_rules.hpp:138
size_t & BaseCases()
Modify the number of base cases performed.
Definition: dtb_rules.hpp:123
TraversalInfoType traversalInfo
Definition: dtb_rules.hpp:156
size_t Scores() const
Get the number of node combinations that have been scored.
Definition: dtb_rules.hpp:126
UnionFind & connections
Stores the tree structure so far.
Definition: dtb_rules.hpp:135
arma::Col< size_t > & neighborsInComponent
The index of the point in the component that is an endpoint of the candidate edge.
Definition: dtb_rules.hpp:142
Traversal information for NeighborSearch.
TraversalInfoType & TraversalInfo()
Definition: dtb_rules.hpp:118
DTBRules(const arma::mat &dataSet, UnionFind &connections, arma::vec &neighborsDistances, arma::Col< size_t > &neighborsInComponent, arma::Col< size_t > &neighborsOutComponent, MetricType &metric)
neighbor::NeighborSearchTraversalInfo< TreeType > TraversalInfoType
Definition: dtb_rules.hpp:115
double Score(const size_t queryIndex, TreeType &referenceNode)
Get the score for recursion order.
MetricType & metric
The instantiated metric.
Definition: dtb_rules.hpp:149
size_t baseCases
The number of base cases calculated.
Definition: dtb_rules.hpp:159
size_t BaseCases() const
Get the number of base cases performed.
Definition: dtb_rules.hpp:121
const arma::mat & dataSet
The data points.
Definition: dtb_rules.hpp:132
arma::Col< size_t > & neighborsOutComponent
The index of the point outside of the component that is an endpoint of the candidate edge...
Definition: dtb_rules.hpp:146
size_t & Scores()
Modify the number of node combinations that have been scored.
Definition: dtb_rules.hpp:128
double Rescore(const size_t queryIndex, TreeType &referenceNode, const double oldScore)
Re-evaluate the score for recursion order.
const TraversalInfoType & TraversalInfo() const
Definition: dtb_rules.hpp:117