Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

ShellingOrder.h
Go to the documentation of this file.
1 
32 #pragma once
33 
34 #include <ogdf/basic/NodeArray.h>
35 
36 namespace ogdf {
37 
38 
42 class ShellingOrderSet : public Array<node> {
43 public:
46  m_leftVertex = m_rightVertex = nullptr;
47  m_leftAdj = m_rightAdj = nullptr;
48  }
49 
51 
56  ShellingOrderSet(int n, adjEntry adjL = nullptr, adjEntry adjR = nullptr) : Array<node>(1, n) {
57  m_leftVertex = (adjL != nullptr) ? adjL->twinNode() : nullptr;
58  m_rightVertex = (adjR != nullptr) ? adjR->twinNode() : nullptr;
59  m_leftAdj = adjL;
60  m_rightAdj = adjR;
61  }
62 
64  node left() const { return m_leftVertex; }
65 
67  node right() const { return m_rightVertex; }
68 
70  adjEntry leftAdj() const { return m_leftAdj; }
71 
73  adjEntry rightAdj() const { return m_rightAdj; }
74 
76  bool hasLeft() const { return m_leftAdj != nullptr; }
77 
79  bool hasRight() const { return m_rightAdj != nullptr; }
80 
82  void left(node cl) { m_leftVertex = cl; }
83 
85  void right(node cr) { m_rightVertex = cr; }
86 
88  void leftAdj(adjEntry adjL) { m_leftAdj = adjL; }
89 
91  void rightAdj(adjEntry adjR) { m_rightAdj = adjR; }
92 
94  int len() const { return high(); }
95 
97  node operator[](const int i) const { return Array<node>::operator[](i); }
98 
100  node& operator[](const int i) { return Array<node>::operator[](i); }
101 
102 
103 private:
108 };
109 
114 public:
116  ShellingOrder() { m_pGraph = nullptr; }
117 
118 #if 0
119  ShellingOrder(const Graph &G, const List<ShellingOrderSet> &partition);
120 #endif
121 
123 
125  const Graph& getGraph() const { return *m_pGraph; }
126 
128  int length() const { return m_V.high(); }
129 
131  int len(int i) const { return m_V[i].len(); }
132 
134  node operator()(int i, int j) const { return (m_V[i])[j]; }
135 
137  const ShellingOrderSet& operator[](int i) const { return m_V[i]; }
138 
140  node left(int i) const { return m_V[i].left(); }
141 
143  node right(int i) const { return m_V[i].right(); }
144 
146  int rank(node v) const { return m_rank[v]; }
147 
153  void init(const Graph& G, const List<ShellingOrderSet>& partition);
154 
160  void initLeftmost(const Graph& G, const List<ShellingOrderSet>& partition);
161 
162 
163  void push(int k, node v, node tgt);
164 
165  friend class CompOrderBic;
166 
167 private:
168  const Graph* m_pGraph;
171 };
172 
173 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::ShellingOrder::m_rank
NodeArray< int > m_rank
the rank of nodes.
Definition: ShellingOrder.h:170
ogdf::ShellingOrderSet::operator[]
node operator[](const int i) const
Returns the i-th node in the order set from left (the leftmost node has index 1).
Definition: ShellingOrder.h:97
ogdf::ShellingOrderSet::len
int len() const
Returns the length of the order set, i.e., the number of contained nodes.
Definition: ShellingOrder.h:94
ogdf::ShellingOrderSet::leftAdj
void leftAdj(adjEntry adjL)
Sets the adjacency entry pointing to the left-node to adjL.
Definition: ShellingOrder.h:88
ogdf::ShellingOrderSet
The node set in a shelling order of a graph.
Definition: ShellingOrder.h:42
ogdf::Array< node >::high
int high() const
Returns the maximal array index.
Definition: Array.h:294
ogdf::ShellingOrderSet::leftAdj
adjEntry leftAdj() const
Returns the adjacency entry pointing from z1 to the left node (or 0 if no such node).
Definition: ShellingOrder.h:70
ogdf::ShellingOrderSet::hasLeft
bool hasLeft() const
Returns true iff the adjacency entry to the left-node exists.
Definition: ShellingOrder.h:76
ogdf::ShellingOrder::left
node left(int i) const
Returns the left-node of the i-th set Vi.
Definition: ShellingOrder.h:140
ogdf::ShellingOrderSet::ShellingOrderSet
ShellingOrderSet()
Creates an empty shelling order set.
Definition: ShellingOrder.h:45
ogdf::ShellingOrderSet::operator[]
node & operator[](const int i)
Returns the i-th node in the order set from left (the leftmost node has index 1).
Definition: ShellingOrder.h:100
ogdf::ShellingOrder::getGraph
const Graph & getGraph() const
Returns the graph associated with the shelling order.
Definition: ShellingOrder.h:125
ogdf::ShellingOrderSet::rightAdj
void rightAdj(adjEntry adjR)
Sets the adjacency entry pointing to the right-node to adjR.
Definition: ShellingOrder.h:91
ogdf::ShellingOrderSet::rightAdj
adjEntry rightAdj() const
Returns the adjacency entry pointing from zp to the right node (or 0 if no such node).
Definition: ShellingOrder.h:73
ogdf::AdjElement
Class for adjacency list elements.
Definition: Graph_d.h:135
ogdf::ShellingOrderSet::m_leftAdj
adjEntry m_leftAdj
the adjacency entry pointing to the left-node.
Definition: ShellingOrder.h:106
ogdf::ShellingOrder::operator()
node operator()(int i, int j) const
Returns the j-th node of the i-th order set Vi.
Definition: ShellingOrder.h:134
ogdf::ShellingOrder::~ShellingOrder
~ShellingOrder()
Definition: ShellingOrder.h:122
ogdf::ShellingOrderSet::m_leftVertex
node m_leftVertex
the left-node of the set.
Definition: ShellingOrder.h:104
ogdf::Array
The parameterized class Array implements dynamic arrays of type E.
Definition: Array.h:214
ogdf::ShellingOrderSet::hasRight
bool hasRight() const
Returns true iff the adjacency entry to the right-node exists.
Definition: ShellingOrder.h:79
ogdf::Array::operator[]
const_reference operator[](INDEX i) const
Returns a reference to the element at position i.
Definition: Array.h:303
ogdf::ShellingOrderSet::left
void left(node cl)
Sets the left-node to cl.
Definition: ShellingOrder.h:82
ogdf::ShellingOrder::length
int length() const
Returns the number of sets in the node partition.
Definition: ShellingOrder.h:128
ogdf::ShellingOrder::rank
int rank(node v) const
Returns the rank of node v, where rank(v) = i iff v is contained in Vi.
Definition: ShellingOrder.h:146
ogdf::List
Doubly linked lists (maintaining the length of the list).
Definition: List.h:42
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::ShellingOrder::len
int len(int i) const
Returns the length of the i-th order set Vi.
Definition: ShellingOrder.h:131
NodeArray.h
Declaration and implementation of NodeArray class.
ogdf::graphics::init
void init()
Definition: graphics.h:446
ogdf::ShellingOrder::ShellingOrder
ShellingOrder()
Creates an empty shelling order.
Definition: ShellingOrder.h:116
ogdf::ShellingOrder::m_pGraph
const Graph * m_pGraph
the associated graph.
Definition: ShellingOrder.h:168
ogdf::ShellingOrderSet::m_rightVertex
node m_rightVertex
the right-node of the set.
Definition: ShellingOrder.h:105
ogdf::ShellingOrderSet::right
void right(node cr)
Sets the right-node to cr.
Definition: ShellingOrder.h:85
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::ShellingOrderSet::ShellingOrderSet
ShellingOrderSet(int n, adjEntry adjL=nullptr, adjEntry adjR=nullptr)
Creates a shelling order set for n nodes.
Definition: ShellingOrder.h:56
ogdf::ShellingOrder::operator[]
const ShellingOrderSet & operator[](int i) const
Returns the i-th set V_i
Definition: ShellingOrder.h:137
ogdf::ShellingOrder::right
node right(int i) const
Returns the right-node of the i-th set Vi.
Definition: ShellingOrder.h:143
ogdf::ShellingOrderSet::left
node left() const
Returns the left-node of the set.
Definition: ShellingOrder.h:64
ogdf::ShellingOrder::m_V
Array< ShellingOrderSet > m_V
the node partition.
Definition: ShellingOrder.h:169
ogdf::ShellingOrderSet::m_rightAdj
adjEntry m_rightAdj
the adjacency entry pointing to the right-node.
Definition: ShellingOrder.h:107
ogdf::ShellingOrder
The shelling order of a graph.
Definition: ShellingOrder.h:113
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::ShellingOrderSet::right
node right() const
Returns the right-node of the set.
Definition: ShellingOrder.h:67