Quetzal-CoaTL
The Coalescence Template Library
Loading...
Searching...
No Matches
quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP > Class Template Reference

Public Types

using vertex_descriptor = typename base::vertex_descriptor
 Vertex descriptor ("node ID" in other words).
 
using edge_descriptor = typename base::edge_descriptor
 Edge descriptor.
 
using vertex_property = VertexProperty
 Vertex information.
 
using edge_property = EdgeProperty
 Edge information.
 
using degree_size_type = typename base::degree_size_type
 Degree size type.
 
using traversal_category = typename base::traversal_category
 The ways in which the vertices in the graph can be traversed.
 
using directed_category = typename base::directed_category
 The graph is bidirected.
 
using in_edge_iterator = typename base::in_edge_iterator
 Iterate through the in-edges.
 
using out_edge_iterator = typename base::out_edge_iterator
 Iterate through the out-edges.
 
using edge_parallel_category = typename base::edge_parallel_category
 

Public Member Functions

 network_common ()
 Default constructor.
 
 network_common (size_t n)
 Constructs a network with \(n\) vertices.
 
Topology Lookup
bool is_isomorphic (network_common const &other) const
 Detects if there is a 1-to-1 mapping of the vertices in one graph to the vertices of another graph such that adjacency is preserved.
 
vertex_descriptor find_root_from (vertex_descriptor u) const
 Finds the root of the network graph starting from a vertex \(u\).
 
degree_size_type degree (vertex_descriptor u) const
 Returns the number of in-edges plus out-edges.
 
degree_size_type in_degree (vertex_descriptor u) const
 Returns the number of in-edges of vertex \(u\).
 
degree_size_type out_degree (vertex_descriptor v) const
 Returns the number of out-edges of vertex \(v\).
 
bool has_predecessor (vertex_descriptor u) const
 Evaluates if vertex \(u\) has a predecessor.
 
vertex_descriptor predecessor (vertex_descriptor u) const
 The predecessor of vertex \(u\).
 
bool has_successors (vertex_descriptor u) const
 Evaluates if vertex \(u\) has successors.
 
auto successors (vertex_descriptor u) const
 The successors of vertex \(u\).
 
std::optional< edge_descriptoredge (vertex_descriptor u, vertex_descriptor v) const
 Returns the edge between two vertices of the graph if the edge exists.
 
vertex_descriptor source (edge_descriptor e) const
 Returns the source vertex of a directed edge.
 
vertex_descriptor target (edge_descriptor e) const
 Returns the target vertex of a directed edge.
 
Topology Modification
vertex_descriptor add_vertex ()
 
void clear_vertex (vertex_descriptor u)
 Remove all edges to and from vertex \(u\) from the graph.
 
void remove_vertex (vertex_descriptor u)
 Remove vertex u from the graph, also removing all edges to and from vertex \(u\).
 
edge_descriptor add_edge (vertex_descriptor u, vertex_descriptor v)
 Inserts the edge \((u,v)\) into the graph if it does not exist, and returns an edge descriptor pointing to the new edge.
 
void remove_edge (vertex_descriptor u, vertex_descriptor v)
 Remove the edge \((u,v)\) from the graph.
 
void remove_edge (edge_descriptor e)
 Remove the edge \(e\) from the graph.
 
Iterators
auto in_edges (vertex_descriptor u) const
 Provides a range to iterate over the in-going edges of vertex \(u\).
 
auto out_edges (vertex_descriptor u) const
 Provides a range to iterate over the out-going edges of vertex \(u\).
 
auto vertices () const
 Provides a range to iterate over the vertices of the graph.
 
Algorithms
template<typename DFSVisitor >
void depth_first_search (vertex_descriptor start, DFSVisitor &vis)
 Performs a read-and-write depth-first traversal of the vertices starting at vertex \(s\).
 
template<typename DFSVisitor >
void depth_first_search (vertex_descriptor start, DFSVisitor &vis) const
 Performs a read-only depth-first traversal of the vertices starting at vertex \(s\).
 
Input/Output
void to_graphviz (std::ostream &out) const
 Print the graph to the graphviz format.
 

Static Public Member Functions

static constexpr vertex_descriptor null_vertex ()
 Null vertex identifier.
 

Protected Types

using base = tree_traits::model< tree_traits::out_edge_list_type, tree_traits::vertex_list_type, tree_traits::directed_type, VertexProperty, EdgeProperty >
 The type of graph hold by the network class.
 

Protected Attributes

base _graph
 

Member Typedef Documentation

◆ base

template<class VertexProperty , class EdgeProperty , class CRTP >
using quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::base = tree_traits::model<tree_traits::out_edge_list_type, tree_traits::vertex_list_type, tree_traits::directed_type, VertexProperty, EdgeProperty>
protected

The type of graph hold by the network class.

Note
Not a tree but still valid for a graph

Member Function Documentation

◆ add_edge()

template<class VertexProperty , class EdgeProperty , class CRTP >
edge_descriptor quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::add_edge ( vertex_descriptor  u,
vertex_descriptor  v 
)
inline

Inserts the edge \((u,v)\) into the graph if it does not exist, and returns an edge descriptor pointing to the new edge.

Parameters
uSource vertex
uTarget vertex

◆ clear_vertex()

template<class VertexProperty , class EdgeProperty , class CRTP >
void quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::clear_vertex ( vertex_descriptor  u)
inline

Remove all edges to and from vertex \(u\) from the graph.

Parameters
uThe vertex

◆ degree()

template<class VertexProperty , class EdgeProperty , class CRTP >
degree_size_type quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::degree ( vertex_descriptor  u) const
inline

Returns the number of in-edges plus out-edges.

Parameters
uThe vertex \(u\)
Returns
Returns the number of in-edges plus out-edges.

◆ depth_first_search() [1/2]

template<class VertexProperty , class EdgeProperty , class CRTP >
template<typename DFSVisitor >
void quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::depth_first_search ( vertex_descriptor  start,
DFSVisitor &  vis 
)
inline

Performs a read-and-write depth-first traversal of the vertices starting at vertex \(s\).

Template Parameters
DFSVisitor
Parameters
startThe vertex to start from.
visThe visitor to apply.

◆ depth_first_search() [2/2]

template<class VertexProperty , class EdgeProperty , class CRTP >
template<typename DFSVisitor >
void quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::depth_first_search ( vertex_descriptor  start,
DFSVisitor &  vis 
) const
inline

Performs a read-only depth-first traversal of the vertices starting at vertex \(s\).

Template Parameters
DFSVisitor
Parameters
startThe vertex to start from.
visThe visitor to apply.

◆ edge()

template<class VertexProperty , class EdgeProperty , class CRTP >
std::optional< edge_descriptor > quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::edge ( vertex_descriptor  u,
vertex_descriptor  v 
) const
inline

Returns the edge between two vertices of the graph if the edge exists.

Parameters
uThe first vertex
uThe second vertex
Returns
An optional edge descriptor \(e\).

◆ find_root_from()

template<class VertexProperty , class EdgeProperty , class CRTP >
vertex_descriptor quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::find_root_from ( vertex_descriptor  u) const
inline

Finds the root of the network graph starting from a vertex \(u\).

Parameters
uThe vertex to start from.
Remarks
This function will be an infinite loop if called on a recurrent network

◆ has_predecessor()

template<class VertexProperty , class EdgeProperty , class CRTP >
bool quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::has_predecessor ( vertex_descriptor  u) const
inline

Evaluates if vertex \(u\) has a predecessor.

Parameters
uThe vertex to evaluate
Returns
True if u has a predecessor, false otherwise

◆ has_successors()

template<class VertexProperty , class EdgeProperty , class CRTP >
bool quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::has_successors ( vertex_descriptor  u) const
inline

Evaluates if vertex \(u\) has successors.

Parameters
uThe vertex to evaluate
Returns
True if u has successors, false otherwise

◆ in_degree()

template<class VertexProperty , class EdgeProperty , class CRTP >
degree_size_type quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::in_degree ( vertex_descriptor  u) const
inline

Returns the number of in-edges of vertex \(u\).

Parameters
uThe vertex \(u\)
Returns
The number of in-edges.

◆ in_edges()

template<class VertexProperty , class EdgeProperty , class CRTP >
auto quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::in_edges ( vertex_descriptor  u) const
inline

Provides a range to iterate over the in-going edges of vertex \(u\).

Parameters
uThe vertex \(u\).
Returns
A range

◆ is_isomorphic()

template<class VertexProperty , class EdgeProperty , class CRTP >
bool quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::is_isomorphic ( network_common< VertexProperty, EdgeProperty, CRTP > const &  other) const
inline

Detects if there is a 1-to-1 mapping of the vertices in one graph to the vertices of another graph such that adjacency is preserved.

Parameters
otherA network graph.
Returns
true if there exists an isomorphism between the two graphs and false otherwise

◆ null_vertex()

template<class VertexProperty , class EdgeProperty , class CRTP >
static constexpr vertex_descriptor quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::null_vertex ( )
inlinestaticconstexpr

Null vertex identifier.

Returns
A null vertex

◆ out_edges()

template<class VertexProperty , class EdgeProperty , class CRTP >
auto quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::out_edges ( vertex_descriptor  u) const
inline

Provides a range to iterate over the out-going edges of vertex \(u\).

Parameters
uThe vertex \(u\).
Returns
A range

◆ predecessor()

template<class VertexProperty , class EdgeProperty , class CRTP >
vertex_descriptor quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::predecessor ( vertex_descriptor  u) const
inline

The predecessor of vertex \(u\).

Parameters
uThe vertex
Returns
The vertex that is the predecessor of \(u\).

◆ remove_edge() [1/2]

template<class VertexProperty , class EdgeProperty , class CRTP >
void quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::remove_edge ( edge_descriptor  e)
inline

Remove the edge \(e\) from the graph.

Parameters
eThe edge to remove

◆ remove_edge() [2/2]

template<class VertexProperty , class EdgeProperty , class CRTP >
void quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::remove_edge ( vertex_descriptor  u,
vertex_descriptor  v 
)
inline

Remove the edge \((u,v)\) from the graph.

Parameters
uSource vertex
uTarget vertex

◆ remove_vertex()

template<class VertexProperty , class EdgeProperty , class CRTP >
void quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::remove_vertex ( vertex_descriptor  u)
inline

Remove vertex u from the graph, also removing all edges to and from vertex \(u\).

Parameters
uThe vertex to remove.

◆ source()

template<class VertexProperty , class EdgeProperty , class CRTP >
vertex_descriptor quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::source ( edge_descriptor  e) const
inline

Returns the source vertex of a directed edge.

Parameters
eThe edge
Returns
The source vertex of the edge \(e\).

◆ successors()

template<class VertexProperty , class EdgeProperty , class CRTP >
auto quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::successors ( vertex_descriptor  u) const
inline

The successors of vertex \(u\).

Parameters
uThe vertex
Returns
A pair of iterators on the vertices that are the successors of \(u\).

◆ target()

template<class VertexProperty , class EdgeProperty , class CRTP >
vertex_descriptor quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::target ( edge_descriptor  e) const
inline

Returns the target vertex of a directed edge.

Parameters
eThe edge
Returns
The target vertex of the edge \(e\).

◆ vertices()

template<class VertexProperty , class EdgeProperty , class CRTP >
auto quetzal::coalescence::detail::network_common< VertexProperty, EdgeProperty, CRTP >::vertices ( ) const
inline

Provides a range to iterate over the vertices of the graph.

Returns
A range

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