Approximation algorithms for the node coloring problem in graphs. More...
#include <ogdf/graphalg/NodeColoringBergerRompel.h>
Inheritance diagram for ogdf::NodeColoringBergerRompel:Classes | |
| struct | SearchWrapperBergerRompel |
| Wraps the parameterized Berger&Rompel algorithm. More... | |
Public Types | |
| enum class | BruteForceProcedure { trivialColoring , sequentialColoringSimple , sequentialColoringDegree , johnsonColoring , wigdersonColoring , pooled } |
| Declares the procedure dealing with the brute force coloring. More... | |
Public Types inherited from ogdf::NodeColoringModule | |
| using | NodeColor = unsigned int |
| Data type of the node colors. | |
| enum class | RamseyProcedure { smallestIndex , smallestDegree , largestDegree , extremalDegree } |
| Declares the procedure of finding nodes in Ramsey's algorithm. More... | |
| enum class | SearchProcedure { linearSearch , binarySearch , wigdersonSearch } |
| Declares the search procedures. More... | |
Public Member Functions | |
| NodeColoringBergerRompel () | |
| The constructor. | |
| virtual NodeColor | call (const Graph &graph, NodeArray< NodeColor > &colors, NodeColor start=0) override |
| The actual algorithm call. | |
| void | setAlpha (double alpha) |
| Sets the parameter alpha which controls the accuracy of the algorithm. | |
| void | setBruteForceProcedure (BruteForceProcedure bruteForceProcedure) |
| Sets the brute force procedure. | |
| void | setSearchProcedure (SearchProcedure searchProcedure) |
| Sets the search procedure to find the smallest possible parameter k such as the graph is k-colorable. | |
Public Member Functions inherited from ogdf::NodeColoringModule | |
| NodeColoringModule () | |
| Default constructor. | |
| virtual | ~NodeColoringModule () |
| Destructor. | |
| virtual bool | checkColoring (const Graph &graph, const NodeArray< NodeColor > &colors) const |
| Checks if the given node coloring is valid. | |
| virtual void | preprocessGraph (Graph &graph) const |
| Preprocesses a graph so that a coloring algorithm can be applied. | |
Private Member Functions | |
| bool | bergerRompelParameterized (const Graph &graph, NodeArray< NodeColor > &colors, NodeColor &color, int k, double alpha) |
Additional Inherited Members | |
Protected Member Functions inherited from ogdf::NodeColoringModule | |
| template<class CONTAINER > | |
| bool | checkIndependentSet (const Graph &graph, const CONTAINER &nodes) const |
| Checks if subgraph induced by the given nodes forms an independent set. | |
| virtual void | cliqueRemoval (const Graph &graph, List< node > &independentSet) const |
| Applies the clique removal algorithm for finding a large independent set in a given graph. | |
| virtual void | createBuckets (const Graph &graph, int size, Array< Array< node > > &buckets) const |
| Creates a partitioning of the node set into buckets of a given size. | |
| virtual int | getMaximumDegreeNode (const Graph &graph, node &maxDegreeNode) const |
| Searches for a maximum degree node in the graph. | |
| virtual int | getMaximumDegreeNodes (const Graph &graph, List< node > &maxDegreeNodes) const |
| Searches for all nodes with maximum degree in the graph. | |
| virtual NodeColor | getMaximumNodeColor (NodeArray< NodeColor > &colors) |
| Calculates the maximum node color index used in a certain node coloring. | |
| virtual int | getMinimumDegreeNode (const Graph &graph, node &minDegreeNode) const |
| Searches for a minimum degree node in the graph. | |
| virtual int | getMinimumDegreeNodes (const Graph &graph, List< node > &minDegreeNodes) const |
| Searches for all nodes with minimum degree in the graph. | |
| int | getNeighborDegrees (const node &v) const |
| Calculates the sum of neighbor nodes degrees for a given node v. | |
| template<class LISTITERATOR > | |
| void | getNeighbors (const Graph &graph, LISTITERATOR nodes, List< node > &neighbors) const |
| Calculates the set of neighbors Y for a given set of nodes X. | |
| template<class LISTITERATOR > | |
| void | getNeighborsComplement (const Graph &graph, LISTITERATOR nodes, List< node > &complementNeighbors) const |
| Calculates the set of complement neighbors Y for a given set of nodes X. | |
| template<class LISTITERATOR > | |
| void | mergeNodeLists (const Graph &graph, LISTITERATOR firstList, LISTITERATOR secondList, List< node > &mergedList) const |
| Merges two lists of nodes and deletes the duplicates. | |
| virtual void | ramseyAlgorithm (const Graph &graph, List< node > &clique, List< node > &independentSet) const |
| Performs the Ramsey algorithm for finding heuristically large cliques and independents sets in a graph. | |
| virtual void | reverseNodeTable (const Graph &graphOrig, const Graph &graphNew, const NodeArray< node > &orig2New, NodeArray< node > &new2Orig) const |
| Reverses the mapping between the nodes sets of a graph and a subgraph. | |
| int | searchBinary (SearchWrapper *searchWrapper, int start, int end) const |
| Performs a binary search in a specified range with a given oracle. | |
| int | searchLinear (SearchWrapper *searchWrapper, int start, int end) const |
| Performs a linear search in a specified range with a given oracle. | |
| int | searchWigderson (SearchWrapper *searchWrapper) const |
| Performs a the search procedure specified by Wigderson. | |
Protected Attributes inherited from ogdf::NodeColoringModule | |
| RamseyProcedure | m_ramseyProcedure |
| The RamseyProcedure to be used to select nodes. | |
Approximation algorithms for the node coloring problem in graphs.
This class implements the approximation given by Berger&Rompel which colors the graph by finding independent sets.
Definition at line 49 of file NodeColoringBergerRompel.h.
|
strong |
Declares the procedure dealing with the brute force coloring.
Definition at line 54 of file NodeColoringBergerRompel.h.
|
inline |
The constructor.
Initializes the search procedure with the binary-search by default. The parameter alpha is initialized with 1.0 by default.
Definition at line 68 of file NodeColoringBergerRompel.h.
|
private |
|
overridevirtual |
The actual algorithm call.
| graph | The graph for which the node coloring will be calculated. |
| colors | The resulting node coloring. |
| start | The first color index which will be used. |
Implements ogdf::NodeColoringModule.
|
inline |
Sets the parameter alpha which controls the accuracy of the algorithm.
A higher value of alpha results in a better approximation ratio. Also, the running time increases with alpha.
| alpha | The control parameter alpha |
Definition at line 100 of file NodeColoringBergerRompel.h.
|
inline |
Sets the brute force procedure.
| bruteForceProcedure | The desired brute force coloring procedure |
Definition at line 90 of file NodeColoringBergerRompel.h.
|
inline |
Sets the search procedure to find the smallest possible parameter k such as the graph is k-colorable.
| searchProcedure | The desired search procedure |
Definition at line 82 of file NodeColoringBergerRompel.h.
|
private |
Definition at line 115 of file NodeColoringBergerRompel.h.
|
private |
Definition at line 114 of file NodeColoringBergerRompel.h.
|
private |
Definition at line 111 of file NodeColoringBergerRompel.h.
|
private |
Definition at line 113 of file NodeColoringBergerRompel.h.
|
private |
Definition at line 110 of file NodeColoringBergerRompel.h.
|
private |
Definition at line 109 of file NodeColoringBergerRompel.h.
|
private |
Definition at line 112 of file NodeColoringBergerRompel.h.