Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

UpwardPlanaritySingleSource.h
Go to the documentation of this file.
1 
34 #pragma once
35 
37 #include <ogdf/basic/NodeArray.h>
38 #include <ogdf/basic/SList.h>
43 
44 namespace ogdf {
45 
48 public:
49  // test and compute adjacency lists of embedding
50  static bool testAndFindEmbedding(const Graph& G, bool embed,
51  NodeArray<SListPure<adjEntry>>& adjacentEdges);
52 
53  // embed and compute st-augmentation (new implementation - inserts only
54  // one new node into G which is the super sink)
55  static void embedAndAugment(Graph& G, NodeArray<SListPure<adjEntry>>& adjacentEdges,
56  bool augment, node& superSink, SList<edge>& augmentedEdges);
57 
58 private:
59  struct DegreeInfo {
64  };
65 
66  // classes defined and used in UpwardPlanaritySingleSource.cpp
67  class OGDF_EXPORT SkeletonInfo;
68 
70  class ConstraintRooting;
71 
72 
73  // performs the actual test (and computation of sorted adjacency lists) for
74  // each biconnected component
75  static bool testBiconnectedComponent(ExpansionGraph& exp, node sG, int parentBlock, bool embed,
76  NodeArray<SListPure<adjEntry>>& adjacentEdges);
77 
80 
81  // compute sT-skeletons
82  // test for upward-planarity, build constraints for rooting, and find a
83  // rooting of the tree satisfying all constraints
84  // returns true iff such a rooting exists
85  static edge directSkeletons(SPQRTree& T, NodeArray<SkeletonInfo>& skInfo);
86 
87  // precompute information: in-/outdegrees in pertinent graph, contains
88  // pertinent graph the source?
89  static void computeDegreesInPertinent(const SPQRTree& T, node s,
90  NodeArray<SkeletonInfo>& skInfo, node vT);
91 
95 
96  static bool initFaceSinkGraph(const Graph& M, SkeletonInfo& skInfo);
97 
98  static void embedSkeleton(Graph& G, StaticPlanarSPQRTree& T, NodeArray<SkeletonInfo>& skInfo,
99  node vT, bool extFaceIsLeft);
100 
104 
105  static void assignSinks(FaceSinkGraph& F, face extFace, NodeArray<face>& assignedFace);
106 
107  static node dfsAssignSinks(FaceSinkGraph& F,
108  node v, // current node
109  node parent, // its parent
110  NodeArray<face>& assignedFace);
111 
115 
116  static bool checkDegrees(SPQRTree& T, node s, NodeArray<SkeletonInfo>& skInfo);
117 
118  static bool virtualEdgesDirectedEqually(const SPQRTree& T);
119 
121 };
122 
123 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::UpwardPlanaritySingleSource::DegreeInfo::m_indegTgt
int m_indegTgt
Definition: UpwardPlanaritySingleSource.h:62
StaticPlanarSPQRTree.h
Declaration of class StaticPlanarSPQRTree.
SPQRTree.h
Declaration of class SPQRTree.
ogdf::SList
Singly linked lists (maintaining the length of the list).
Definition: SList.h:833
ogdf::UpwardPlanaritySingleSource::DegreeInfo::m_outdegTgt
int m_outdegTgt
Definition: UpwardPlanaritySingleSource.h:63
ogdf::SPQRTree
Linear-time implementation of static SPQR-trees.
Definition: SPQRTree.h:70
ogdf::UpwardPlanaritySingleSource::DegreeInfo::m_indegSrc
int m_indegSrc
Definition: UpwardPlanaritySingleSource.h:60
ogdf::UpwardPlanaritySingleSource
Performs upward planarity testing and embedding for single-source digraphs.
Definition: UpwardPlanaritySingleSource.h:47
SList.h
Declaration of singly linked lists and iterators.
ogdf::SListPure
Singly linked lists.
Definition: SList.h:39
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
NodeArray.h
Declaration and implementation of NodeArray class.
ogdf::StaticPlanarSPQRTree
SPQR-trees of planar graphs.
Definition: StaticPlanarSPQRTree.h:56
FaceSinkGraph.h
Declaration of class FaceSinkGraph.
ogdf::FaceSinkGraph
Definition: FaceSinkGraph.h:42
CombinatorialEmbedding.h
Declaration of CombinatorialEmbedding and face.
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::EdgeElement
Class for the representation of edges.
Definition: Graph_d.h:356
ogdf::UpwardPlanaritySingleSource::DegreeInfo::m_outdegSrc
int m_outdegSrc
Definition: UpwardPlanaritySingleSource.h:61
ExpansionGraph.h
Declares class ExpansionGraph...
ogdf::ExpansionGraph
Represents expansion graph of each biconnected component of a given digraph, i.e.,...
Definition: ExpansionGraph.h:49
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::FaceElement
Faces in a combinatorial embedding.
Definition: CombinatorialEmbedding.h:109
ogdf::UpwardPlanaritySingleSource::DegreeInfo
Definition: UpwardPlanaritySingleSource.h:59