Gudhi::skeleton_blocker::Skeleton_blocker_geometric_complex< SkeletonBlockerGeometricDS > Class Template Reference

Class that represents a geometric complex that can be simplified. The class allows access to points of vertices. More...

## Public Member Functions

template<typename PointIterator >
Skeleton_blocker_geometric_complex (int num_vertices, PointIterator begin, PointIterator end)

template<typename SimpleHandleOutputIterator , typename PointIterator >
Skeleton_blocker_geometric_complex (SimpleHandleOutputIterator simplex_begin, SimpleHandleOutputIterator simplex_end, PointIterator points_begin, PointIterator points_end, bool is_flag_complex=false)
Constructor with a list of simplices. More...

template<typename SimpleHandleOutputIterator >
Skeleton_blocker_geometric_complex (SimpleHandleOutputIterator simplex_begin, SimpleHandleOutputIterator simplex_end, bool is_flag_complex=false)
Constructor with a list of simplices. Points of every vertex are the point constructed with default constructor. More...

Add a vertex to the complex with a default constructed associated point.

Add a vertex to the complex with its associated point.

const Point & point (Vertex_handle v) const
Returns the Point associated to the vertex v.

Point & point (Vertex_handle v)
Returns the Point associated to the vertex v.

Public Member Functions inherited from Gudhi::skeleton_blocker::Skeleton_blocker_complex< SkeletonBlockerGeometricDS >
Root_simplex_handle get_id (const Simplex &local_simplex) const
returns a simplex with vertices which are the id of vertices of the argument.

boost::optional< Simplexget_simplex_address (const Root_simplex_handle &s) const
Compute the local vertices of 's' in the current complex If one of them is not present in the complex then the return value is uninitialized.

virtual bool contains (const Simplex &s) const
returns true iff the simplex s belongs to the simplicial complex.

int num_connected_components () const
returns the number of connected components in the graph of the 1-skeleton.

bool is_cone () const
Test if the complex is a cone. More...

Vertex_handle operator[] (Root_vertex_handle global) const
Return a local Vertex_handle of a vertex given a global one. More...

Return the vertex node associated to local Vertex_handle. More...

Return the vertex node associated to local Vertex_handle. More...

Adds a vertex to the simplicial complex and returns its Vertex_handle. More...

Remove a vertex from the simplicial complex. More...

bool contains_vertex (Vertex_handle u) const

bool contains_vertex (Root_vertex_handle u) const

bool contains_vertices (const Simplex &sigma) const

virtual boost::optional< Vertex_handleget_address (Root_vertex_handle id) const
Given an Id return the address of the vertex having this Id in the complex. More...

Root_vertex_handle get_id (Vertex_handle local) const

Vertex_handle convert_handle_from_another_complex (const Skeleton_blocker_complex &other, Vertex_handle vh_in_other) const
Convert an address of a vertex of a complex to the address in the current complex. More...

int degree (Vertex_handle local) const
return the graph degree of a vertex.

boost::optional< Edge_handleoperator[] (const std::pair< Vertex_handle, Vertex_handle > &ab) const
return an edge handle if the two vertices forms an edge in the complex

Graph_edgeoperator[] (Edge_handle edge_handle)
returns the stored node associated to an edge

const Graph_edgeoperator[] (Edge_handle edge_handle) const
returns the stored node associated to an edge

Vertex_handle first_vertex (Edge_handle edge_handle) const
returns the first vertex of an edge More...

Vertex_handle second_vertex (Edge_handle edge_handle) const
returns the first vertex of an edge More...

Simplex get_vertices (Edge_handle edge_handle) const
returns the simplex made with the two vertices of the edge More...

Edge_handle add_edge (Vertex_handle a, Vertex_handle b)
Adds an edge between vertices a and b. More...

Adds all edges of s in the complex.

Edge_handle add_edge_without_blockers (Vertex_handle a, Vertex_handle b)
Adds an edge between vertices a and b without blockers. More...

virtual Edge_handle remove_edge (Vertex_handle a, Vertex_handle b)
Removes an edge from the simplicial complex and all its cofaces. More...

void remove_edge (Edge_handle edge)
Removes edge and its cofaces from the simplicial complex.

void keep_only_vertices ()
The complex is reduced to its set of vertices. All the edges and blockers are removed.

bool contains_edge (Vertex_handle a, Vertex_handle b) const

bool contains_edges (const Simplex &sigma) const

std::string to_string () const

std::string vertices_to_string () const

std::string edges_to_string () const

std::string blockers_to_string () const

bool is_popable_blocker (Blocker_handle sigma) const

void remove_popable_blockers ()

void remove_popable_blockers (Vertex_handle v)

void remove_all_popable_blockers (Vertex_handle v)
Removes all the popable blockers of the complex passing through v and delete them. Also remove popable blockers in the neighborhood if they became popable.

void remove_star (Vertex_handle v)

void remove_star (Vertex_handle a, Vertex_handle b)

void remove_star (Edge_handle e)

void remove_star (const Simplex &sigma)

add a simplex and all its faces. More...

simplifiable_status is_remove_star_homotopy_preserving (const Simplex &simplex)

virtual contractible_status is_contractible () const
Test if the complex is reducible using a strategy defined in the class (by default it tests if the complex is a cone) More...

Complex_vertex_range vertex_range () const
Returns a Complex_vertex_range over all vertices of the complex.

Complex_neighbors_vertices_range vertex_range (Vertex_handle v) const
Returns a Complex_edge_range over all edges of the simplicial complex that passes trough v.

Complex_edge_range edge_range () const
Returns a Complex_edge_range over all edges of the simplicial complex.

Complex_edge_around_vertex_range edge_range (Vertex_handle v) const
Returns a Complex_edge_range over all edges of the simplicial complex that passes through 'v'.

Complex_triangle_around_vertex_range triangle_range (Vertex_handle v) const
Range over triangles around a vertex of the simplicial complex. Methods .begin() and .end() return a Triangle_around_vertex_iterator.

Complex_triangle_range triangle_range () const
Range over triangles of the simplicial complex. Methods .begin() and .end() return a Triangle_around_vertex_iterator.

Complex_simplex_around_vertex_range star_simplex_range (Vertex_handle v) const
Returns a Complex_simplex_around_vertex_range over all the simplices around a vertex of the complex.

Complex_coboundary_range coboundary_range (const Simplex &s) const
Returns a Complex_simplex_coboundary_iterator over the simplices of the coboundary of a simplex.

Complex_simplex_range complex_simplex_range () const
Returns a Complex_simplex_range over all the simplices of the complex.

Skeleton_blocker_complex (size_t num_vertices_=0, Visitor *visitor_=NULL)
constructs a simplicial complex with a given number of vertices and a visitor.

Skeleton_blocker_complex (SimpleHandleOutputIterator simplices_begin, SimpleHandleOutputIterator simplices_end, bool is_flag_complex=false, Visitor *visitor_=NULL)
Constructor with a list of simplices. More...

Skeleton_blocker_complex (const Skeleton_blocker_complex &copy)

Skeleton_blocker_complexoperator= (const Skeleton_blocker_complex &copy)

bool operator== (const Skeleton_blocker_complex &other) const

bool operator!= (const Skeleton_blocker_complex &other) const

virtual ~Skeleton_blocker_complex ()

virtual void clear ()

void set_visitor (Visitor *other_visitor)
allows to change the visitor.

Complex_blocker_around_vertex_range blocker_range (Vertex_handle v)
Returns a range of the blockers of the complex passing through a vertex.

Complex_blocker_range blocker_range ()
Returns a range of the blockers of the complex.

Const_complex_blocker_around_vertex_range const_blocker_range (Vertex_handle v) const
Returns a range of the blockers of the complex passing through a vertex.

Const_complex_blocker_range const_blocker_range () const
Returns a range of the blockers of the complex.

Adds the simplex to the set of blockers and returns a Blocker_handle toward it if was not present before and 0 otherwise.

void remove_blocker (const Blocker_handle sigma)
Removes the simplex from the set of blockers. More...

void remove_blockers ()
Remove all blockers, in other words, it expand the simplicial complex to the smallest flag complex that contains it.

void delete_blocker (Blocker_handle sigma)

bool contains_blocker (const Blocker_handle s) const

bool contains_blocker (const Simplex &s) const

bool link_condition (Vertex_handle a, Vertex_handle b, bool ignore_popable_blockers=false) const

bool link_condition (Edge_handle e, bool ignore_popable_blockers=false) const

void contract_edge (Edge_handle edge)

void contract_edge (Vertex_handle a, Vertex_handle b)

Public Types inherited from Gudhi::skeleton_blocker::Skeleton_blocker_complex< SkeletonBlockerGeometricDS >
typedef SkeletonBlockerGeometricDS ::Graph_vertex Graph_vertex
The type of stored vertex node, specified by the template SkeletonBlockerDS.

typedef SkeletonBlockerGeometricDS ::Graph_edge Graph_edge
The type of stored edge node, specified by the template SkeletonBlockerDS.

typedef SkeletonBlockerGeometricDS ::Vertex_handle Vertex_handle
The type of an handle to a vertex of the complex.

typedef Skeleton_blocker_simplex< Vertex_handleSimplex
A ordered set of integers that represents a simplex.

typedef SimplexBlocker_handle
Handle to a blocker of the complex.

typedef boost::graph_traits< Graph >::edge_descriptor Edge_handle
Handle to an edge of the complex.

enum  simplifiable_status

enum  contractible_status

typedef Vertex_iterator< Skeleton_blocker_complexComplex_vertex_iterator

typedef boost::iterator_range< Complex_vertex_iteratorComplex_vertex_range

typedef Neighbors_vertices_iterator< Skeleton_blocker_complexComplex_neighbors_vertices_iterator

typedef boost::iterator_range< Complex_neighbors_vertices_iterator > Complex_neighbors_vertices_range

typedef Edge_iterator< Skeleton_blocker_complexComplex_edge_iterator

typedef boost::iterator_range< Complex_edge_iteratorComplex_edge_range

typedef Edge_around_vertex_iterator< Skeleton_blocker_complexComplex_edge_around_vertex_iterator

typedef boost::iterator_range< Complex_edge_around_vertex_iterator > Complex_edge_around_vertex_range

typedef boost::iterator_range< Triangle_around_vertex_iterator< Skeleton_blocker_complex, Link > > Complex_triangle_around_vertex_range

typedef boost::iterator_range< Triangle_iterator< Skeleton_blocker_complex > > Complex_triangle_range

typedef Triangle_iterator< Skeleton_blocker_complexComplex_triangle_iterator

typedef boost::iterator_range< Complex_simplex_around_vertex_iteratorComplex_simplex_around_vertex_range
Range over the simplices of the simplicial complex around a vertex. Methods .begin() and .end() return a Complex_simplex_around_vertex_iterator.

typedef boost::iterator_range< Complex_simplex_coboundary_iteratorComplex_coboundary_range
Range over the simplices of the coboundary of a simplex. Methods .begin() and .end() return a Complex_simplex_coboundary_iterator.

typedef Simplex_iterator< Skeleton_blocker_complexComplex_simplex_iterator

typedef boost::iterator_range< Complex_simplex_iterator > Complex_simplex_range

## Detailed Description

### template<typename SkeletonBlockerGeometricDS> class Gudhi::skeleton_blocker::Skeleton_blocker_geometric_complex< SkeletonBlockerGeometricDS >

Class that represents a geometric complex that can be simplified. The class allows access to points of vertices.

Examples:
Contraction/Garland_heckbert.cpp, and Contraction/Rips_contraction.cpp.

## ◆ Skeleton_blocker_geometric_complex() [1/3]

template<typename SkeletonBlockerGeometricDS >
template<typename PointIterator >
 Gudhi::skeleton_blocker::Skeleton_blocker_geometric_complex< SkeletonBlockerGeometricDS >::Skeleton_blocker_geometric_complex ( int num_vertices, PointIterator begin, PointIterator end )
inlineexplicit

constructor given a list of points

## ◆ Skeleton_blocker_geometric_complex() [2/3]

template<typename SkeletonBlockerGeometricDS >
template<typename SimpleHandleOutputIterator , typename PointIterator >
 Gudhi::skeleton_blocker::Skeleton_blocker_geometric_complex< SkeletonBlockerGeometricDS >::Skeleton_blocker_geometric_complex ( SimpleHandleOutputIterator simplex_begin, SimpleHandleOutputIterator simplex_end, PointIterator points_begin, PointIterator points_end, bool is_flag_complex = false )
inline

Constructor with a list of simplices.

is_flag_complex indicates if the complex is a flag complex or not (to know if blockers have to be computed or not).

## ◆ Skeleton_blocker_geometric_complex() [3/3]

template<typename SkeletonBlockerGeometricDS >
template<typename SimpleHandleOutputIterator >
 Gudhi::skeleton_blocker::Skeleton_blocker_geometric_complex< SkeletonBlockerGeometricDS >::Skeleton_blocker_geometric_complex ( SimpleHandleOutputIterator simplex_begin, SimpleHandleOutputIterator simplex_end, bool is_flag_complex = false )
inline

Constructor with a list of simplices. Points of every vertex are the point constructed with default constructor.

is_flag_complex indicates if the complex is a flag complex or not (to know if blockers have to be computed or not).

## Member Function Documentation

template<typename SkeletonBlockerGeometricDS >
inline

Constructs the abstract link of v (without points coordinates).

template<typename SkeletonBlockerGeometricDS >
inline

Constructs the link of 'simplex' with points coordinates.

template<typename SkeletonBlockerGeometricDS >
inline

Constructs the link of 'simplex' with points coordinates.

template<typename SkeletonBlockerGeometricDS >
inline

Constructs the link of 'simplex' with points coordinates.

template<typename SkeletonBlockerGeometricDS >
inline

Constructs the link of 'simplex' with points coordinates.