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/SList.h>
38 
39 namespace ogdf {
40 
60 public:
63 
66 
67 protected:
74  virtual void doCall(Graph& G, List<edge>& list) override;
75 
76 
77 private:
79  int m_nPlanarityTests = 0;
80 
82  Graph* m_pGraph = nullptr;
83 
85  DynamicBCTree* m_pBCTree = nullptr;
86 
88  List<edge>* m_pResult = nullptr;
89 
92 
95 
98 
101 
104 
113 
114 private:
116  void augment();
117 
119  void makeConnectedByPendants();
120 
128  void reduceChain(node pendant, pa_label labelOld = nullptr);
129 
139  PALabel::StopCause followPath(node v, node& last);
140 
148  bool planarityCheck(node v1, node v2);
149 
157  node adjToCutvertex(node v, node cutvertex = nullptr);
158 
160  node findLastBefore(node pendant, node ancestor);
161 
164  void deletePendant(node pendant, bool removeFromLabel = true);
165 
167  void addPendant(node pendant, pa_label& label);
168 
174  edge connectPendants(node pendant1, node pendant2);
175 
177  void removeAllPendants(pa_label& label);
178 
180  void joinPendants(pa_label& label);
181 
183  void connectInsideLabel(pa_label& label);
184 
190  ListIterator<pa_label> insertLabel(pa_label label);
191 
193  void deleteLabel(pa_label& label, bool removePendants = true);
194 
200  void connectLabels(pa_label first, pa_label second);
201 
203  pa_label newLabel(node cutvertex, node pendant, PALabel::StopCause whyStop);
204 
214  bool findMatching(pa_label& first, pa_label& second);
215 
217  bool connectCondition(pa_label a, pa_label b);
218 
225  void updateAdjNonChildren(node newBlock, SList<node>& path);
226 
228  void modifyBCRoot(node oldRoot, node newRoot);
229 
235  void updateNewEdges(const SList<edge>& newEdges);
236 
238  void terminate();
239 };
240 
241 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::SList
Singly linked lists (maintaining the length of the list).
Definition: SList.h:833
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:112
ogdf::PlanarAugmentation::PlanarAugmentation
PlanarAugmentation()
Creates an instance of the planar augmentation algorithm.
Definition: PlanarAugmentation.h:62
ogdf::PlanarAugmentation
The algorithm for planar biconnectivity augmentation (Mutzel, Fialko).
Definition: PlanarAugmentation.h:59
ogdf::PlanarAugmentation::m_belongsTo
NodeArray< pa_label > m_belongsTo
The label a BC-Node belongs to.
Definition: PlanarAugmentation.h:100
ogdf::PlanarAugmentation::m_labels
List< pa_label > m_labels
The list of all labels, sorted by size (decreasing).
Definition: PlanarAugmentation.h:91
ogdf::PALabel
auxiliary class for the planar augmentation algorithm
Definition: PALabel.h:45
ogdf::PlanarAugmentation::~PlanarAugmentation
~PlanarAugmentation()
Destruction.
Definition: PlanarAugmentation.h:65
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:94
ogdf::List< edge >
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::AugmentationModule
The base class for graph augmentation algorithms.
Definition: AugmentationModule.h:53
PALabel.h
Declares auxiliary structure of planar augmentation algorithms.
ogdf::PALabel::StopCause
StopCause
Definition: PALabel.h:50
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
DynamicBCTree.h
Declaration of class DynamicBCTree.
ogdf::EdgeElement
Class for the representation of edges.
Definition: Graph_d.h:356
ogdf::ListIteratorBase
Encapsulates a pointer to a list element.
Definition: List.h:46
ogdf::PlanarAugmentation::m_pendantsToDel
List< node > m_pendantsToDel
The list of pendants that has to be deleted after each reduceChain.
Definition: PlanarAugmentation.h:97
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
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:103
ogdf::DynamicBCTree
Dynamic BC-trees.
Definition: DynamicBCTree.h:54