[mlpack-svn] r13385 - mlpack/trunk/src/mlpack/methods/neighbor_search
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Fri Aug 10 16:10:36 EDT 2012
Author: rcurtin
Date: 2012-08-10 16:10:36 -0400 (Fri, 10 Aug 2012)
New Revision: 13385
Modified:
mlpack/trunk/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp
mlpack/trunk/src/mlpack/methods/neighbor_search/neighbor_search_rules_impl.hpp
Log:
Remove unused CanPrune().
Modified: mlpack/trunk/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp 2012-08-10 20:10:21 UTC (rev 13384)
+++ mlpack/trunk/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp 2012-08-10 20:10:36 UTC (rev 13385)
@@ -23,12 +23,6 @@
double BaseCase(const size_t queryIndex, const size_t referenceIndex);
- // For single-tree traversal.
- bool CanPrune(const size_t queryIndex, TreeType& referenceNode);
-
- // For dual-tree traversal.
- bool CanPrune(TreeType& queryNode, TreeType& referenceNode);
-
// Update bounds. Needs a better name.
void UpdateAfterRecursion(TreeType& queryNode, TreeType& referenceNode);
@@ -82,6 +76,20 @@
double Score(TreeType& queryNode, TreeType& referenceNode) const;
/**
+ * Get the score for recursion order, passing the base case result (in the
+ * situation where it may be needed to calculate the recursion order). A low
+ * score indicates priority for recursion, while DBL_MAX indicates that the
+ * node should not be recursed into at all (it should be pruned).
+ *
+ * @param queryNode Candidate query node to recurse into.
+ * @param referenceNode Candidate reference node to recurse into.
+ * @param baseCaseResult Result of BaseCase(queryIndex, referenceNode).
+ */
+ double Score(TreeType& queryNode,
+ TreeType& referenceNode,
+ const double baseCaseResult) const;
+
+ /**
* Re-evaluate the score for recursion order. A low score indicates priority
* for recursion, while DBL_MAX indicates that the node should not be recursed
* into at all (it should be pruned). This is used when the score has already
Modified: mlpack/trunk/src/mlpack/methods/neighbor_search/neighbor_search_rules_impl.hpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/neighbor_search/neighbor_search_rules_impl.hpp 2012-08-10 20:10:21 UTC (rev 13384)
+++ mlpack/trunk/src/mlpack/methods/neighbor_search/neighbor_search_rules_impl.hpp 2012-08-10 20:10:36 UTC (rev 13385)
@@ -53,34 +53,6 @@
}
template<typename SortPolicy, typename MetricType, typename TreeType>
-inline bool NeighborSearchRules<SortPolicy, MetricType, TreeType>::CanPrune(
- const size_t queryIndex,
- TreeType& referenceNode)
-{
- // Find the best distance between the query point and the node.
- const arma::vec queryPoint = querySet.unsafe_col(queryIndex);
- const double distance =
- SortPolicy::BestPointToNodeDistance(queryPoint, &referenceNode);
- const double bestDistance = distances(distances.n_rows - 1, queryIndex);
-
- // If this is better than the best distance we've seen so far, maybe there
- // will be something down this node.
- return !(SortPolicy::IsBetter(distance, bestDistance));
-}
-
-template<typename SortPolicy, typename MetricType, typename TreeType>
-inline bool NeighborSearchRules<SortPolicy, MetricType, TreeType>::CanPrune(
- TreeType& queryNode,
- TreeType& referenceNode)
-{
- const double distance = SortPolicy::BestNodeToNodeDistance(
- &queryNode, &referenceNode);
- const double bestDistance = queryNode.Stat().Bound();
-
- return !(SortPolicy::IsBetter(distance, bestDistance));
-}
-
-template<typename SortPolicy, typename MetricType, typename TreeType>
void NeighborSearchRules<
SortPolicy,
MetricType,
@@ -167,6 +139,19 @@
}
template<typename SortPolicy, typename MetricType, typename TreeType>
+inline double NeighborSearchRules<SortPolicy, MetricType, TreeType>::Score(
+ TreeType& queryNode,
+ TreeType& referenceNode,
+ const double baseCaseResult) const
+{
+ const double distance = SortPolicy::BestNodeToNodeDistance(&queryNode,
+ &referenceNode, baseCaseResult);
+ const double bestDistance = queryNode.Stat().Bound();
+
+ return (SortPolicy::IsBetter(distance, bestDistance)) ? distance : DBL_MAX;
+}
+
+template<typename SortPolicy, typename MetricType, typename TreeType>
inline double NeighborSearchRules<SortPolicy, MetricType, TreeType>::Rescore(
TreeType& queryNode,
TreeType& /* referenceNode */,
More information about the mlpack-svn
mailing list