Efficient Vertex-Centric Graph Coloring
MetadataShow full metadata
Graph coloring is a way of labeling (with labels traditionally referred to as “colors”) the elements of a graph with the constraint that no two adjacent vertices have the same color and that as few colors should be used as possible. In addition to many theoretical problems, graph coloring lends itself to efficiently solving a variety of practical applications (e.g., schedule generation, resource allocation, networking, and solving Sudoku). The problem with graph coloring is that finding a solution with the minimal number of colors is NP-hard, i.e., no known polynomial time algorithm can solve it optimally (so computing the solution cannot be done quickly). I have written a series of algorithms that take advantage of high amounts of parallelization to produce acceptable colorings. An analysis of the colorings and runtimes of each approach compared to other solutions from the literature shows that acceptable colorings are produced in a reasonable time.