Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

PlanarAugmentation.h
Go to the documentation of this file.
1 
32 #pragma once
33 
34 #include <ogdf/basic/Graph.h>
35 #include <ogdf/basic/List.h>
36 #include <ogdf/basic/SList.h>
37 #include <ogdf/basic/basic.h>
40 
41 namespace ogdf {
42 class DynamicBCTree;
43 
63 public:
66 
69 
70 protected:
77  virtual void doCall(Graph& G, List<edge>& list) override;
78 
79 
80 private:
82  int m_nPlanarityTests = 0;
83 
85  Graph* m_pGraph = nullptr;
86 
88  DynamicBCTree* m_pBCTree = nullptr;
89 
91  List<edge>* m_pResult = nullptr;
92 
95 
98 
101 
104 
107 
116 
117 private:
119  void augment();
120 
122  void makeConnectedByPendants();
123 
131  void reduceChain(node pendant, pa_label labelOld = nullptr);
132 
142  PALabel::StopCause followPath(node v, node& last);
143 
151  bool planarityCheck(node v1, node v2);
152 
160  node adjToCutvertex(node v, node cutvertex = nullptr);
161 
163  node findLastBefore(node pendant, node ancestor);
164 
167  void deletePendant(node pendant, bool removeFromLabel = true);
168 
170  void addPendant(node pendant, pa_label& label);
171 
177  edge connectPendants(node pendant1, node pendant2);
178 
180  void removeAllPendants(pa_label& label);
181 
183  void joinPendants(pa_label& label);
184 
186  void connectInsideLabel(pa_label& label);
187 
193  ListIterator<pa_label> insertLabel(pa_label label);
194 
196  void deleteLabel(pa_label& label, bool removePendants = true);
197 
203  void connectLabels(pa_label first, pa_label second);
204 
206  pa_label newLabel(node cutvertex, node pendant, PALabel::StopCause whyStop);
207 
217  bool findMatching(pa_label& first, pa_label& second);
218 
220  bool connectCondition(pa_label a, pa_label b);
221 
228  void updateAdjNonChildren(node newBlock, SList<node>& path);
229 
231  void modifyBCRoot(node oldRoot, node newRoot);
232 
238  void updateNewEdges(const SList<edge>& newEdges);
239 
241  void terminate();
242 };
243 
244 }
ogdf
The namespace for all OGDF objects.
Definition: multilevelmixer.cpp:39
Graph.h
Includes declaration of graph class.
ogdf::SList
Singly linked lists (maintaining the length of the list).
Definition: SList.h:845
ogdf::PlanarAugmentation::m_adjNonChildren
NodeArray< SList< adjEntry > > m_adjNonChildren
Stores for each node of the bc-tree the children that have an adjacent bc-node that doesn't belong to...
Definition: PlanarAugmentation.h:115
ogdf::PlanarAugmentation::PlanarAugmentation
PlanarAugmentation()
Creates an instance of the planar augmentation algorithm.
Definition: PlanarAugmentation.h:65
ogdf::PlanarAugmentation
The algorithm for planar biconnectivity augmentation (Mutzel, Fialko).
Definition: PlanarAugmentation.h:62
ogdf::PlanarAugmentation::m_belongsTo
NodeArray< pa_label > m_belongsTo
The label a BC-Node belongs to.
Definition: PlanarAugmentation.h:103
ogdf::PlanarAugmentation::m_labels
List< pa_label > m_labels
The list of all labels, sorted by size (decreasing).
Definition: PlanarAugmentation.h:94
ogdf::PALabel
auxiliary class for the planar augmentation algorithm
Definition: PALabel.h:47
ogdf::PlanarAugmentation::~PlanarAugmentation
~PlanarAugmentation()
Destruction.
Definition: PlanarAugmentation.h:68
AugmentationModule.h
Declaration of interface for graph augmentation algorithms.
SList.h
Declaration of singly linked lists and iterators.
ogdf::PlanarAugmentation::m_pendants
List< node > m_pendants
The list of all pendants (leaves in the BC-Tree).
Definition: PlanarAugmentation.h:97
ogdf::List< edge >
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::AugmentationModule
The base class for graph augmentation algorithms.
Definition: AugmentationModule.h:56
PALabel.h
Declares auxiliary structure of planar augmentation algorithms.
ogdf::PALabel::StopCause
StopCause
Definition: PALabel.h:52
basic.h
Basic declarations, included by all source files.
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:363
List.h
Declaration of doubly linked lists and iterators.
ogdf::ListIteratorBase
Encapsulates a pointer to a list element.
Definition: List.h:51
ogdf::PlanarAugmentation::m_pendantsToDel
List< node > m_pendantsToDel
The list of pendants that has to be deleted after each reduceChain.
Definition: PlanarAugmentation.h:100
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:240
ogdf::PlanarAugmentation::m_isLabel
NodeArray< ListIterator< pa_label > > m_isLabel
The list iterator in m_labels if the node in the BC-Tree is a label.
Definition: PlanarAugmentation.h:106
ogdf::DynamicBCTree
Dynamic BC-trees.
Definition: DynamicBCTree.h:56