Gudhi::skeleton_blocker::Skeleton_blocker_link_complex< ComplexType > Class Template Reference

Class representing the link of a simplicial complex encoded by a skeleton/blockers pair. It inherits from Skeleton_blocker_sub_complex because such complex is a sub complex of a root complex. More...

Public Member Functions

 Skeleton_blocker_link_complex (const ComplexType &parent_complex, const Simplex &alpha_parent_address, bool only_superior_vertices=false, bool only_vertices=false)
 
 Skeleton_blocker_link_complex (const ComplexType &parent_complex, Vertex_handle a_parent_address, bool only_superior_vertices=false)
 
 Skeleton_blocker_link_complex (const ComplexType &parent_complex, Edge_handle edge, bool only_superior_vertices=false)
 
void build_link (const ComplexType &parent_complex, const Simplex &alpha_parent_address, bool is_alpha_blocker=false, bool only_vertices=false)
 compute vertices, edges and blockers of the link. More...
 
- Public Member Functions inherited from Gudhi::skeleton_blocker::Skeleton_blocker_sub_complex< ComplexType >
Vertex_handle add_vertex (Root_vertex_handle global)
 
void add_edge_without_blockers (Root_vertex_handle v1_root, Root_vertex_handle v2_root)
 
void add_blocker (const Root_simplex_handle &blocker_root)
 
void make_restricted_complex (const ComplexType &parent_complex, const Simplex &simplex)
 
void clear ()
 
boost::optional< Vertex_handle > get_address (Root_vertex_handle global) const
 
std::vector< boost::optional< Vertex_handle > > get_addresses (const Root_simplex_handle &s) const
 
- Public Member Functions inherited from Gudhi::skeleton_blocker::Skeleton_blocker_complex< SkeletonBlockerDS >
Vertex_handle operator[] (Root_vertex_handle global) const
 Return a local Vertex_handle of a vertex given a global one. More...
 
Graph_vertexoperator[] (Vertex_handle address)
 Return the vertex node associated to local Vertex_handle. More...
 
const Graph_vertexoperator[] (Vertex_handle address) const
 Return the vertex node associated to local Vertex_handle. More...
 
Vertex_handle add_vertex ()
 Adds a vertex to the simplicial complex and returns its Vertex_handle. More...
 
void remove_vertex (Vertex_handle address)
 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...
 
void add_edge (const Simplex &s)
 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...
 
void add_edge_without_blockers (Simplex s)
 Adds all edges of s in the complex without adding blockers.
 
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)
 
void add_simplex (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...
 
Blocker_handle add_blocker (const Simplex &blocker)
 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
 
Link_complex link (Vertex_handle v) const
 
Link_complex link (Edge_handle edge) const
 
Link_complex link (const Simplex &simplex) const
 
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.
 
Root_simplex_handle get_id (const Simplex &local_simplex) const
 returns a simplex with vertices which are the id of vertices of the argument.
 
virtual bool contains (const Simplex &s) const
 returns true iff the simplex s belongs to the simplicial complex.
 
bool empty () const
 
int num_vertices () const
 
int num_edges () const
 
int num_triangles () const
 
size_t num_simplices () const
 
size_t num_simplices (int dimension) const
 
size_t num_blockers () const
 
bool complete () const
 
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...
 
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 through 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.
 
template<typename SimpleHandleOutputIterator >
 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 ()
 
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.
 
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.
 
Complex_blocker_range blocker_range ()
 Returns a range of the blockers of the complex.
 
Const_complex_blocker_range const_blocker_range () const
 Returns a range of the blockers of the complex.
 
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)
 

Friends

void build_link_of_blocker (const ComplexType &parent_complex, Simplex &blocker, Skeleton_blocker_link_complex &result)
 build the link of a blocker which is the link of the blocker's simplex if this simplex had been removed from the blockers of the complex.
 

Additional Inherited Members

- Public Types inherited from Gudhi::skeleton_blocker::Skeleton_blocker_complex< SkeletonBlockerDS >
typedef SkeletonBlockerDS::Graph_vertex Graph_vertex
 The type of stored vertex node, specified by the template SkeletonBlockerDS.
 
typedef SkeletonBlockerDS::Graph_edge Graph_edge
 The type of stored edge node, specified by the template SkeletonBlockerDS.
 
typedef SkeletonBlockerDS::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 Skeleton_blocker_link_complex< Skeleton_blocker_complexLink_complex
 
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 Triangle_around_vertex_iterator< Skeleton_blocker_complex, Superior_linkSuperior_triangle_around_vertex_iterator
 
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 Simplex_around_vertex_iterator< Skeleton_blocker_complex, LinkComplex_simplex_around_vertex_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 Simplex_coboundary_iterator< Skeleton_blocker_complex, LinkComplex_simplex_coboundary_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 ComplexType>
class Gudhi::skeleton_blocker::Skeleton_blocker_link_complex< ComplexType >

Class representing the link of a simplicial complex encoded by a skeleton/blockers pair. It inherits from Skeleton_blocker_sub_complex because such complex is a sub complex of a root complex.

Constructor & Destructor Documentation

◆ Skeleton_blocker_link_complex() [1/3]

template<typename ComplexType >
Gudhi::skeleton_blocker::Skeleton_blocker_link_complex< ComplexType >::Skeleton_blocker_link_complex ( const ComplexType &  parent_complex,
const Simplex &  alpha_parent_address,
bool  only_superior_vertices = false,
bool  only_vertices = false 
)
inline

If the parameter only_superior_vertices is true, only vertices greater than the one of alpha are added. Only vertices are computed if only_vertices is true.

◆ Skeleton_blocker_link_complex() [2/3]

template<typename ComplexType >
Gudhi::skeleton_blocker::Skeleton_blocker_link_complex< ComplexType >::Skeleton_blocker_link_complex ( const ComplexType &  parent_complex,
Vertex_handle  a_parent_address,
bool  only_superior_vertices = false 
)
inline

If the parameter only_superior_vertices is true, only vertices greater than the one of the vertex are added.

◆ Skeleton_blocker_link_complex() [3/3]

template<typename ComplexType >
Gudhi::skeleton_blocker::Skeleton_blocker_link_complex< ComplexType >::Skeleton_blocker_link_complex ( const ComplexType &  parent_complex,
Edge_handle  edge,
bool  only_superior_vertices = false 
)
inline

If the parameter only_superior_vertices is true, only vertices greater than the one of the edge are added.

Member Function Documentation

◆ build_link()

template<typename ComplexType >
void Gudhi::skeleton_blocker::Skeleton_blocker_link_complex< ComplexType >::build_link ( const ComplexType &  parent_complex,
const Simplex &  alpha_parent_address,
bool  is_alpha_blocker = false,
bool  only_vertices = false 
)
inline

compute vertices, edges and blockers of the link.

If the boolean only_superior_vertices is true, then the link is computed only with vertices that are greater than vertices of alpha_parent_address.


The documentation for this class was generated from the following file: