|
Open Graph Drawing Framework |
v. 2023.09 (Elderberry)
|
|
|
Go to the documentation of this file.
48 namespace planar_separators {
75 void reconstruct(
const Cycle& cycle);
80 void calculateDescendants();
87 using namespace planar_separators;
114 void verifyRing(
const Ring& ring)
const;
131 std::shared_ptr<BFSTreeHP>
tree;
136 virtual void reset()
override;
141 virtual void makeTree();
149 edge findSeparatorEdge()
const;
165 void findFaceLevels(
const node root);
173 void buildRings(
const Cycle& cycle);
182 int find_i0(
int delta)
const;
194 bool findRegions(
List<node>& region,
const Cycle& cycle,
const Ring& inner,
int outerIdx)
const;
216 void walkAlongRing(
const Ring& ring,
bool firstSection,
bool invert,
229 int regionSize)
const;
254 const Ring& outer)
const;
291 namespace planar_separators {
309 bool isDegenerate =
false;
321 Ring(
node n) : in {n}, out {n}, isDegenerate {
true} { }
346 while (separator.
ringOut[startNode].search(outP) == separator.
ringOut[startNode].end()) {
351 nextEntry = separator.
ringOut[startNode].front();
356 while (next != startNode) {
361 if (separator.
ringOut[next].size() > 1) {
364 while (separator.
ringOut[next].search(candidate) == separator.
ringOut[next].end()) {
367 nextEntry = candidate;
368 }
else if (separator.
ringOut[next].size() == 1) {
369 nextEntry = separator.
ringOut[next].front();
401 auto adjIt = entries.cbegin();
405 while (adjIt != entries.cend() && (*adjIt)->theNode() != out) {
411 while ((*adjIt)->theNode() != out && adjIt != entries.cend()) {
414 while (adjIt != entries.cend()) {
The namespace for all OGDF objects.
Includes declaration of graph class.
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
node theNode() const
Returns the node whose adjacency list contains this element.
Computes planar separators according to Har-Peled.
NodeArray< bool > isMultiNode
Abstract BFSTree that is realized via NodeArrays.
Copies of graphs supporting edge splitting.
List< adjEntry > getSectionInSeparator(bool firstSection) const
Returns a section of this ring, either the first one from in to out, or the second one from out to in...
Ring(node startNode, node endNode, adjEntry outPointer, const SeparatorHarPeled &separator)
Constructor for a full ring.
List< List< face > > faceFrontiers
std::shared_ptr< BFSTreeHP > tree
A special tree that can be reconstructed, see above.
Specialised tree representation for Har-Peled.
NodeArray< List< adjEntry > > ringOut
adjEntry twin() const
Returns the corresponding adjacency element associated with the same edge.
Class for adjacency list elements.
Ring(node n)
Constructor for degenerate rings.
SeparatorHarPeled()
Constructor.
List< node > nodes
Nodes and adjEntries that form the border of the ring.
Abstract description of all planar separator algorithms.
The parameterized class Array implements dynamic arrays of type E.
node in
Crossing points with the main separator S: in is where S enters, out is where S leaves.
NodeArray< List< adjEntry > > ringIn
hold for every node the segment of the border between levels i-1 and i that runs through this node (t...
Doubly linked lists (maintaining the length of the list).
RegisteredArray for nodes, edges and adjEntries of a graph.
ConstCombinatorialEmbedding E
Data type for general directed graphs (adjacency list representation).
RegisteredArray for labeling the faces of a CombinatorialEmbedding.
node twinNode() const
Returns the associated node of the corresponding adjacency entry (shorthand for twin()->theNode()).
adjEntry cyclicSucc() const
Returns the cyclic successor in the adjacency list.
Combinatorial embeddings of planar graphs.
Basic declarations, included by all source files.
Declaration of CombinatorialEmbedding and face.
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Declaration and implementation of Array class and Array algorithms.
Auxiliary data structure to represent Cycles in planar graphs.
Class for the representation of edges.
Declaration of doubly linked lists and iterators.
NodeArray< adjEntry > mainSeparator
virtual std::string getSpecificName() const override
Returns the unique name of the core algorithm, to be combined with postprocessors later.
BFSTreeHP(GraphCopy &G, node rootNode)
Constructor.
int size() const
Returns the number of elements in the list.
FaceArray< int > faceLevels
Class for the representation of nodes.
virtual double getMaxSeparatorSize(int n) const override
Provides the maximal separator size that this algorithm guarantees as a function of the number of nod...
iterator pushBack(const E &x)
Adds element x at the end of the list.
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Declaration of base class of all planar separator algorithms.