[mlpack-svn] r13974 - mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Tue Dec 4 18:22:13 EST 2012
Author: rcurtin
Date: 2012-12-04 18:22:13 -0500 (Tue, 04 Dec 2012)
New Revision: 13974
Modified:
mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/furthest_neighbor_sort.hpp
mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/furthest_neighbor_sort_impl.hpp
mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/nearest_neighbor_sort.hpp
mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/nearest_neighbor_sort_impl.hpp
Log:
Add function for cover tree pruning.
Modified: mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/furthest_neighbor_sort.hpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/furthest_neighbor_sort.hpp 2012-12-04 21:55:14 UTC (rev 13973)
+++ mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/furthest_neighbor_sort.hpp 2012-12-04 23:22:13 UTC (rev 13974)
@@ -73,6 +73,24 @@
const double centerToCenterDistance);
/**
+ * Return the best possible distance between the query node and the reference
+ * child node given the base case distance between the query node and the
+ * reference node. TreeType::ParentDistance() must be implemented to use
+ * this.
+ *
+ * @param queryNode Query node.
+ * @param referenceNode Reference node.
+ * @param referenceChildNode Child of reference node which is being inspected.
+ * @param centerToCenterDistance Distance between centers of query node and
+ * reference node.
+ */
+ template<typename TreeType>
+ static double BestNodeToNodeDistance(const TreeType* queryNode,
+ const TreeType* referenceNode,
+ const TreeType* referenceChildNode,
+ const double centerToCenterDistance);
+
+ /**
* Return the best possible distance between a node and a point. In our case,
* this is the maximum distance between the tree node and the point using the
* given distance function.
Modified: mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/furthest_neighbor_sort_impl.hpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/furthest_neighbor_sort_impl.hpp 2012-12-04 21:55:14 UTC (rev 13973)
+++ mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/furthest_neighbor_sort_impl.hpp 2012-12-04 23:22:13 UTC (rev 13974)
@@ -31,6 +31,17 @@
}
template<typename TreeType>
+inline double FurthestNeighborSort::BestNodeToNodeDistance(
+ const TreeType* queryNode,
+ const TreeType* referenceNode,
+ const TreeType* referenceChildNode,
+ const double centerToCenterDistance)
+{
+ return queryNode->MaxDistance(referenceNode, centerToCenterDistance) +
+ referenceChildNode->ParentDistance();
+}
+
+template<typename TreeType>
inline double FurthestNeighborSort::BestPointToNodeDistance(
const arma::vec& point,
const TreeType* referenceNode)
Modified: mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/nearest_neighbor_sort.hpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/nearest_neighbor_sort.hpp 2012-12-04 21:55:14 UTC (rev 13973)
+++ mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/nearest_neighbor_sort.hpp 2012-12-04 23:22:13 UTC (rev 13974)
@@ -75,7 +75,25 @@
static double BestNodeToNodeDistance(const TreeType* queryNode,
const TreeType* referenceNode,
const double centerToCenterDistance);
+
/**
+ * Return the best possible distance between the query node and the reference
+ * child node given the base case distance between the query node and the
+ * reference node. TreeType::ParentDistance() must be implemented to use
+ * this.
+ *
+ * @param queryNode Query node.
+ * @param referenceNode Reference node.
+ * @param referenceChildNode Child of reference node which is being inspected.
+ * @param centerToCenterDistance Distance between centers of query node and
+ * reference node.
+ */
+ template<typename TreeType>
+ static double BestNodeToNodeDistance(const TreeType* queryNode,
+ const TreeType* referenceNode,
+ const TreeType* referenceChildNode,
+ const double centerToCenterDistance);
+ /**
* Return the best possible distance between a node and a point. In our case,
* this is the minimum distance between the tree node and the point using the
* given distance function.
Modified: mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/nearest_neighbor_sort_impl.hpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/nearest_neighbor_sort_impl.hpp 2012-12-04 21:55:14 UTC (rev 13973)
+++ mlpack/trunk/src/mlpack/methods/neighbor_search/sort_policies/nearest_neighbor_sort_impl.hpp 2012-12-04 23:22:13 UTC (rev 13974)
@@ -31,6 +31,17 @@
}
template<typename TreeType>
+inline double NearestNeighborSort::BestNodeToNodeDistance(
+ const TreeType* queryNode,
+ const TreeType* /* referenceNode */,
+ const TreeType* referenceChildNode,
+ const double centerToCenterDistance)
+{
+ return queryNode->MinDistance(referenceChildNode, centerToCenterDistance) -
+ referenceChildNode->ParentDistance();
+}
+
+template<typename TreeType>
inline double NearestNeighborSort::BestPointToNodeDistance(
const arma::vec& point,
const TreeType* referenceNode)
More information about the mlpack-svn
mailing list