From eef40b993fd1cc859cf1808f49404a8b4fbd5a07 Mon Sep 17 00:00:00 2001 From: MarcosPividori Date: Tue, 24 May 2016 14:07:16 -0300 Subject: [PATCH 1/2] Remove duplicated code for traversal info. Instead of including: methods/neighbor_search/ns_traversal_info.hpp Include the definition in: core/tree/traversal_info.hpp --- src/mlpack/core/tree/traversal_info.hpp | 6 ++ src/mlpack/methods/emst/dtb_rules.hpp | 4 +- src/mlpack/methods/fastmks/fastmks_rules.hpp | 5 +- .../methods/kmeans/dual_tree_kmeans_rules.hpp | 4 +- .../methods/neighbor_search/CMakeLists.txt | 1 - .../neighbor_search/neighbor_search_rules.hpp | 4 +- .../neighbor_search/ns_traversal_info.hpp | 70 ------------------- .../range_search/range_search_rules.hpp | 4 +- src/mlpack/methods/rann/ra_search_rules.hpp | 4 +- 9 files changed, 18 insertions(+), 84 deletions(-) delete mode 100644 src/mlpack/methods/neighbor_search/ns_traversal_info.hpp diff --git a/src/mlpack/core/tree/traversal_info.hpp b/src/mlpack/core/tree/traversal_info.hpp index 43941e2e65..4ad01843f5 100644 --- a/src/mlpack/core/tree/traversal_info.hpp +++ b/src/mlpack/core/tree/traversal_info.hpp @@ -9,6 +9,9 @@ #ifndef MLPACK_CORE_TREE_TRAVERSAL_INFO_HPP #define MLPACK_CORE_TREE_TRAVERSAL_INFO_HPP +namespace mlpack { +namespace tree { + /** * The TraversalInfo class holds traversal information which is used in * dual-tree (and single-tree) traversals. A traversal should be updating the @@ -82,4 +85,7 @@ class TraversalInfo double lastBaseCase; }; +} // namespace tree +} // namespace mlpack + #endif diff --git a/src/mlpack/methods/emst/dtb_rules.hpp b/src/mlpack/methods/emst/dtb_rules.hpp index e8527a6ffd..7f275cfbcf 100644 --- a/src/mlpack/methods/emst/dtb_rules.hpp +++ b/src/mlpack/methods/emst/dtb_rules.hpp @@ -9,7 +9,7 @@ #include -#include "../neighbor_search/ns_traversal_info.hpp" +#include namespace mlpack { namespace emst { @@ -105,7 +105,7 @@ class DTBRules TreeType& referenceNode, const double oldScore) const; - typedef neighbor::NeighborSearchTraversalInfo TraversalInfoType; + typedef typename tree::TraversalInfo TraversalInfoType; const TraversalInfoType& TraversalInfo() const { return traversalInfo; } TraversalInfoType& TraversalInfo() { return traversalInfo; } diff --git a/src/mlpack/methods/fastmks/fastmks_rules.hpp b/src/mlpack/methods/fastmks/fastmks_rules.hpp index eb612f2347..0f4ad3423e 100644 --- a/src/mlpack/methods/fastmks/fastmks_rules.hpp +++ b/src/mlpack/methods/fastmks/fastmks_rules.hpp @@ -9,8 +9,7 @@ #include #include - -#include "../neighbor_search/ns_traversal_info.hpp" +#include namespace mlpack { namespace fastmks { @@ -91,7 +90,7 @@ class FastMKSRules //! Modify the number of times Score() was called. size_t& Scores() { return scores; } - typedef neighbor::NeighborSearchTraversalInfo TraversalInfoType; + typedef typename tree::TraversalInfo TraversalInfoType; const TraversalInfoType& TraversalInfo() const { return traversalInfo; } TraversalInfoType& TraversalInfo() { return traversalInfo; } diff --git a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules.hpp b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules.hpp index fbfe9296bf..1c7a7c41e3 100644 --- a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules.hpp +++ b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules.hpp @@ -9,7 +9,7 @@ #ifndef MLPACK_METHODS_KMEANS_DUAL_TREE_KMEANS_RULES_HPP #define MLPACK_METHODS_KMEANS_DUAL_TREE_KMEANS_RULES_HPP -#include +#include namespace mlpack { namespace kmeans { @@ -39,7 +39,7 @@ class DualTreeKMeansRules TreeType& referenceNode, const double oldScore); - typedef neighbor::NeighborSearchTraversalInfo TraversalInfoType; + typedef typename tree::TraversalInfo TraversalInfoType; TraversalInfoType& TraversalInfo() { return traversalInfo; } const TraversalInfoType& TraversalInfo() const { return traversalInfo; } diff --git a/src/mlpack/methods/neighbor_search/CMakeLists.txt b/src/mlpack/methods/neighbor_search/CMakeLists.txt index 1c01e2e391..6b61e1889e 100644 --- a/src/mlpack/methods/neighbor_search/CMakeLists.txt +++ b/src/mlpack/methods/neighbor_search/CMakeLists.txt @@ -8,7 +8,6 @@ set(SOURCES neighbor_search_stat.hpp ns_model.hpp ns_model_impl.hpp - ns_traversal_info.hpp sort_policies/nearest_neighbor_sort.hpp sort_policies/nearest_neighbor_sort.cpp sort_policies/nearest_neighbor_sort_impl.hpp diff --git a/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp b/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp index e428708160..474d22b005 100644 --- a/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp +++ b/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp @@ -8,7 +8,7 @@ #ifndef MLPACK_METHODS_NEIGHBOR_SEARCH_NEIGHBOR_SEARCH_RULES_HPP #define MLPACK_METHODS_NEIGHBOR_SEARCH_NEIGHBOR_SEARCH_RULES_HPP -#include "ns_traversal_info.hpp" +#include namespace mlpack { namespace neighbor { @@ -94,7 +94,7 @@ class NeighborSearchRules size_t& Scores() { return scores; } //! Convenience typedef. - typedef NeighborSearchTraversalInfo TraversalInfoType; + typedef typename tree::TraversalInfo TraversalInfoType; //! Get the traversal info. const TraversalInfoType& TraversalInfo() const { return traversalInfo; } diff --git a/src/mlpack/methods/neighbor_search/ns_traversal_info.hpp b/src/mlpack/methods/neighbor_search/ns_traversal_info.hpp deleted file mode 100644 index 27bc70ebf4..0000000000 --- a/src/mlpack/methods/neighbor_search/ns_traversal_info.hpp +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @file ns_traversal_info.hpp - * @author Ryan Curtin - * - * This class holds traversal information for dual-tree traversals that are - * using the NeighborSearchRules RuleType. - */ -#ifndef MLPACK_METHODS_NEIGHBOR_SEARCH_TRAVERSAL_INFO_HPP -#define MLPACK_METHODS_NEIGHBOR_SEARCH_TRAVERSAL_INFO_HPP - -namespace mlpack { -namespace neighbor { - -/** - * Traversal information for NeighborSearch. This information is used to make - * parent-child prunes or parent-parent prunes in Score() without needing to - * evaluate the distance between two nodes. - * - * The information held by this class is the last node combination visited - * before the current node combination was recursed into and the distance - * between the node centroids. - */ -template -class NeighborSearchTraversalInfo -{ - public: - /** - * Create the TraversalInfo object and initialize the pointers to NULL. - */ - NeighborSearchTraversalInfo() : - lastQueryNode(NULL), - lastReferenceNode(NULL), - lastScore(0.0), - lastBaseCase(0.0) { /* Nothing to do. */ } - - //! Get the last query node. - TreeType* LastQueryNode() const { return lastQueryNode; } - //! Modify the last query node. - TreeType*& LastQueryNode() { return lastQueryNode; } - - //! Get the last reference node. - TreeType* LastReferenceNode() const { return lastReferenceNode; } - //! Modify the last reference node. - TreeType*& LastReferenceNode() { return lastReferenceNode; } - - //! Get the score associated with the last query and reference nodes. - double LastScore() const { return lastScore; } - //! Modify the score associated with the last query and reference nodes. - double& LastScore() { return lastScore; } - - //! Get the base case associated with the last node combination. - double LastBaseCase() const { return lastBaseCase; } - //! Modify the base case associated with the last node combination. - double& LastBaseCase() { return lastBaseCase; } - - private: - //! The last query node. - TreeType* lastQueryNode; - //! The last reference node. - TreeType* lastReferenceNode; - //! The last distance. - double lastScore; - //! The last base case. - double lastBaseCase; -}; - -} // namespace neighbor -} // namespace mlpack - -#endif diff --git a/src/mlpack/methods/range_search/range_search_rules.hpp b/src/mlpack/methods/range_search/range_search_rules.hpp index bfa82d0f24..e392ee42ac 100644 --- a/src/mlpack/methods/range_search/range_search_rules.hpp +++ b/src/mlpack/methods/range_search/range_search_rules.hpp @@ -7,7 +7,7 @@ #ifndef MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_RULES_HPP #define MLPACK_METHODS_RANGE_SEARCH_RANGE_SEARCH_RULES_HPP -#include "../neighbor_search/ns_traversal_info.hpp" +#include namespace mlpack { namespace range { @@ -96,7 +96,7 @@ class RangeSearchRules TreeType& referenceNode, const double oldScore) const; - typedef neighbor::NeighborSearchTraversalInfo TraversalInfoType; + typedef typename tree::TraversalInfo TraversalInfoType; const TraversalInfoType& TraversalInfo() const { return traversalInfo; } TraversalInfoType& TraversalInfo() { return traversalInfo; } diff --git a/src/mlpack/methods/rann/ra_search_rules.hpp b/src/mlpack/methods/rann/ra_search_rules.hpp index 25be8c02f8..1037af4b82 100644 --- a/src/mlpack/methods/rann/ra_search_rules.hpp +++ b/src/mlpack/methods/rann/ra_search_rules.hpp @@ -9,7 +9,7 @@ #ifndef MLPACK_METHODS_RANN_RA_SEARCH_RULES_HPP #define MLPACK_METHODS_RANN_RA_SEARCH_RULES_HPP -#include "../neighbor_search/ns_traversal_info.hpp" +#include namespace mlpack { namespace neighbor { @@ -185,7 +185,7 @@ class RASearchRules return arma::sum(numSamplesMade); } - typedef neighbor::NeighborSearchTraversalInfo TraversalInfoType; + typedef typename tree::TraversalInfo TraversalInfoType; const TraversalInfoType& TraversalInfo() const { return traversalInfo; } TraversalInfoType& TraversalInfo() { return traversalInfo; } From b4ee95407de9f0ddc0558a5938cc658585f4f1bc Mon Sep 17 00:00:00 2001 From: MarcosPividori Date: Tue, 24 May 2016 14:43:25 -0300 Subject: [PATCH 2/2] Remove unnecessary include. --- src/mlpack/methods/kmeans/pelleg_moore_kmeans_rules.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/mlpack/methods/kmeans/pelleg_moore_kmeans_rules.hpp b/src/mlpack/methods/kmeans/pelleg_moore_kmeans_rules.hpp index a604d831cc..a2306b1b52 100644 --- a/src/mlpack/methods/kmeans/pelleg_moore_kmeans_rules.hpp +++ b/src/mlpack/methods/kmeans/pelleg_moore_kmeans_rules.hpp @@ -9,8 +9,6 @@ #ifndef MLPACK_METHODS_KMEANS_PELLEG_MOORE_KMEANS_RULES_HPP #define MLPACK_METHODS_KMEANS_PELLEG_MOORE_KMEANS_RULES_HPP -#include - namespace mlpack { namespace kmeans {