Graph_Interface wrapper for set of boost graphs.
More...
#include <Graph_boostV_p.hh>
|
typedef boost::property_map
< GRAPH, EDGE_LABEL_PROPERTY >
::const_type | EdgeLabelMap |
| edge label property map More...
|
|
typedef boost::property_map
< GRAPH, NODE_INDEX_PROPERTY >
::const_type | NodeIndexMap |
| index property map More...
|
|
|
const std::vector< const GRAPH * > & | graphs |
| the vector of graphs to map More...
|
|
std::vector< size_t > | graphSize |
| the sum of node numbers up to graphs[i] More...
|
|
template<class GRAPH, typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
class sgm::Graph_boostV_p< GRAPH, NODE_LABEL_PROPERTY, EDGE_LABEL_PROPERTY, NODE_INDEX_PROPERTY >
This class implements the Graph interface of a labeled undirected
graph. It is used as an interface of a vector of POINTERS of
undirected labeled
boost graphs to the sub graph matching algorithms of the library.
The template parameter GRAPH represents the type of the
boost graphs to use. The type names NODE_LABEL_PROPERTY and
EDGE_LABEL_PROPERTY are used to generate the node and edge labels of
the graph. The type name NODE_INDEX_PROPERTY is used to derive the
corresponding local node index for a certain vertex in a graph.
The mapped set of graphs is represented as ONE unconnected
graph to the library.
- Author
- Martin Mann (c) 2008 http://www.bioinf.uni-freiburg.de/~mmann/
Definition at line 49 of file Graph_boostV_p.hh.
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
typedef boost::property_map<GRAPH, EDGE_LABEL_PROPERTY>::const_type sgm::Graph_boostV_p< GRAPH, NODE_LABEL_PROPERTY, EDGE_LABEL_PROPERTY, NODE_INDEX_PROPERTY >::EdgeLabelMap |
|
protected |
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
the location information of a node in the global index to the graph index in graphs and the local node index in that graph. LocalIndex.first gives the graph index in [0,graphs.size()) LocalIndex.second gives the local node in [0,graphs[LI.first].nodes)
Definition at line 71 of file Graph_boostV_p.hh.
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
typedef boost::property_map<GRAPH, NODE_INDEX_PROPERTY>::const_type sgm::Graph_boostV_p< GRAPH, NODE_LABEL_PROPERTY, EDGE_LABEL_PROPERTY, NODE_INDEX_PROPERTY >::NodeIndexMap |
|
protected |
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
Construction of the interface graph.
- Parameters
-
graphs | the vector of boost graph pointers to use as internal data structure (all != NULL) |
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
Computes the connected components of a given graph. It stores the connected component ID of each node within the provided container and returns the number of components.
- Parameters
-
g | the graph to check for connected components |
compID | the container to store the component ID information within |
- Returns
- the number of connected components within g
Access to the label of a specified edge
- Parameters
-
i | the index of the first end node of interest |
j | the index of the second end node of interest |
- Returns
- the edge iterator pointing to the first edge between node i and j or to getEdgesEnd(i,j) if no edge exists
Access to the label of a specified edge
- Parameters
-
i | the index of the first end node of interest |
j | the index of the second end node of interest |
- Returns
- the edge iterator pointing to the first edge between node i and j or to getEdgesEnd(i,j) if no edge exists
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
const std::vector< const GRAPH* >& sgm::Graph_boostV_p< GRAPH, NODE_LABEL_PROPERTY, EDGE_LABEL_PROPERTY, NODE_INDEX_PROPERTY >::getGraphs |
( |
void |
| ) |
const |
Access to the internal list of GRAPH object pointers
- Returns
- a reference to the graphs object
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
Access to the local index in graphs of the virtual global node i
- Parameters
-
i | index of the global node of intrest |
- Returns
- the local index of i in graphs and the local index of i in that graph
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
virtual std::string sgm::Graph_boostV_p< GRAPH, NODE_LABEL_PROPERTY, EDGE_LABEL_PROPERTY, NODE_INDEX_PROPERTY >::getNodeLabel |
( |
const IndexType & |
i | ) |
const |
|
virtual |
Access to the label of a specified node
- Parameters
-
i | the index of the node of interest |
- Returns
- a string representation of the node label
Implements sgm::Graph_Interface.
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
virtual size_t sgm::Graph_boostV_p< GRAPH, NODE_LABEL_PROPERTY, EDGE_LABEL_PROPERTY, NODE_INDEX_PROPERTY >::getNodeNumber |
( |
void |
| ) |
const |
|
virtual |
Access to the number of nodes of the graph
- Returns
- the overall node number
Implements sgm::Graph_Interface.
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
Access to iteration begin for the edge in the adjacency list of a specified node
- Parameters
-
i | the index of the node of interest |
- Returns
- the iterator to the first edge within the adjacency of i
Implements sgm::Graph_Interface.
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
Access to iteration end for the edge in the adjacency list of a specified node
- Parameters
-
i | the index of the node of interest |
- Returns
- the iterator the end of the adjacency iteration of i
Implements sgm::Graph_Interface.
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
static void sgm::Graph_boostV_p< GRAPH, NODE_LABEL_PROPERTY, EDGE_LABEL_PROPERTY, NODE_INDEX_PROPERTY >::indexGraphs |
( |
std::vector< GRAPH * > & |
graphs | ) |
|
|
static |
Static member function that allows for the indexing of the nodes in the graphs. For each graph it opens the property map for NODE_INDEX_PROPERTY and sets an index with [0,num_vertices(g)) along the ordering defined by the vertex iterators. Therefore, this function can be used to set the necessary local indexes before creating a Graph_boostV_p object. NOTE : The property map is NOT CONSTRUCTED has to be already part of the GRAPH definition! It is ONLY FILLED!
static void sgm::Graph_Interface::labelAdjacentNodes |
( |
const Graph_Interface & |
g, |
|
|
const size_t |
curNode, |
|
|
CompLabel & |
compID, |
|
|
const size_t |
label |
|
) |
| |
|
staticprotectedinherited |
Performs a depths-first-search labeling of all accessible nodes starting from curNode within g. The reached nodes are labeled with the given label in the component ID container compID
- Parameters
-
the | graph to screen |
curNode | the node to start the search from |
compID | the container to store the component ID information within |
label | the component ID to be used for all nodes of the connected component reachable from curNode |
virtual bool sgm::Graph_Interface::operator!= |
( |
const Graph_Interface & |
toCompare | ) |
const |
|
virtualinherited |
Interface inequality comparison : NOTE : this function checks whether the interfaces of two graphs are identical or not, i.e. nodes with same index are equal and the order of adjacent edges is the same. This function performs NO GRAPH ISOMORPHISM !!! Thus, slight changes in the node order etc. will result in a non-equal interface!
- Parameters
-
- Returns
- true if both graph interfaces are different
virtual bool sgm::Graph_Interface::operator== |
( |
const Graph_Interface & |
toCompare | ) |
const |
|
virtualinherited |
Interface equality comparison : NOTE : this function checks whether the interfaces of two graphs are identical or not, i.e. nodes with same index are equal and the order of adjacent edges is the same. This function performs NO GRAPH ISOMORPHISM !!! Thus, slight changes in the node order etc. will result in a non-equal interface!
- Parameters
-
- Returns
- true if both graph interfaces are equal
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
const std::vector< const GRAPH * >& sgm::Graph_boostV_p< GRAPH, NODE_LABEL_PROPERTY, EDGE_LABEL_PROPERTY, NODE_INDEX_PROPERTY >::graphs |
|
protected |
template<class GRAPH , typename NODE_LABEL_PROPERTY = boost::vertex_name_t, typename EDGE_LABEL_PROPERTY = boost::edge_name_t, typename NODE_INDEX_PROPERTY = boost::vertex_index_t>
std::vector< size_t > sgm::Graph_boostV_p< GRAPH, NODE_LABEL_PROPERTY, EDGE_LABEL_PROPERTY, NODE_INDEX_PROPERTY >::graphSize |
|
protected |
The documentation for this class was generated from the following file: