Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

EdgeStandardRep.h
Go to the documentation of this file.
1 
39 #pragma once
40 
41 #include <ogdf/basic/EdgeArray.h>
42 #include <ogdf/basic/Graph_d.h>
43 #include <ogdf/basic/NodeArray.h>
47 
48 namespace ogdf {
49 
51 enum class EdgeStandardType {
55  clique = 0x0001,
60  star = 0x0002,
65  tree = 0x0003
66 };
67 
70 private:
73 
76 
79 
82 
85 
88 
91 
94 
95 public:
98 
100  EdgeStandardRep(const Hypergraph& pH, EdgeStandardType pType);
101 
103  virtual ~EdgeStandardRep();
104 
106  void clear();
107 
109  const Hypergraph& hypergraph() const { return *m_hypergraph; }
110 
112  const Graph& constGraph() const { return m_graphRep; }
113 
115  EdgeStandardType type() const { return m_type; }
116 
118  node nodeMap(hypernode v) { return m_nodeMap[v]; }
119 
121  hypernode hypernodeMap(node v) { return m_hypernodeMap[v]; }
122 
124  const List<edge>& edgeMap(hyperedge e) { return m_edgeMap[e]; }
125 
127  hyperedge hyperedgeMap(edge e) { return m_hyperedgeMap[e]; }
128 
130  const List<node>& dummyNodes() const { return m_dummyNodes; }
131 
132 protected:
134  virtual void hypernodeDeleted(hypernode v) override;
135 
137  virtual void hypernodeAdded(hypernode v) override;
138 
140  virtual void hyperedgeDeleted(hyperedge e) override;
141 
143  virtual void hyperedgeAdded(hyperedge e) override;
144 
146  virtual void cleared() override;
147 
148 private:
149  void constructCliqueRep();
150 
151  void constructStarRep();
152 
153  void constructTreeRep();
154 
155  void hyperedgeToTree(hyperedge e, int degree);
156 
157  void hyperedgeToClique(hyperedge e);
158 
159  void cloneHypernodes();
160 };
161 
162 }
ogdf::EdgeStandardRep::m_dummyNodes
List< node > m_dummyNodes
The list of all newly created nodes.
Definition: EdgeStandardRep.h:93
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::EdgeStandardRep::dummyNodes
const List< node > & dummyNodes() const
Returns the list of dummy nodes.
Definition: EdgeStandardRep.h:130
ogdf::EdgeStandardRep::constGraph
const Graph & constGraph() const
Returns a reference to the representation graph.
Definition: EdgeStandardRep.h:112
ogdf::EdgeStandardRep::m_hypernodeMap
NodeArray< hypernode > m_hypernodeMap
The map from representation nodes to hypernodes.
Definition: EdgeStandardRep.h:81
ogdf::EdgeStandardRep::m_nodeMap
HypernodeArray< node > m_nodeMap
The map from representation hypernodes to nodes.
Definition: EdgeStandardRep.h:84
ogdf::HypergraphRegisteredArray
RegisteredArray for nodes and edges of a hypergraph.
Definition: Hypergraph.h:372
ogdf::EdgeStandardRep::m_edgeMap
HyperedgeArray< List< edge > > m_edgeMap
The map from representation hyperedge to edges.
Definition: EdgeStandardRep.h:90
ogdf::EdgeStandardRep::hyperedgeMap
hyperedge hyperedgeMap(edge e)
Returns the hyperedge associated with the edge.
Definition: EdgeStandardRep.h:127
ogdf::EdgeStandardRep::hypernodeMap
hypernode hypernodeMap(node v)
Returns the hypernode associated with the node (if any).
Definition: EdgeStandardRep.h:121
ogdf::EdgeStandardType
EdgeStandardType
Enumeration class of possible edge standard representations.
Definition: EdgeStandardRep.h:51
ogdf::HyperedgeElement
Class for the representation of hyperedges.
Definition: Hypergraph.h:137
ogdf::EdgeStandardRep::m_graphRep
Graph m_graphRep
Edge standard representation of the hypergraph.
Definition: EdgeStandardRep.h:78
Hypergraph.h
Declaration and a partial implementation of a Hypergraph class partly based on the original classes f...
ogdf::EdgeStandardRep::hypergraph
const Hypergraph & hypergraph() const
Conversion to original hypergraph reference.
Definition: EdgeStandardRep.h:109
ogdf::EdgeStandardRep::m_hyperedgeMap
EdgeArray< hyperedge > m_hyperedgeMap
The map from representation edge to hyperedges.
Definition: EdgeStandardRep.h:87
HypergraphObserver.h
Abstract base class for observers on hypergraphs, that need to be informed about hypergraph changes (...
EdgeArray.h
Declaration and implementation of EdgeArray class.
ogdf::EdgeStandardRep
Edge standard representation of hypergraphs.
Definition: EdgeStandardRep.h:69
ogdf::EdgeStandardType::star
@ star
for every hyperedge e = {v_1, ..., v_l} a single new dummy node v_e is introduced,...
ogdf::EdgeStandardRep::nodeMap
node nodeMap(hypernode v)
Returns the node associated with the hypernode.
Definition: EdgeStandardRep.h:118
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::EdgeStandardRep::type
EdgeStandardType type() const
Returns the type of edge standard representation.
Definition: EdgeStandardRep.h:115
ogdf::EdgeStandardType::clique
@ clique
no new dummy nodes are introduced, for every hyperedge e = (v_1, ..., v_l), we add a cliqie K_l conne...
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
NodeArray.h
Declaration and implementation of NodeArray class.
ogdf::EdgeStandardType::tree
@ tree
for every hyperedge e a minimal subcubic tree connecting all hypernodes incident with e together is a...
ogdf::EdgeStandardRep::edgeMap
const List< edge > & edgeMap(hyperedge e)
Returns the list of edges associated with the hyperedge.
Definition: EdgeStandardRep.h:124
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::EdgeElement
Class for the representation of edges.
Definition: Graph_d.h:356
ogdf::EdgeStandardRep::m_hypergraph
const Hypergraph * m_hypergraph
The reference to the original hypergraph.
Definition: EdgeStandardRep.h:75
HypergraphArray.h
Declaration and implementation of hyperraph array classes based on Node/EdgeArray classes written by ...
Graph_d.h
Pure declaration header, find template implementation in Graph.h.
ogdf::EdgeStandardRep::m_type
EdgeStandardType m_type
The type of edge standard representation.
Definition: EdgeStandardRep.h:72
ogdf::HypergraphObserver
Definition: HypergraphObserver.h:49
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::Hypergraph
Definition: Hypergraph.h:400
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709
ogdf::HypernodeElement
Class for the representation of hypernodes.
Definition: Hypergraph.h:217