From c524232f734de875d69e2f190f01a6c976024368 Mon Sep 17 00:00:00 2001 From: Gard Spreemann Date: Thu, 14 Jun 2018 20:39:01 +0200 Subject: GUDHI 2.2.0 as released by upstream in a tarball. --- doc/Cech_complex/COPYRIGHT | 19 ++ doc/Cech_complex/Intro_cech_complex.h | 114 ++++++++ doc/Cech_complex/cech_complex_representation.ipe | 330 +++++++++++++++++++++++ doc/Cech_complex/cech_complex_representation.png | Bin 0 -> 39938 bytes doc/Cech_complex/cech_one_skeleton.ipe | 314 +++++++++++++++++++++ doc/Cech_complex/cech_one_skeleton.png | Bin 0 -> 24662 bytes 6 files changed, 777 insertions(+) create mode 100644 doc/Cech_complex/COPYRIGHT create mode 100644 doc/Cech_complex/Intro_cech_complex.h create mode 100644 doc/Cech_complex/cech_complex_representation.ipe create mode 100644 doc/Cech_complex/cech_complex_representation.png create mode 100644 doc/Cech_complex/cech_one_skeleton.ipe create mode 100644 doc/Cech_complex/cech_one_skeleton.png (limited to 'doc/Cech_complex') diff --git a/doc/Cech_complex/COPYRIGHT b/doc/Cech_complex/COPYRIGHT new file mode 100644 index 00000000..5f1d97cc --- /dev/null +++ b/doc/Cech_complex/COPYRIGHT @@ -0,0 +1,19 @@ +The files of this directory are part of the Gudhi Library. The Gudhi library +(Geometric Understanding in Higher Dimensions) is a generic C++ library for +computational topology. + +Author(s): Vincent Rouvreau + +Copyright (C) 2015 Inria + +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 (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program. If not, see . diff --git a/doc/Cech_complex/Intro_cech_complex.h b/doc/Cech_complex/Intro_cech_complex.h new file mode 100644 index 00000000..4483bcb9 --- /dev/null +++ b/doc/Cech_complex/Intro_cech_complex.h @@ -0,0 +1,114 @@ +/* This file is part of the Gudhi Library. The Gudhi library + * (Geometric Understanding in Higher Dimensions) is a generic C++ + * library for computational topology. + * + * Author(s): Vincent Rouvreau + * + * Copyright (C) 2018 Inria + * + * 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 + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef DOC_CECH_COMPLEX_INTRO_CECH_COMPLEX_H_ +#define DOC_CECH_COMPLEX_INTRO_CECH_COMPLEX_H_ + +namespace Gudhi { + +namespace cech_complex { + +/** \defgroup cech_complex Čech complex + * + * \author Vincent Rouvreau + * + * @{ + * + * \section cechdefinition Čech complex definition + * + * Čech complex + * (Wikipedia) is a + * simplicial complex constructed + * from a proximity graph. The set of all simplices is filtered by the radius of their minimal enclosing ball. + * + * The input shall be a point cloud in an Euclidean space. + * + * \remark For people only interested in the topology of the \ref cech_complex (for instance persistence), + * \ref alpha_complex is equivalent to the \ref cech_complex and much smaller if you do not bound the radii. + * \ref cech_complex can still make sense in higher dimension precisely because you can bound the radii. + * + * \subsection cechalgorithm Algorithm + * + * Cech_complex first builds a proximity graph from a point cloud. + * The filtration value of each edge of the `Gudhi::Proximity_graph` is computed from + * `Gudhi::Minimal_enclosing_ball_radius` function. + * + * All edges that have a filtration value strictly greater than a user given maximal radius value, \f$max\_radius\f$, + * are not inserted into the complex. + * + * Vertex name correspond to the index of the point in the given range (aka. the point cloud). + * + * \image html "cech_one_skeleton.png" "Čech complex proximity graph representation" + * + * When creating a simplicial complex from this proximity graph, Cech_complex inserts the proximity graph into the + * simplicial complex data structure, and then expands the simplicial complex when required. + * + * On this example, as edges \f$(x,y)\f$, \f$(y,z)\f$ and \f$(z,y)\f$ are in the complex, the minimal ball radius + * containing the points \f$(x,y,z)\f$ is computed. + * + * \f$(x,y,z)\f$ is inserted to the simplicial complex with the filtration value set with + * \f$mini\_ball\_radius(x,y,z))\f$ iff \f$mini\_ball\_radius(x,y,z)) \leq max\_radius\f$. + * + * And so on for higher dimensions. + * + * \image html "cech_complex_representation.png" "Čech complex expansion" + * + * The minimal ball radius computation is insured by + * + * the miniball software (V3.0) - Smallest Enclosing Balls of Points - and distributed with GUDHI. + * Please refer to + * + * the miniball software design description for more information about this computation. + * + * This radius computation is the reason why the Cech_complex is taking much more time to be computed than the + * \ref rips_complex but it offers more topological guarantees. + * + * If the Cech_complex interfaces are not detailed enough for your need, please refer to + * + * cech_complex_step_by_step.cpp example, where the graph construction over the Simplex_tree is more detailed. + * + * \subsection cechpointscloudexample Example from a point cloud + * + * This example builds the proximity graph from the given points, and maximal radius values. + * Then it creates a `Simplex_tree` with it. + * + * Then, it is asked to display information about the simplicial complex. + * + * \include Cech_complex/cech_complex_example_from_points.cpp + * + * When launching (maximal enclosing ball radius is 1., is expanded until dimension 2): + * + * \code $> ./Cech_complex_example_from_points + * \endcode + * + * the program output is: + * + * \include Cech_complex/cech_complex_example_from_points_for_doc.txt + * + */ +/** @} */ // end defgroup cech_complex + +} // namespace cech_complex + +} // namespace Gudhi + +#endif // DOC_CECH_COMPLEX_INTRO_CECH_COMPLEX_H_ diff --git a/doc/Cech_complex/cech_complex_representation.ipe b/doc/Cech_complex/cech_complex_representation.ipe new file mode 100644 index 00000000..377745a3 --- /dev/null +++ b/doc/Cech_complex/cech_complex_representation.ipe @@ -0,0 +1,330 @@ + + + + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e + + + + +0.6 0 0 0.6 0 0 e + + + + + +0.5 0 0 0.5 0 0 e + + +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e + + + + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h + + + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h + + + + + +-0.5 -0.5 m +0.5 -0.5 l +0.5 0.5 l +-0.5 0.5 l +h + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h + + + + + + +-0.43 -0.57 m +0.57 0.43 l +0.43 0.57 l +-0.57 -0.43 l +h + + +-0.43 0.57 m +0.57 -0.43 l +0.43 -0.57 l +-0.57 0.43 l +h + + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +-1 0.333 m +0 0 l +-1 -0.333 l + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +48 640 m +80 672 l +48 672 l +h + +Cech complex +0 +1 +2 +3 +4 +5 +6 + + + + + + + + + + + + + +32 0 0 32 304 672 e + + +304 672 m +336 672 l + +Maximal radius +7 +8 +9 + +112 576 m +144 608 l + + +144 672 m +144 608 l +200 640 l +h + + +48 576 m +112 576 l +80 544 l +h + + + +80 672 m +144 672 l +112 728 l +h + + + + + +48 576 m +48 640 l +32 608 l +h + + + + + + + + +32 0 0 32 80 576 e + + +22.6274 0 0 22.6274 64 656 e + + +37.1429 0 0 37.1429 112 690.857 e + + +37.1429 0 0 37.1429 162.857 640 e + + +10 + +32 0 0 32 48 608 e + + + + + diff --git a/doc/Cech_complex/cech_complex_representation.png b/doc/Cech_complex/cech_complex_representation.png new file mode 100644 index 00000000..d0eb85a5 Binary files /dev/null and b/doc/Cech_complex/cech_complex_representation.png differ diff --git a/doc/Cech_complex/cech_one_skeleton.ipe b/doc/Cech_complex/cech_one_skeleton.ipe new file mode 100644 index 00000000..ed66e132 --- /dev/null +++ b/doc/Cech_complex/cech_one_skeleton.ipe @@ -0,0 +1,314 @@ + + + + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e + + + + +0.6 0 0 0.6 0 0 e + + + + + +0.5 0 0 0.5 0 0 e + + +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e + + + + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h + + + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h + + + + + +-0.5 -0.5 m +0.5 -0.5 l +0.5 0.5 l +-0.5 0.5 l +h + + +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h + + + + + + +-0.43 -0.57 m +0.57 0.43 l +0.43 0.57 l +-0.57 -0.43 l +h + + +-0.43 0.57 m +0.57 -0.43 l +0.43 -0.57 l +-0.57 0.43 l +h + + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h + + + + +-1 0.333 m +0 0 l +-1 -0.333 l + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h + + + + +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Proximity graph +0 +1 + +304 672 m +336 672 l + +2 +3 +4 +5 +6 + + + + + + + + + + + +32 0 0 32 304 672 e + +Maximal radius +7 +8 +9 + +112 576 m +144 608 l + + +144 672 m +144 608 l +200 640 l +h + + +48 640 m +80 672 l +48 672 l +h + + +48 576 m +112 576 l +80 544 l +h + + + +80 672 m +144 672 l +112 728 l +h + + + +48 576 m +48 640 l +32 608 l +h + + + + + + + + + + + +10 + + + + diff --git a/doc/Cech_complex/cech_one_skeleton.png b/doc/Cech_complex/cech_one_skeleton.png new file mode 100644 index 00000000..cc636616 Binary files /dev/null and b/doc/Cech_complex/cech_one_skeleton.png differ -- cgit v1.2.3