dual_tree_traverser.hpp
Go to the documentation of this file.00001
00022 #ifndef __MLPACK_CORE_TREE_COVER_TREE_DUAL_TREE_TRAVERSER_HPP
00023 #define __MLPACK_CORE_TREE_COVER_TREE_DUAL_TREE_TRAVERSER_HPP
00024
00025 #include <mlpack/core.hpp>
00026 #include <queue>
00027
00028 namespace mlpack {
00029 namespace tree {
00030
00032 template<typename MetricType, typename RootPointPolicy, typename StatisticType>
00033 struct DualCoverTreeMapEntry;
00034
00035 template<typename MetricType, typename RootPointPolicy, typename StatisticType>
00036 template<typename RuleType>
00037 class CoverTree<MetricType, RootPointPolicy, StatisticType>::DualTreeTraverser
00038 {
00039 public:
00043 DualTreeTraverser(RuleType& rule);
00044
00051 void Traverse(CoverTree& queryNode, CoverTree& referenceNode);
00052
00056 void Traverse(CoverTree& queryNode,
00057 std::map<int, std::vector<DualCoverTreeMapEntry<
00058 MetricType, RootPointPolicy, StatisticType> > >&
00059 referenceMap);
00060
00062 size_t NumPrunes() const { return numPrunes; }
00064 size_t& NumPrunes() { return numPrunes; }
00065
00068 size_t NumVisited() const { return 0; }
00069 size_t NumScores() const { return 0; }
00070 size_t NumBaseCases() const { return 0; }
00071
00072 private:
00074 RuleType& rule;
00075
00077 size_t numPrunes;
00078
00080 void PruneMap(CoverTree& queryNode,
00081 std::map<int, std::vector<DualCoverTreeMapEntry<
00082 MetricType, RootPointPolicy, StatisticType> > >&
00083 referenceMap,
00084 std::map<int, std::vector<DualCoverTreeMapEntry<
00085 MetricType, RootPointPolicy, StatisticType> > >& childMap);
00086
00087 void ReferenceRecursion(CoverTree& queryNode,
00088 std::map<int, std::vector<DualCoverTreeMapEntry<
00089 MetricType, RootPointPolicy, StatisticType> > >&
00090 referenceMap);
00091 };
00092
00093 };
00094 };
00095
00096
00097 #include "dual_tree_traverser_impl.hpp"
00098
00099 #endif