Derived class of GraphObserver providing additional functionality to handle clustered graphs.
Declaration and implementation of HashArray class.
Declaration of class Skiplist.
The parameterized class Array implements dynamic arrays of type E.
List< node > & oaNodes(cluster c)
Returns list of outeractive vertices for cluster c. The result is only valid if lists are stored,...
void partitionCluster(ListConstIterator< node > &nodeIt, cluster c, HashArray< int, List< node > > &bagNodes, HashArray< int, bool > &indyBag, Skiplist< int * > &indexNumbers, Array< cluster > &bagRoots)
Runs through a list of vertices (starting with the one nodeIT points to) which is expected to be a fu...
ClusterAnalysis(const ClusterGraph &C, bool indyBags=false)
Constructor. Performs all analyses and in case indyBags is set to true, also computes a partition int...
void computeIndyBags()
Compute independent bags per cluster and store result as vertex-indyBag index in m_indyBagNumber.
const bool m_storeoalists
If set to true (default) lists of outeractive vertices are stored.
void cleanUp()
Deletes dynamically allocated structures.
NodeArray< ClusterArray< int > * > m_iactive
int innerActive(cluster c) const
Returns number of inneractive vertices of cluster c.
NodeArray< int > m_ialevel
static const int DefaultIndex
ClusterArray< List< edge > > * m_lcaEdges
For each cluster c we store the edges with lca c.
int minIALevel(node v) const
Returns the highest (smallest) level depth for which a vertex is inner active, only initialized if ve...
NodeArray< int > m_indyBagNumber
Each independent bag has a different number.
int minOALevel(node v) const
Returns the highest (smallest) level depth for which a vertex is outer active, only initialized if ve...
bool isOuterActive(node v, cluster c) const
Returns outer activity status for vertex v wrt cluster c.
static const int IsNotActiveBound
int numberOfBags(cluster c) const
Returns number of bags for cluster c.
ClusterArray< List< node > > * m_oalists
For each cluster we store the outeractive vertices. In case you want to save space,...
ClusterArray< int > * m_bags
Number of bags per cluster (stored even if vertex list is not stored)
NodeArray< int > m_oalevel
const bool m_indyBags
If true, a node partition into independent bags is computed which can be used for dividing the input ...
int indyBagIndex(node v)
Returns independent bag index number for a vertex v.
bool isInnerActive(node v, cluster c) const
int outerActive(cluster c) const
Returns number of outeractive vertices of cluster c.
int bagIndex(node v, cluster c)
Returns bag index number for a vertex v in cluster c.
cluster indyBagRoot(int i)
Returns root cluster of independent bag. Note that this cluster either has direct vertex members or m...
void init()
Initialize the structures, performs analyses.
NodeArray< ClusterArray< int > * > m_bagindex
We store the bag affiliation of the vertices for each cluster. A value of -1 indicates that the verte...
ClusterArray< int > * m_oanum
Number of outer active vertices.
NodeArray< ClusterArray< int > * > m_oactive
void computeBags()
Compute bags per cluster and store result as vertex-bag index in m_bagIndex.
ClusterAnalysis(const ClusterGraph &C, bool oalists, bool indyBags)
Additionally allows to forbid storing lists of outer active vertices.
ClusterArray< int > * m_ianum
Number of inner active vertices.
int minIOALevel(node v) const
Returns the highest (smallest) level depth for which a vertex is inner or outer active.
int numberOfIndyBags()
Returns number of independent bags in clustergraph, -1 in case no independent bags were computed....
List< edge > & lcaEdges(cluster c)
Returns list of edges for cluster c with lca c.
Dynamic arrays indexed with clusters.
Representation of clusters in a clustered graph.
Representation of clustered graphs.
Indexed arrays using hashing for element access.
Doubly linked lists (maintaining the length of the list).
Encapsulates a pointer to a list element.
Dynamic arrays indexed with nodes.
Class for the representation of nodes.
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.