Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

ogdf::NodeColoringHalldorsson Class Reference

Approximation algorithms for the node coloring problem in graphs. More...

#include <ogdf/graphalg/NodeColoringHalldorsson.h>

+ Inheritance diagram for ogdf::NodeColoringHalldorsson:

Classes

struct  SearchWrapperHalldorsson
 Wraps the recursive Halldórsson algorithm. More...
 

Public Member Functions

 NodeColoringHalldorsson ()
 The constructor. More...
 
virtual NodeColor call (const Graph &graph, NodeArray< NodeColor > &colors, NodeColor start=0) override
 The actual algorithm call. More...
 
void setSearchProcedure (SearchProcedure searchProcedure)
 Sets the search procedure to find the smallest possible parameter k such as the graph is k-colorable. More...
 
- Public Member Functions inherited from ogdf::NodeColoringModule
 NodeColoringModule ()
 Default constructor. More...
 
virtual ~NodeColoringModule ()
 Destructor. More...
 
virtual bool checkColoring (const Graph &graph, const NodeArray< NodeColor > &colors) const
 Checks if the given node coloring is valid. More...
 
virtual void preprocessGraph (Graph &graph) const
 Preprocesses a graph so that a coloring algorithm can be applied. More...
 

Private Member Functions

bool halldorssonRecursive (const Graph &graph, List< node > &independentSet, int k, double alpha)
 Performs the recursive Halldorsson algorithm to find large independent sets. More...
 
void performHalldorsson (const Graph &graph, List< node > &independentSet)
 Performs the Halldorsson algorithm for finding an independent set. More...
 

Private Attributes

SearchProcedure m_searchProcedure
 

Additional Inherited Members

- Public Types inherited from ogdf::NodeColoringModule
using NodeColor = unsigned int
 Data type of the node colors. More...
 
enum  RamseyProcedure { RamseyProcedure::smallestIndex, RamseyProcedure::smallestDegree, RamseyProcedure::largestDegree, RamseyProcedure::extremalDegree }
 Declares the procedure of finding nodes in Ramsey's algorithm. More...
 
enum  SearchProcedure { SearchProcedure::linearSearch, SearchProcedure::binarySearch, SearchProcedure::wigdersonSearch }
 Declares the search procedures. More...
 
- 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. More...
 
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. More...
 
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. More...
 
virtual int getMaximumDegreeNode (const Graph &graph, node &maxDegreeNode) const
 Searches for a maximum degree node in the graph. More...
 
virtual int getMaximumDegreeNodes (const Graph &graph, List< node > &maxDegreeNodes) const
 Searches for all nodes with maximum degree in the graph. More...
 
virtual NodeColor getMaximumNodeColor (NodeArray< NodeColor > &colors)
 Calculates the maximum node color index used in a certain node coloring. More...
 
virtual int getMinimumDegreeNode (const Graph &graph, node &minDegreeNode) const
 Searches for a minimum degree node in the graph. More...
 
virtual int getMinimumDegreeNodes (const Graph &graph, List< node > &minDegreeNodes) const
 Searches for all nodes with minimum degree in the graph. More...
 
int getNeighborDegrees (const node &v) const
 Calculates the sum of neighbor nodes degrees for a given node v. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
int searchBinary (SearchWrapper *searchWrapper, int start, int end) const
 Performs a binary search in a specified range with a given oracle. More...
 
int searchLinear (SearchWrapper *searchWrapper, int start, int end) const
 Performs a linear search in a specified range with a given oracle. More...
 
int searchWigderson (SearchWrapper *searchWrapper) const
 Performs a the search procedure specified by Wigderson. More...
 
- Protected Attributes inherited from ogdf::NodeColoringModule
RamseyProcedure m_ramseyProcedure
 The RamseyProcedure to be used to select nodes. More...
 

Detailed Description

Approximation algorithms for the node coloring problem in graphs.

This class implements the approximation given by Halldorsson which colors the graph by finding independent sets.

Definition at line 43 of file NodeColoringHalldorsson.h.

Constructor & Destructor Documentation

◆ NodeColoringHalldorsson()

ogdf::NodeColoringHalldorsson::NodeColoringHalldorsson ( )
inline

The constructor.

Initializes the search procedure with the linear search by default.

Definition at line 49 of file NodeColoringHalldorsson.h.

Member Function Documentation

◆ call()

virtual NodeColor ogdf::NodeColoringHalldorsson::call ( const Graph graph,
NodeArray< NodeColor > &  colors,
NodeColor  start = 0 
)
overridevirtual

The actual algorithm call.

Parameters
graphThe graph for which the node coloring will be calculated.
colorsThe resulting node coloring.
startThe first color index which will be used.
Returns
The number of colors used by the node coloring.

Implements ogdf::NodeColoringModule.

◆ halldorssonRecursive()

bool ogdf::NodeColoringHalldorsson::halldorssonRecursive ( const Graph graph,
List< node > &  independentSet,
int  k,
double  alpha 
)
private

Performs the recursive Halldorsson algorithm to find large independent sets.

Parameters
graphThe input graph
independentSetThe resulting independent set
kValue, such that the graph is k-colorable
alphaControl parameter for the proximity
Returns
If the given proximity can be reached for the given k-value

◆ performHalldorsson()

void ogdf::NodeColoringHalldorsson::performHalldorsson ( const Graph graph,
List< node > &  independentSet 
)
private

Performs the Halldorsson algorithm for finding an independent set.

This functions calls the recursive algorithm with varying parameters such that the biggest possible independent set will be found.

Parameters
graphThe input graph
independentSetThe resulting independent set

◆ setSearchProcedure()

void ogdf::NodeColoringHalldorsson::setSearchProcedure ( SearchProcedure  searchProcedure)
inline

Sets the search procedure to find the smallest possible parameter k such as the graph is k-colorable.

Parameters
searchProcedureThe desired search procedure

Definition at line 56 of file NodeColoringHalldorsson.h.

Member Data Documentation

◆ m_searchProcedure

SearchProcedure ogdf::NodeColoringHalldorsson::m_searchProcedure
private

Definition at line 64 of file NodeColoringHalldorsson.h.


The documentation for this class was generated from the following file: