Input description: A graph G=(V,E).
Problem description: What is the smallest set of colors needed to color the edges of E such that no two same-color edges share a vertex in common?
Discussion: The edge coloring of graphs arises in a variety of scheduling applications, typically associated with minimizing the number of noninterfering rounds needed to complete a given set of tasks. For example, consider a situation where we need to schedule a given set of two-person interviews, where each interview takes one hour. All meetings could be scheduled to occur at distinct times to avoid conflicts, but it is less wasteful to schedule nonconflicting events simultaneously. We can construct a graph whose vertices are the people and whose edges represent the pairs of people who want to meet. An edge coloring of this graph defines the schedule. The color classes represent the different time periods in the schedule, with all meetings of the same color happening simultaneously.
The National Football League solves such an edge coloring problem each season to make up its schedule. Each team's opponents are determined by the records of the previous season. Assigning the opponents to weeks of the season is the edge-coloring problem, presumably complicated by the constraints of spacing out rematches and making sure that there is a good game every Monday night.
The minimum number of colors needed to edge color a graph is called by some its edge-chromatic number and others its chromatic index. To gain insight into edge coloring, note that a graph consisting of an even-length cycle can be edge-colored with 2 colors, while odd-length cycles have an edge-chromatic number of 3.
Edge coloring has a better (if less famous) theorem associated with it than does vertex coloring. Vizing's theorem states that any graph with a maximum vertex degree of can be edge colored using at most colors. To put this in perspective, note that any edge coloring must have at least colors, since each of the edges incident on any vertex must be distinct colors.
Further, the proof of Vizing's theorem is constructive and can be turned into an algorithm to find an edge-coloring with colors, which gives us an edge coloring using at most one extra color. Since it is NP-complete to decide whether we can save this one color, it hardly seems worth the effort to worry about it. An implementation of Vizing's theorem is described below.
Any edge coloring problem on G can be converted to the problem of finding a vertex coloring on the line graph L(G), which has a vertex of L(G) for each edge of G and an edge of L(G) if and only if the two edges of G share a common vertex. Line graphs can be constructed in time linear to their size, and any vertex coloring code from Section can be employed to color them.
Although any edge coloring problem can be so formulated as a vertex coloring problem, this is usually a bad idea, since the edge coloring problem is easier to solve. Vizing's theorem is our reward for the extra thought needed to see that we have an edge coloring problem.
Implementations: Yan Dong produced an implementation of Vizing's theorem in C++ as a course project for my algorithms course while a student at Stony Brook. It can be found on the algorithm repository WWW site http://www.cs.sunysb.edu/ algorith, as can an alternative program by Mark Goldberg and Amir Sehic.
Combinatorica [Ski90] provides Mathematica implementations of edge coloring, via the line graph transformation and vertex coloring routines. See Section for further information on Combinatorica.
Notes: Graph-theoretic results on edge coloring are surveyed in [FW77]. Vizing [Viz64] and Gupta [Gup66] both proved that any graph can be edge colored using at most colors. Despite these tight bounds, Holyer [Hol81] proved that computing the edge-chromatic number is NP-complete.
Whitney, in introducing line graphs [Whi32], showed that with the exception of and , any two connected graphs with isomorphic line graphs are isomorphic. It is an interesting exercise to show that the line graph of an Eulerian graph is both Eulerian and Hamiltonian, while the line graph of a Hamiltonian graph is always Hamiltonian.
Related Problems: Vertex coloring (see page ), scheduling (see page ).