[mlpack-git] master: Use ClosestQueryNode() not MaxQueryNodeDistance(). Eventually MaxQueryNodeDistance() will not be reset to DBL_MAX every iteration. (e72ab4c)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Thu Mar 12 16:01:41 EDT 2015


Repository : https://github.com/mlpack/mlpack

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/eddd7167d69b6c88b271ef2e51d1c20e13f1acd8...70342dd8e5c17e0c164cfb8189748671e9c0dd44

>---------------------------------------------------------------

commit e72ab4c744eb9ade8476a0452b86604c9396ef4e
Author: Ryan Curtin <ryan at ratml.org>
Date:   Mon Jan 12 18:11:30 2015 -0500

    Use ClosestQueryNode() not MaxQueryNodeDistance(). Eventually MaxQueryNodeDistance() will not be reset to DBL_MAX every iteration.


>---------------------------------------------------------------

e72ab4c744eb9ade8476a0452b86604c9396ef4e
 src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
index b13e544..34df556 100644
--- a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
+++ b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
@@ -121,15 +121,19 @@ double DualTreeKMeansRules<MetricType, TreeType>::Score(
   distanceCalculations += 2;
   score = PellegMooreScore(queryNode, referenceNode, minDistance);
 
-  if (referenceNode.Stat().MaxQueryNodeDistance() == DBL_MAX &&
+  if (referenceNode.Stat().ClosestQueryNode() == NULL &&
       referenceNode.Parent() != NULL &&
-      referenceNode.Parent()->Stat().MaxQueryNodeDistance() != DBL_MAX)
+      referenceNode.Parent()->Stat().ClosestQueryNode() != NULL)
   {
     referenceNode.Stat().ClosestQueryNode() =
         referenceNode.Parent()->Stat().ClosestQueryNode();
-    referenceNode.Stat().MaxQueryNodeDistance() =
-        referenceNode.Parent()->Stat().MaxQueryNodeDistance();
+    referenceNode.Stat().MaxQueryNodeDistance() = std::min(
+        referenceNode.Parent()->Stat().MaxQueryNodeDistance(),
+        referenceNode.Stat().MaxQueryNodeDistance());
   }
+  else if (referenceNode.Parent() != NULL &&
+           referenceNode.Parent()->Stat().ClosestQueryNode() == NULL)
+    Log::Fatal << "wtf\n";
 
   if (maxDistance < referenceNode.Stat().MaxQueryNodeDistance() ||
       referenceNode.Stat().ClosestQueryNode() == NULL)



More information about the mlpack-git mailing list