Some graph coloring links:
Vertex coloring applications:
- Many scheduling problems involve allowing for a number of
pairwise restrictions on which jobs can be done simultaneously. For
instance, in attempting to schedule classes at a university, two
courses taught by the same faculty member cannot be scheduled for the
same time slot. Similarly, two courses that are required by the same
group of students also should not conflict. The problem of determining
the minimum number of time slots needed subject to these restrictions
is a graph coloring problem. The time slots are colors for the vertices,
the vertices are courses, and the edges between courses are restrictions
that force different time slots.
- One very active application for vertex coloring is register
allocation. The register allocation problem is to assign variables to
a limited number of hardware registers during program execution. (This
is something every compiler does!) We want toput as many variables in
registers as possible for quick execution of the program. There are
typically far more variables than registers so it is necessary to
assign multiple variables to registers. Variables conflict with each
other if one is used both before and after the other within a short
period of time (for instance, within a subroutine). The goal is to
assign variables that do not conflict so as to minimize the use of
non-register memory. What would the vertices and edges represent?
Edge coloring applications:
- Assume 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.
Edge coloring can be reduced to vertex coloring (in linear time)
by constructing the line graph of the input graph G. This is the graph
constructed by replacing each edge with a vertex, and connected vertices
in the new graph according to the edges that share a vertex in the
original graph.