Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
EmbedPQTree.h
Go to the documentation of this file.
1
32#pragma once
33
34#include <ogdf/basic/Graph.h>
35#include <ogdf/basic/PQTree.h>
36
37namespace ogdf::booth_lueker {
38class IndInfo;
39template<class X>
40class PlanarLeafKey;
41} // namespace ogdf::booth_lueker
42
43namespace ogdf {
44template<class E>
45class SListPure;
46template<class T, class X, class Y>
47class PQBasicKey;
48template<class T, class X, class Y>
49class PQLeafKey;
50template<class T, class X, class Y>
51class PQNode;
52
53namespace booth_lueker {
54
55class EmbedPQTree : public PQTree<edge, IndInfo*, bool> {
56public:
57 EmbedPQTree() : PQTree<edge, IndInfo*, bool>() { }
58
59 virtual ~EmbedPQTree() { }
60
61 virtual void emptyAllPertinentNodes() override;
62
64
66
70
72 SListPure<node>& opposed, SListPure<node>& nonOpposed, node v);
73
74 virtual bool Reduction(SListPure<PlanarLeafKey<IndInfo*>*>& leafKeys);
75
79
83
87
91
95
100
103
104protected:
106 PQNode<edge, IndInfo*, bool>* nodePtr) const override;
107
109 PQNode<edge, IndInfo*, bool>* nodePtr) const override;
110
112 PQNode<edge, IndInfo*, bool>* nodePtr) const override;
113
115 PQNode<edge, IndInfo*, bool>* nodePtr) const override;
116
118 PQNode<edge, IndInfo*, bool>* other) const override;
119 virtual const char* clientPrintStatus(PQNode<edge, IndInfo*, bool>* nodePtr) override;
120
121 virtual void front(PQNode<edge, IndInfo*, bool>* nodePtr,
123
125 SListPure<PQLeafKey<edge, IndInfo*, bool>*>& leafKeys) override {
126 PQTree<edge, IndInfo*, bool>::front(nodePtr, leafKeys);
127 }
128
129private:
132 bool addIndicator = false, PQNode<edge, IndInfo*, bool>* opposite = nullptr);
133
136};
137
138}
139}
Includes declaration of graph class.
Declaration and implementation of the class PQTree.
Class for the representation of edges.
Definition Graph_d.h:364
Class for the representation of nodes.
Definition Graph_d.h:241
The class template PQLeafKey is a derived class of class template PQBasicKey.
Definition PQLeafKey.h:84
The class template PQBasicKey is an abstract base class.
Definition PQNode.h:56
virtual bool Reduction(SListPure< PQLeafKey< T, X, Y > * > &leafKeys)
Tests whether permissible permutations of the elements of U exist such that the elements of a subset ...
Definition PQTree.h:2237
virtual int Initialize(SListPure< PQLeafKey< T, X, Y > * > &leafKeys)
Initializes the PQ-tree with a set of elements.
Definition PQTree.h:1916
virtual void front(PQNode< T, X, Y > *nodePtr, SListPure< PQLeafKey< T, X, Y > * > &leafKeys)
Returns the keys stored in the leaves of the front of nodePtr.
Definition PQTree.h:1880
Singly linked lists.
Definition SList.h:191
PQNode< edge, IndInfo *, bool > * scanSibLeft(PQNode< edge, IndInfo *, bool > *nodePtr) const
Definition EmbedPQTree.h:80
int Initialize(SListPure< PQLeafKey< edge, IndInfo *, bool > * > &leafKeys) override
Definition EmbedPQTree.h:67
virtual PQNode< edge, IndInfo *, bool > * clientSibLeft(PQNode< edge, IndInfo *, bool > *nodePtr) const override
PQNode< edge, IndInfo *, bool > * scanLeftEndmost(PQNode< edge, IndInfo *, bool > *nodePtr) const
Definition EmbedPQTree.h:88
virtual void front(PQNode< edge, IndInfo *, bool > *nodePtr, SListPure< PQBasicKey< edge, IndInfo *, bool > * > &leafKeys)
PQNode< edge, IndInfo *, bool > * scanNextSib(PQNode< edge, IndInfo *, bool > *nodePtr, PQNode< edge, IndInfo *, bool > *other)
Definition EmbedPQTree.h:96
virtual bool Reduction(SListPure< PlanarLeafKey< IndInfo * > * > &leafKeys)
virtual PQNode< edge, IndInfo *, bool > * clientLeftEndmost(PQNode< edge, IndInfo *, bool > *nodePtr) const override
virtual void getFront(PQNode< edge, IndInfo *, bool > *nodePtr, SListPure< PQBasicKey< edge, IndInfo *, bool > * > &leafKeys)
virtual void emptyAllPertinentNodes() override
Cleans up all flags that have been set in the pertinent nodes during the reduction process.
void ReplaceRoot(SListPure< PlanarLeafKey< IndInfo * > * > &leafKeys, SListPure< edge > &frontier, SListPure< node > &opposed, SListPure< node > &nonOpposed, node v)
virtual PQNode< edge, IndInfo *, bool > * clientNextSib(PQNode< edge, IndInfo *, bool > *nodePtr, PQNode< edge, IndInfo *, bool > *other) const override
void front(PQNode< edge, IndInfo *, bool > *nodePtr, SListPure< PQLeafKey< edge, IndInfo *, bool > * > &leafKeys) override
void ReplaceFullRoot(SListPure< PlanarLeafKey< IndInfo * > * > &leafKeys, SListPure< PQBasicKey< edge, IndInfo *, bool > * > &frontier, node v, bool addIndicator=false, PQNode< edge, IndInfo *, bool > *opposite=nullptr)
virtual PQNode< edge, IndInfo *, bool > * clientSibRight(PQNode< edge, IndInfo *, bool > *nodePtr) const override
PQNode< edge, IndInfo *, bool > * scanSibRight(PQNode< edge, IndInfo *, bool > *nodePtr) const
Definition EmbedPQTree.h:84
void ReplacePartialRoot(SListPure< PlanarLeafKey< IndInfo * > * > &leafKeys, SListPure< PQBasicKey< edge, IndInfo *, bool > * > &frontier, node v)
virtual void clientDefinedEmptyNode(PQNode< edge, IndInfo *, bool > *nodePtr) override
virtual int Initialize(SListPure< PlanarLeafKey< IndInfo * > * > &leafKeys)
virtual PQNode< edge, IndInfo *, bool > * clientRightEndmost(PQNode< edge, IndInfo *, bool > *nodePtr) const override
PQNode< edge, IndInfo *, bool > * scanRightEndmost(PQNode< edge, IndInfo *, bool > *nodePtr) const
Definition EmbedPQTree.h:92
bool Reduction(SListPure< PQLeafKey< edge, IndInfo *, bool > * > &leafKeys) override
Definition EmbedPQTree.h:76
virtual const char * clientPrintStatus(PQNode< edge, IndInfo *, bool > *nodePtr) override
The namespace for all OGDF objects.