25 #ifndef MLPACK_METHODS_EMST_DTB_HPP
26 #define MLPACK_METHODS_EMST_DTB_HPP
78 typename MatType = arma::mat,
79 template<
typename TreeMetricType,
80 typename TreeStatType,
87 typedef TreeType<MetricType, DTBStat, MatType>
Tree;
91 std::vector<size_t> oldFromNew;
103 std::vector<EdgePair> edges;
109 arma::Col<size_t> neighborsInComponent;
111 arma::Col<size_t> neighborsOutComponent;
113 arma::vec neighborsDistances;
122 struct SortEdgesHelper
140 const bool naive =
false,
141 const MetricType metric = MetricType());
161 const MetricType metric = MetricType());
183 void AddEdge(
const size_t e1,
const size_t e2,
const double distance);
193 void EmitResults(arma::mat& results);
199 void CleanupHelper(
Tree* tree);
211 #include "dtb_impl.hpp"
213 #endif // MLPACK_METHODS_EMST_DTB_HPP
A Union-Find data structure.
An edge pair is simply two indices and a distance.
double Distance() const
Get the distance.
The core includes that mlpack expects; standard C++ includes and Armadillo.
A binary space partitioning tree, such as a KD-tree or a ball tree.
DualTreeBoruvka(const MatType &dataset, const bool naive=false, const MetricType metric=MetricType())
Create the tree from the given dataset.
TreeType< MetricType, DTBStat, MatType > Tree
Convenience typedef.
void ComputeMST(arma::mat &results)
Iteratively find the nearest neighbor of each component until the MST is complete.
LMetric< 2, true > EuclideanDistance
The Euclidean (L2) distance.
~DualTreeBoruvka()
Delete the tree, if it was created inside the object.
Performs the MST calculation using the Dual-Tree Boruvka algorithm, using any type of tree...