\section{Midpoint\+Split$<$ Bound\+Type, Mat\+Type $>$ Class Template Reference}
\label{classmlpack_1_1tree_1_1MidpointSplit}\index{Midpoint\+Split$<$ Bound\+Type, Mat\+Type $>$@{Midpoint\+Split$<$ Bound\+Type, Mat\+Type $>$}}


A binary space partitioning tree node is split into its left and right child.  


\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ Split\+Info}
\begin{DoxyCompactList}\small\item\em A struct that contains an information about the split. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename Vec\+Type $>$ }\\static bool \textbf{ Assign\+To\+Left\+Node} (const Vec\+Type \&point, const \textbf{ Split\+Info} \&split\+Info)
\begin{DoxyCompactList}\small\item\em Indicates that a point should be assigned to the left subtree. \end{DoxyCompactList}\item 
static size\+\_\+t \textbf{ Perform\+Split} (Mat\+Type \&data, const size\+\_\+t begin, const size\+\_\+t count, const \textbf{ Split\+Info} \&split\+Info)
\begin{DoxyCompactList}\small\item\em Perform the split process according to the information about the split. \end{DoxyCompactList}\item 
static size\+\_\+t \textbf{ Perform\+Split} (Mat\+Type \&data, const size\+\_\+t begin, const size\+\_\+t count, const \textbf{ Split\+Info} \&split\+Info, std\+::vector$<$ size\+\_\+t $>$ \&old\+From\+New)
\begin{DoxyCompactList}\small\item\em Perform the split process according to the information about the split and return the list of changed indices. \end{DoxyCompactList}\item 
static bool \textbf{ Split\+Node} (const Bound\+Type \&bound, Mat\+Type \&data, const size\+\_\+t begin, const size\+\_\+t count, \textbf{ Split\+Info} \&split\+Info)
\begin{DoxyCompactList}\small\item\em Find the partition of the node. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename Bound\+Type, typename Mat\+Type = arma\+::mat$>$\newline
class mlpack\+::tree\+::\+Midpoint\+Split$<$ Bound\+Type, Mat\+Type $>$}

A binary space partitioning tree node is split into its left and right child. 

The split is done in the dimension that has the maximum width. The points are divided into two parts based on the midpoint in this dimension. 

Definition at line 30 of file midpoint\+\_\+split.\+hpp.



\subsection{Member Function Documentation}
\mbox{\label{classmlpack_1_1tree_1_1MidpointSplit_af0fc61f469596cb8796d1966564ecbcb}} 
\index{mlpack\+::tree\+::\+Midpoint\+Split@{mlpack\+::tree\+::\+Midpoint\+Split}!Assign\+To\+Left\+Node@{Assign\+To\+Left\+Node}}
\index{Assign\+To\+Left\+Node@{Assign\+To\+Left\+Node}!mlpack\+::tree\+::\+Midpoint\+Split@{mlpack\+::tree\+::\+Midpoint\+Split}}
\subsubsection{Assign\+To\+Left\+Node()}
{\footnotesize\ttfamily static bool Assign\+To\+Left\+Node (\begin{DoxyParamCaption}\item[{const Vec\+Type \&}]{point,  }\item[{const \textbf{ Split\+Info} \&}]{split\+Info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Indicates that a point should be assigned to the left subtree. 


\begin{DoxyParams}{Parameters}
{\em point} & The point that is being assigned. \\
\hline
{\em split\+Info} & An information about the split. \\
\hline
\end{DoxyParams}


Definition at line 115 of file midpoint\+\_\+split.\+hpp.



References Midpoint\+Split$<$ Bound\+Type, Mat\+Type $>$\+::\+Split\+Info\+::split\+Dimension, and Midpoint\+Split$<$ Bound\+Type, Mat\+Type $>$\+::\+Split\+Info\+::split\+Val.

\mbox{\label{classmlpack_1_1tree_1_1MidpointSplit_aace8240352cb3ea61c975987b91a80a6}} 
\index{mlpack\+::tree\+::\+Midpoint\+Split@{mlpack\+::tree\+::\+Midpoint\+Split}!Perform\+Split@{Perform\+Split}}
\index{Perform\+Split@{Perform\+Split}!mlpack\+::tree\+::\+Midpoint\+Split@{mlpack\+::tree\+::\+Midpoint\+Split}}
\subsubsection{Perform\+Split()\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily static size\+\_\+t Perform\+Split (\begin{DoxyParamCaption}\item[{Mat\+Type \&}]{data,  }\item[{const size\+\_\+t}]{begin,  }\item[{const size\+\_\+t}]{count,  }\item[{const \textbf{ Split\+Info} \&}]{split\+Info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Perform the split process according to the information about the split. 

This will order the dataset such that points that belong to the left subtree are on the left of the split column, and points from the right subtree are on the right side of the split column.


\begin{DoxyParams}{Parameters}
{\em bound} & The bound used for this node. \\
\hline
{\em data} & The dataset used by the binary space tree. \\
\hline
{\em begin} & Index of the starting point in the dataset that belongs to this node. \\
\hline
{\em count} & Number of points in this node. \\
\hline
{\em split\+Info} & The information about the split. \\
\hline
\end{DoxyParams}


Definition at line 73 of file midpoint\+\_\+split.\+hpp.

\mbox{\label{classmlpack_1_1tree_1_1MidpointSplit_af99e13e8418a8bb6b602435fbd7e4e64}} 
\index{mlpack\+::tree\+::\+Midpoint\+Split@{mlpack\+::tree\+::\+Midpoint\+Split}!Perform\+Split@{Perform\+Split}}
\index{Perform\+Split@{Perform\+Split}!mlpack\+::tree\+::\+Midpoint\+Split@{mlpack\+::tree\+::\+Midpoint\+Split}}
\subsubsection{Perform\+Split()\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily static size\+\_\+t Perform\+Split (\begin{DoxyParamCaption}\item[{Mat\+Type \&}]{data,  }\item[{const size\+\_\+t}]{begin,  }\item[{const size\+\_\+t}]{count,  }\item[{const \textbf{ Split\+Info} \&}]{split\+Info,  }\item[{std\+::vector$<$ size\+\_\+t $>$ \&}]{old\+From\+New }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Perform the split process according to the information about the split and return the list of changed indices. 

This will order the dataset such that points that belong to the left subtree are on the left of the split column, and points from the right subtree are on the right side of the split column.


\begin{DoxyParams}{Parameters}
{\em bound} & The bound used for this node. \\
\hline
{\em data} & The dataset used by the binary space tree. \\
\hline
{\em begin} & Index of the starting point in the dataset that belongs to this node. \\
\hline
{\em count} & Number of points in this node. \\
\hline
{\em split\+Info} & The information about the split. \\
\hline
{\em old\+From\+New} & Vector which will be filled with the old positions for each new point. \\
\hline
\end{DoxyParams}


Definition at line 98 of file midpoint\+\_\+split.\+hpp.

\mbox{\label{classmlpack_1_1tree_1_1MidpointSplit_ae326f86e681c01ed2fd5d3d12123e7bd}} 
\index{mlpack\+::tree\+::\+Midpoint\+Split@{mlpack\+::tree\+::\+Midpoint\+Split}!Split\+Node@{Split\+Node}}
\index{Split\+Node@{Split\+Node}!mlpack\+::tree\+::\+Midpoint\+Split@{mlpack\+::tree\+::\+Midpoint\+Split}}
\subsubsection{Split\+Node()}
{\footnotesize\ttfamily static bool Split\+Node (\begin{DoxyParamCaption}\item[{const Bound\+Type \&}]{bound,  }\item[{Mat\+Type \&}]{data,  }\item[{const size\+\_\+t}]{begin,  }\item[{const size\+\_\+t}]{count,  }\item[{\textbf{ Split\+Info} \&}]{split\+Info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Find the partition of the node. 

This method fills up the dimension that will be used to split the node and the value according which the split will be performed.


\begin{DoxyParams}{Parameters}
{\em bound} & The bound used for this node. \\
\hline
{\em data} & The dataset used by the binary space tree. \\
\hline
{\em begin} & Index of the starting point in the dataset that belongs to this node. \\
\hline
{\em count} & Number of points in this node. \\
\hline
{\em split\+Info} & An information about the split. This information contains the dimension and the value. \\
\hline
\end{DoxyParams}


The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
/var/www/mlpack.\+ratml.\+org/mlpack.\+org/\+\_\+src/mlpack-\/3.\+3.\+1/src/mlpack/core/tree/binary\+\_\+space\+\_\+tree/\textbf{ midpoint\+\_\+split.\+hpp}\end{DoxyCompactItemize}
