We use from Definition (Maximum Degree of a Graph).

Definition (Coloring)

A vertex coloring of a graph is an assignment of a color to each vertex of so that no two adjacent vertices have the same color. This is an coloring if only different colors are used.

Definition (Chromatic Number)

The chromatic number of a graph is the smallest number so that has a graph coloring.

Lemma (Low Chromatic Numbers)

  • is bipartite.
  • Determining for more complicated graphs is difficult. For colorings, once you color a vertex, the is only one possible choice for its neighbors. For colorings, there are two.

Lemma (Bipartite Chromatic Number)

Obviously, for any Bipartite Graph, the chromatic number is (by definition!).

Lemma (Path Chromatic Number)

For any Path , since we can simply alternate.

Lemma (Cycle Chromatic Number)

For any Cycle if is even, but if is odd.

Lemma (Complete Chromatic Number)

For Complete Graph , since every vertex is connected to each other and thus must be different colors.

Lemma (Chromatic Upper Bound)

For a graph on vertices, then .

Proof: Give each vertex a different color.

The lower bound is given by corollary.

Greedy Coloring

We can try a greedy coloring strategy by coloring vertices one at a time and filling in the ones that do not conflict. If has neighbors, then it is enough to have colors to choose from.

Lemma (Chromatic Upper Bound by Big Delta)

For any graph ,

Proof: Use Greedy Coloring.

This bound is far often from tight. For example, but . Note the same message in corollary.

Equality Special Cases

We have two cases where equality is achieved:

  1. For with odd , and .
  2. for , then and .

Brook’s Theorem

If is a finite connected graph that is neither an odd cycle nor a complete graph, then

Proof:

Let . For the special cases, see Equality Special Cases. For , see Lemma (Big Delta Less Than 3).

Suppose is not regular. Then there is some vertex where . If we can color , then we can try to greedily color . But then

guaranteeing there is at least one color. We can then repeat this for every vertex.

Suppose is regular. We want to find vertex where have the same color.

"\\usepackage{tikz-cd}\n\\begin{document}\n% https://q.uiver.app/#q=WzAsMyxbMCwxLCJ2Il0sWzEsMCwiXFxjb2xvcntyZWR9dyJdLFsxLDIsIlxcY29sb3J7cmVkfXUiXSxbMCwxLCIiLDAseyJzdHlsZSI6eyJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzAsMiwiIiwyLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dXQ==\n\\begin{tikzcd}\n\t& {\\color{red}w} \\\\\n\tv \\\\\n\t& {\\color{red}u}\n\t\\arrow[no head, from=2-1, to=1-2]\n\t\\arrow[no head, from=2-1, to=3-2]\n\\end{tikzcd}\n\\end{document}"wvu
source code

If is a complete graph, refer to Equality Special Cases. So, since is not complete, are not adjacent. We can try to color with as the same color.

If is not a cutset, then we can recursively color the rest of the graph. If is a cutset, then split into two parts. We color each half inductively and change colors so that match[^1].

"\\usepackage{tikz-cd}\n\\begin{document}\n% https://q.uiver.app/#q=WzAsNCxbMiwwLCJ1Il0sWzIsMiwidyJdLFswLDEsIihIXzEpIl0sWzQsMSwiKEhfMikgIl0sWzIsMCwiIiwwLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFsyLDEsIiIsMix7InN0eWxlIjp7ImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbMCwzLCIiLDAseyJzdHlsZSI6eyJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzMsMSwiIiwwLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFszLDAsIiIsMSx7Im9mZnNldCI6LTMsInN0eWxlIjp7ImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbMiwxLCIiLDEseyJvZmZzZXQiOi0zLCJzdHlsZSI6eyJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzEsMywiIiwxLHsib2Zmc2V0IjotMywic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFswLDIsIiIsMSx7Im9mZnNldCI6LTMsInN0eWxlIjp7ImhlYWQiOnsibmFtZSI6Im5vbmUifX19XV0=\n\\begin{tikzcd}\n\t&& u \\\\\n\t{(H_1)} &&&& {(H_2) } \\\\\n\t&& w\n\t\\arrow[shift left=3, no head, from=1-3, to=2-1]\n\t\\arrow[no head, from=1-3, to=2-5]\n\t\\arrow[no head, from=2-1, to=1-3]\n\t\\arrow[no head, from=2-1, to=3-3]\n\t\\arrow[shift left=3, no head, from=2-1, to=3-3]\n\t\\arrow[shift left=3, no head, from=2-5, to=1-3]\n\t\\arrow[no head, from=2-5, to=3-3]\n\t\\arrow[shift left=3, no head, from=3-3, to=2-5]\n\\end{tikzcd}\n\\end{document}"u(H1)(H2)w
source code

[1]:Let denote the halves split by . You can imagine this is a graph contracted version of .

We have two cases:

Case 1: If is a cut vertex, we can inductively color each connected component of . We need arrange it so then two (non-adjacent) neighbors of are the same color. This gives the coloring for .

Case 2: If we have cut vertices, then is our cutset. Let and be our two halves. We inductively find a coloring for respectively. However, we need to show that we can make match colors before combining two halves, which gives our coloring.

Case 2A: Suppose we colored such that by greedily coloring keeping be last. If

then we can ensure that there is at least one color to ensure the colors are different.

Case 2B. Here, , implying that

But since is regular, then

and likewise for . But then this means we can easily find a coloring for where . Then permute colors to ensure and , allowing us to combine the halves, and giving us our coloring.

Theorem (Weak Planar Coloring Bound)

If is a Planar Graph, then .

Proof:

By Theorem (Planar Graphs have Bounded Minimum) we know has . We apply greedy coloring but on low degree vertices last and proceed with induction on . So, if , then we are done.

Inductively, assume that if we have any planar graph on vertices, then , then we want to show the same for with vertices.

Pick where , which will be the last vertex to color. In particular, we color then color . Since is planar, is planar, and by the IH, we can color . As has neighbors, then we must have some available color. Using that, we have a coloring of .

Theorem (Strong Planar Coloring Bound)

If is a Planar Graph, then .

Proof: We induct on . If , we are done (assign each vertex a unique color). Assume all planar graphs with vertices have a coloring, and we want to show this for a graph with vertices. Pick where . Again, the goal is color (which we can by the IH), and then add back and color it.

Case 1: If , then we have at least one color left for , allowing us to color it.

Case 2: Suppose . In this case, we cannot greedily color. We get two sub-cases:

Case 2A: If ‘s neighbors all use distinct colors, then at least one color is free. Select that and we are done.

Case 2B: Suppose all of ‘s neighbors all have distinct colors.

"\\usepackage{tikz-cd}\n\\begin{document}\n% https://q.uiver.app/#q=WzAsNixbMSwxLCJ2Il0sWzAsMCwiXFxjb2xvcntyZWR9dl8xIl0sWzIsMCwiXFxjb2xvcntibHVlfXZfMiJdLFszLDEsIlxcY29sb3J7Z3JlZW59dl8zIl0sWzIsMiwiXFxjb2xvcntwdXJwbGV9dl80Il0sWzAsMiwiXFxjb2xvcnticm93bn12XzUiXSxbMCwxLCIiLDAseyJzdHlsZSI6eyJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzAsNSwiIiwyLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFswLDIsIiIsMix7InN0eWxlIjp7ImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbMCw0LCIiLDIseyJzdHlsZSI6eyJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzAsMywiIiwyLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dXQ==\n\\begin{tikzcd}\n\t{\\color{red}v_1} && {\\color{blue}v_2} \\\\\n\t& v && {\\color{green}v_3} \\\\\n\t{\\color{orange}v_5} && {\\color{purple}v_4}\n\t\\arrow[no head, from=2-2, to=1-1]\n\t\\arrow[no head, from=2-2, to=1-3]\n\t\\arrow[no head, from=2-2, to=2-4]\n\t\\arrow[no head, from=2-2, to=3-1]\n\t\\arrow[no head, from=2-2, to=3-3]\n\\end{tikzcd}\n\\end{document}"v1v2vv3v5v4
source code

The goal is to recolor one of ‘s neighbors to free up a color for .

Attempt 1: Suppose we tried to free up on by changing it to . We can only do this if has no neighbors. But then to swap to , none of can be . We can abstract this by finding the Kempe Chain . It is the connected component containing that includes only and vertices. We get two cases:

Case 2B.1.1: If then can safely swap all the colors from to and to . This means is , and we can color .

Case 2B.1.2: If ,

"\\usepackage{tikz-cd}\n\\begin{document}\n% https://q.uiver.app/#q=WzAsOCxbMSwyLCJ2Il0sWzAsMSwiXFxjb2xvcntyZWR9dl8xIl0sWzIsMSwiXFxjb2xvcntibHVlfXZfMiJdLFszLDIsIlxcY29sb3J7Z3JlZW59dl8zIl0sWzIsMywiXFxjb2xvcntwdXJwbGV9dl80Il0sWzAsMywiXFxjb2xvcnticm93bn12XzUiXSxbMSwwLCJcXGNvbG9ye2dyZWVufVxcYnVsbGV0Il0sWzMsMCwiXFxjb2xvcntyZWR9XFxidWxsZXQiXSxbMCwxLCIiLDAseyJzdHlsZSI6eyJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzAsNSwiIiwyLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFswLDIsIiIsMix7InN0eWxlIjp7ImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbMCw0LCIiLDIseyJzdHlsZSI6eyJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzAsMywiIiwyLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFsxLDZdLFs2LDddLFs3LDNdXQ==\n\\begin{tikzcd}\n\t& {\\color{green}\\bullet} && {\\color{red}\\bullet} \\\\\n\t{\\color{red}v_1} && {\\color{blue}v_2} \\\\\n\t& v && {\\color{green}v_3} \\\\\n\t{\\color{orange}v_5} && {\\color{purple}v_4}\n\t\\arrow[no head, from=1-2, to=1-4]\n\t\\arrow[no head, from=1-4, to=3-4]\n\t\\arrow[no head, from=2-1, to=1-2]\n\t\\arrow[no head, from=3-2, to=2-1]\n\t\\arrow[no head, from=3-2, to=2-3]\n\t\\arrow[no head, from=3-2, to=3-4]\n\t\\arrow[no head, from=3-2, to=4-1]\n\t\\arrow[no head, from=3-2, to=4-3]\n\\end{tikzcd}\n\\end{document}"²²v1v2vv3v5v4
source code

then we cannot swap to free up a color for .

Attempt 2: Suppose we tried to swap and for and respectively. We find Kempe Chain . This means that

Case 2B.2.1: If , then we can safely swap, and we are done.

Case 2B.2.2: Otherwise, we have

"\\usepackage{tikz-cd}\n\\begin{document}\n% https://q.uiver.app/#q=WzAsMTAsWzIsMiwidiJdLFsxLDEsIlxcY29sb3J7cmVkfXZfMSJdLFszLDEsIlxcY29sb3J7Ymx1ZX12XzIiXSxbNCwyLCJcXGNvbG9ye2dyZWVufXZfMyJdLFszLDMsIlxcY29sb3J7cHVycGxlfXZfNCJdLFsxLDMsIlxcY29sb3J7b3JhbmdlfXZfNSJdLFsyLDAsIlxcY29sb3J7Z3JlZW59XFxidWxsZXQiXSxbNCwwLCJcXGNvbG9ye3JlZH1cXGJ1bGxldCJdLFswLDIsIlxcY29sb3J7Ymx1ZX1cXGJ1bGxldCJdLFsxLDAsIlxcY29sb3J7b3JhbmdlfVxcYnVsbGV0Il0sWzAsMSwiIiwwLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFswLDUsIiIsMix7InN0eWxlIjp7ImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbMCwyLCIiLDIseyJzdHlsZSI6eyJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzAsNCwiIiwyLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFswLDMsIiIsMix7InN0eWxlIjp7ImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbMSw2LCIiLDAseyJzdHlsZSI6eyJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzYsNywiIiwwLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFs3LDMsIiIsMCx7InN0eWxlIjp7ImhlYWQiOnsibmFtZSI6Im5vbmUifX19XSxbNSw4LCIiLDIseyJzdHlsZSI6eyJoZWFkIjp7Im5hbWUiOiJub25lIn19fV0sWzgsOSwiIiwyLHsic3R5bGUiOnsiaGVhZCI6eyJuYW1lIjoibm9uZSJ9fX1dLFs5LDIsIiIsMSx7InN0eWxlIjp7ImhlYWQiOnsibmFtZSI6Im5vbmUifX19XV0=\n\\begin{tikzcd}\n\t& {\\color{orange}\\bullet} & {\\color{green}\\bullet} && {\\color{red}\\bullet} \\\\\n\t& {\\color{red}v_1} && {\\color{blue}v_2} \\\\\n\t{\\color{blue}\\bullet} && v && {\\color{green}v_3} \\\\\n\t& {\\color{orange}v_5} && {\\color{purple}v_4}\n\t\\arrow[no head, from=1-2, to=2-4]\n\t\\arrow[no head, from=1-3, to=1-5]\n\t\\arrow[no head, from=1-5, to=3-5]\n\t\\arrow[no head, from=2-2, to=1-3]\n\t\\arrow[no head, from=3-1, to=1-2]\n\t\\arrow[no head, from=3-3, to=2-2]\n\t\\arrow[no head, from=3-3, to=2-4]\n\t\\arrow[no head, from=3-3, to=3-5]\n\t\\arrow[no head, from=3-3, to=4-2]\n\t\\arrow[no head, from=3-3, to=4-4]\n\t\\arrow[no head, from=4-2, to=3-1]\n\\end{tikzcd}\n\\end{document}"²²²v1v2²vv3v5v4
source code

But then this means that Case 2B.1.2 and Case 2B.2.2 happened at the same time. In particular, both chains must be vertex disjoint since they use different colors, and since surround , the existence of means that they must intersect.

But this is a contradiction as must be planar. Therefore only a single case for both attempts must be true. The inductive step holds, and we are done.

This is also known as the Five Color Theorem.

Corollary (Four Color Theorem)

Actually, for planar , .