Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

ExtendedNestingGraph.h
Go to the documentation of this file.
1 
34 #pragma once
35 
36 #include <ogdf/basic/EdgeArray.h>
39 
40 namespace ogdf {
41 
44  m_cnClusters = 0;
45  m_cnEdges = 0;
46  }
47 
48  RCCrossings(int cnClusters, int cnEdges) {
49  m_cnClusters = cnClusters;
50  m_cnEdges = cnEdges;
51  }
52 
53  void incEdges(int cn) { m_cnEdges += cn; }
54 
55  void incClusters() { ++m_cnClusters; }
56 
58  m_cnClusters += cr.m_cnClusters;
59  m_cnEdges += cr.m_cnEdges;
60  return *this;
61  }
62 
63  RCCrossings operator+(const RCCrossings& cr) const {
64  return RCCrossings(m_cnClusters + cr.m_cnClusters, m_cnEdges + cr.m_cnEdges);
65  }
66 
67  RCCrossings operator-(const RCCrossings& cr) const {
68  return RCCrossings(m_cnClusters - cr.m_cnClusters, m_cnEdges - cr.m_cnEdges);
69  }
70 
71  bool operator<=(const RCCrossings& cr) const {
72  if (m_cnClusters == cr.m_cnClusters) {
73  return m_cnEdges <= cr.m_cnEdges;
74  } else {
75  return m_cnClusters <= cr.m_cnClusters;
76  }
77  }
78 
79  bool operator<(const RCCrossings& cr) const {
80  if (m_cnClusters == cr.m_cnClusters) {
81  return m_cnEdges < cr.m_cnEdges;
82  } else {
83  return m_cnClusters < cr.m_cnClusters;
84  }
85  }
86 
87  bool isZero() const { return m_cnClusters == 0 && m_cnEdges == 0; }
88 
90  m_cnClusters = m_cnEdges = std::numeric_limits<int>::max();
91  return *this;
92  }
93 
94  static int compare(const RCCrossings& x, const RCCrossings& y) {
95  int dc = y.m_cnClusters - x.m_cnClusters;
96  if (dc != 0) {
97  return dc;
98  }
99  return y.m_cnEdges - x.m_cnEdges;
100  }
101 
104 };
105 
106 OGDF_EXPORT std::ostream& operator<<(std::ostream& os, const RCCrossings& cr);
107 
109 public:
110  enum class Type { Compound, Node, AuxNode };
111 
112  struct Adjacency {
114  m_u = nullptr;
115  m_v = nullptr;
116  m_weight = 0;
117  }
118 
119  Adjacency(node u, LHTreeNode* vNode, int weight = 1) {
120  m_u = u;
121  m_v = vNode;
122  m_weight = weight;
123  }
124 
127  int m_weight;
128 
130  };
131 
134  m_uc = nullptr;
135  m_u = nullptr;
136  m_cNode = nullptr;
137  m_uNode = nullptr;
138  }
139 
140  ClusterCrossing(node uc, LHTreeNode* cNode, node u, LHTreeNode* uNode, edge e) {
141  m_uc = uc;
142  m_u = u;
143  m_cNode = cNode;
144  m_uNode = uNode;
145 
146  m_edge = e;
147  }
148 
153 
155  };
156 
157  // Construction
159  m_parent = nullptr;
160  m_origCluster = c;
161  m_node = nullptr;
162  m_type = Type::Compound;
163  m_down = nullptr;
164 
165  m_up = up;
166  if (up) {
167  up->m_down = this;
168  }
169  }
170 
171  LHTreeNode(LHTreeNode* parent, node v, Type t = Type::Node) {
172  m_parent = parent;
173  m_origCluster = nullptr;
174  m_node = v;
175  m_type = t;
176  m_up = nullptr;
177  m_down = nullptr;
178  }
179 
180  // Access functions
181  bool isCompound() const { return m_type == Type::Compound; }
182 
183  int numberOfChildren() const { return m_child.size(); }
184 
185  const LHTreeNode* parent() const { return m_parent; }
186 
187  const LHTreeNode* child(int i) const { return m_child[i]; }
188 
189  cluster originalCluster() const { return m_origCluster; }
190 
191  node getNode() const { return m_node; }
192 
193  const LHTreeNode* up() const { return m_up; }
194 
195  const LHTreeNode* down() const { return m_down; }
196 
197  int pos() const { return m_pos; }
198 
199  // Modification functions
200  LHTreeNode* parent() { return m_parent; }
201 
202  void setParent(LHTreeNode* p) { m_parent = p; }
203 
204  LHTreeNode* child(int i) { return m_child[i]; }
205 
206  void initChild(int n) { m_child.init(n); }
207 
208  void setChild(int i, LHTreeNode* p) { m_child[i] = p; }
209 
210  void setPos();
211 
212  void store() { m_storedChild = m_child; }
213 
214  void restore() { m_child = m_storedChild; }
215 
216  void permute() { m_child.permute(); }
217 
218  void removeAuxChildren();
219 
224 
225 private:
227 
231 
234 
237  int m_pos;
238 
240 };
241 
244 public:
245  ENGLayer() { m_root = nullptr; }
246 
247  ~ENGLayer();
248 
249  const LHTreeNode* root() const { return m_root; }
250 
251  LHTreeNode* root() { return m_root; }
252 
253  void setRoot(LHTreeNode* r) { m_root = r; }
254 
255  void store();
256  void restore();
257  void permute();
258 
259  void simplifyAdjacencies();
260  void removeAuxNodes();
261 
262 private:
263  void simplifyAdjacencies(List<LHTreeNode::Adjacency>& adjs);
264 
266 };
267 
269 
271 public:
274 
275  void init(const ExtendedNestingGraph& H, const ClusterGraph& CG);
276 
277  const ClusterGraph& getOriginalClusterGraph() const { return *m_pCG; }
278 
279  cluster copy(cluster cOrig) const { return m_copy[cOrig]; }
280 
281  cluster original(cluster cCopy) const { return m_original[cCopy]; }
282 
283  void setParent(node v, cluster c);
284 
285 private:
286  void createClusterTree(cluster cOrig);
287 
290 
293 };
294 
296 public:
297  // the type of a node in this copy
298  enum class NodeType { Node, ClusterTop, ClusterBottom, Dummy, ClusterTopBottom };
299 
300  explicit ExtendedNestingGraph(const ClusterGraph& CG);
301 
302  const ClusterGraphCopy& getClusterGraph() const { return m_CGC; }
303 
304  const ClusterGraph& getOriginalClusterGraph() const { return m_CGC.getOriginalClusterGraph(); }
305 
306  node copy(node v) const { return m_copy[v]; }
307 
308  node top(cluster cOrig) const { return m_topNode[cOrig]; }
309 
310  node bottom(cluster cOrig) const { return m_bottomNode[cOrig]; }
311 
312  int topRank(cluster c) const { return m_topRank[c]; }
313 
314  int bottomRank(cluster c) const { return m_bottomRank[c]; }
315 
316  NodeType type(node v) const { return m_type[v]; }
317 
318  node origNode(node v) const { return m_origNode[v]; }
319 
320  edge origEdge(edge e) const { return m_origEdge[e]; }
321 
322  cluster originalCluster(node v) const { return m_CGC.original(m_CGC.clusterOf(v)); }
323 
324  cluster parent(node v) const { return m_CGC.clusterOf(v); }
325 
326  cluster parent(cluster c) const { return c->parent(); }
327 
328  bool isVirtual(cluster c) const { return m_CGC.original(c) == nullptr; }
329 
330  const List<edge>& chain(edge e) const { return m_copyEdge[e]; }
331 
332  // is edge e reversed ?
333  bool isReversed(edge e) const { return e->source() != origNode(chain(e).front()->source()); }
334 
335  bool isLongEdgeDummy(node v) const { return type(v) == NodeType::Dummy && v->outdeg() == 1; }
336 
337  bool verticalSegment(edge e) const { return m_vertical[e]; }
338 
339  int numberOfLayers() const { return m_numLayers; }
340 
341  int rank(node v) const { return m_rank[v]; }
342 
343  int pos(node v) const { return m_pos[v]; }
344 
345  const LHTreeNode* layerHierarchyTree(int i) const { return m_layer[i].root(); }
346 
347  const ENGLayer& layer(int i) const { return m_layer[i]; }
348 
349  RCCrossings reduceCrossings(int i, bool dirTopDown);
350  void storeCurrentPos();
351  void restorePos();
352  void permute();
353 
354  void removeTopBottomEdges();
355 
356  int aeLevel(node v) const { return m_aeLevel[v]; }
357 
358 protected:
359  cluster lca(node u, node v) const;
360  LHTreeNode* lca(LHTreeNode* uNode, LHTreeNode* vNode, LHTreeNode** uChild,
361  LHTreeNode** vChild) const;
362 
363  edge addEdge(node u, node v, bool addAlways = false);
364  void assignAeLevel(cluster c, int& count);
365  bool reachable(node v, node u, SListPure<node>& successors);
366  void moveDown(node v, const SListPure<node>& successors, NodeArray<int>& level);
367  bool tryEdge(node u, node v, Graph& G, NodeArray<int>& level);
368 
369  RCCrossings reduceCrossings(LHTreeNode* cNode, bool dirTopDown);
370  void assignPos(const LHTreeNode* vNode, int& count);
371 
372 private:
373  void computeRanking();
374  void createDummyNodes();
375  void createVirtualClusters();
376  void createVirtualClusters(cluster c, NodeArray<node>& vCopy, ClusterArray<node>& cCopy);
377  void buildLayers();
378  void removeAuxNodes();
379 
380 #if 0
381  const ClusterGraph &m_CG;
383 #else
384  ClusterGraphCopy m_CGC;
386 #endif
387 
388  // mapping: nodes in CG <-> nodes in this copy
391 
392  // mapping: clusters in CG <-> nodes in this copy
393  ClusterArray<node> m_topNode; // the node representing top-most part of cluster (min. rank)
394  ClusterArray<node> m_bottomNode; // the node representing bottom-most part of cluster (max. rank)
397 
398  // the type of a node in this copy
400 
401  // mapping: edges in CG <-> edges in this copy
404 
405  // level of each node
408 
409  // the layers
411  // positions within a layer
413 
414  // can an edge segment be drawn vertically?
416 
417  // temporary data for "addEdge()"
421 
422  // temporary data for "lca()"
429 };
430 
431 }
ogdf::RCCrossings::m_cnClusters
int m_cnClusters
Definition: ExtendedNestingGraph.h:102
ogdf::LHTreeNode::ClusterCrossing::m_uNode
LHTreeNode * m_uNode
Definition: ExtendedNestingGraph.h:152
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::LHTreeNode::m_origCluster
cluster m_origCluster
Definition: ExtendedNestingGraph.h:228
ogdf::LHTreeNode::Adjacency::m_weight
int m_weight
Definition: ExtendedNestingGraph.h:127
ogdf::ENGLayer::setRoot
void setRoot(LHTreeNode *r)
Definition: ExtendedNestingGraph.h:253
ogdf::RCCrossings::operator+=
RCCrossings & operator+=(const RCCrossings &cr)
Definition: ExtendedNestingGraph.h:57
ogdf::ClusterGraphCopy::m_pCG
const ClusterGraph * m_pCG
Definition: ExtendedNestingGraph.h:288
ogdf::ExtendedNestingGraph::bottom
node bottom(cluster cOrig) const
Definition: ExtendedNestingGraph.h:310
ogdf::RCCrossings::operator-
RCCrossings operator-(const RCCrossings &cr) const
Definition: ExtendedNestingGraph.h:67
ogdf::ExtendedNestingGraph::m_markedClustersTree
SListPure< cluster > m_markedClustersTree
Definition: ExtendedNestingGraph.h:427
ogdf::LHTreeNode::m_child
Array< LHTreeNode * > m_child
Definition: ExtendedNestingGraph.h:232
ogdf::ClusterGraphCopy::m_original
ClusterArray< cluster > m_original
Definition: ExtendedNestingGraph.h:292
ogdf::ClusterGraphCopy
Definition: ExtendedNestingGraph.h:270
ogdf::ExtendedNestingGraph::originalCluster
cluster originalCluster(node v) const
Definition: ExtendedNestingGraph.h:322
ogdf::RCCrossings::RCCrossings
RCCrossings()
Definition: ExtendedNestingGraph.h:43
ogdf::RCCrossings::m_cnEdges
int m_cnEdges
Definition: ExtendedNestingGraph.h:103
ogdf::ExtendedNestingGraph::m_layer
Array< ENGLayer > m_layer
Definition: ExtendedNestingGraph.h:410
ogdf::LHTreeNode::store
void store()
Definition: ExtendedNestingGraph.h:212
ogdf::LHTreeNode::isCompound
bool isCompound() const
Definition: ExtendedNestingGraph.h:181
ogdf::ExtendedNestingGraph::layer
const ENGLayer & layer(int i) const
Definition: ExtendedNestingGraph.h:347
ogdf::ClusterGraphCopy::getOriginalClusterGraph
const ClusterGraph & getOriginalClusterGraph() const
Definition: ExtendedNestingGraph.h:277
ogdf::ExtendedNestingGraph::copy
node copy(node v) const
Definition: ExtendedNestingGraph.h:306
ogdf::ENGLayer::m_root
LHTreeNode * m_root
Definition: ExtendedNestingGraph.h:265
ogdf::ClusterGraphCopy::m_copy
ClusterArray< cluster > m_copy
Definition: ExtendedNestingGraph.h:291
ogdf::RCCrossings::operator<=
bool operator<=(const RCCrossings &cr) const
Definition: ExtendedNestingGraph.h:71
ogdf::ExtendedNestingGraph::m_bottomNode
ClusterArray< node > m_bottomNode
Definition: ExtendedNestingGraph.h:394
ogdf::LHTreeNode::m_up
LHTreeNode * m_up
Definition: ExtendedNestingGraph.h:235
ogdf::ExtendedNestingGraph::topRank
int topRank(cluster c) const
Definition: ExtendedNestingGraph.h:312
ogdf::LHTreeNode::initChild
void initChild(int n)
Definition: ExtendedNestingGraph.h:206
ogdf::ExtendedNestingGraph::m_topRank
ClusterArray< int > m_topRank
Definition: ExtendedNestingGraph.h:395
ogdf::LHTreeNode::ClusterCrossing::m_edge
edge m_edge
Definition: ExtendedNestingGraph.h:154
ogdf::ClusterArrayBase
RegisteredArray for labeling the clusters of a ClusterGraph.
Definition: ClusterGraph.h:304
ogdf::ENGLayer::root
const LHTreeNode * root() const
Definition: ExtendedNestingGraph.h:249
ogdf::LHTreeNode::m_lowerClusterCrossing
List< ClusterCrossing > m_lowerClusterCrossing
Definition: ExtendedNestingGraph.h:223
ogdf::ExtendedNestingGraph::getClusterGraph
const ClusterGraphCopy & getClusterGraph() const
Definition: ExtendedNestingGraph.h:302
ogdf::ExtendedNestingGraph::m_aeLevel
NodeArray< int > m_aeLevel
Definition: ExtendedNestingGraph.h:418
ogdf::ExtendedNestingGraph::m_origNode
NodeArray< node > m_origNode
Definition: ExtendedNestingGraph.h:390
ogdf::ExtendedNestingGraph::isVirtual
bool isVirtual(cluster c) const
Definition: ExtendedNestingGraph.h:328
ogdf::RCCrossings::compare
static int compare(const RCCrossings &x, const RCCrossings &y)
Definition: ExtendedNestingGraph.h:94
ogdf::LHTreeNode
Definition: ExtendedNestingGraph.h:108
ogdf::LHTreeNode::m_node
node m_node
Definition: ExtendedNestingGraph.h:229
ogdf::LHTreeNode::ClusterCrossing
Definition: ExtendedNestingGraph.h:132
ogdf::LHTreeNode::child
LHTreeNode * child(int i)
Definition: ExtendedNestingGraph.h:204
ogdf::LHTreeNode::LHTreeNode
LHTreeNode(LHTreeNode *parent, node v, Type t=Type::Node)
Definition: ExtendedNestingGraph.h:171
ogdf::LHTreeNode::m_parent
LHTreeNode * m_parent
Definition: ExtendedNestingGraph.h:226
ogdf::ExtendedNestingGraph::aeLevel
int aeLevel(node v) const
Definition: ExtendedNestingGraph.h:356
ogdf::ExtendedNestingGraph::m_origEdge
EdgeArray< edge > m_origEdge
Definition: ExtendedNestingGraph.h:403
ogdf::ExtendedNestingGraph::m_type
NodeArray< NodeType > m_type
Definition: ExtendedNestingGraph.h:399
ogdf::ExtendedNestingGraph::pos
int pos(node v) const
Definition: ExtendedNestingGraph.h:343
ogdf::ENGLayer::root
LHTreeNode * root()
Definition: ExtendedNestingGraph.h:251
ogdf::LHTreeNode::ClusterCrossing::m_cNode
LHTreeNode * m_cNode
Definition: ExtendedNestingGraph.h:151
ogdf::RCCrossings::incClusters
void incClusters()
Definition: ExtendedNestingGraph.h:55
ogdf::LHTreeNode::Adjacency::m_v
LHTreeNode * m_v
Definition: ExtendedNestingGraph.h:126
ogdf::LHTreeNode::Adjacency::Adjacency
Adjacency()
Definition: ExtendedNestingGraph.h:113
ogdf::ExtendedNestingGraph::m_markTree
ClusterArray< LHTreeNode * > m_markTree
Definition: ExtendedNestingGraph.h:428
ogdf::LHTreeNode::restore
void restore()
Definition: ExtendedNestingGraph.h:214
ogdf::ExtendedNestingGraph::layerHierarchyTree
const LHTreeNode * layerHierarchyTree(int i) const
Definition: ExtendedNestingGraph.h:345
OGDF_NEW_DELETE
#define OGDF_NEW_DELETE
Makes the class use OGDF's memory allocator.
Definition: memory.h:84
ogdf::LHTreeNode::down
const LHTreeNode * down() const
Definition: ExtendedNestingGraph.h:195
ogdf::RCCrossings::RCCrossings
RCCrossings(int cnClusters, int cnEdges)
Definition: ExtendedNestingGraph.h:48
ogdf::ExtendedNestingGraph::NodeType
NodeType
Definition: ExtendedNestingGraph.h:298
ogdf::LHTreeNode::up
const LHTreeNode * up() const
Definition: ExtendedNestingGraph.h:193
ogdf::ExtendedNestingGraph::m_vertical
EdgeArray< bool > m_vertical
Definition: ExtendedNestingGraph.h:415
ogdf::ExtendedNestingGraph::m_topNode
ClusterArray< node > m_topNode
Definition: ExtendedNestingGraph.h:393
ogdf::ExtendedNestingGraph::getOriginalClusterGraph
const ClusterGraph & getOriginalClusterGraph() const
Definition: ExtendedNestingGraph.h:304
ogdf::LHTreeNode::setChild
void setChild(int i, LHTreeNode *p)
Definition: ExtendedNestingGraph.h:208
ogdf::LHTreeNode::m_upperAdj
List< Adjacency > m_upperAdj
Definition: ExtendedNestingGraph.h:220
ogdf::LHTreeNode::ClusterCrossing::m_uc
node m_uc
Definition: ExtendedNestingGraph.h:149
ogdf::ClusterElement
Representation of clusters in a clustered graph.
Definition: ClusterGraph.h:55
ogdf::ExtendedNestingGraph::isReversed
bool isReversed(edge e) const
Definition: ExtendedNestingGraph.h:333
ogdf::LHTreeNode::Adjacency
Definition: ExtendedNestingGraph.h:112
r
int r[]
Definition: hierarchical-ranking.cpp:8
ogdf::NodeElement::outdeg
int outdeg() const
Returns the outdegree of the node.
Definition: Graph_d.h:273
ogdf::LHTreeNode::setParent
void setParent(LHTreeNode *p)
Definition: ExtendedNestingGraph.h:202
ogdf::ExtendedNestingGraph::parent
cluster parent(node v) const
Definition: ExtendedNestingGraph.h:324
ogdf::ExtendedNestingGraph::m_copy
NodeArray< node > m_copy
Definition: ExtendedNestingGraph.h:389
ogdf::ClusterGraphCopy::m_pH
const ExtendedNestingGraph * m_pH
Definition: ExtendedNestingGraph.h:289
ogdf::ExtendedNestingGraph::origNode
node origNode(node v) const
Definition: ExtendedNestingGraph.h:318
backward::Color::type
type
Definition: backward.hpp:1716
ogdf::ExtendedNestingGraph::m_markedClusters
SListPure< cluster > m_markedClusters
Definition: ExtendedNestingGraph.h:424
ogdf::Array
The parameterized class Array implements dynamic arrays of type E.
Definition: Array.h:214
ogdf::LHTreeNode::permute
void permute()
Definition: ExtendedNestingGraph.h:216
ogdf::ClusterGraphCopy::original
cluster original(cluster cCopy) const
Definition: ExtendedNestingGraph.h:281
EdgeArray.h
Declaration and implementation of EdgeArray class.
ogdf::LHTreeNode::ClusterCrossing::ClusterCrossing
ClusterCrossing(node uc, LHTreeNode *cNode, node u, LHTreeNode *uNode, edge e)
Definition: ExtendedNestingGraph.h:140
ogdf::ExtendedNestingGraph::m_secondPath
cluster m_secondPath
Definition: ExtendedNestingGraph.h:425
ogdf::ExtendedNestingGraph::m_aeVisited
NodeArray< bool > m_aeVisited
Definition: ExtendedNestingGraph.h:419
ogdf::LHTreeNode::LHTreeNode
LHTreeNode(cluster c, LHTreeNode *up)
Definition: ExtendedNestingGraph.h:158
ogdf::SListPure
Singly linked lists.
Definition: SList.h:39
ogdf::ClusterGraphCopy::copy
cluster copy(cluster cOrig) const
Definition: ExtendedNestingGraph.h:279
ogdf::ExtendedNestingGraph::chain
const List< edge > & chain(edge e) const
Definition: ExtendedNestingGraph.h:330
ogdf::ExtendedNestingGraph::top
node top(cluster cOrig) const
Definition: ExtendedNestingGraph.h:308
ogdf::operator<<
std::ostream & operator<<(std::ostream &os, const ogdf::Array< E, INDEX > &a)
Prints array a to output stream os.
Definition: Array.h:978
ogdf::EdgeElement::source
node source() const
Returns the source node of the edge.
Definition: Graph_d.h:391
ClusterArray.h
Declaration and implementation of ClusterArray class.
ogdf::ExtendedNestingGraph::m_copyEdge
EdgeArray< List< edge > > m_copyEdge
Definition: ExtendedNestingGraph.h:402
ogdf::List
Doubly linked lists (maintaining the length of the list).
Definition: List.h:42
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
ogdf::ExtendedNestingGraph::numberOfLayers
int numberOfLayers() const
Definition: ExtendedNestingGraph.h:339
ogdf::RCCrossings::setInfinity
RCCrossings & setInfinity()
Definition: ExtendedNestingGraph.h:89
ogdf::LHTreeNode::m_lowerAdj
List< Adjacency > m_lowerAdj
Definition: ExtendedNestingGraph.h:221
ogdf::LHTreeNode::numberOfChildren
int numberOfChildren() const
Definition: ExtendedNestingGraph.h:183
ogdf::ExtendedNestingGraph::m_numLayers
int m_numLayers
Definition: ExtendedNestingGraph.h:407
ogdf::ExtendedNestingGraph::parent
cluster parent(cluster c) const
Definition: ExtendedNestingGraph.h:326
ogdf::ExtendedNestingGraph::type
NodeType type(node v) const
Definition: ExtendedNestingGraph.h:316
ogdf::RCCrossings::isZero
bool isZero() const
Definition: ExtendedNestingGraph.h:87
ogdf::ExtendedNestingGraph::bottomRank
int bottomRank(cluster c) const
Definition: ExtendedNestingGraph.h:314
ogdf::ExtendedNestingGraph::verticalSegment
bool verticalSegment(edge e) const
Definition: ExtendedNestingGraph.h:337
ogdf::LHTreeNode::m_type
Type m_type
Definition: ExtendedNestingGraph.h:230
ogdf::LHTreeNode::getNode
node getNode() const
Definition: ExtendedNestingGraph.h:191
ogdf::ExtendedNestingGraph::m_secondPathTo
node m_secondPathTo
Definition: ExtendedNestingGraph.h:426
ogdf::LHTreeNode::m_upperClusterCrossing
List< ClusterCrossing > m_upperClusterCrossing
Definition: ExtendedNestingGraph.h:222
ogdf::matching_blossom::AuxNode
Definition: AuxGraph.h:58
ogdf::graphics::init
void init()
Definition: graphics.h:446
ogdf::ExtendedNestingGraph::m_mark
ClusterArray< cluster > m_mark
Definition: ExtendedNestingGraph.h:423
ogdf::LHTreeNode::child
const LHTreeNode * child(int i) const
Definition: ExtendedNestingGraph.h:187
ogdf::LHTreeNode::pos
int pos() const
Definition: ExtendedNestingGraph.h:197
ogdf::RCCrossings::operator+
RCCrossings operator+(const RCCrossings &cr) const
Definition: ExtendedNestingGraph.h:63
ogdf::ExtendedNestingGraph::m_pos
NodeArray< int > m_pos
Definition: ExtendedNestingGraph.h:412
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::ExtendedNestingGraph::rank
int rank(node v) const
Definition: ExtendedNestingGraph.h:341
ogdf::ExtendedNestingGraph::isLongEdgeDummy
bool isLongEdgeDummy(node v) const
Definition: ExtendedNestingGraph.h:335
ogdf::LHTreeNode::originalCluster
cluster originalCluster() const
Definition: ExtendedNestingGraph.h:189
ogdf::EdgeElement
Class for the representation of edges.
Definition: Graph_d.h:356
ClusterGraph.h
Derived class of GraphObserver providing additional functionality to handle clustered graphs.
ogdf::RCCrossings
Definition: ExtendedNestingGraph.h:42
ogdf::ENGLayer
Represents layer in an extended nesting graph.
Definition: ExtendedNestingGraph.h:243
ogdf::ExtendedNestingGraph::m_auxDeg
NodeArray< int > m_auxDeg
Definition: ExtendedNestingGraph.h:420
ogdf::ClusterElement::parent
cluster parent()
Returns the parent of the cluster.
Definition: ClusterGraph.h:146
ogdf::LHTreeNode::parent
LHTreeNode * parent()
Definition: ExtendedNestingGraph.h:200
ogdf::LHTreeNode::parent
const LHTreeNode * parent() const
Definition: ExtendedNestingGraph.h:185
ogdf::ENGLayer::ENGLayer
ENGLayer()
Definition: ExtendedNestingGraph.h:245
ogdf::LHTreeNode::m_down
LHTreeNode * m_down
Definition: ExtendedNestingGraph.h:236
ogdf::LHTreeNode::m_storedChild
Array< LHTreeNode * > m_storedChild
Definition: ExtendedNestingGraph.h:233
ogdf::LHTreeNode::m_pos
int m_pos
Definition: ExtendedNestingGraph.h:237
ogdf::LHTreeNode::ClusterCrossing::m_u
node m_u
Definition: ExtendedNestingGraph.h:150
ogdf::ExtendedNestingGraph
Definition: ExtendedNestingGraph.h:295
ogdf::ExtendedNestingGraph::m_rank
NodeArray< int > m_rank
Definition: ExtendedNestingGraph.h:406
ogdf::RCCrossings::incEdges
void incEdges(int cn)
Definition: ExtendedNestingGraph.h:53
ogdf::LHTreeNode::ClusterCrossing::ClusterCrossing
ClusterCrossing()
Definition: ExtendedNestingGraph.h:133
ogdf::LHTreeNode::Adjacency::Adjacency
Adjacency(node u, LHTreeNode *vNode, int weight=1)
Definition: ExtendedNestingGraph.h:119
ogdf::ClusterGraph
Representation of clustered graphs.
Definition: ClusterGraph.h:339
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::ExtendedNestingGraph::m_bottomRank
ClusterArray< int > m_bottomRank
Definition: ExtendedNestingGraph.h:396
ogdf::RCCrossings::operator<
bool operator<(const RCCrossings &cr) const
Definition: ExtendedNestingGraph.h:79
ogdf::ExtendedNestingGraph::origEdge
edge origEdge(edge e) const
Definition: ExtendedNestingGraph.h:320
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709
ogdf::LHTreeNode::Type
Type
Definition: ExtendedNestingGraph.h:110
ogdf::LHTreeNode::Adjacency::m_u
node m_u
Definition: ExtendedNestingGraph.h:125