Graph coloring involves assigning colors to objects in a graph subject to constraints. Vertex coloring assigns colors to vertices such that no adjacent vertices share the same color. The chromatic number is the minimum number of colors needed. Graph coloring has applications in scheduling, frequency assignment, and register allocation. Register allocation with chordal graphs can be done in polynomial time rather than NP-complete, since programs in SSA form have chordal interference graphs. A greedy algorithm can color chordal graphs in linear time, enabling simple and optimal register allocation.