Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
PlanarAugmentationFix.h
Go to the documentation of this file.
1
32#pragma once
33
34#include <ogdf/basic/Graph.h>
36#include <ogdf/basic/List.h>
37#include <ogdf/basic/basic.h>
40
41namespace ogdf {
42class CombinatorialEmbedding;
43class DynamicBCTree;
44
51public:
54
57
58protected:
65 virtual void doCall(Graph& g, List<edge>& list) override;
66
67private:
69 CombinatorialEmbedding* m_pEmbedding = nullptr;
70
72 CombinatorialEmbedding* m_pActEmbedding = nullptr;
73
75 Graph* m_pGraph = nullptr;
76
78 List<edge>* m_pResult = nullptr;
79
81 DynamicBCTree* m_pBCTree = nullptr;
82
85
88
91
94
97
100
103
105 void augment(adjEntry adjOuterFace);
106
108 void modifyBCRoot(node oldRoot, node newRoot);
109
111 void changeBCRoot(node oldRoot, node newRoot);
112
114 void reduceChain(node pendant);
115
118
120 bool findMatching(node& pendant1, node& pendant2, adjEntry& v1, adjEntry& v2);
121
123 void findMatchingRev(node& pendant1, node& pendant2, adjEntry& v1, adjEntry& v2);
124
126 pa_label newLabel(node cutvertex, node parent, node pendant, PALabel::StopCause whyStop);
127
129 void addPendant(node pendant, pa_label& label);
130
133
135 void connectPendants(node pendant1, node pendant2, adjEntry adjV1, adjEntry adjV2);
136
139
141 void deletePendant(node pendant);
142
144 void deleteLabel(pa_label& label);
145
147 void removeLabel(pa_label& label);
148};
149
150}
Declaration of interface for graph augmentation algorithms.
Includes declaration of graph class.
Declaration of graph copy classes.
Declaration of doubly linked lists and iterators.
Declares auxiliary structure of planar augmentation algorithms.
Basic declarations, included by all source files.
Class for adjacency list elements.
Definition Graph_d.h:143
The base class for graph augmentation algorithms.
Combinatorial embeddings of planar graphs with modification functionality.
Dynamic BC-trees.
Copies of graphs supporting edge splitting.
Definition GraphCopy.h:390
Data type for general directed graphs (adjacency list representation).
Definition Graph_d.h:866
Doubly linked lists (maintaining the length of the list).
Definition List.h:1451
Encapsulates a pointer to a list element.
Definition List.h:113
Class for the representation of nodes.
Definition Graph_d.h:241
auxiliary class for the planar augmentation algorithm
Definition PALabel.h:47
The algorithm for biconnectivity augmentation with fixed combinatorial embedding.
virtual void doCall(Graph &g, List< edge > &list) override
The implementation of the algorithm call.
void deleteLabel(pa_label &label)
Deletes the given label.
node m_actBCRoot
The actual root of the bc-tree.
void addPendant(node pendant, pa_label &label)
Adds pendant to label.
void reduceChain(node pendant)
Adds pendant to a label or creates one.
void connectSingleLabel()
Connects the remaining label.
PlanarAugmentationFix()
Creates an instance of planar augmentation with fixed embedding.
void connectPendants(node pendant1, node pendant2, adjEntry adjV1, adjEntry adjV2)
Connects the two pendants.
void findMatchingRev(node &pendant1, node &pendant2, adjEntry &v1, adjEntry &v2)
Called by findMatching, if a dominating tree was detected.
pa_label newLabel(node cutvertex, node parent, node pendant, PALabel::StopCause whyStop)
Creates a new label.
EdgeArray< edge > m_eCopy
Edge-array required for construction of the graph copy.
PALabel::StopCause followPath(node v, node &last)
Traverses upwards in the bc-tree, starting at the pendant node v.
NodeArray< ListIterator< pa_label > > m_isLabel
Array that contains iterators to the list of labels if a node is a parent of a label.
void modifyBCRoot(node oldRoot, node newRoot)
Modifies the root of the bc-tree.
NodeArray< pa_label > m_belongsTo
Array that contains the label a node belongs to.
bool findMatching(node &pendant1, node &pendant2, adjEntry &v1, adjEntry &v2)
Finds the next matching pendants.
void removeLabel(pa_label &label)
Removes the given label from the list of labels.
void changeBCRoot(node oldRoot, node newRoot)
Exchanges oldRoot by newRoot and updates data structurs in the bc-tree.
NodeArray< ListIterator< node > > m_belongsToIt
Array that contains the iterator of the label a node belongs to.
void augment(adjEntry adjOuterFace)
The main function for planar augmentation.
ListIterator< pa_label > insertLabel(pa_label label)
Inserts label into the list of labels maintaining decreasing order.
void deletePendant(node pendant)
Deletes the given pendant.
List< pa_label > m_labels
The list of all labels.
GraphCopy m_graphCopy
The actual partial graph.
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition Graph_d.h:717
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition Graph_d.h:659
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
Definition config.h:117
The namespace for all OGDF objects.