Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

SpringEmbedderFRExact.h
Go to the documentation of this file.
1 
32 #pragma once
33 
35 #include <ogdf/basic/SList.h>
37 
38 namespace ogdf {
39 
42 public:
43  enum class CoolingFunction { Factor, Logarithmic };
44 
47 
49  virtual void call(GraphAttributes& GA) override;
50 
52  int iterations() const { return m_iterations; }
53 
55  void iterations(int i) {
56  OGDF_ASSERT(i > 0);
57  m_iterations = i;
58  }
59 
61  bool noise() const { return m_noise; }
62 
64  void noise(bool on) { m_noise = on; }
65 
67  void nodeWeights(bool on) { m_useNodeWeight = on; }
68 
70  CoolingFunction coolingFunction() const { return m_coolingFunction; }
71 
73  void coolingFunction(CoolingFunction f) { m_coolingFunction = f; }
74 
76  double idealEdgeLength() const { return m_idealEdgeLength; }
77 
79  void idealEdgeLength(double len) { m_idealEdgeLength = len; }
80 
82  double minDistCC() const { return m_minDistCC; }
83 
85  void minDistCC(double x) { m_minDistCC = x; }
86 
88  double pageRatio() { return m_pageRatio; }
89 
91  void pageRatio(double x) { m_pageRatio = x; }
92 
93  void checkConvergence(bool b) { m_checkConvergence = b; }
94 
95  bool checkConvergence() { return m_checkConvergence; }
96 
97  void convTolerance(double tol) { m_convTolerance = tol; }
98 
99 private:
100  class ArrayGraph {
103  int m_numCC;
104 
109 
110  public:
111  explicit ArrayGraph(GraphAttributes& ga);
112  ~ArrayGraph();
113 
114  void initCC(int i);
115 
116  int numberOfCCs() const { return m_numCC; }
117 
118  int numberOfNodes() const { return m_numNodes; }
119 
120  int numberOfEdges() const { return m_numEdges; }
121 
122  node original(int v) const { return m_orig[v]; }
123 
124  const SList<node>& nodesInCC(int i) const { return m_nodesInCC[i]; }
125 
126  int* m_src;
127  int* m_tgt;
128  double* m_x;
129  double* m_y;
130  double* m_nodeWeight;
131  //this should be part of a multilevel layout interface class later on
132  bool m_useNodeWeight; //should given nodeweights be used or all set to 1.0?
133  };
134 
135  double log2(double x) { return log(x) / log(2.0); }
136 
137  double mylog2(int x) {
138  double result = 0.0;
139  while (x > 0) {
140  result++;
141  x >>= 1;
142  }
143  return result / 2;
144  }
145 
146  void initialize(ArrayGraph& component);
147  void mainStep(ArrayGraph& component);
148  void mainStep_sse3(ArrayGraph& component);
149 
150 #if 0
151  // Fruchterman, Reingold
152  double f_att(double d) { return d*d / m_idealEdgeLength; }
153  double f_rep(double d) { return m_idealEdgeLength*m_idealEdgeLength / d; }
154 
155  // Eades
156  double f_att(double d) { return 5.0 * d * log2(d/m_idealEdgeLength); }
157  double f_rep(double d) { return 20.0 / d; }
158 #endif
159 
160  // cooling function
161  void cool(double& tx, double& ty, int& cF);
162 
164  bool m_noise;
166 
167 #if 0
168  double m_tx;
169  double m_ty;
170 #endif
171 
174 
176  double m_minDistCC;
177  double m_pageRatio;
178 
179 #if 0
180  int m_cF;
181 #endif
182  double m_txNull;
183  double m_tyNull;
184  //see above at ArrayGraph
186  bool m_checkConvergence; //<! If set to true, computation is stopped if movement falls below threshold
187  double m_convTolerance; //<! Fraction of ideal edge length below which convergence is achieved
188 };
189 
190 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::GraphAttributes
Stores additional attributes of a graph (like layout information).
Definition: GraphAttributes.h:66
GraphAttributes.h
Declaration of class GraphAttributes which extends a Graph by additional attributes.
ogdf::SpringEmbedderFRExact::ArrayGraph::m_useNodeWeight
bool m_useNodeWeight
Definition: SpringEmbedderFRExact.h:132
ogdf::SpringEmbedderFRExact::m_minDistCC
double m_minDistCC
The minimal distance between connected components.
Definition: SpringEmbedderFRExact.h:176
ogdf::SpringEmbedderFRExact::log2
double log2(double x)
Definition: SpringEmbedderFRExact.h:135
ogdf::SpringEmbedderFRExact::m_idealEdgeLength
double m_idealEdgeLength
The ideal edge length.
Definition: SpringEmbedderFRExact.h:175
ogdf::SpringEmbedderFRExact::ArrayGraph
Definition: SpringEmbedderFRExact.h:100
OGDF_ASSERT
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
Definition: basic.h:54
ogdf::SpringEmbedderFRExact::ArrayGraph::m_nodesInCC
Array< SList< node > > m_nodesInCC
Definition: SpringEmbedderFRExact.h:107
ogdf::SpringEmbedderFRExact::m_coolFactor_y
double m_coolFactor_y
Definition: SpringEmbedderFRExact.h:173
ogdf::SpringEmbedderFRExact::ArrayGraph::numberOfCCs
int numberOfCCs() const
Definition: SpringEmbedderFRExact.h:116
ogdf::SpringEmbedderFRExact
Fruchterman-Reingold algorithm with (exact) layout.
Definition: SpringEmbedderFRExact.h:41
ogdf::SpringEmbedderFRExact::ArrayGraph::m_nodeWeight
double * m_nodeWeight
Definition: SpringEmbedderFRExact.h:130
ogdf::SpringEmbedderFRExact::CoolingFunction
CoolingFunction
Definition: SpringEmbedderFRExact.h:43
ogdf::SpringEmbedderFRExact::ArrayGraph::m_tgt
int * m_tgt
Definition: SpringEmbedderFRExact.h:127
ogdf::SList
Singly linked lists (maintaining the length of the list).
Definition: SList.h:833
ogdf::ForceLayoutModule
Interface of general layout algorithms.
Definition: ForceLayoutModule.h:45
ogdf::SpringEmbedderFRExact::ArrayGraph::m_y
double * m_y
Definition: SpringEmbedderFRExact.h:129
ogdf::SpringEmbedderFRExact::ArrayGraph::m_ga
GraphAttributes * m_ga
Definition: SpringEmbedderFRExact.h:105
ogdf::SpringEmbedderFRExact::m_coolFactor_x
double m_coolFactor_x
Definition: SpringEmbedderFRExact.h:172
ogdf::SpringEmbedderFRExact::ArrayGraph::nodesInCC
const SList< node > & nodesInCC(int i) const
Definition: SpringEmbedderFRExact.h:124
ForceLayoutModule.h
Declaration of interface for energy-based layout algorithms (class ForceLayoutModule)
ogdf::SpringEmbedderFRExact::idealEdgeLength
void idealEdgeLength(double len)
Sets the ideal edge length to len.
Definition: SpringEmbedderFRExact.h:79
ogdf::SpringEmbedderFRExact::m_useNodeWeight
bool m_useNodeWeight
Definition: SpringEmbedderFRExact.h:185
ogdf::SpringEmbedderFRExact::iterations
void iterations(int i)
Sets the number of iterations to i.
Definition: SpringEmbedderFRExact.h:55
ogdf::SpringEmbedderFRExact::checkConvergence
bool checkConvergence()
Definition: SpringEmbedderFRExact.h:95
ogdf::SpringEmbedderFRExact::ArrayGraph::m_numNodes
int m_numNodes
Definition: SpringEmbedderFRExact.h:101
ogdf::SpringEmbedderFRExact::ArrayGraph::m_mapNode
NodeArray< int > m_mapNode
Definition: SpringEmbedderFRExact.h:108
ogdf::SpringEmbedderFRExact::idealEdgeLength
double idealEdgeLength() const
Returns the ideal edge length.
Definition: SpringEmbedderFRExact.h:76
ogdf::SpringEmbedderFRExact::ArrayGraph::m_x
double * m_x
Definition: SpringEmbedderFRExact.h:128
ogdf::SpringEmbedderFRExact::m_noise
bool m_noise
Perform random perturbations?
Definition: SpringEmbedderFRExact.h:164
ogdf::SpringEmbedderFRExact::m_tyNull
double m_tyNull
Definition: SpringEmbedderFRExact.h:183
SList.h
Declaration of singly linked lists and iterators.
ogdf::Array
The parameterized class Array implements dynamic arrays of type E.
Definition: Array.h:214
ogdf::SpringEmbedderFRExact::convTolerance
void convTolerance(double tol)
Definition: SpringEmbedderFRExact.h:97
ogdf::MeasureEnum::log
@ log
ogdf::SpringEmbedderFRExact::m_iterations
int m_iterations
The number of iterations.
Definition: SpringEmbedderFRExact.h:163
ogdf::SpringEmbedderFRExact::coolingFunction
void coolingFunction(CoolingFunction f)
Sets the parameter coolingFunction to f.
Definition: SpringEmbedderFRExact.h:73
ogdf::SpringEmbedderFRExact::ArrayGraph::m_numCC
int m_numCC
Definition: SpringEmbedderFRExact.h:103
ogdf::SpringEmbedderFRExact::ArrayGraph::numberOfEdges
int numberOfEdges() const
Definition: SpringEmbedderFRExact.h:120
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::SpringEmbedderFRExact::nodeWeights
void nodeWeights(bool on)
Switches use of node weights given in GraphAttributtes.
Definition: SpringEmbedderFRExact.h:67
ogdf::SpringEmbedderFRExact::mylog2
double mylog2(int x)
Definition: SpringEmbedderFRExact.h:137
ogdf::SpringEmbedderFRExact::checkConvergence
void checkConvergence(bool b)
Definition: SpringEmbedderFRExact.h:93
ogdf::SpringEmbedderFRExact::ArrayGraph::m_orig
node * m_orig
Definition: SpringEmbedderFRExact.h:106
ogdf::SpringEmbedderFRExact::pageRatio
double pageRatio()
Returns the page ratio.
Definition: SpringEmbedderFRExact.h:88
ogdf::SpringEmbedderFRExact::iterations
int iterations() const
Returns the current setting of iterations.
Definition: SpringEmbedderFRExact.h:52
ogdf::SpringEmbedderFRExact::minDistCC
void minDistCC(double x)
Sets the minimum distance between connected components to x.
Definition: SpringEmbedderFRExact.h:85
ogdf::SpringEmbedderFRExact::m_coolingFunction
CoolingFunction m_coolingFunction
The selected cooling function.
Definition: SpringEmbedderFRExact.h:165
ogdf::SpringEmbedderFRExact::ArrayGraph::original
node original(int v) const
Definition: SpringEmbedderFRExact.h:122
ogdf::SpringEmbedderFRExact::m_pageRatio
double m_pageRatio
The page ratio.
Definition: SpringEmbedderFRExact.h:177
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::SpringEmbedderFRExact::coolingFunction
CoolingFunction coolingFunction() const
Returns the current setting for the cooling function.
Definition: SpringEmbedderFRExact.h:70
ogdf::Math::log2
T log2(T x)
Returns the logarithm of x to the base 2.
Definition: Math.h:107
ogdf::SpringEmbedderFRExact::ArrayGraph::m_numEdges
int m_numEdges
Definition: SpringEmbedderFRExact.h:102
ogdf::SpringEmbedderFRExact::noise
void noise(bool on)
Sets the parameter noise to on.
Definition: SpringEmbedderFRExact.h:64
ogdf::SpringEmbedderFRExact::ArrayGraph::numberOfNodes
int numberOfNodes() const
Definition: SpringEmbedderFRExact.h:118
ogdf::SpringEmbedderFRExact::m_convTolerance
double m_convTolerance
Definition: SpringEmbedderFRExact.h:187
ogdf::SpringEmbedderFRExact::ArrayGraph::m_src
int * m_src
Definition: SpringEmbedderFRExact.h:126
ogdf::SpringEmbedderFRExact::minDistCC
double minDistCC() const
Returns the minimum distance between connected components.
Definition: SpringEmbedderFRExact.h:82
ogdf::SpringEmbedderFRExact::noise
bool noise() const
Returns the current setting of nodes.
Definition: SpringEmbedderFRExact.h:61
ogdf::SpringEmbedderFRExact::m_checkConvergence
bool m_checkConvergence
Definition: SpringEmbedderFRExact.h:186
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::SpringEmbedderFRExact::m_txNull
double m_txNull
Definition: SpringEmbedderFRExact.h:182
ogdf::SpringEmbedderFRExact::pageRatio
void pageRatio(double x)
Sets the page ration to x.
Definition: SpringEmbedderFRExact.h:91