[mlpack-svn] r16548 - mlpack/trunk/src/mlpack/core/tree/rectangle_tree

fastlab-svn at coffeetalk-1.cc.gatech.edu fastlab-svn at coffeetalk-1.cc.gatech.edu
Mon May 26 07:35:16 EDT 2014


Author: andrewmw94
Date: Mon May 26 07:35:15 2014
New Revision: 16548

Log:
more code for the RectangleTree.  Still not built yet.

Modified:
   mlpack/trunk/src/mlpack/core/tree/rectangle_tree/rectangle_tree.hpp
   mlpack/trunk/src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp

Modified: mlpack/trunk/src/mlpack/core/tree/rectangle_tree/rectangle_tree.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/core/tree/rectangle_tree/rectangle_tree.hpp	(original)
+++ mlpack/trunk/src/mlpack/core/tree/rectangle_tree/rectangle_tree.hpp	Mon May 26 07:35:15 2014
@@ -271,7 +271,7 @@
   size_t& Begin() { return begin; }
 
   /**
-   * Gets the index one beyond the last index in the subset.
+   * Gets the index one beyond the last index in the subset.  CURRENTLY MEANINGLESS!
    */
   size_t End() const;
 
@@ -305,18 +305,18 @@
   }
 
   /**
-   * Splits the current node, assigning its left and right children recursively.
+   * Splits the current node, recursing up the tree.
    *
-   * @param data Dataset which we are using.
+   * @param tree The RectangleTree object (node) to split.
    */
-  void SplitNode(MatType& data);
+  void SplitNode(RectangleTree& tree);
 
   /**
-   * Splits the current node, assigning its left and right children recursively.
-   * Also returns a list of the changed indices.
+   * Splits the current node, recursing up the tree.
+   * CURRENTLY IT DOES NOT Also returns a list of the changed indices.
    *
    * @param data Dataset which we are using.
-   * @param oldFromNew Vector holding permuted indices.
+   * @param oldFromNew Vector holding permuted indices NOT IMPLEMENTED.
    */
   void SplitNode(MatType& data, std::vector<size_t>& oldFromNew);
 

Modified: mlpack/trunk/src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp
==============================================================================
--- mlpack/trunk/src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp	(original)
+++ mlpack/trunk/src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp	Mon May 26 07:35:15 2014
@@ -6,17 +6,138 @@
 #ifndef __MLPACK_CORE_TREE_RECTANGLE_TREE_RECTANGLE_TREE_IMPL_HPP
 #define __MLPACK_CORE_TREE_RECTANGLE_TREE_RECTANGLE_TREE_IMPL_HPP
 
-// In case it wasn't included already for sem reason.
+// In case it wasn't included already for some reason.
 #include "rectangle_tree.hpp"
 
+#include <mlpack/core/util/cli.hpp>
+#include <mlpack/core/util/log.hpp>
+#include <mlpack/core/util/string_util.hpp>
+
 namespace mlpack {
 namespace tree {
 
 template<typename StatisticType,
 	 typename MatType,
 	 typename SplitType>
-RectangleTree<StatisticType, MatType, SplitType>::RectangleTree()
+RectangleTree<StatisticType, MatType, SplitType>::RectangleTree(
+    MatType& data,
+    const size_t leafSize):
+
+{
+  //Do the actual stuff here
+
+}
+
+/**
+ * Deletes this node, deallocating the memory for the children and calling
+ * their destructors in turn.  This will invalidate any pointers or references
+ * to any nodes which are children of this one.
+ */
+template<typename StatisticType,
+	   typename MatType,
+	   typename SplitType>
+RectangleTree<BoundType, StatisticType, MatType, SplitType>::
+  ~RectangleTree()
+{
+  for(int i = 0; i < numOfChildren; i++) {
+    delete children[i];
+  }
+}
 
+template<typename StatisticType,
+	 typename MatType,
+	 typename SplitType>
+size_t RectangleTree<StatisticType, MatType, SplitType>::
+    TreeSize() const
+{
+  int n = 0;
+  for(int i = 0; i < numOfChildren; i++) {
+    n += children[i].TreeSize();
+  }
+  return n + 1; // we add one for this node
+}
+
+
+
+template<typename StatisticType,
+	 typename MatType,
+	 typename SplitType>
+size_t RectangleTree<StatisticType, MatType, SplitType>::
+    TreeDepth() const
+{
+  // Recursively count the depth of each subtree.  The plus one is
+  // because we have to count this node, too.
+  int maxSubDepth = 0;
+  for(int i = 0; i < numOfChildren; i++) {
+    int d = children[i].depth();
+    if(d > maxSubDepth)
+      maxSubDepth = d;
+  }
+  return maxSubDepth + 1;
+}
+
+template<typename StatisticType,
+         	typename MatType,
+         	typename SplitType>
+inline bool BinarySpaceTree<StatisticType, MatType, SplitType>::
+    IsLeaf() const
+{
+  return numOfChildren == 0;
+}
+
+/**
+ * Return the last point in the tree.  SINCE THE TREE STORES DATA SEPARATELY IN EACH LEAF
+ * THIS IS CURRENTLY MEANINGLESS.
+ */
+template<typename StatisticType,
+	 typename MatType,
+	 typename SplitType>
+inline size_t RectangleTree<StatisticType, MatType, SplitType>::End() const
+{
+  if(numOfChildren)
+    return begin + count;
+  return children[numOfChildren-1].End();
+}
+
+  //have functions for returning the list of modified indices if we end up doing it that way.
+
+/**
+ * Split the tree.  This moves up the tree recursively.
+ */
+template<typename StatisticType,
+	 typename MatType,
+	 typename SplitType>
+void RectangleTree<StatisticType, MatType, SplitType>::SplitNode(
+    RetangleTree& tree)
+{
+  
+}
+
+
+/**
+ * Returns a string representation of this object.
+ */
+  template<typename StatisticType,
+	   typename MatType,
+	   typename SplitType>
+std::string BinarySpaceTree<StatisticType, MatType, SplitType>::ToString() const
+{
+  std::ostringstream convert;
+  convert << "RectangleTree [" << this << "]" << std::endl;
+  convert << "  First point: " << begin << std::endl;
+  convert << "  Number of descendants: " << count << std::endl;
+  convert << "  Bound: " << std::endl;
+  convert << mlpack::util::Indent(bound.ToString(), 2);
+  convert << "  Statistic: " << std::endl;
+  convert << mlpack::util::Indent(stat.ToString(), 2);
+  convert << "  Leaf size: " << leafSize << std::endl;
+  convert << "  Split dimension: " << splitDimension << std::endl;
+
+  // How many levels should we print?  This will print the top two tree levels.
+  for(
+}
 
 }; //namespace tree
 }; //namespace mlpack
+
+#endif



More information about the mlpack-svn mailing list