mlpack
2.1.1

The RangeSearch class is a template class for performing range searches. More...
Public Types  
typedef TreeType< MetricType, RangeSearchStat, MatType >  Tree 
Convenience typedef. More...  
Public Member Functions  
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 searched). More...  
RangeSearch (MatType &&referenceSet, const bool naive=false, const bool singleMode=false, const MetricType metric=MetricType())  
Initialize the RangeSearch object with the given reference dataset (this is the dataset which is searched), taking ownership of the matrix. More...  
RangeSearch (Tree *referenceTree, const bool singleMode=false, const MetricType metric=MetricType())  
Initialize the RangeSearch object with the given preconstructed reference tree (this is the tree built on the reference set, which is the set that is searched). More...  
RangeSearch (const bool naive=false, const bool singleMode=false, const MetricType metric=MetricType())  
Initialize the RangeSearch object without any reference data. More...  
~RangeSearch ()  
Destroy the RangeSearch object. More...  
size_t  BaseCases () const 
Get the number of base cases during the last search. More...  
bool  Naive () const 
Get whether naive search is being used. More...  
bool &  Naive () 
Modify whether naive search is being used. More...  
const MatType &  ReferenceSet () const 
Return the reference set. More...  
Tree *  ReferenceTree () 
Return the reference tree (or NULL if in naive mode). More...  
size_t  Scores () const 
Get the number of scores during the last search. More...  
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. More...  
void  Search (Tree *queryTree, const math::Range &range, std::vector< std::vector< size_t >> &neighbors, std::vector< std::vector< double >> &distances) 
Given a prebuilt query tree, 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. More...  
void  Search (const math::Range &range, std::vector< std::vector< size_t >> &neighbors, std::vector< std::vector< double >> &distances) 
Search for all points in the given range for each point in the reference set (which was passed to the constructor), returning the results in the neighbors and distances objects. More...  
template < typename Archive >  
void  Serialize (Archive &ar, const unsigned int version) 
Serialize the model. More...  
bool  SingleMode () const 
Get whether singletree search is being used. More...  
bool &  SingleMode () 
Modify whether singletree search is being used. More...  
void  Train (const MatType &referenceSet) 
Set the reference set to a new reference set, and build a tree if necessary. More...  
void  Train (MatType &&referenceSet) 
Set the reference set to a new reference set, taking ownership of the set. More...  
void  Train (Tree *referenceTree) 
Set the reference tree to a new reference tree. More...  
Private Attributes  
size_t  baseCases 
The total number of base cases during the last search. More...  
MetricType  metric 
Instantiated distance metric. More...  
bool  naive 
If true, O(n^2) naive computation is used. More...  
std::vector< size_t >  oldFromNewReferences 
Mappings to old reference indices (used when this object builds trees). More...  
const MatType *  referenceSet 
Reference set (data should be accessed using this). More...  
Tree *  referenceTree 
Reference tree. More...  
friend  RSModel 
For access to mappings when building models. More...  
size_t  scores 
The total number of scores during the last search. More...  
bool  setOwner 
If true, we own the reference set. More...  
bool  singleMode 
If true, singletree computation is used. More...  
bool  treeOwner 
If true, this object is responsible for deleting the trees. More...  
Detailed Description
template<typenameMetricType=metric::EuclideanDistance,typenameMatType=arma::mat,template<typenameTreeMetricType,typenameTreeStatType,typenameTreeMatType>classTreeType=tree::KDTree>
class mlpack::range::RangeSearch< MetricType, MatType, TreeType >
The RangeSearch class is a template class for performing range searches.
It is implemented in the style of a generalized treeindependent dualtree algorithm; for more details on the actual algorithm, see the RangeSearchRules class.
 Template Parameters

MetricType Metric to use for range search calculations. MatType Type of data to use. TreeType Type of tree to use; must satisfy the TreeType policy API.
Definition at line 42 of file range_search.hpp.
Member Typedef Documentation
◆ Tree
typedef TreeType<MetricType, RangeSearchStat, MatType> mlpack::range::RangeSearch< MetricType, MatType, TreeType >::Tree 
Convenience typedef.
Definition at line 46 of file range_search.hpp.
Constructor & Destructor Documentation
◆ RangeSearch() [1/4]
mlpack::range::RangeSearch< MetricType, MatType, TreeType >::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 searched).
Optionally, perform the computation in naive mode or singletree mode. Additionally, an instantiated metric can be given, for cases where the distance metric holds data.
This method will copy the matrices to internal copies, which are rearranged during treebuilding. You can avoid this extra copy by preconstructing the trees and passing them using a different constructor.
 Parameters

referenceSet Reference dataset. naive Whether the computation should be done in O(n^2) naive mode. singleMode Whether singletree computation should be used (as opposed to dualtree computation). metric Instantiated distance metric.
◆ RangeSearch() [2/4]
mlpack::range::RangeSearch< MetricType, MatType, TreeType >::RangeSearch  (  MatType &&  referenceSet, 
const bool  naive = false , 

const bool  singleMode = false , 

const MetricType  metric = MetricType() 

) 
Initialize the RangeSearch object with the given reference dataset (this is the dataset which is searched), taking ownership of the matrix.
Optionally, perform the computation in naive mode or singletree mode. Additionally, an instantiated metric can be given, for cases where the distance metric holds data.
This method will not copy the data matrix, but will take ownership of it, and depending on the type of tree used, may rearrange the points. If you would rather a copy be made, consider using the constructor that takes a const reference to the data instead.
 Parameters

referenceSet Set of reference points. naive If true, brute force naive search will be used (as opposed to dualtree search). This overrides singleMode (if it is set to true). singleMode If true, singletree search will be used (as opposed to dualtree search). metric An optional instance of the MetricType class.
◆ RangeSearch() [3/4]
mlpack::range::RangeSearch< MetricType, MatType, TreeType >::RangeSearch  (  Tree *  referenceTree, 
const bool  singleMode = false , 

const MetricType  metric = MetricType() 

) 
Initialize the RangeSearch object with the given preconstructed reference tree (this is the tree built on the reference set, which is the set that is searched).
Optionally, choose to use singletree mode, which will not build a tree on query points. Naive mode is not available as an option for this constructor. Additionally, an instantiated distance metric can be given, for cases where the distance metric holds data.
There is no copying of the data matrices in this constructor (because treebuilding is not necessary), so this is the constructor to use when copies absolutely must be avoided.
 Note
 Because treebuilding (at least with BinarySpaceTree) modifies the ordering of a matrix, be aware that mapping of the points back to their original indices is not done when this constructor is used.
 Parameters

referenceTree Prebuilt tree for reference points. referenceSet Set of reference points corresponding to referenceTree. singleMode Whether singletree computation should be used (as opposed to dualtree computation). metric Instantiated distance metric.
◆ RangeSearch() [4/4]
mlpack::range::RangeSearch< MetricType, MatType, TreeType >::RangeSearch  (  const bool  naive = false , 
const bool  singleMode = false , 

const MetricType  metric = MetricType() 

) 
Initialize the RangeSearch object without any reference data.
If the monochromatic Search() is called before a reference set is set with Train(), no results will be returned (since the reference set is empty).
 Parameters

naive Whether to use naive search. singleMode Whether singletree computation should be used (as opposed to dualtree computation). metric Instantiated metric.
◆ ~RangeSearch()
mlpack::range::RangeSearch< MetricType, MatType, TreeType >::~RangeSearch  (  ) 
Destroy the RangeSearch object.
If trees were created, they will be deleted.
Member Function Documentation
◆ BaseCases()

inline 
Get the number of base cases during the last search.
Definition at line 284 of file range_search.hpp.
◆ Naive() [1/2]

inline 
Get whether naive search is being used.
Definition at line 279 of file range_search.hpp.
◆ Naive() [2/2]

inline 
Modify whether naive search is being used.
Definition at line 281 of file range_search.hpp.
◆ ReferenceSet()

inline 
Return the reference set.
Definition at line 293 of file range_search.hpp.
◆ ReferenceTree()

inline 
Return the reference tree (or NULL if in naive mode).
Definition at line 296 of file range_search.hpp.
◆ Scores()

inline 
Get the number of scores during the last search.
Definition at line 286 of file range_search.hpp.
◆ Search() [1/3]
void mlpack::range::RangeSearch< MetricType, MatType, TreeType >::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.
Each entry in the external vector corresponds to a query point. Each of these entries holds a vector which contains the indices and distances of the reference points falling into the given range.
That is:
 neighbors.size() and distances.size() both equal the number of query points.
 neighbors[i] contains the indices of all the points in the reference set which have distances inside the given range to query point i.
 distances[i] contains all of the distances corresponding to the indices contained in neighbors[i].
 neighbors[i] and distances[i] are not sorted in any particular order.
 Parameters

querySet Set of query points to search with. range Range of distances in which to search. neighbors Object which will hold the list of neighbors for each point which fell into the given range, for each query point. distances Object which will hold the list of distances for each point which fell into the given range, for each query point.
◆ Search() [2/3]
void mlpack::range::RangeSearch< MetricType, MatType, TreeType >::Search  (  Tree *  queryTree, 
const math::Range &  range,  
std::vector< std::vector< size_t >> &  neighbors,  
std::vector< std::vector< double >> &  distances  
) 
Given a prebuilt query tree, 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.
Each entry in the external vector corresponds to a query point. Each of these entries holds a vector which contains the indices and distances of the reference points falling into the given range.
That is:
 neighbors.size() and distances.size() both equal the number of query points.
 neighbors[i] contains the indices of all the points in the reference set which have distances inside the given range to query point i.
 distances[i] contains all of the distances corresponding to the indices contained in neighbors[i].
 neighbors[i] and distances[i] are not sorted in any particular order.
If either naive or singleMode are set to true, this will throw an invalid_argument exception; passing in a query tree implies dualtree search.
If you want to use the reference tree as the query tree, instead call the overload of Search() that does not take a query set.
 Parameters

queryTree Tree built on query points. range Range of distances in which to search. neighbors Object which will hold the list of neighbors for each point which fell into the given range, for each query point. distances Object which will hold the list of distances for each point which fell into the given range, for each query point.
◆ Search() [3/3]
void mlpack::range::RangeSearch< MetricType, MatType, TreeType >::Search  (  const math::Range &  range, 
std::vector< std::vector< size_t >> &  neighbors,  
std::vector< std::vector< double >> &  distances  
) 
Search for all points in the given range for each point in the reference set (which was passed to the constructor), returning the results in the neighbors and distances objects.
This means that the query set and the reference set are the same.
Each entry in the external vector corresponds to a query point. Each of these entries holds a vector which contains the indices and distances of the reference points falling into the given range.
That is:
 neighbors.size() and distances.size() both equal the number of query points.
 neighbors[i] contains the indices of all the points in the reference set which have distances inside the given range to query point i.
 distances[i] contains all of the distances corresponding to the indices contained in neighbors[i].
 neighbors[i] and distances[i] are not sorted in any particular order.
 Parameters

queryTree Tree built on query points. range Range of distances in which to search. neighbors Object which will hold the list of neighbors for each point which fell into the given range, for each query point. distances Object which will hold the list of distances for each point which fell into the given range, for each query point.
◆ Serialize()
void mlpack::range::RangeSearch< MetricType, MatType, TreeType >::Serialize  (  Archive &  ar, 
const unsigned int  version  
) 
Serialize the model.
Referenced by mlpack::range::RangeSearch< mlpack::tree::BinarySpaceTree >::Scores().
◆ SingleMode() [1/2]

inline 
Get whether singletree search is being used.
Definition at line 274 of file range_search.hpp.
◆ SingleMode() [2/2]

inline 
Modify whether singletree search is being used.
Definition at line 276 of file range_search.hpp.
◆ Train() [1/3]
void mlpack::range::RangeSearch< MetricType, MatType, TreeType >::Train  (  const MatType &  referenceSet  ) 
Set the reference set to a new reference set, and build a tree if necessary.
This method is called 'Train()' in order to match the rest of the mlpack abstractions, even though calling this "training" is maybe a bit of a stretch.
 Parameters

referenceSet New set of reference data.
◆ Train() [2/3]
void mlpack::range::RangeSearch< MetricType, MatType, TreeType >::Train  (  MatType &&  referenceSet  ) 
Set the reference set to a new reference set, taking ownership of the set.
A tree is built if necessary. This method is called 'Train()' in order to match the rest of the mlpack abstractions, even though calling this "training" is maybe a bit of a stretch.
 Parameters

referenceSet New set of reference data.
◆ Train() [3/3]
void mlpack::range::RangeSearch< MetricType, MatType, TreeType >::Train  (  Tree *  referenceTree  ) 
Set the reference tree to a new reference tree.
Member Data Documentation
◆ baseCases

private 
The total number of base cases during the last search.
Definition at line 321 of file range_search.hpp.
Referenced by mlpack::range::RangeSearch< mlpack::tree::BinarySpaceTree >::BaseCases().
◆ metric

private 
Instantiated distance metric.
Definition at line 318 of file range_search.hpp.
◆ naive

private 
If true, O(n^2) naive computation is used.
Definition at line 313 of file range_search.hpp.
Referenced by mlpack::range::RangeSearch< mlpack::tree::BinarySpaceTree >::Naive().
◆ oldFromNewReferences

private 
Mappings to old reference indices (used when this object builds trees).
Definition at line 300 of file range_search.hpp.
◆ referenceSet

private 
Reference set (data should be accessed using this).
In some situations we may be the owner of this.
Definition at line 305 of file range_search.hpp.
Referenced by mlpack::range::RangeSearch< mlpack::tree::BinarySpaceTree >::ReferenceSet().
◆ referenceTree

private 
Reference tree.
Definition at line 302 of file range_search.hpp.
Referenced by mlpack::range::RangeSearch< mlpack::tree::BinarySpaceTree >::ReferenceTree().
◆ RSModel

private 
For access to mappings when building models.
Definition at line 326 of file range_search.hpp.
◆ scores

private 
The total number of scores during the last search.
Definition at line 323 of file range_search.hpp.
Referenced by mlpack::range::RangeSearch< mlpack::tree::BinarySpaceTree >::Scores().
◆ setOwner

private 
If true, we own the reference set.
Definition at line 310 of file range_search.hpp.
◆ singleMode

private 
If true, singletree computation is used.
Definition at line 315 of file range_search.hpp.
Referenced by mlpack::range::RangeSearch< mlpack::tree::BinarySpaceTree >::SingleMode().
◆ treeOwner

private 
If true, this object is responsible for deleting the trees.
Definition at line 308 of file range_search.hpp.
The documentation for this class was generated from the following file:
 src/mlpack/methods/range_search/range_search.hpp
Generated by 1.8.13