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