Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

NodeColoringBergerRompel.h
Go to the documentation of this file.
1 
32 #pragma once
33 
39 
40 namespace ogdf {
41 
48 public:
52  enum class BruteForceProcedure {
53  trivialColoring,
54  sequentialColoringSimple,
55  sequentialColoringDegree,
56  johnsonColoring,
57  wigdersonColoring,
58  pooled,
59  };
60 
67  : m_simpleColoring()
68  , m_sequentialColoring()
69  , m_johnsonColoring()
70  , m_wigdersonColoring()
71  , m_searchProcedure(SearchProcedure::wigdersonSearch)
72  , m_bruteForceProcedure(BruteForceProcedure::pooled)
73  , m_alpha(0.4) { }
74 
80  inline void setSearchProcedure(SearchProcedure searchProcedure) {
81  m_searchProcedure = searchProcedure;
82  }
83 
88  inline void setBruteForceProcedure(BruteForceProcedure bruteForceProcedure) {
89  m_bruteForceProcedure = bruteForceProcedure;
90  }
91 
98  inline void setAlpha(double alpha) {
99  OGDF_ASSERT(alpha > 0.1);
100  m_alpha = alpha;
101  }
102 
103  virtual NodeColor call(const Graph& graph, NodeArray<NodeColor>& colors,
104  NodeColor start = 0) override;
105 
106 private:
111  SearchProcedure m_searchProcedure;
113  double m_alpha;
114 
115  bool bergerRompelParameterized(const Graph& graph, NodeArray<NodeColor>& colors,
116  NodeColor& color, int k, double alpha);
117 
130  const Graph& graph, NodeArray<NodeColor>& colors, double alpha)
131  : m_coloring(coloringBergerRompel), m_graph(graph), m_colors(colors), m_alpha(alpha) { }
132 
133  bool step(int k) override {
134  NodeColor start = NodeColor(1);
135  return m_coloring.bergerRompelParameterized(m_graph, m_colors, start, k, m_alpha);
136  }
137 
139  const Graph& m_graph;
141  double m_alpha;
142  };
143 };
144 }
ogdf::NodeColoringBergerRompel::setBruteForceProcedure
void setBruteForceProcedure(BruteForceProcedure bruteForceProcedure)
Sets the brute force procedure.
Definition: NodeColoringBergerRompel.h:88
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::NodeColoringBergerRompel::m_bruteForceProcedure
BruteForceProcedure m_bruteForceProcedure
Definition: NodeColoringBergerRompel.h:112
ogdf::NodeColoringBergerRompel::SearchWrapperBergerRompel::m_alpha
double m_alpha
Definition: NodeColoringBergerRompel.h:141
ogdf::NodeColoringBergerRompel::SearchWrapperBergerRompel::m_coloring
NodeColoringBergerRompel & m_coloring
Definition: NodeColoringBergerRompel.h:138
OGDF_ASSERT
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
Definition: basic.h:54
ogdf::NodeColoringBergerRompel::SearchWrapperBergerRompel::m_colors
NodeArray< NodeColor > & m_colors
Definition: NodeColoringBergerRompel.h:140
ogdf::NodeColoringBergerRompel::m_wigdersonColoring
NodeColoringWigderson m_wigdersonColoring
Definition: NodeColoringBergerRompel.h:110
NodeColoringJohnson.h
Applies the node coloring approximation specified by Johnson.
ogdf::NodeColoringBergerRompel::SearchWrapperBergerRompel
Wraps the parameterized Berger&Rompel algorithm.
Definition: NodeColoringBergerRompel.h:121
ogdf::NodeColoringBergerRompel::SearchWrapperBergerRompel::step
bool step(int k) override
Performs a step in the search procedure.
Definition: NodeColoringBergerRompel.h:133
ogdf::NodeColoringWigderson
Approximation algorithms for the node coloring problem in graphs.
Definition: NodeColoringWigderson.h:47
ogdf::NodeColoringSimple
Approximation algorithms for the node coloring problem in graphs.
Definition: NodeColoringSimple.h:42
ogdf::colors
const std::array< Color, 63 > colors
An array of 63 different colors to cycle through.
ogdf::NodeColoringBergerRompel::m_sequentialColoring
NodeColoringSequential m_sequentialColoring
Definition: NodeColoringBergerRompel.h:108
ogdf::NodeColoringBergerRompel::SearchWrapperBergerRompel::m_graph
const Graph & m_graph
Definition: NodeColoringBergerRompel.h:139
ogdf::NodeColoringModule
Approximation algorithms for the node coloring problem in graphs.
Definition: NodeColoringModule.h:44
ogdf::NodeColoringSequential
Approximation algorithms for the node coloring problem in graphs.
Definition: NodeColoringSequential.h:43
ogdf::NodeColoringBergerRompel::setAlpha
void setAlpha(double alpha)
Sets the parameter alpha which controls the accuracy of the algorithm.
Definition: NodeColoringBergerRompel.h:98
ogdf::NodeColoringBergerRompel::m_alpha
double m_alpha
Definition: NodeColoringBergerRompel.h:113
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
NodeColoringSimple.h
Trivial node coloring which assigns every node a different color.
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
NodeColoringModule.h
Template of base class of node coloring algorithms.
ogdf::NodeColoringBergerRompel::m_searchProcedure
SearchProcedure m_searchProcedure
Definition: NodeColoringBergerRompel.h:111
ogdf::NodeColoringJohnson
Approximation algorithms for the node coloring problem in graphs.
Definition: NodeColoringJohnson.h:43
ogdf::NodeColoringBergerRompel::SearchWrapperBergerRompel::SearchWrapperBergerRompel
SearchWrapperBergerRompel(NodeColoringBergerRompel &coloringBergerRompel, const Graph &graph, NodeArray< NodeColor > &colors, double alpha)
Creates the wrapper.
Definition: NodeColoringBergerRompel.h:129
ogdf::NodeColoringBergerRompel::m_simpleColoring
NodeColoringSimple m_simpleColoring
Definition: NodeColoringBergerRompel.h:107
ogdf::NodeColoringBergerRompel::m_johnsonColoring
NodeColoringJohnson m_johnsonColoring
Definition: NodeColoringBergerRompel.h:109
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::NodeColoringModule::NodeColor
unsigned int NodeColor
Data type of the node colors.
Definition: NodeColoringModule.h:49
NodeColoringSequential.h
Applies the sequential coloring algorithm to a given graph.
ogdf::NodeColoringBergerRompel::NodeColoringBergerRompel
NodeColoringBergerRompel()
The constructor.
Definition: NodeColoringBergerRompel.h:66
ogdf::NodeColoringBergerRompel::setSearchProcedure
void setSearchProcedure(SearchProcedure searchProcedure)
Sets the search procedure to find the smallest possible parameter k such as the graph is k-colorable.
Definition: NodeColoringBergerRompel.h:80
ogdf::NodeColoringBergerRompel
Approximation algorithms for the node coloring problem in graphs.
Definition: NodeColoringBergerRompel.h:47
ogdf::NodeColoringBergerRompel::BruteForceProcedure
BruteForceProcedure
Declares the procedure dealing with the brute force coloring.
Definition: NodeColoringBergerRompel.h:52
NodeColoringWigderson.h
Applies the node coloring approximation specified by Wigderson.
ogdf::NodeColoringModule::SearchWrapper
Wraps the search for the minimum parameter k so that the same code can be reused for all algorithms.
Definition: NodeColoringModule.h:192