MLPACK  1.0.4
dtb_rules.hpp
Go to the documentation of this file.
00001 
00024 #ifndef __MLPACK_METHODS_EMST_DTB_RULES_HPP
00025 #define __MLPACK_METHODS_EMST_DTB_RULES_HPP
00026 
00027 #include <mlpack/core.hpp>
00028 
00029 namespace mlpack {
00030 namespace emst {
00031 
00032 template<typename MetricType, typename TreeType>
00033 class DTBRules
00034 {
00035  public:
00036   
00037   DTBRules(const arma::mat& dataSet,
00038            UnionFind& connections,
00039            arma::vec& neighborsDistances,
00040            arma::Col<size_t>& neighborsInComponent,
00041            arma::Col<size_t>& neighborsOutComponent,
00042            MetricType& metric);
00043   
00044   double BaseCase(const size_t queryIndex, const size_t referenceIndex);
00045   
00046   // Update bounds.  Needs a better name.
00047   void UpdateAfterRecursion(TreeType& queryNode, TreeType& referenceNode);
00048   
00057   double Score(const size_t queryIndex, TreeType& referenceNode);
00058   
00069   double Score(const size_t queryIndex,
00070                TreeType& referenceNode,
00071                const double baseCaseResult);
00072   
00084   double Rescore(const size_t queryIndex,
00085                  TreeType& referenceNode,
00086                  const double oldScore);
00087   
00096   double Score(TreeType& queryNode, TreeType& referenceNode) const;
00097   
00108   double Score(TreeType& queryNode,
00109                TreeType& referenceNode,
00110                const double baseCaseResult) const;
00111   
00123   double Rescore(TreeType& queryNode,
00124                  TreeType& referenceNode,
00125                  const double oldScore) const;
00126 
00127  private:
00128   
00129   // This class needs to know what points are connected to one another
00130   
00131   
00132   // Things I need
00133   // UnionFind storing the tree structure at this iteration
00134   // neighborDistances
00135   // neighborInComponent
00136   // neighborOutComponent
00137   
00139   const arma::mat& dataSet;
00140   
00142   UnionFind& connections;
00143   
00145   arma::vec& neighborsDistances;
00146   
00149   arma::Col<size_t>& neighborsInComponent;
00150   
00153   arma::Col<size_t>& neighborsOutComponent;
00154   
00156   MetricType& metric;
00157   
00158 }; // class DTBRules
00159 
00160 } // emst namespace
00161 } // mlpack namespace
00162 
00163 #include "dtb_rules_impl.hpp"
00164 
00165 #endif