From 90198a22800834acd333f9b8360221035f6862cf Mon Sep 17 00:00:00 2001 From: ROUVREAU Vincent Date: Thu, 6 Jun 2019 14:36:36 +0200 Subject: Fix #11 - Distance computation shall be better documented. --- .../doc/Intro_bottleneck_distance.h | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/Bottleneck_distance/doc/Intro_bottleneck_distance.h') diff --git a/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h b/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h index 6fd058a8..49137ee1 100644 --- a/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h +++ b/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h @@ -6,6 +6,9 @@ * * Copyright (C) 2015 Inria * + * Modifications: + * - 2019/06 Vincent Rouvreau : Fix #11 - Distance computation shall be better documented. + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -44,6 +47,43 @@ namespace persistence_diagram { * This implementation is based on ideas from "Geometry Helps in Bottleneck Matching and Related Problems" * \cite DBLP:journals/algorithmica/EfratIK01. Another relevant publication, although it was not used is * "Geometry Helps to Compare Persistence Diagrams" \cite Kerber:2017:GHC:3047249.3064175. + * + * \section bottleneckdistanceprecision Distance computation + * + * Bottleneck distance does not use Euclidean distance, like explained in the following example: + * + * \code{.cpp} +#include + +#include +#include +#include // for pair + +int main() { + std::vector< std::pair > diag1, diag2; + diag1.emplace_back(0., 0.); + diag2.emplace_back(0., 13.); + + double b = Gudhi::persistence_diagram::bottleneck_distance(diag1, diag2); + std::cout << "Bottleneck distance = " << b << std::endl; +} + * \endcode + * + * \code Bottleneck distance = 6.5 + * \endcode + * + * \image html bottleneck_distance_example.png The point (0, 13) is at 6.5 distance from the diagonal and more specifically from the point (6.5, 6.5) + * + * \section bottleneckbasicexample Basic example + * + * This another example computes the bottleneck distance from 2 persistence diagrams: + * \include Bottleneck_distance/bottleneck_basic_example.cpp + * + * \code + Bottleneck distance = 0.75 + Approx bottleneck distance = 0.808176 + * \endcode + */ /** @} */ // end defgroup bottleneck_distance -- cgit v1.2.3 From af3b12d763fdd113a1c4de6b58cc4a096bc646e9 Mon Sep 17 00:00:00 2001 From: Vincent Rouvreau Date: Fri, 7 Jun 2019 15:59:51 +0200 Subject: Update src/Bottleneck_distance/doc/Intro_bottleneck_distance.h Co-Authored-By: Marc Glisse --- src/Bottleneck_distance/doc/Intro_bottleneck_distance.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/Bottleneck_distance/doc/Intro_bottleneck_distance.h') diff --git a/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h b/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h index 49137ee1..d204b610 100644 --- a/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h +++ b/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h @@ -76,7 +76,7 @@ int main() { * * \section bottleneckbasicexample Basic example * - * This another example computes the bottleneck distance from 2 persistence diagrams: + * This other example computes the bottleneck distance from 2 persistence diagrams: * \include Bottleneck_distance/bottleneck_basic_example.cpp * * \code -- cgit v1.2.3 From cb890f276bc5327ebad1e1fcd1cc05a0d300de83 Mon Sep 17 00:00:00 2001 From: Vincent Rouvreau Date: Fri, 7 Jun 2019 16:00:12 +0200 Subject: Update src/Bottleneck_distance/doc/Intro_bottleneck_distance.h Co-Authored-By: Marc Glisse --- src/Bottleneck_distance/doc/Intro_bottleneck_distance.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/Bottleneck_distance/doc/Intro_bottleneck_distance.h') diff --git a/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h b/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h index d204b610..520aab4f 100644 --- a/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h +++ b/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h @@ -72,7 +72,7 @@ int main() { * \code Bottleneck distance = 6.5 * \endcode * - * \image html bottleneck_distance_example.png The point (0, 13) is at 6.5 distance from the diagonal and more specifically from the point (6.5, 6.5) + * \image html bottleneck_distance_example.png The point (0, 13) is at distance 6.5 from the diagonal and more specifically from the point (6.5, 6.5) * * \section bottleneckbasicexample Basic example * -- cgit v1.2.3 From 4b401e9a51cbcbb44d47f4819b57ec7787088df4 Mon Sep 17 00:00:00 2001 From: ROUVREAU Vincent Date: Fri, 7 Jun 2019 17:27:29 +0200 Subject: Fix doc review. Add citations for python doc version. Replace (13,0) with (0,13) in figure --- .../doc/Intro_bottleneck_distance.h | 5 +++-- .../doc/bottleneck_distance_example.ipe | 8 ++++---- .../doc/bottleneck_distance_example.png | Bin 21465 -> 19485 bytes src/common/doc/main_page.md | 4 +++- src/cython/doc/bottleneck_distance_sum.inc | 4 ++-- src/cython/doc/bottleneck_distance_user.rst | 10 +++++++--- 6 files changed, 19 insertions(+), 12 deletions(-) (limited to 'src/Bottleneck_distance/doc/Intro_bottleneck_distance.h') diff --git a/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h b/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h index 520aab4f..7cb0752e 100644 --- a/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h +++ b/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h @@ -40,7 +40,8 @@ namespace persistence_diagram { * * The bottleneck distance measures the similarity between two persistence diagrams. It is the shortest distance b for * which there exists a perfect matching between the points of the two diagrams (completed with all the points on the - * diagonal in order to ignore cardinality mismatchs) such that any couple of matched points are at distance at most b. + * diagonal in order to ignore cardinality mismatchs) such that any couple of matched points are at distance at most b, + * where the distance between points is the sup norm in \f$\mathbb{R}^2\f$ (not the Euclidean distance). * * \image html perturb_pd.png On this picture, the red edges represent the matching. The bottleneck distance is the length of the longest edge. * @@ -50,7 +51,7 @@ namespace persistence_diagram { * * \section bottleneckdistanceprecision Distance computation * - * Bottleneck distance does not use Euclidean distance, like explained in the following example: + * The following example explains how the distance is computed: * * \code{.cpp} #include diff --git a/src/Bottleneck_distance/doc/bottleneck_distance_example.ipe b/src/Bottleneck_distance/doc/bottleneck_distance_example.ipe index 9dc5420e..2033ea56 100644 --- a/src/Bottleneck_distance/doc/bottleneck_distance_example.ipe +++ b/src/Bottleneck_distance/doc/bottleneck_distance_example.ipe @@ -1,7 +1,7 @@ - + @@ -220,13 +220,13 @@ h + + - - @@ -274,7 +274,7 @@ h 224 320 l (0, 0) -(13, 0) +(0, 13) (6.5, 6.5) 160.433 359.995 m diff --git a/src/Bottleneck_distance/doc/bottleneck_distance_example.png b/src/Bottleneck_distance/doc/bottleneck_distance_example.png index b56ee791..1d3b91aa 100644 Binary files a/src/Bottleneck_distance/doc/bottleneck_distance_example.png and b/src/Bottleneck_distance/doc/bottleneck_distance_example.png differ diff --git a/src/common/doc/main_page.md b/src/common/doc/main_page.md index e61eee81..a0a3496d 100644 --- a/src/common/doc/main_page.md +++ b/src/common/doc/main_page.md @@ -349,7 +349,9 @@ Bottleneck distance measures the similarity between two persistence diagrams. It's the shortest distance b for which there exists a perfect matching between the points of the two diagrams (+ all the diagonal points) such that - any couple of matched points are at distance at most b. + any couple of matched points are at distance at most b, + where the distance between points is the sup norm in \f$\mathbb{R}^2\f$ + (not the Euclidean distance). Author: François Godi
diff --git a/src/cython/doc/bottleneck_distance_sum.inc b/src/cython/doc/bottleneck_distance_sum.inc index 41b9c5a3..6840e838 100644 --- a/src/cython/doc/bottleneck_distance_sum.inc +++ b/src/cython/doc/bottleneck_distance_sum.inc @@ -6,8 +6,8 @@ | ../../doc/Bottleneck_distance/perturb_pd.png | diagrams. It's the shortest distance b for which there exists a | | | :figclass: align-center | perfect matching between the points of the two diagrams (+ all the | :Introduced in: GUDHI 2.0.0 | | | diagonal points) such that any couple of matched points are at | | - | Bottleneck distance is the length of | distance at most b. | :Copyright: GPL v3 | - | the longest edge | | | + | Bottleneck distance is the length of | distance at most b, where the distance between points is the sup | :Copyright: GPL v3 | + | the longest edge | norm in :math:`\mathbb{R}^2`. | | | | | :Requires: CGAL :math:`\geq` 4.8.0 | +-----------------------------------------------------------------+----------------------------------------------------------------------+-----------------------------------------------+ | * :doc:`bottleneck_distance_user` | | diff --git a/src/cython/doc/bottleneck_distance_user.rst b/src/cython/doc/bottleneck_distance_user.rst index a6a4426f..9435c7f1 100644 --- a/src/cython/doc/bottleneck_distance_user.rst +++ b/src/cython/doc/bottleneck_distance_user.rst @@ -9,6 +9,10 @@ Definition .. include:: bottleneck_distance_sum.inc +This implementation is based on ideas from "Geometry Helps in Bottleneck Matching and Related Problems" +:cite:`DBLP:journals/algorithmica/EfratIK01`. Another relevant publication, although it was not used is +"Geometry Helps to Compare Persistence Diagrams" :cite:`Kerber:2017:GHC:3047249.3064175`. + Function -------- .. autofunction:: gudhi.bottleneck_distance @@ -16,7 +20,7 @@ Function Distance computation -------------------- -Bottleneck distance does not use Euclidean distance, like explained in the following example: +The following example explains how the distance is computed: .. testcode:: @@ -33,14 +37,14 @@ Bottleneck distance does not use Euclidean distance, like explained in the follo ../../doc/Bottleneck_distance/bottleneck_distance_example.png :figclass: align-center - The point (0, 13) is at 6.5 distance from the diagonal and more + The point (0, 13) is at distance 6.5 from the diagonal and more specifically from the point (6.5, 6.5) Basic example ------------- -This another example computes the bottleneck distance from 2 persistence diagrams: +This other example computes the bottleneck distance from 2 persistence diagrams: .. testcode:: -- cgit v1.2.3