summaryrefslogtreecommitdiff
path: root/src/Bottleneck/include/gudhi/Layered_neighbors_finder.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Bottleneck/include/gudhi/Layered_neighbors_finder.h')
-rw-r--r--src/Bottleneck/include/gudhi/Layered_neighbors_finder.h56
1 files changed, 31 insertions, 25 deletions
diff --git a/src/Bottleneck/include/gudhi/Layered_neighbors_finder.h b/src/Bottleneck/include/gudhi/Layered_neighbors_finder.h
index 1cf83393..e6b7f30d 100644
--- a/src/Bottleneck/include/gudhi/Layered_neighbors_finder.h
+++ b/src/Bottleneck/include/gudhi/Layered_neighbors_finder.h
@@ -27,44 +27,50 @@
#include "Neighbors_finder.h"
-// Layered_neighbors_finder is a data structure used to find if a query point from U has neighbors in V in a given
-// vlayer of the vlayered persistence diagrams graph. V's points have to be added manually using their index.
-// A neighbor returned is automatically removed.
-
namespace Gudhi {
namespace bottleneck {
+/** \internal \brief data structure used to find any point (including projections) in V near to a query point from U
+ * (which can be a projection) in a layered graph layer given as parmeter.
+ *
+ * V points have to be added manually using their index and before the first pull. A neighbor pulled is automatically removed.
+ *
+ * \ingroup bottleneck_distance
+ */
class Layered_neighbors_finder {
- public:
- Layered_neighbors_finder(const Persistence_diagrams_graph& g, double r);
- void add(int v_point_index, int vlayer);
- int pull_near(int u_point_index, int vlayer);
- int vlayers_number() const;
+public:
+ /** \internal \brief Constructor taking the near distance definition as parameter. */
+ Layered_neighbors_finder(double r);
+ /** \internal \brief A point added will be possibly pulled. */
+ void add(int v_point_index, int vlayer);
+ /** \internal \brief Returns and remove a V point near to the U point given as parameter, null_point_index() if there isn't such a point. */
+ int pull_near(int u_point_index, int vlayer);
+ /** \internal \brief Returns the number of layers. */
+ int vlayers_number() const;
- private:
- const Persistence_diagrams_graph& g;
- const double r;
- std::vector<Neighbors_finder> neighbors_finder;
+private:
+ const double r;
+ std::vector<Neighbors_finder> neighbors_finder;
};
-Layered_neighbors_finder::Layered_neighbors_finder(const Persistence_diagrams_graph& g, double r) :
- g(g), r(r), neighbors_finder() { }
+Layered_neighbors_finder::Layered_neighbors_finder(double r) :
+ r(r), neighbors_finder() { }
-/* inline */ void Layered_neighbors_finder::add(int v_point_index, int vlayer) {
- for (int l = neighbors_finder.size(); l <= vlayer; l++)
- neighbors_finder.emplace_back(Neighbors_finder(g, r));
- neighbors_finder.at(vlayer).add(v_point_index);
+inline void Layered_neighbors_finder::add(int v_point_index, int vlayer) {
+ for (int l = neighbors_finder.size(); l <= vlayer; l++)
+ neighbors_finder.emplace_back(Neighbors_finder(r));
+ neighbors_finder.at(vlayer).add(v_point_index);
}
-/* inline */ int Layered_neighbors_finder::pull_near(int u_point_index, int vlayer) {
- if (static_cast<int> (neighbors_finder.size()) <= vlayer)
- return null_point_index();
- return neighbors_finder.at(vlayer).pull_near(u_point_index);
+inline int Layered_neighbors_finder::pull_near(int u_point_index, int vlayer) {
+ if (static_cast<int> (neighbors_finder.size()) <= vlayer)
+ return null_point_index();
+ return neighbors_finder.at(vlayer).pull_near(u_point_index);
}
-/* inline */ int Layered_neighbors_finder::vlayers_number() const {
- return static_cast<int>(neighbors_finder.size());
+inline int Layered_neighbors_finder::vlayers_number() const {
+ return static_cast<int>(neighbors_finder.size());
}
} // namespace bottleneck