[mlpack-git] master: Optimize GetNearestChild for Spill Trees. (657e0eb)

gitdub at mlpack.org gitdub at mlpack.org
Sat Aug 20 14:56:07 EDT 2016


Repository : https://github.com/mlpack/mlpack
On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/3274b05fcc545c3b36f783316fea2e22f79c3d03...1c77230c7d3b9c45fb102cd3c632d9c7248e085e

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

commit 657e0eb8fb46b3dc756ed7609013f878c2ecb2ce
Author: MarcosPividori <marcos.pividori at gmail.com>
Date:   Fri Aug 19 12:57:34 2016 -0300

    Optimize GetNearestChild for Spill Trees.


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

657e0eb8fb46b3dc756ed7609013f878c2ecb2ce
 src/mlpack/core/tree/spill_tree/spill_tree_impl.hpp | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/mlpack/core/tree/spill_tree/spill_tree_impl.hpp b/src/mlpack/core/tree/spill_tree/spill_tree_impl.hpp
index a5774af..815fb23 100644
--- a/src/mlpack/core/tree/spill_tree/spill_tree_impl.hpp
+++ b/src/mlpack/core/tree/spill_tree/spill_tree_impl.hpp
@@ -325,9 +325,21 @@ SpillTree<MetricType, StatisticType, MatType, HyperplaneType, SplitType>::
 {
   if (IsLeaf())
     return *this;
-  if (left && (!right || left->MinDistance(point) <= right->MinDistance(point)))
-        return *left;
-  return *right;
+
+  if (overlappingNode)
+  {
+    if (left && (!right || hyperplane.Left(point)))
+      return *left;
+    else
+      return *right;
+  }
+  else
+  {
+    if (left && (!right ||
+        left->MinDistance(point) <= right->MinDistance(point)))
+      return *left;
+    return *right;
+  }
 }
 
 /**
@@ -349,8 +361,9 @@ SpillTree<MetricType, StatisticType, MatType, HyperplaneType, SplitType>::
 {
   if (IsLeaf())
     return *this;
+
   if (left && (!right || left->MaxDistance(point) > right->MaxDistance(point)))
-        return *left;
+    return *left;
   return *right;
 }
 




More information about the mlpack-git mailing list