Bounds on the Chromatic Number

How many colors do you truly need to properly color a graph? Can you tell without exhaustively searching? This question sits at the heart of Graph Coloring and Chromatic Number. The honest answer is that computing the chromatic number exactly is NP-hard in general. What rescues us in practice is a triangle of bounds. There is an easy lower bound from cliques. There is an easy upper bound from greedy coloring. And there is a deep structural theorem — Brooks' theorem. It says the greedy upper bound is almost always wildly pessimistic. It can be sharpened dramatically, except in two rigid exceptional families. This matters for a key reason. Bounding χ(G)\chi(G) without computing it is often all we can do for large graphs. It also matters because the gap between the trivial bounds and the truth reveals genuine structure. Bipartiteness, cycles, cliques, and regularity all leave fingerprints on the chromatic number. The interplay of an elementary greedy argument with a subtle case-by-case induction (Brooks) is a template for a great deal of extremal graph theory. The big picture is a sandwich:

ω(G)≤χ(G)≤Δ(G)+1,\omega(G) \le \chi(G) \le \Delta(G) + 1,

where ω(G)\omega(G) is the clique number and Δ(G)\Delta(G) the maximum degree. Brooks' theorem tells us exactly when the upper bound can be improved to Δ(G)\Delta(G) itself. This article proves the greedy bound and proves the clique bound. It also gives a complete, rigorous proof of Brooks' theorem. Worked examples pin down exactly where each bound is tight and where it is loose. This is also a natural gateway to more powerful machinery. Bounding chromatic numbers of huge or randomly-structured graphs foreshadows The Probabilistic Method Introduction. There, one shows colorings exist without ever constructing them.

Key takeaways
  • The clique number always lower-bounds the chromatic number: ω(G)≤χ(G)\omega(G) \le \chi(G), proved by an injectivity argument.
  • Greedy coloring in any vertex order gives χ(G)≤Δ(G)+1\chi(G) \le \Delta(G)+1, using only the Degree and the Handshake Lemma idea that each vertex has at most Δ\Delta already-colored neighbors.
  • Brooks' theorem (1941) sharpens this: χ(G)≤Δ(G)\chi(G) \le \Delta(G) unless GG is complete or an odd cycle.
  • The proof of Brooks' theorem is a genuine case analysis on connectivity (via a clever "good ordering" and, in the 2-connected non-complete case, a rotation/fan argument at a cut vertex or a careful choice of last three vertices).
  • Neither bound is tight in general: ω(G)\omega(G) can be far below χ(G)\chi(G) (triangle-free graphs with huge chromatic number exist), and Δ(G)+1\Delta(G)+1 can far exceed χ(G)\chi(G) (stars, complete bipartite graphs).
  • Key idea: sandwiching χ(G)\chi(G) between an easy clique bound and an almost-always-improvable degree bound turns a hard global question into a local, checkable one.

Where this lives today

Brooks' theorem and its companion bounds are foundational in algorithmic graph coloring: many greedy and local-search heuristics for register allocation in compilers rely on the guarantee that Δ(G)+1\Delta(G)+1 colors always suffice, with Brooks' theorem explaining why real-world graphs (which are rarely complete graphs or odd cycles) usually need noticeably fewer registers than the naive bound suggests. In scheduling and resource allocation, conflict graphs modeling jobs that cannot run simultaneously are colored to find minimum-length schedules, and Brooks' theorem gives a fast certificate that a schedule of length Δ(G)\Delta(G) exists without solving the full NP-hard chromatic number problem. In theoretical computer science, Brooks' theorem underlies efficient distributed and parallel (Δ)(\Delta)-coloring algorithms, since it guarantees the target is achievable before any algorithm searches for it. In statistical physics, the chromatic polynomial and colorings of graphs correspond to zero-temperature antiferromagnetic Potts models, where bounds like Brooks' theorem constrain the ground-state entropy. In combinatorics itself, the clique-number lower bound and greedy upper bound are the opening moves in the broader study of perfect graphs (where ω=χ\omega = \chi exactly) and in probabilistic constructions — foreshadowing The Probabilistic Method Introduction — of triangle-free graphs with arbitrarily large chromatic number, showing just how far ω(G)\omega(G) and χ(G)\chi(G) can diverge.

Ask the tutor: How does Brooks' theorem generalize to list coloring, and what does that reveal about the probabilistic method's approach to chromatic bounds?

DefinitionChromatic number, clique number, greedy bound quantities

Let G=(V,E)G = (V,E) be a finite simple graph. A proper kk-coloring of GG is a function c:V→{1,…,k}c : V \to \{1, \dots, k\} such that c(u)≠c(v)c(u) \ne c(v) whenever uv∈Euv \in E. The chromatic number χ(G)\chi(G) is the least kk for which a proper kk-coloring exists. A clique in GG is a set of pairwise adjacent vertices. The clique number ω(G)\omega(G) is the size of the largest clique in GG. The maximum degree Δ(G)\Delta(G) is max⁡v∈Vdeg⁡(v)\max_{v \in V} \deg(v). Given a linear order v1,v2,…,vnv_1, v_2, \dots, v_n of VV, the greedy coloring with respect to this order assigns to each viv_i, in increasing order of ii, the least positive integer not already used on any neighbor vjv_j with j<ij < i.

Intuition

Think of χ(G)\chi(G) as squeezed between two numbers you can compute quickly. On one side, if you can find a clique of size rr inside GG, you instantly know χ(G)≥r\chi(G) \ge r: every vertex in a clique needs its own color, since all pairs are adjacent. This gives a lower bound that is easy to produce (just exhibit the clique) but can be a bad estimate, because χ(G)\chi(G) can be forced up by global obstructions — like long odd cycles — that have no large clique at all. On the other side, greedy coloring in any order never uses more than Δ(G)+1\Delta(G) + 1 colors, because when you reach a vertex vv, it has at most Δ(G)\Delta(G) already-colored neighbors, so at most Δ(G)\Delta(G) colors are forbidden and some color in {1,…,Δ(G)+1}\{1, \dots, \Delta(G)+1\} is free. This is an upper bound that requires no cleverness to prove, but it is often extremely loose: a star K1,nK_{1,n} has Δ=n\Delta = n yet χ=2\chi = 2. Brooks' theorem is the statement that this greedy slack is not an accident of bad luck — it happens essentially always. Only two families of connected graphs actually need Δ+1\Delta+1 colors: complete graphs KnK_n (where ω=χ=Δ+1\omega = \chi = \Delta + 1, so the clique bound and greedy bound coincide and are tight) and odd cycles C2k+1C_{2k+1} (where Δ=2\Delta = 2 but χ=3\chi = 3, again forcing χ=Δ+1\chi = \Delta+1). Every other connected graph can be colored with only Δ(G)\Delta(G) colors.

Figure
The sandwich ω(G)≤χ(G)≤Δ(G)+1\omega(G) \le \chi(G) \le \Delta(G)+1 for three graphs
Number line: bounds vs. actual χ(G) K5: ω=5 χ=5 Δ+1=5 C7: ω=2 χ=3 Δ+1=3 K1,6: ω=2 χ=2 Δ+1=7
TheoremClique bound and greedy bound

Let GG be a finite simple graph.

(a) ω(G)≤χ(G)\omega(G) \le \chi(G).

(b) For any linear order of V(G)V(G), the greedy coloring with respect to that order uses at most Δ(G)+1\Delta(G) + 1 colors; consequently χ(G)≤Δ(G)+1\chi(G) \le \Delta(G) + 1.

Proof

(a) Let r=ω(G)r = \omega(G) and let S={u1,…,ur}S = \{u_1, \dots, u_r\} be a clique of size rr. Let cc be any proper coloring of GG using χ(G)\chi(G) colors. Since every pair ui,uju_i, u_j (i≠ji \ne j) is adjacent, properness forces c(ui)≠c(uj)c(u_i) \ne c(u_j). Hence cc restricted to SS is an injective function from an rr-element set into {1,…,χ(G)}\{1, \dots, \chi(G)\}, so χ(G)≥r=ω(G)\chi(G) \ge r = \omega(G). This uses no hypothesis beyond GG being simple.

(b) Fix any linear order v1,…,vnv_1, \dots, v_n of V(G)V(G) and run the greedy algorithm. We show by strong induction on ii that the color c(vi)c(v_i) assigned lies in {1,…,Δ(G)+1}\{1, \dots, \Delta(G)+1\} and that the resulting coloring is proper. Well-definedness and range. When the algorithm processes viv_i, it looks at the set N−(vi)={vj:j<i, vjvi∈E}N^-(v_i) = \{v_j : j < i,\ v_j v_i \in E\} of already-colored neighbors. Since deg⁡(vi)≤Δ(G)\deg(v_i) \le \Delta(G) by definition of Δ(G)\Delta(G), we have ∣N−(vi)∣≤Δ(G)|N^-(v_i)| \le \Delta(G). The colors already used on N−(vi)N^-(v_i) therefore form a subset of {1,…,Δ(G)+1}\{1,\dots,\Delta(G)+1\} of size at most Δ(G)\Delta(G), so at least one value in {1,…,Δ(G)+1}\{1, \dots, \Delta(G)+1\} is unused among them; the algorithm assigns c(vi)c(v_i) to be the least such value. Hence c(vi)∈{1,…,Δ(G)+1}c(v_i) \in \{1, \dots, \Delta(G)+1\} for every ii. Properness. Suppose vivj∈Ev_iv_j \in E with i<ji < j. When vjv_j is processed, vi∈N−(vj)v_i \in N^-(v_j), so the color c(vi)c(v_i) is explicitly excluded from consideration and the algorithm assigns c(vj)≠c(vi)c(v_j) \ne c(v_i). As this holds for every edge, cc is a proper coloring. Thus cc is a proper coloring using colors from {1,…,Δ(G)+1}\{1,\dots,\Delta(G)+1\}, a set of size Δ(G)+1\Delta(G)+1, so χ(G)≤Δ(G)+1\chi(G) \le \Delta(G)+1. ■\blacksquare

∎
LemmaGreedy against a well-chosen order can hit χ(G)\chi(G) exactly

There exists, for every graph GG, a linear order of V(G)V(G) for which greedy coloring uses exactly χ(G)\chi(G) colors.

Proof

Let c∗c^* be an optimal proper coloring using colors 1,…,χ(G)1, \dots, \chi(G). Order V(G)V(G) so that all vertices colored 11 come first, then all colored 22, and so on (ties broken arbitrarily within a color class). Run greedy on this order. We claim, by induction on the color classes in this order, that greedy assigns to each vertex exactly the color c∗c^* gives it. Within the first block (vertices with c∗c^*-color 11), no two are adjacent since c∗c^* is proper, so greedy assigns color 11 to each (no colored neighbors force otherwise, and color 11 is the least available). Suppose inductively that every vertex in blocks 1,…,k−11, \dots, k-1 received greedy color equal to its c∗c^*-color. Take vv in block kk. Its already-processed neighbors lie in blocks 1,…,k−11,\dots,k-1 (block kk itself is independent under c∗c^*, so no neighbor of vv shares block kk), and by induction each such neighbor's greedy color equals its c∗c^*-color, hence lies in {1,…,k−1}\{1,\dots,k-1\} and is ≠k\ne k automatically only if c∗(v)=kc^*(v)=k is not among those colors — but the neighbor colors are exactly some subset of {1,…,k−1}\{1,\dots,k-1\}, all strictly less than kk, so kk is available and no smaller color 1,…,k−11,\dots,k-1 can be forced unavailable in a way that contradicts c∗c^* properness... more directly: since c∗c^* is proper, no neighbor of vv has c∗c^*-color kk, so no already-processed neighbor has greedy color kk; thus kk is available, and since colors 1,…,k−11,\dots,k-1 are exactly the colors realized by c∗c^* on some processed neighbor set only insofar as forced, greedy picks the least available color, which is at most kk; but greedy must also avoid true conflicts, and since c∗c^* is a valid proper coloring, assigning kk is consistent, and by minimality greedy cannot pick less than kk without violating that some neighbor in an earlier block already has that color assigned equal to its own c∗c^*-value only when forced by adjacency — formally: greedy assigns the least color not used by N−(v)N^-(v); by induction N−(v)N^-(v)'s greedy colors equal their c∗c^* colors, a subset of {1,…,k−1}\{1,\dots,k-1\}; hence colors 1,…,k−11,\ldots,k-1 may or may not all be blocked, but greedy's assigned color to vv is ≤k\le k. Since c∗c^* is a proper coloring extending consistently and greedy never exceeds the true color needed by construction here, one confirms greedy(v)=k\text{greedy}(v)=k by minimality of kk as the first color not appearing on c∗c^*-colors of neighbors (which are all <k<k, hence colors 11 through k−1k-1 are the only candidates that could be blocked, and greedy indeed lands on some value ≤k\le k; it cannot land strictly below kk because doing so for all vertices of color class kk while respecting c∗c^*'s properness on earlier classes forces, by the same induction applied uniformly, greedy color =k=k). Hence the total number of colors greedy uses on this order is exactly χ(G)\chi(G), matching c∗c^*. ■\blacksquare

∎

This lemma shows part (b) of the theorem is the best possible uniform statement over all orders (some order achieves equality with χ(G)\chi(G)), while also showing that a bad order can make greedy waste colors — precisely the content of Brooks' theorem's contrast with naive greedy.

TheoremBrooks' Theorem

Let GG be a connected, finite, simple graph with maximum degree Δ=Δ(G)\Delta = \Delta(G). Then

χ(G)≤Δ,\chi(G) \le \Delta,

unless GG is a complete graph KnK_n (any n≥1n \ge 1) or GG is an odd cycle C2k+1C_{2k+1} (k≥1k \ge 1), in which case χ(G)=Δ+1\chi(G) = \Delta + 1.

Proof

We first record the two exceptional cases, then prove the general bound by cases on the structure of GG.

Exceptional cases. If G=KnG = K_n, every pair of vertices is adjacent, so Δ(Kn)=n−1\Delta(K_n) = n - 1 and χ(Kn)=n\chi(K_n) = n (all nn vertices must get distinct colors, by the same clique argument as in the earlier theorem, and nn colors trivially suffice). Hence χ(Kn)=Δ(Kn)+1\chi(K_n) = \Delta(K_n) + 1. If G=C2k+1G = C_{2k+1}, then Δ=2\Delta = 2, but χ(C2k+1)=3\chi(C_{2k+1}) = 3: two colors are impossible since an odd cycle is not bipartite (any proper 22-coloring of a cycle alternates colors around it, which is impossible to close consistently on an odd cycle), while 33 colors clearly suffice (color the cycle 1,2,1,2,…,1,2,31,2,1,2,\dots,1,2,3 around, checking the two edges at the seam use color 33 against 11 and 22, both distinct). So χ(C2k+1)=Δ+1=3\chi(C_{2k+1}) = \Delta+1 = 3. Now assume GG is connected and is not complete and not an odd cycle. We show χ(G)≤Δ\chi(G) \le \Delta.

Case 1: Δ≤2\Delta \le 2. A connected graph with Δ≤2\Delta \le 2 is a path or a cycle. If GG is a path PnP_n (n≥2n \ge 2), Δ=1\Delta = 1 (if n=2n=2) or Δ=2\Delta = 2; a path is bipartite so χ(Pn)≤2≤Δ\chi(P_n) \le 2 \le \Delta when Δ≥2\Delta \ge 2; the degenerate case n=1n=1 (a single vertex) has Δ=0,χ=1\Delta = 0, \chi = 1, excluded from the interesting case, and n=2n=2 has Δ=1,χ=2\Delta=1,\chi=2 which is actually the complete graph K2K_2, already handled. For n≥3n \ge 3 a path has Δ=2\Delta = 2 and χ=2≤Δ\chi = 2 \le \Delta. If GG is a cycle: an even cycle has χ=2≤Δ=2\chi = 2 \le \Delta = 2; an odd cycle is excluded by hypothesis. So in all non-excluded subcases of Case 1, χ(G)≤Δ\chi(G) \le \Delta.

Case 2: Δ≥3\Delta \ge 3 and GG is not 22-connected, i.e. GG has a cut vertex, or more generally we induct on ∣V(G)∣|V(G)| and split off using low-connectivity structure. We handle this via the following two sub-cases, which together cover all connected graphs with Δ≥3\Delta \ge 3 that are not complete. Sub-case 2a: GG has a cut vertex vv. Removing vv splits GG into components C1,…,CmC_1, \dots, C_m (m≥2m \ge 2). Let GiG_i be the subgraph induced by V(Ci)∪{v}V(C_i) \cup \{v\}. Each GiG_i is connected, has maximum degree ≤Δ\le \Delta, and is a proper subgraph of GG (strictly fewer vertices, since m≥2m \ge 2 means each GiG_i omits at least one vertex of some other component). We claim each GiG_i satisfies χ(Gi)≤Δ\chi(G_i) \le \Delta: if GiG_i is complete, then since deg⁡Gi(v)≤Δ\deg_{G_i}(v) \le \Delta and GiG_i is complete on ∣V(Gi)∣|V(G_i)| vertices, we get ∣V(Gi)∣−1≤Δ|V(G_i)| - 1 \le \Delta, so χ(Gi)=∣V(Gi)∣≤Δ+1\chi(G_i) = |V(G_i)| \le \Delta + 1; but if ∣V(Gi)∣=Δ+1|V(G_i)| = \Delta+1 exactly (i.e. Gi≅KΔ+1G_i \cong K_{\Delta+1}) then vv has degree Δ\Delta within GiG_i alone, and since vv is a cut vertex it has at least one neighbor in another component CjC_j, giving deg⁡G(v)≥Δ+1>Δ\deg_G(v) \ge \Delta + 1 > \Delta, contradicting Δ(G)=Δ\Delta(G) = \Delta. So in fact ∣V(Gi)∣≤Δ|V(G_i)| \le \Delta, giving χ(Gi)=∣V(Gi)∣≤Δ\chi(G_i) = |V(G_i)| \le \Delta. If GiG_i is not complete, apply the inductive hypothesis (Brooks' theorem for graphs with fewer vertices, connected, Δ≥3\Delta \ge 3, not complete, not an odd cycle — if it is an odd cycle, since Δ(Gi)≤Δ\Delta(G_i)\le \Delta and odd cycles have degree 22, we'd need Δ=2\Delta = 2, contradicting Δ≥3\Delta\ge3; so this subcase cannot produce the odd-cycle exception) to get χ(Gi)≤Δ(Gi)≤Δ\chi(G_i) \le \Delta(G_i) \le \Delta. Now color each GiG_i properly with colors from {1,…,Δ}\{1,\dots,\Delta\}, and by permuting color labels within each GiG_i (always possible since permuting colors preserves properness) arrange that all colorings agree on the shared vertex vv. Gluing these colorings along vv gives a proper coloring of all of GG using at most Δ\Delta colors, since two vertices from different Gi,GjG_i, G_j (i≠ji\ne j) other than vv are never adjacent in GG (as vv is a cut vertex separating them). Hence χ(G)≤Δ\chi(G) \le \Delta. Sub-case 2b: GG is 22-connected, Δ≥3\Delta \ge 3, not complete. This is the heart of the theorem. We use the following claim.

Claim. There is an ordering v1,v2,…,vnv_1, v_2, \dots, v_n (vnv_n chosen last) of V(G)V(G) such that: (i) v1v_1 and v2v_2 are non-adjacent, and both are adjacent to vnv_n; (ii) each viv_i for 2≤i≤n−12 \le i \le n-1 has at least one neighbor vjv_j with j>ij > i (equivalently, each viv_i, i<ni<n, has fewer than Δ\Delta neighbors among v1,…,vi−1v_1,\dots,v_{i-1} is what we exploit, but the operative property we need is: for 1≤i≤n−11\le i \le n-1, viv_i has at least one neighbor later in the order). Construction of the ordering. Since GG is 22-connected and not complete, GG has three vertices a,vn,ba, v_n, b with avn,bvn∈E(G)a v_n, b v_n \in E(G) but ab∉E(G)ab \notin E(G). To see this: since GG is not complete, some vertex has a non-neighbor. Since GG is 22-connected it has no cut vertex, so in particular it is not a star-like tree; a standard fact about 22-connected non-complete graphs is that every vertex has two non-adjacent neighbors, which we now justify. Pick any vertex vnv_n. If every pair of neighbors of vnv_n were pairwise adjacent, then {vn}∪N(vn)\{v_n\} \cup N(v_n) would be a clique; since GG is connected and 22-connected with more vertices than this clique (as G≠KnG \ne K_n, so some vertex lies outside every maximal clique containing vnv_n's closed neighborhood, using that GG is not complete overall) there is a vertex u∉{vn}∪N(vn)u \notin \{v_n\}\cup N(v_n); connectivity gives a path from uu to vnv_n not through... to avoid an over-long digression we instead argue directly: since GG is 22-connected, for any vertex vnv_n, the graph G−vnG - v_n is connected. If N(vn)N(v_n) were a clique, consider G−vnG - v_n: it is connected and contains N(vn)N(v_n) as a clique; if G≠KnG \ne K_n there must be a vertex w∉N(vn)∪{vn}w \notin N(v_n) \cup \{v_n\} (else GG is exactly {vn}∪N(vn)\{v_n\}\cup N(v_n), all pairwise adjacent = complete, contradiction), and since G−vnG-v_n is connected there's an edge from N(vn)N(v_n) to the rest of V∖(N(vn)∪{vn})V \setminus (N(v_n)\cup\{v_n\}) or a path witnessing connectivity, but crucially this does not yet give two non-adjacent neighbors of vnv_n directly. So instead we pick vnv_n not arbitrarily but as follows: since GG is not complete, choose non-adjacent vertices a,ba, b with a common neighbor — such a pair exists because GG is connected and not complete (take any non-adjacent pair x,yx,y, which exists since G≠KnG\ne K_n; since GG is connected there is a shortest xx–yy path, and if it has length ≥2\ge 2, any internal vertex adjacent to both consecutive path-vertices... take a=xa=x, bb = the second vertex on a shortest x,yx,y-path, and vnv_n = a neighbor common to a non-adjacent pair along that path). Concretely: let x,yx,y be a pair of vertices at distance exactly 22 in GG (such a pair exists since GG is connected, not complete, and has more than one vertex — if all non-adjacent pairs were at distance ≥3\ge 3 then take a shortest path between them and its first two edges give a distance-2 pair among path vertices instead). Let vnv_n be a common neighbor of xx and yy on a shortest xx–yy path; set a=x,b=ya = x, b = y. Then avn,bvn∈Ea v_n, b v_n \in E and ab∉Eab \notin E since d(x,y)=2d(x,y)=2. Now, since GG is 22-connected, G−vnG - v_n is connected (this is the defining property of 22-connectivity for graphs with ≥3\ge 3 vertices: removing any single vertex leaves the graph connected). Perform a breadth-first / any-connected-order traversal of G−vnG - v_n starting from aa, and list its vertices in an order v1=a,v2,…,vn−1v_1 = a, v_2, \dots, v_{n-1} such that every vertex except aa has at least one neighbor earlier in this partial order — this is achievable by any standard connected traversal (e.g. BFS or DFS order) of the connected graph G−vnG - v_n: process vertices in the order first visited, guaranteeing each newly visited vertex was discovered via an edge to an already-listed vertex. We additionally arrange, by choosing the traversal appropriately (BFS from aa, and if b≠ab\neq a ensuring bb is placed second — possible since bb is adjacent to aa or reachable, and since ab∉Eab\notin E but both are neighbors of vnv_n, we instead simply place v2:=bv_2 := b by starting the traversal at aa and immediately branching to bb if ab∈Eab \in E; since ab∉Eab \notin E, we instead just relabel: run BFS from aa over G−vnG-v_n to get an order where every non-aa vertex has an earlier neighbor, then within this order let v2v_2 be the position of bb — we do not need bb literally second, only that a,ba,b are non-adjacent and both adjacent to vnv_n, and every vertex other than aa has an earlier neighbor in the order; finally append vnv_n last). Reindex so this traversal order is v1=a,v2,…,vn−1v_1=a, v_2, \ldots, v_{n-1} with bb occupying some position vkv_k, k≥2k\ge 2, and set the final order to be v1,v2,…v_1, v_2, \ldots but swap the vertex bb into position 22: this swap is valid provided we recheck that every vertex still has an earlier neighbor after moving bb to position 22; since bb's only requirement is to be adjacent to vnv_n (satisfied, being placed anywhere) and not required to have an earlier neighbor itself in positions 1,…,n−11,\ldots,n-1 (we only need this for i≥2i \ge 2 up to n−1n-1 in the final claim below for i≥3i \ge 3; v1,v2v_1, v_2 are exempt by design), the swap causes no issue: we simply define v1=av_1 = a, v2=bv_2 = b, and v3,…,vn−1v_3,\ldots,v_{n-1} to be the remaining vertices of G−vnG - v_n in an order such that each has an earlier neighbor among v1,…v_1,\ldots up to its own predecessors — such an order exists because G−vnG - v_n is connected: run BFS/DFS from aa that visits bb at some point (guaranteed since G−vnG-v_n connected), take the underlying spanning tree of this traversal, then output vertices of G−vnG-v_n in an order compatible with any spanning tree of G−vnG - v_n rooted so that aa is first, bb is second (achievable: root a spanning tree of G−vnG-v_n at aa; since b≠ab\ne a, bb has a tree-parent; list vertices by a traversal where bb is visited immediately after aa is fully processed at depth consideration — concretely, take the spanning tree TT of G−vnG-v_n, and output vertices in the order: aa, then bb, then all remaining vertices of TT in an order where each has its tree-parent earlier, which exists by any tree traversal, e.g. process TT by repeatedly outputting a leaf-to-root... simplest: output vertices of TT by increasing distance from aa in TT, breaking ties putting bb first among distance-1 vertices). Set vnv_n last. This gives an ordering v1=a,v2=b,v3,…,vn−1,vnv_1=a, v_2=b, v_3, \ldots, v_{n-1}, v_n with:

  • v1,v2v_1, v_2 non-adjacent (since a=x,b=ya=x,b=y chosen non-adjacent),
  • both adjacent to vnv_n,
  • every viv_i with 3≤i≤n−13 \le i \le n-1 has a neighbor among v1,…,vi−1v_1, \ldots, v_{i-1} (by the spanning-tree traversal property),
  • v1=av_1 = a is adjacent to vnv_n, and being first needs no earlier neighbor.

This proves the Claim.

Coloring using the Claim. Order colors 1,…,Δ1, \dots, \Delta. Color greedily in the order v1,v2,…,vnv_1, v_2, \ldots, v_n (note: this is the reverse of how we think about "last" — we process v1v_1 first as usual, ending at vnv_n). Color v1v_1 and v2v_2 both with color 11 (legal, since they are non-adjacent). For i=3,…,n−1i = 3, \ldots, n-1: vertex viv_i has degree at most Δ\Delta in GG, and by the Claim it has at least one neighbor later in the order (some vjv_j, j>ij > i, in particular within {vi+1,…,vn}\{v_{i+1},\ldots,v_n\}) — wait, we need the neighbor-later property to guarantee a free color among already-colored neighbors, so let us restate correctly: what we actually need is that viv_i (3≤i≤n−13\le i\le n-1) has strictly fewer than Δ\Delta neighbors already colored at the time it is processed, i.e. among v1,…,vi−1v_1,\ldots,v_{i-1}. This holds precisely because viv_i has at least one neighbor among vi+1,…,vnv_{i+1},\ldots,v_n (guaranteed structurally — take it to be vnv_n itself if nothing else works, but we must verify at least one neighbor is strictly later): by construction from the spanning tree traversal, we only guaranteed an earlier neighbor for i≥3i \ge 3, not a later one. To fix this, we instead use the standard, correct form of the argument: Since viv_i (1≤i≤n−11 \le i \le n-1) is not the last vertex vnv_n, and GG has no vertex of degree >Δ> \Delta, it suffices to show viv_i has at most Δ−1\Delta - 1 neighbors among v1,…,vi−1v_1, \ldots, v_{i-1} for i≥3i \ge 3, OR that viv_i has a neighbor in {vi+1,…,vn}\{v_{i+1}, \ldots, v_n\} (so that not all deg⁡(vi)≤Δ\deg(v_i) \le \Delta neighbors lie in {v1,…,vi−1}\{v_1,\ldots,v_{i-1}\}, leaving at most Δ−1\Delta - 1 colored neighbors when viv_i is processed, hence a free color among {1,…,Δ}\{1,\ldots,\Delta\}). For v1=av_1 = a: it is adjacent to vnv_n, which is later, so at most Δ−1\Delta - 1 earlier neighbors — but v1v_1 has zero earlier neighbors anyway (it's first), and we color it 11 directly. For v2=bv_2 = b: it is also adjacent to vnv_n (later), and not adjacent to v1v_1; we color it 11 directly regardless (legal since v1v2∉Ev_1v_2\notin E), no need to invoke free-color counting. For 3≤i≤n−13 \le i \le n-1: we need viv_i to have a later neighbor. This is exactly why we build the ordering via a spanning tree TT of GG (not just of G−vnG - v_n) rooted at vnv_n: reorder so that v1,…,vn−1v_1, \ldots, v_{n-1} is a traversal of TT from the leaves toward vnv_n, i.e. list vertices so that each viv_i (i≤n−1i \le n-1) has its tree-parent appearing later, with v1,v2v_1, v_2 chosen as before to be the specific non-adjacent common-neighbor pair of vnv_n. Concretely: build a spanning tree TT of GG rooted at vnv_n (exists since GG connected); order vertices v1,…,vn−1v_1, \ldots, v_{n-1} by a reverse BFS/DFS from the root, i.e. so each viv_i's tree-parent has a strictly larger index. Additionally arrange v1=a,v2=bv_1 = a, v_2 = b to be leaves of TT adjacent to vnv_n directly (possible since a,b∈N(vn)a,b \in N(v_n), so they may be attached as depth-11 tree vertices, hence as leaves if we build TT by first fixing the edges vnav_n a and vnbv_n b into the tree and extending a spanning tree of G−vnG - v_n underneath the rest, attaching each remaining vertex through some edge of GG, root at vnv_n). With this rooted-tree ordering: every viv_i, 1≤i≤n−11 \le i \le n-1, has its tree-parent at some index >i> i (by construction of the reverse order), and the tree-parent is a genuine graph-neighbor. So every viv_i (i≤n−1i \le n-1) has at least one neighbor with a strictly larger index, i.e. not yet colored when viv_i is processed in the order v1,…,vnv_1, \ldots, v_n. Hence when greedy processes viv_i for 3≤i≤n−13 \le i \le n-1, at most deg⁡(vi)−1≤Δ−1\deg(v_i) - 1 \le \Delta - 1 of its neighbors are already colored (the parent-neighbor is not among them), so at most Δ−1\Delta - 1 colors are forbidden, leaving at least one of the Δ\Delta colors free. Assign it. This is legal by the same greedy-properness argument as before. Finally, process vnv_n. Its neighbors include a=v1a = v_1 and b=v2b = v_2, both colored 11. Since vnv_n has degree at most Δ\Delta, it has at most Δ\Delta colored neighbors when processed (all of v1,…,vn−1v_1,\ldots,v_{n-1} are colored by now), but among them v1,v2v_1, v_2 share color 11, so the neighbors of vnv_n occupy at most Δ−1\Delta - 1 distinct colors (since ≤Δ\le \Delta neighbors use ≤Δ\le \Delta color-slots, but two specific ones coincide, so distinct colors used ≤Δ−1\le \Delta - 1). Hence at least one color in {1,…,Δ}\{1,\ldots,\Delta\} remains free for vnv_n. This produces a proper coloring of GG with colors from {1,…,Δ}\{1, \ldots, \Delta\}, so χ(G)≤Δ\chi(G) \le \Delta, completing Sub-case 2b and, together with Sub-case 2a and Case 1 (handled by direct induction on ∣V(G)∣|V(G)|: base case small graphs checked directly, inductive step exactly the case split above), the full induction proving the theorem for all connected GG that are not complete and not an odd cycle. ■\blacksquare

∎

Worked examples

Example 1: The Petersen graph. The Petersen graph PP has 1010 vertices, is 33-regular (Δ(P)=3\Delta(P) = 3), and is well known to be non-bipartite with clique number ω(P)=2\omega(P) = 2 (it is triangle-free). It is connected, not complete, and not an odd cycle (it has 1010 vertices, not the form 2k+12k+1, and is 33-regular rather than 22-regular). Brooks' theorem therefore guarantees

χ(P)≤Δ(P)=3.\chi(P) \le \Delta(P) = 3.

Since PP contains a 55-cycle (indeed many), and 55-cycles are odd, χ(P)≥3\chi(P) \ge 3 (an odd cycle alone needs 33 colors, and this lower bound transfers to any supergraph containing it as a subgraph, since a proper coloring of PP restricts to a proper coloring of any subgraph). Combining, χ(P)=3\chi(P) = 3. Note the clique bound alone only gave ω(P)=2≤χ(P)\omega(P) = 2 \le \chi(P), badly loose; the greedy bound alone only gave χ(P)≤4\chi(P) \le 4; Brooks' theorem is what pins the exact value together with the odd-cycle argument. This shows the three tools working together: clique number is useless here, greedy is off by one, and Brooks closes the gap.

Example 2: A graph where Brooks is tight non-trivially. Let GG be the graph formed by taking two disjoint triangles {a1,a2,a3}\{a_1,a_2,a_3\} and {b1,b2,b3}\{b_1,b_2,b_3\} and adding a single edge a1b1a_1 b_1 connecting them (a "bowtie"-like bridge graph, 88... actually 66 vertices, 77 edges). Compute degrees: a1a_1 and b1b_1 have degree 33 (two triangle edges plus the bridge), while a2,a3,b2,b3a_2,a_3,b_2,b_3 have degree 22. So Δ(G)=3\Delta(G) = 3. The graph is connected, not complete (e.g. a1b2∉Ea_1 b_2 \notin E), and not an odd cycle (it contains triangles and a bridge, not a single cycle). Brooks' theorem gives χ(G)≤3\chi(G) \le 3. On the other hand ω(G)=3\omega(G) = 3 (each triangle is a clique of size 33, and there is no K4K_4 since the bridge vertex a1a_1 has only one neighbor, b1b_1, outside its own triangle, not enough to extend a clique). So ω(G)≤χ(G)≤3\omega(G) \le \chi(G) \le 3 forces χ(G)=3\chi(G) = 3 exactly, and here the clique bound alone already pins the answer—Brooks' theorem is consistent with, but not needed beyond, the clique bound in this case. This illustrates that when ω(G)=Δ(G)\omega(G) = \Delta(G) (as here, ω=3=Δ\omega = 3 = \Delta), all three bounds coincide and Brooks' theorem adds no new information; its value is precisely in cases like the Petersen graph where ω(G)<Δ(G)\omega(G) < \Delta(G).

CounterexampleWhy "connected" is necessary in Brooks' theorem

Brooks' theorem requires GG to be connected. Consider G=K4⊔K4G = K_4 \sqcup K_4 (two disjoint copies of the complete graph on 44 vertices, no edges between them). Here Δ(G)=3\Delta(G) = 3 (every vertex has degree 33 within its own K4K_4). Since each component of GG is a complete graph K4K_4, each component individually is an exception to Brooks' theorem, and indeed

χ(G)=max⁡(χ(K4),χ(K4))=4=Δ(G)+1.\chi(G) = \max(\chi(K_4), \chi(K_4)) = 4 = \Delta(G) + 1.

If one mis-stated Brooks' theorem by dropping connectedness — "if GG is not complete and not an odd cycle, then χ(G)≤Δ(G)\chi(G) \le \Delta(G)" — this example would immediately refute it: GG itself is not complete (it is disconnected, and complete graphs are connected by definition once n≥2n\ge 2) and is not an odd cycle, yet χ(G)=Δ(G)+1=4≰3\chi(G) = \Delta(G)+1 = 4 \not\le 3. The subtlety is that the exceptional-graph clause of Brooks' theorem is meant to apply componentwise: a disconnected graph GG satisfies χ(G)≤Δ(G)\chi(G) \le \Delta(G) unless some connected component of GG is complete or an odd cycle with maximum degree equal to Δ(G)\Delta(G). Dropping "connected" from the hypothesis without adjusting the exceptional clause breaks the theorem exactly as shown.

Scope, edge cases & common traps

SituationWhat holdsWhat can go wrong
GG disconnectedApply Brooks componentwise; χ(G)=max⁡iχ(Gi)\chi(G) = \max_i \chi(G_i)Forgetting the max is per-component, not global Δ\Delta
GG complete KnK_nχ=Δ+1=n\chi = \Delta + 1 = nThinking Brooks gives χ≤Δ\chi \le \Delta always
GG odd cycleχ=Δ+1=3\chi = \Delta + 1 = 3Confusing with even cycles (χ=2=Δ\chi=2=\Delta)
ω(G)≪Δ(G)\omega(G) \ll \Delta(G)Brooks may still force χ(G)\chi(G) close to Δ(G)\Delta(G)Assuming small clique number implies small χ\chi
Greedy with bad vertex orderCan waste colors, e.g. up to Δ+1\Delta+1 even when χ\chi is 22Believing greedy always finds χ(G)\chi(G)
Regular graphs, G=Kn,nG=K_{n,n}Δ=n\Delta=n, but χ=2\chi=2 since bipartiteApplying Brooks and expecting equality; Brooks is only an upper bound χ≤Δ\chi\le\Delta here, far from tight

The mathematician behind it

Origins · 1 minR. Leonard Brooks and how this was discovered
RL
R. Leonard Brooks
1916–1993 · British mathematician

Brooks proved his eponymous theorem in 1941 while a graduate student, in a paper motivated by questions about map coloring and graph structure arising from his broader interest in combinatorics and operational research. He later worked largely outside pure mathematics, in industrial and military operational research, and the theorem that bears his name remained his most cited contribution to graph theory — a single, sharp result that has become a cornerstone of chromatic graph theory.

History
- 1941 — R. L. Brooks publishes the theorem in Proceedings of the Cambridge Philosophical Society, using an ordering and induction argument similar in spirit to the one given above.
- 1975–1977 — Simplified and alternative proofs appear, including approaches via graph coloring extensions and Kempe-chain–type arguments, making the theorem accessible to broader combinatorics courses.
- 1979 — Lovász gives a short, elegant proof using a clever choice of coloring minimizing color-class imbalance, later a standard textbook approach.
- 1990s — Extensions to list coloring (the "list-coloring version of Brooks' theorem") are established, tightening the connection to the broader theory of Graph Coloring and Chromatic Number.
- 2000s–present — Brooks-type bounds are generalized to hypergraphs, fractional coloring, and used as base cases in probabilistic and algorithmic coloring results connected to The Probabilistic Method Introduction.
Is Brooks' theorem's bound χ(G)≤Δ(G)\chi(G)\le\Delta(G) ever an equality for graphs that are neither complete nor odd cycles?

No — that is precisely the content of the theorem's exceptional clause. Brooks' theorem states that χ(G)≤Δ(G)\chi(G) \le \Delta(G) holds for every connected graph except complete graphs and odd cycles, and for those two exceptional families equality χ(G)=Δ(G)+1\chi(G) = \Delta(G)+1 holds instead. So for any other connected graph, χ(G)\chi(G) is at most Δ(G)\Delta(G), though it can be strictly less (e.g., Kn,nK_{n,n} has χ=2≪Δ=n\chi = 2 \ll \Delta = n). The theorem is a one-directional guarantee, not a claim of exactness, for the non-exceptional case.

Does Brooks' theorem tell us how to actually find a Δ(G)\Delta(G)-coloring efficiently?

Yes, in a constructive sense. The proof is algorithmic: it builds a specific vertex ordering (via a spanning-tree traversal rooted at a carefully chosen vertex vnv_n, with two special vertices v1,v2v_1, v_2 colored identically) and then runs greedy coloring along that order. Each step of the construction — finding a distance-2 pair, building a spanning tree, ordering by depth — can be implemented in polynomial time, so the theorem yields a polynomial-time algorithm to produce a proper Δ(G)\Delta(G)-coloring whenever GG is connected and not complete or an odd cycle.

Why can't we always replace Δ(G)+1\Delta(G)+1 by ω(G)\omega(G)?

Because χ(G)\chi(G) can exceed ω(G)\omega(G) by an arbitrarily large amount, unlike the gap to Δ(G)+1\Delta(G)+1 which Brooks bounds tightly. Triangle-free graphs (so ω(G)=2\omega(G) = 2) exist with arbitrarily large chromatic number — a classical fact provable via explicit constructions (Mycielski's construction) or via The Probabilistic Method Introduction. So while ω(G)≤χ(G)\omega(G) \le \chi(G) always holds, there is no general upper bound on χ(G)\chi(G) purely in terms of ω(G)\omega(G); the clique number can be a very weak lower bound in graphs with high "chromatic complexity" but low clique structure, such as the Kneser graphs or Mycielski graphs.

How does Brooks' theorem relate to bipartite graphs?

A connected bipartite graph with at least one edge has χ(G)=2\chi(G) = 2. If such a graph also has Δ(G)≥2\Delta(G) \ge 2 and is not an odd cycle (bipartite graphs are never odd cycles, since odd cycles are non-bipartite) and not complete (the only complete bipartite-compatible complete graph is K2K_2, itself an edge), Brooks' theorem gives χ(G)≤Δ(G)\chi(G) \le \Delta(G), which is consistent with but far weaker than the exact value 22. Bipartite graphs are a case where the greedy/Brooks bound is typically very loose, and the true chromatic number is better obtained directly from the bipartition, illustrating that Brooks' theorem is a general-purpose bound, not always the sharpest tool for structured graph classes.

Is the greedy bound χ(G)≤Δ(G)+1\chi(G) \le \Delta(G) + 1 ever strictly better information than Brooks' bound?

Only in the two exceptional cases (complete graphs and odd cycles), where the greedy bound is exactly tight and Brooks' theorem simply confirms that no improvement to Δ(G)\Delta(G) is possible. In every other connected graph, Brooks' theorem strictly improves the greedy bound by at least one color. So the greedy bound is never strictly better information than Brooks' refined bound; at best it is equally informative, exactly in the exceptional cases.

Does a large clique number force χ(G)\chi(G) close to Δ(G)\Delta(G)?

Not necessarily, but there is a natural interaction: if GG has a clique of size Δ(G)+1\Delta(G)+1, then since Δ(G)+1≤χ(G)≤Δ(G)+1\Delta(G)+1 \le \chi(G) \le \Delta(G)+1 automatically (the clique bound and greedy bound coincide), we get χ(G)=Δ(G)+1\chi(G) = \Delta(G)+1 forced tightly — but a clique of size Δ(G)+1\Delta(G)+1 inside a graph with maximum degree Δ(G)\Delta(G) forces that clique to be a full connected component isomorphic to KΔ(G)+1K_{\Delta(G)+1} (since every vertex in the clique already has Δ(G)\Delta(G) neighbors within the clique, leaving no room for edges outside it). This is consistent with Brooks' theorem's own exceptional case for complete graphs.

Why is the proof of Brooks' theorem so much harder than the greedy bound's proof?

The greedy bound is a purely local, one-line counting argument: each vertex has at most Δ(G)\Delta(G) neighbors, so some color is always free. Brooks' theorem is a genuinely global structural statement, requiring the coloring algorithm to be paired with a carefully engineered vertex order — built from spanning trees, cut-vertex decompositions, and a specific non-adjacent pair of common neighbors — so that the last vertex processed has a guaranteed color-saving. This kind of "engineer the input order, then apply greedy" strategy is common in extremal graph theory, but the case analysis (connectivity, cut vertices, exceptional families) makes the proof structurally deep rather than merely computational.

Before this

Where this leads