Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
EdgeStandardRep.h
Go to the documentation of this file.
1
39#pragma once
40
41#include <ogdf/basic/Graph.h>
42#include <ogdf/basic/List.h>
43#include <ogdf/basic/basic.h>
46
47namespace ogdf {
48
50enum class EdgeStandardType {
54 clique = 0x0001,
59 star = 0x0002,
64 tree = 0x0003
65};
66
69private:
72
75
78
81
84
87
90
93
94public:
97
100
103
105 void clear();
106
108 const Hypergraph& hypergraph() const { return *m_hypergraph; }
109
111 const Graph& constGraph() const { return m_graphRep; }
112
114 EdgeStandardType type() const { return m_type; }
115
117 node nodeMap(hypernode v) { return m_nodeMap[v]; }
118
120 hypernode hypernodeMap(node v) { return m_hypernodeMap[v]; }
121
123 const List<edge>& edgeMap(hyperedge e) { return m_edgeMap[e]; }
124
126 hyperedge hyperedgeMap(edge e) { return m_hyperedgeMap[e]; }
127
129 const List<node>& dummyNodes() const { return m_dummyNodes; }
130
131protected:
133 virtual void hypernodeDeleted(hypernode v) override;
134
136 virtual void hypernodeAdded(hypernode v) override;
137
139 virtual void hyperedgeDeleted(hyperedge e) override;
140
142 virtual void hyperedgeAdded(hyperedge e) override;
143
145 virtual void cleared() override;
146
147private:
149
151
153
154 void hyperedgeToTree(hyperedge e, int degree);
155
157
159};
160
161}
Includes declaration of graph class.
Declaration and a partial implementation of a Hypergraph class partly based on the original classes f...
Abstract base class for observers on hypergraphs, that need to be informed about hypergraph changes (...
Declaration of doubly linked lists and iterators.
Basic declarations, included by all source files.
Class for the representation of edges.
Definition Graph_d.h:364
Edge standard representation of hypergraphs.
HyperedgeArray< List< edge > > m_edgeMap
The map from representation hyperedge to edges.
NodeArray< hypernode > m_hypernodeMap
The map from representation nodes to hypernodes.
void hyperedgeToClique(hyperedge e)
EdgeStandardType type() const
Returns the type of edge standard representation.
EdgeStandardRep(const Hypergraph &pH, EdgeStandardType pType)
Creates an edge standard rep. of a given pType associated with pH.
virtual void hypernodeAdded(hypernode v) override
Hypernode addition reaction.
EdgeArray< hyperedge > m_hyperedgeMap
The map from representation edge to hyperedges.
hypernode hypernodeMap(node v)
Returns the hypernode associated with the node (if any).
const List< edge > & edgeMap(hyperedge e)
Returns the list of edges associated with the hyperedge.
node nodeMap(hypernode v)
Returns the node associated with the hypernode.
List< node > m_dummyNodes
The list of all newly created nodes.
const Hypergraph * m_hypergraph
The reference to the original hypergraph.
HypernodeArray< node > m_nodeMap
The map from representation hypernodes to nodes.
virtual void hyperedgeAdded(hyperedge e) override
Hyperedge addition reaction.
const Graph & constGraph() const
Returns a reference to the representation graph.
Graph m_graphRep
Edge standard representation of the hypergraph.
const Hypergraph & hypergraph() const
Conversion to original hypergraph reference.
void clear()
Clears all cluster data.
virtual void hyperedgeDeleted(hyperedge e) override
Hyperedge removal reaction.
EdgeStandardRep()
Creates an edge standard representation.
virtual void cleared() override
Hypergraph clean-up reaction.
hyperedge hyperedgeMap(edge e)
Returns the hyperedge associated with the edge.
EdgeStandardType m_type
The type of edge standard representation.
virtual void hypernodeDeleted(hypernode v) override
Hypernode removal reaction.
virtual ~EdgeStandardRep()
Destructor.
const List< node > & dummyNodes() const
Returns the list of dummy nodes.
void hyperedgeToTree(hyperedge e, int degree)
Data type for general directed graphs (adjacency list representation).
Definition Graph_d.h:866
Class for the representation of hyperedges.
Definition Hypergraph.h:148
RegisteredArray for nodes and edges of a hypergraph.
Definition Hypergraph.h:385
Class for the representation of hypernodes.
Definition Hypergraph.h:228
Doubly linked lists (maintaining the length of the list).
Definition List.h:1451
Class for the representation of nodes.
Definition Graph_d.h:241
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.
EdgeStandardType
Enumeration class of possible edge standard representations.
@ clique
no new dummy nodes are introduced, for every hyperedge e = (v_1, ..., v_l), we add a cliqie K_l conne...
@ star
for every hyperedge e = {v_1, ..., v_l} a single new dummy node v_e is introduced,...
@ tree
for every hyperedge e a minimal subcubic tree connecting all hypernodes incident with e together is a...