dtb_rules.hpp
Go to the documentation of this file.00001
00022 #ifndef __MLPACK_METHODS_EMST_DTB_RULES_HPP
00023 #define __MLPACK_METHODS_EMST_DTB_RULES_HPP
00024
00025 #include <mlpack/core.hpp>
00026
00027 namespace mlpack {
00028 namespace emst {
00029
00030 template<typename MetricType, typename TreeType>
00031 class DTBRules
00032 {
00033 public:
00034 DTBRules(const arma::mat& dataSet,
00035 UnionFind& connections,
00036 arma::vec& neighborsDistances,
00037 arma::Col<size_t>& neighborsInComponent,
00038 arma::Col<size_t>& neighborsOutComponent,
00039 MetricType& metric);
00040
00041 double BaseCase(const size_t queryIndex, const size_t referenceIndex);
00042
00051 double Score(const size_t queryIndex, TreeType& referenceNode);
00052
00063 double Score(const size_t queryIndex,
00064 TreeType& referenceNode,
00065 const double baseCaseResult);
00066
00078 double Rescore(const size_t queryIndex,
00079 TreeType& referenceNode,
00080 const double oldScore);
00081
00090 double Score(TreeType& queryNode, TreeType& referenceNode) const;
00091
00102 double Score(TreeType& queryNode,
00103 TreeType& referenceNode,
00104 const double baseCaseResult) const;
00105
00117 double Rescore(TreeType& queryNode,
00118 TreeType& referenceNode,
00119 const double oldScore) const;
00120
00121 private:
00123 const arma::mat& dataSet;
00124
00126 UnionFind& connections;
00127
00129 arma::vec& neighborsDistances;
00130
00133 arma::Col<size_t>& neighborsInComponent;
00134
00137 arma::Col<size_t>& neighborsOutComponent;
00138
00140 MetricType& metric;
00141
00145 inline double CalculateBound(TreeType& queryNode) const;
00146
00147 };
00148
00149 }
00150 }
00151
00152 #include "dtb_rules_impl.hpp"
00153
00154 #endif