13 #ifndef MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_HPP 14 #define MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_HPP 38 typename MatType = arma::mat,
39 template<
typename TreeMetricType,
40 typename TreeStatType,
46 typedef TreeType<MetricType, RangeSearchStat, MatType>
Tree;
65 const bool naive =
false,
67 const MetricType
metric = MetricType());
89 const bool naive =
false,
91 const MetricType
metric = MetricType());
119 const MetricType
metric = MetricType());
133 const MetricType
metric = MetricType());
178 void Train(
const MatType& referenceSet);
188 void Train(MatType&& referenceSet);
193 void Train(Tree* referenceTree);
222 void Search(
const MatType& querySet,
224 std::vector<std::vector<size_t>>& neighbors,
225 std::vector<std::vector<double>>& distances);
263 void Search(Tree* queryTree,
265 std::vector<std::vector<size_t>>& neighbors,
266 std::vector<std::vector<double>>& distances);
299 std::vector<std::vector<size_t>>& neighbors,
300 std::vector<std::vector<double>>& distances);
318 template<
typename Archive>
319 void Serialize(Archive& ar,
const unsigned int version);
362 #include "range_search_impl.hpp" The RangeSearch class is a template class for performing range searches.
bool & SingleMode()
Modify whether single-tree search is being used.
bool singleMode
If true, single-tree computation is used.
Linear algebra utility functions, generally performed on matrices or vectors.
LMetric< 2, true > EuclideanDistance
The Euclidean (L2) distance.
The core includes that mlpack expects; standard C++ includes and Armadillo.
bool naive
If true, O(n^2) naive computation is used.
std::vector< size_t > oldFromNewReferences
Mappings to old reference indices (used when this object builds trees).
A binary space partitioning tree, such as a KD-tree or a ball tree.
bool & Naive()
Modify whether naive search is being used.
bool Naive() const
Get whether naive search is being used.
bool SingleMode() const
Get whether single-tree search is being used.
void Train(const MatType &referenceSet)
Set the reference set to a new reference set, and build a tree if necessary.
MetricType metric
Instantiated distance metric.
~RangeSearch()
Destroy the RangeSearch object.
RangeSearch(const MatType &referenceSet, const bool naive=false, const bool singleMode=false, const MetricType metric=MetricType())
Initialize the RangeSearch object with a given reference dataset (this is the dataset which is search...
bool setOwner
If true, we own the reference set.
RangeSearch & operator=(const RangeSearch &other)
Copy the given RangeSearch model.
TrainVisitor sets the reference set to a new reference set on the given RSType.
size_t baseCases
The total number of base cases during the last search.
Tree * ReferenceTree()
Return the reference tree (or NULL if in naive mode).
size_t BaseCases() const
Get the number of base cases during the last search.
Tree * referenceTree
Reference tree.
const MatType & ReferenceSet() const
Return the reference set.
void Serialize(Archive &ar, const unsigned int version)
Serialize the model.
void Search(const MatType &querySet, const math::Range &range, std::vector< std::vector< size_t >> &neighbors, std::vector< std::vector< double >> &distances)
Search for all reference points in the given range for each point in the query set, returning the results in the neighbors and distances objects.
size_t Scores() const
Get the number of scores during the last search.
size_t scores
The total number of scores during the last search.
bool treeOwner
If true, this object is responsible for deleting the trees.
const MatType * referenceSet
Reference set (data should be accessed using this).
TreeType< MetricType, RangeSearchStat, MatType > Tree
Convenience typedef.