diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2020-10-17 23:29:39 +0200 |
---|---|---|
committer | Marc Glisse <marc.glisse@inria.fr> | 2020-10-17 23:29:39 +0200 |
commit | 911b589081831c98040448c489264fabfe8b5558 (patch) | |
tree | 67d23204b55ad5a9dd07e47c4312abd88260c8c3 /src/Bottleneck_distance/include | |
parent | 27a488386c6a3b2b4dbac43534a36f18ef04ac80 (diff) |
Handle diagrams with a single point
Diffstat (limited to 'src/Bottleneck_distance/include')
-rw-r--r-- | src/Bottleneck_distance/include/gudhi/Bottleneck.h | 6 | ||||
-rw-r--r-- | src/Bottleneck_distance/include/gudhi/Persistence_graph.h | 2 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/Bottleneck_distance/include/gudhi/Bottleneck.h b/src/Bottleneck_distance/include/gudhi/Bottleneck.h index ad437710..c916898d 100644 --- a/src/Bottleneck_distance/include/gudhi/Bottleneck.h +++ b/src/Bottleneck_distance/include/gudhi/Bottleneck.h @@ -36,7 +36,11 @@ namespace persistence_diagram { inline double bottleneck_distance_approx(Persistence_graph& g, double e) { double b_lower_bound = 0.; double b_upper_bound = g.max_dist_to_diagonal(); - const double alpha = std::pow(g.size(), 1. / 5.); + int siz = g.size(); + if (siz <= 1) + // The value of alpha would be wrong in this case + return b_upper_bound; + const double alpha = std::pow(siz, 1. / 5.); Graph_matching m(g); Graph_matching biggest_unperfect(g); while (b_upper_bound - b_lower_bound > 2 * e) { diff --git a/src/Bottleneck_distance/include/gudhi/Persistence_graph.h b/src/Bottleneck_distance/include/gudhi/Persistence_graph.h index 04c7c118..33f03b9c 100644 --- a/src/Bottleneck_distance/include/gudhi/Persistence_graph.h +++ b/src/Bottleneck_distance/include/gudhi/Persistence_graph.h @@ -45,7 +45,7 @@ class Persistence_graph { int corresponding_point_in_v(int u_point_index) const; /** \internal \brief Given a point from U and a point from V, returns the distance between those points. */ double distance(int u_point_index, int v_point_index) const; - /** \internal \brief Returns size = |U| = |V|. */ + /** \internal \brief Returns size = |U| + |V|. */ int size() const; /** \internal \brief Is there as many infinite points (alive components) in both diagrams ? */ double bottleneck_alive() const; |