Part II · The Classic Theory
Connectivity
A network survives any two node failures exactly when every pair of its nodes has three routes that never collide. After this chapter you will know why those two statements are the same statement, and you will be able to build every 2-connected and 3-connected graph from scratch.
Why connectivity deserves a chapter
Chapter 1 defined \(k\)-connected by what you cannot do to a graph. A graph is \(k\)-connected if it has more than \(k\) vertices and stays in one piece however you delete fewer than \(k\) of them. That is a negative description: it lists a kind of damage the graph resists. It says nothing about what the graph offers you while it is intact.
Here is the positive description. Suppose every two vertices of your network are joined by \(k\) routes sharing nothing except their two endpoints. Any \(k-1\) failures spoil at most \(k-1\) of those routes, so one always survives and the network stays connected. Route redundancy implies damage resistance in two lines.
The surprise is that the implication runs the other way too. If no set of \(k-1\) vertices can break your network apart, then the \(k\) non-colliding routes really are there, between every pair. Nothing in the definition of \(k\)-connectedness mentions paths, and yet the paths exist. That equivalence is Menger's theorem of 1927, and it is why "connectivity" names a useful quantity rather than a bookkeeping convention.
The practical reading is immediate. "How much punishment can this network take?" is a question about deletions, awkward to check because there are astronomically many vertex sets to try. "How many independent routes join these two nodes?" is a question about construction, which an algorithm answers by building routes one at a time. Menger's theorem says the two questions have the same numerical answer, so compute whichever side is convenient and certify the other.
The chapter has four more jobs beyond Menger. It gives build recipes: every 2-connected graph is a cycle with paths glued on one at a time, and every 3-connected graph grows out of \(K^4\), the complete graph on four vertices, by simple local moves. It decomposes merely connected graphs into blocks, the largest chunks with no internal single point of failure, which hang together in a tree. It counts paths that begin and end on one chosen set. And it asks the hardest routing question here: can you insist that path number one join this specific pair? Graphs where you always can are called \(k\)-linked, and they are strictly rarer than \(k\)-connected graphs.
Of the two directions linking route redundancy and damage resistance, which one is the easy one, provable in two lines?
New notation in this chapter
Thirteen symbols are new here; the rest are recalled from Chapter 1 and re-explained the first time they appear. If set language such as \(X \subseteq V(G)\) ("X is a subset of the vertices of G") is still unfamiliar, Chapter 0 is the bootstrap.
| Symbol | Read it as | Meaning | Tiny example |
|---|---|---|---|
| \(G \mathbin{\dot{-}} e\) | "G delete-and-suppress e" | Delete the edge \(e\), then erase any end of \(e\) left with exactly two edges, fusing that vertex's two edges into a single edge. | Applied to the right edge of \(K_{3,3}\) it gives \(K^4\) (Figure 3.5). |
| \(k(G, A, B)\) | "the separator number of A and B" | The fewest vertices whose deletion destroys every path from the vertex set \(A\) to the vertex set \(B\). The deleted vertices are allowed to lie in \(A\) or \(B\). | If \(G\) has no edges, \(k(G,A,B) = |A \cap B|\). |
| \(\mathcal{P}, \mathcal{Q}\) | "the path system P" | A script letter naming a set of paths, here always a set of pairwise disjoint \(A\)–\(B\) paths. | \(\mathcal{P} = \{P_1, P_2\}\): two disjoint routes. |
| \(V[\mathcal{P}]\) | "the vertices of the system P" | Every vertex lying on some path of \(\mathcal{P}\), collected into one set. | For \(\mathcal{P} = \{abc,\; de\}\): \(V[\mathcal{P}] = \{a,b,c,d,e\}\). |
| \(E[\mathcal{P}]\) | "the edges of the system P" | Every edge used by some path of \(\mathcal{P}\). | Same system: \(E[\mathcal{P}] = \{ab, bc, de\}\). |
| \(C^n * K^1\) | "the wheel with an n-rim" | A cycle on \(n\) vertices (the rim) plus one extra vertex (the hub) joined to every rim vertex. | \(C^3 * K^1 = K^4\), the smallest wheel. |
| \(A\)-path | "an A-path" | A path with at least one edge whose two ends lie in the set \(A\) and none of whose interior vertices lies in \(A\). | In a triangle with \(A\) all three vertices, each of the 3 edges is an \(A\)-path. |
| \(H\)-path | "an H-path" | For a subgraph \(H\): a path that touches \(H\) exactly in its two end vertices and is not itself an edge of \(H\). | A detour that leaves \(H\), travels outside, and comes back. |
| \(\kappa_H(G)\) | "kappa sub H of G" | The fewest vertices, all taken outside \(H\), that between them meet every \(H\)-path. | If every \(H\)-path runs through one of two hubs, \(\kappa_H(G) \le 2\). |
| \(\lambda_H(G)\) | "lambda sub H of G" | The fewest edges that between them meet every \(H\)-path. | If every \(H\)-path crosses one bridge, \(\lambda_H(G) = 1\). |
| \(\partial C\) | "the boundary of C" | Those vertices of a piece \(C\) that still send an edge out to the world beyond \(C\). | If \(C\) is the single edge \(uv\) and only \(u\) looks outward, \(\partial C = \{u\}\). |
| \(M_H(G)\) | "Mader's bound" | The cheapest score of a mixed blockade of the \(H\)-paths: the number of blocking vertices, plus \(\lfloor \frac{1}{2}|\partial C|\rfloor\) for each cluster \(C\) of blocking edges. | If 3 vertices alone block everything and nothing scores lower, \(M_H(G) = 3\). |
| \(\|U\|^+\) | "the outward edge count of U" | How many edges have at least one end in the vertex set \(U\). Edges leaving \(U\) are counted. | A single vertex \(u\) of degree 5 gives \(\|\{u\}\|^+ = 5\). |
| \(\kappa(G)\), \(\lambda(G)\) | "the connectivity", "the edge-connectivity" | (Chapter 1.) The largest \(k\) for which \(G\) is \(k\)-connected, respectively \(k\)-edge-connected. | \(\kappa(K^4) = 3\). |
| \(K^n\) | "the complete graph on n vertices" | (Chapter 1.) Every pair of the \(n\) vertices joined. Diestel writes \(K^n\) where many other books write \(K_n\); this course follows Diestel. | \(K^4\) has 4 vertices and 6 edges. |
| \(\delta(G)\), \(d(G)\), \(\varepsilon(G)\) | "min degree", "average degree", "edge density" | (Chapter 1.) Smallest number of edges at a vertex; average number; and \(\varepsilon(G) = \|G\|/|G|\), edges per vertex. Always \(d(G) = 2\varepsilon(G)\). | \(K^4\): \(\delta = 3\), \(d = 3\), \(\varepsilon = 6/4 = 1.5\). |
| \(G/e\) | "G contract e" | (Chapter 1.) Merge the two ends of the edge \(e\) into a single vertex, which inherits all their other neighbours. | Contracting any edge of \(K^4\) leaves a triangle. |
| \(TK^r\) | "a subdivision of K r" | (Chapter 1.) A copy of \(K^r\) with each edge stretched into a path. The \(r\) original vertices are its branch vertices. | \(K_{3,3}\) contains a \(TK^4\) (Figure 3.5, read backwards). |
| \(A\)–\(B\) path | "an A to B path" | (Chapter 1.) A path whose first vertex is its only vertex in \(A\) and whose last vertex is its only vertex in \(B\). | A single vertex lying in both \(A\) and \(B\) counts as an \(A\)–\(B\) path of length 0. |
| \(\lfloor x \rfloor\) | "floor of x" | Round \(x\) down to a whole number. | \(\lfloor 5/2 \rfloor = 2\). |
How should you read \(\|U\|^+\)?
Building every 2-connected graph out of ears
Start at the bottom of the scale. What does a 2-connected graph look like? The definition says only that it has at least three vertices and no cutvertex, meaning no single vertex whose deletion splits the graph. That is a prohibition, and prohibitions are hard to work with. We want a recipe.
The recipe uses one move. Take a graph \(H\) you have already built and glue on an \(H\)-path: a path whose two end vertices lie in \(H\) and whose interior lies entirely outside \(H\). Such a path is called an ear, attached to a head at two points. An ear may be long, or a single new edge between two vertices of \(H\) with no interior at all.
A graph is 2-connected if and only if it can be constructed from a cycle by repeatedly adding \(H\)-paths to the graph \(H\) built so far.[1]
Proof idea. Gluing an ear never creates a cutvertex, since the survivors of any deletion stay tied together through the old graph, which had none either. So everything built this way is 2-connected. Conversely, in a 2-connected \(G\) let \(H\) be the largest subgraph the recipe can build. Any edge of \(G\) between two vertices of \(H\) is itself a legal ear, so \(H\) contains those; and if \(H\) missed a vertex, 2-connectedness would supply a path from it back into \(H\), another legal ear. Either way \(H\) was not maximal. Diestel §3.1 has the details.[1]
A cycle is the minimal shape with no single point of failure: cut one point and traffic goes the long way round. An ear adds a bypass between two places already reachable from each other, so it cannot introduce a new bottleneck. The theorem says bypasses are the only building material you ever need.
The recipe pays off at once. Any statement about all 2-connected graphs can be proved by induction along the construction: check it for a cycle, then check that gluing an ear preserves it. One example: in a 2-connected graph any two vertices lie on a common cycle, which is the case \(k=2\) of Menger's theorem obtained without Menger's theorem.
Which graph cannot be produced by starting from a cycle and repeatedly gluing on ears?
Blocks: the pieces a connected graph falls into
Most real networks are not 2-connected. They have weak joints. The right response is not to give up but to chop the graph at its weak joints and study the pieces, which are 2-connected or trivially small. Those pieces are called blocks.
A block of a graph \(G\) is a maximal connected subgraph of \(G\) that has no cutvertex of its own. Concretely, every block is one of three things: a maximal 2-connected subgraph, or a bridge together with its two ends, or an isolated vertex. In plain terms, a block is a largest possible chunk that cannot be broken by deleting one of its own vertices.[1]
Why "no cutvertex" rather than the cleaner-sounding "2-connected"? Because a decomposition should cover everything. Bridges and isolated vertices are not 2-connected, and excluding them would leave parts of the graph in no block at all. The chosen wording lets them in, so every edge of \(G\) lies in exactly one block.
One piece of fine print trips up nearly everyone: a block may contain a cutvertex of the whole graph. The condition is only that it has no cutvertex of its own, judged inside the block. In Figure 3.2 the triangle \(abc\) is a block and \(c\) is a cutvertex of the whole graph, yet deleting \(c\) from the triangle leaves the connected edge \(ab\).
Three facts organise the picture, all proved in Diestel §3.1.[1] The first says the decomposition loses nothing about cycles or minimal cuts. Recall from Chapter 1 that a cut is the set of edges between the two sides of a vertex partition, and a bond is a minimal such set.
The cycles of \(G\) are exactly the cycles of its blocks, and the bonds of \(G\) are exactly the bonds of its blocks. No cycle and no minimal cut ever straddles a block boundary.[1]
Proof idea. A cycle is connected and has no cutvertex, so it enters the "maximal connected without cutvertex" competition and sits inside whichever block wins. For bonds, two vertices joined by an edge of a block \(B\) cannot be connected through anything but \(B\), since a path leaving and returning would build a bigger cutvertex-free subgraph. So a cut made inside \(B\) already separates them in all of \(G\).
For two distinct edges \(e\) and \(f\) of a graph, the following say the same thing: they lie in a common block; they lie on a common cycle; they lie in a common bond.[1]
Proof idea. Inside one block the ear construction produces a cycle through any two edges. Given such a cycle, deleting \(e\) and \(f\) splits it into two arcs; grow each arc into one side of a vertex partition, and the crossing edges form a bond containing both. A common bond forces a common block by the previous lemma. The value of this is that it identifies blocks without mentioning maximality: two edges share a block precisely when some loop runs through both.
Let \(\mathcal{A}\) be the set of cutvertices of \(G\) and \(\mathcal{B}\) the set of its blocks. The block graph of \(G\) is the bipartite graph on \(\mathcal{A} \cup \mathcal{B}\) in which a cutvertex \(a\) is joined to a block \(B\) whenever \(a\) belongs to \(B\). In plain terms, it is a map recording which blocks meet at which joints.[1]
The block graph of a connected graph is a tree.[1]
Proof idea. A cycle in the block graph would tie several blocks together into one connected subgraph with no cutvertex of its own, bigger than any block it was made from, contradicting maximality. So the block graph has no cycles; since \(G\) is connected it is connected too, hence a tree.
Blocks partition the edges, not the vertices. A cutvertex belongs to several blocks at once, which is why the block graph has anything to record. Two further slips: a block need not be 2-connected, since bridges and isolated vertices qualify, and "no cutvertex" is judged inside the block.
Cutvertices are the single points of failure of a network, and the block tree maps them. In a road or power network a cutvertex is a junction whose loss splits the region in two, while the blocks keep talking to themselves regardless. Planners deciding where to add redundancy read the block tree first: a new link inside a block buys nothing against disconnection, whereas a link between two blocks merges them and removes a joint. By Lemma 3.1.2, any algorithm concerned only with cycles or minimal cuts can also be run block by block and the answers reassembled.[1]
How many blocks does the path \(a\,b\,c\,d\) have?
The block graph of a connected graph is always a tree. What would a cycle in it have to mean?
The structure of 3-connected graphs
One level up, the same question returns. What does a 3-connected graph look like? Again we want a recipe rather than a prohibition, and again there is one, in fact two. Both start from the same seed.
A wheel is a graph of the form \(C^n * K^1\): a cycle on \(n\) vertices, called the rim, plus one extra vertex, the hub, joined to every rim vertex. The smallest wheel is \(C^3 * K^1\), a triangle with a hub, which is the same graph as \(K^4\).[2]
Now the reduction move. Deleting an edge from a 3-connected graph usually ruins 3-connectedness for a silly reason: it can leave a vertex of degree 2, and a vertex of degree 2 is always killed by deleting its two neighbours. The repair is to smooth such a vertex away.
To suppress a vertex \(x\) that has exactly two edges, going to \(a\) and \(b\), delete \(x\) and put in the single edge \(ab\). Now define \(G \mathbin{\dot{-}} e\) to be the graph obtained from \(G - e\) by suppressing any end of \(e\) whose degree in \(G - e\) has dropped to 2. Read aloud: delete the edge, then smooth out its endpoints if they have become mere corners.[2]
\(G \mathbin{\dot{-}} e\) is not \(G - e\), and it is not \(G/e\) either. Forgetting the suppression step is the standard error here. In full generality the operation can also create two parallel edges, which is why Diestel works with multigraphs; whenever the result is 3-connected, parallel edges cannot occur.
Two lemmas bracket the operation. The first says the move is safe to undo, the second says the move is always available.
If \(G \mathbin{\dot{-}} e\) is 3-connected, then \(G\) is 3-connected.[2]
Proof idea. Suppose \(G\) had a separator of two vertices. Push it down into \(G \mathbin{\dot{-}} e\), replacing any suppressed vertex by the edge it used to subdivide; the two sides of the split survive the translation. That gives a two-vertex separator in a graph that has none.
Every 3-connected graph \(G\) other than \(K^4\) has an edge \(e\) for which \(G \mathbin{\dot{-}} e\) is again 3-connected.[2]
Proof idea. Among the subgraphs of \(G\) that are subdivisions of a 3-connected graph, and \(G\) contains a subdivided \(K^4\) so there is one, pick the one with most edges. If it is not all of \(G\), 3-connectedness supplies an \(H\)-path joining two different subdivided edges, and adding it yields a subdivision of a larger 3-connected graph, contradicting the choice.[2]
Put the two lemmas together and you get a complete generative description.
A graph \(G\) is 3-connected if and only if there is a sequence \(G_0, G_1, \dots, G_n\) with \(G_0 = K^4\) and \(G_n = G\), where each \(G_i\) is obtained from its successor by the delete-and-suppress move: \(G_i = G_{i+1} \mathbin{\dot{-}} e\) for some edge \(e\). Every graph in such a sequence is 3-connected.[2]
Read the sequence forwards and it is a growth rule: each step adds one edge whose ends may be existing vertices, or new vertices planted in the middle of existing edges, or one of each. Every 3-connected graph is reachable from \(K^4\), and Lemma 3.2.1 guarantees that no wrong turn leaves the 3-connected world. Figure 3.5 runs one step backwards.
The second recipe uses contraction rather than deletion. Recall \(G/e\) from Chapter 1: merge the two ends of \(e\) into one vertex that inherits all their other neighbours.
Every 3-connected graph \(G\) other than \(K^4\) has an edge \(e\) with \(G/e\) again 3-connected.[2]
Proof idea, by infinite descent. If no edge works then for every edge \(xy\) the graph \(G/xy\) has a two-vertex separator including the merged vertex, so \(G\) has a three-vertex separator \(\{x, y, z\}\). Among all such triples pick one whose leftovers include a smallest component \(C\); contracting an edge from \(z\) into \(C\) and repeating the reasoning yields a strictly smaller component. Components cannot shrink forever.
A graph \(G\) is 3-connected if and only if there is a sequence \(G_0, \dots, G_n\) with \(G_0 = K^4\) and \(G_n = G\), where each \(G_i = G_{i+1}/x y\) for an edge \(xy\) whose two ends both have degree at least 3. All graphs in such a sequence are 3-connected.[2]
Forwards, the move is vertex splitting: pick a vertex, split it into two adjacent vertices, and share out its old neighbours so that each new vertex keeps at least two. The degree condition stops you splitting off a vertex of degree 2, which would destroy 3-connectedness for the silly reason met earlier. This is the core of what Tutte called the wheel theorem, and vertex splitting is the standard way to induct over all 3-connected graphs. Chapter 4 reuses Lemma 3.2.4 inside the proof of Kuratowski's planarity theorem.
Both theorems promise that some edge works, never that every edge works. Contracting or delete-and-suppressing a badly chosen edge can absolutely destroy 3-connectedness. The theorems are existence statements that make induction possible; they are not licences to reduce greedily.
The section ends with a result of a different flavour, algebraic rather than constructive. Recall the cycle space \(\mathcal{C}(G)\) from Chapter 1: the collection of edge sets that split into disjoint cycles, where adding two sets means keeping the edges that lie in exactly one of them, so shared edges cancel.
A cycle \(C\) in \(G\) is induced if no edge of \(G\) joins two non-consecutive vertices of \(C\), that is, the cycle has no shortcut across it. It is non-separating if \(G - C\), the graph left after deleting the cycle's vertices, is still connected. A non-separating induced cycle is a loop with no chords whose removal does not shatter what is left.[2]
The cycle space of every 3-connected graph is generated by its non-separating induced cycles.[2]
Proof idea. Among the cycles that are not such sums, pick one, \(C\), whose largest leftover component is as large as possible. If \(C\) covers every vertex, split it across a chord into two shorter cycles, both leaving strictly larger leftovers and so both good. Otherwise a well-chosen path across \(C\) writes it as a sum of two or three cycles, again with strictly larger leftovers. Either way the extremal choice is contradicted.
The payoff is geometric. In a 3-connected planar graph the non-separating induced cycles are exactly the boundaries of the faces you see when you draw it, so Tutte's theorem supplies a combinatorial stand-in for "face" with no drawing involved. That is the engine of Tutte's planarity criterion in Chapter 4. The paper it came from is titled "How to draw a graph", and its spring-embedding idea is the ancestor of the force-directed layouts that visualisation tools still run.[2]
In \(K_{3,3}\) you form \(K_{3,3} \mathbin{\dot{-}} xy\). After the edge \(xy\) is deleted, what happens?
In the 5-wheel you add all five triangles \(hab, hbc, hcd, hde, hea\) in the cycle space. What survives?
Menger's theorem
This is the result the chapter is built around. Before stating it, three words have to be separated, because confusing them wrecks nearly every statement that follows.
Two paths are disjoint if they share no vertex at all. They are independent if they share no vertex except possibly their two end vertices. They are edge-disjoint if they share no edge, while vertices may be shared freely. For two paths running between the same two vertices \(a\) and \(b\), full disjointness is impossible, so independence is the right currency there; between two sets \(A\) and \(B\), full disjointness makes sense and is what Menger's theorem counts.[3]
Now fix two vertex sets \(A\) and \(B\) inside a graph \(G\). They may overlap, and either may be a single vertex or the whole graph. An \(A\)–\(B\) path starts on one shore, ends on the other, and touches neither shore in between.
A vertex set \(X \subseteq V(G)\) separates \(A\) from \(B\) if every \(A\)–\(B\) path contains a vertex of \(X\). Picture guards posted on vertices: no route from \(A\) to \(B\) gets past them. Write \(k(G, A, B)\) for the smallest number of guards that does the job. The guards are allowed to stand on vertices of \(A\) or of \(B\); indeed a vertex lying in both \(A\) and \(B\) is by itself an \(A\)–\(B\) path of length 0, so every separator must contain it.[3]
Separators are not required to live strictly "between" the two sets. Assuming they do breaks the theorem outright in the edgeless case, where the only separators are the ones containing all of \(A \cap B\), and it breaks the induction in the standard proof.
One direction of the theorem is free, and worth extracting because it is the part people mistake for the whole result. Suppose you have \(m\) pairwise disjoint \(A\)–\(B\) paths. Every separator must contain at least one vertex of each of them, and since the paths share no vertices, that is \(m\) distinct guards. So the number of disjoint paths never exceeds the number of guards:
\[ \max(\text{disjoint } A\text{--}B \text{ paths}) \;\le\; k(G, A, B). \]
Menger's theorem is the statement that this inequality is never strict.
For any graph \(G\) and any vertex sets \(A, B \subseteq V(G)\), the minimum number of vertices separating \(A\) from \(B\) equals the maximum number of pairwise disjoint \(A\)–\(B\) paths.[3]
The cheapest roadblock equals the biggest convoy. If you cannot stop the traffic with fewer than \(k\) guards, then \(k\) convoys that never collide genuinely exist and can be driven at once. Read one way it is a promise about capacity; read the other way it is a promise about certificates. Whichever quantity you compute, you get a proof that the other one has the same value, and the proof is short: exhibit the paths, or exhibit the guards.
Verify both sides of Figure 3.8 by hand. Guards: every single vertex fails. Deleting \(m_1\) leaves \(a_1 m_2 b_2\); deleting \(m_2\) leaves \(a_1 m_1 b_1\); deleting \(a_1\) leaves \(a_2 m_1 b_1\); deleting \(b_1\) leaves \(a_1 m_2 b_2\). So \(k(G,A,B) \ge 2\), and \(\{m_1, m_2\}\) achieves 2. Paths: \(a_1 m_1 b_1\) and \(a_2 m_2 b_2\) share nothing, giving 2. Both sides equal 2. Now the trap that makes the theorem hard: grab \(a_1 m_1 b_2\) greedily first and the only remaining route, \(a_2 m_2 b_2\), collides at \(b_2\), so you would report 1 as the maximum. Greedy path-picking genuinely fails, which is why the proofs must reroute.
Diestel gives three complete proofs, which is unusual and deliberate: each one generalises in a different direction.[3] Here are their ideas in plain terms.
Proof one, by contraction. Induct on the number of edges. Pick an edge \(e = xy\) and squash it, forming \(G/e\). If the squashed graph still needs \(k\) guards, induction hands you \(k\) disjoint paths there, and unsquashing turns them into \(k\) disjoint paths of \(G\). Otherwise the squashed graph has a cheap separator, and pulling it back gives a separator \(X\) of \(G\) containing both \(x\) and \(y\), with exactly \(k\) vertices. Apply induction twice inside \(G - e\): once between \(A\) and \(X\), once between \(X\) and \(B\). Splice the two families at \(X\) and you have \(k\) disjoint \(A\)–\(B\) paths. This is Halin's argument, and its style, cut the graph at a bottleneck and recurse on both sides, recurs throughout the book.
Proof two, by augmentation. Prove something stronger: any system \(\mathcal{P}\) of fewer than \(k\) disjoint paths can be exceeded. To exceed \(\mathcal{P}\) means to find another disjoint system \(\mathcal{Q}\) that uses strictly more of \(A\) as starting points and strictly more of \(B\) as ending points, so in particular \(|\mathcal{Q}| \ge |\mathcal{P}| + 1\). The extra demand on both shores is what makes the induction close: merely having one more path is too weak a target to recurse on. The construction follows a fresh \(A\)–\(B\) path until it first collides with the old system, then reruns the argument on a graph whose far shore has been enlarged to include the collision zone, and reassembles the pieces. This is due to Böhme, Göring and Harant.
Proof three, by alternating walks. This one is modelled on the augmenting-path proof of König's theorem in Chapter 2, and it is the version that survives into infinite graphs. Fix a system \(\mathcal{P}\) of disjoint \(A\)–\(B\) paths. An alternating walk starts at an unused vertex of \(A\) and moves forward through free territory, but whenever it steps onto an edge already used by \(\mathcal{P}\) it must travel that edge backwards, toward \(A\). It may repeat a vertex only if the vertex lies on the path system, and each time it touches a path of \(\mathcal{P}\) it must arrive or leave along that path. Two lemmas then split the world in half.
If some alternating walk reaches a vertex of \(B\) that no path of \(\mathcal{P}\) uses, then some system of disjoint \(A\)–\(B\) paths exceeds \(\mathcal{P}\). If no alternating walk reaches such a vertex, then \(G\) has an \(A\)–\(B\) separator consisting of exactly one vertex from each path of \(\mathcal{P}\).[3]
Proof idea. In the first case, overlay the walk on the path system and keep the edges used by exactly one of them. Counting edges at each vertex shows the overlay falls apart into \(A\)–\(B\) paths, one more than before: riding backwards is exactly what lets the walk cancel a badly chosen stretch and re-route around it. In the second case, take on each path the last vertex alternating walks can still reach and collect those into a set \(X\). A path dodging all of \(X\) would let a walk reach further, contradicting the choice. So \(X\) is a separator with one guard per path, forcing \(k(G,A,B) \le |\mathcal{P}|\), which with the free inequality closes the theorem.
The third proof explains why the easy half is easy and the hard half is hard. Guards and paths are both cheap to verify, but a bad set of paths tells you nothing. The alternating walk is a machine that takes a suboptimal path system and either improves it or certifies that it was already optimal. That "improve or certify" loop has the same shape as the augmenting-path loop for matchings, and as every algorithm that computes these numbers in practice.
"Menger's theorem lets me build the paths greedily." It does not. Figure 3.8's worked example shows a greedy first choice cutting the achievable number in half. The theorem tells you the number; getting the paths requires the rerouting machinery.
Two \(a\)–\(b\) paths run through the same middle vertex \(m\) but share no edge. What are they?
In Figure 3.8 you greedily take \(a_1 m_1 b_2\) as your first path. What then happens?
What Menger's theorem gives you
The set-to-set version is the general one, and the useful special cases follow from it by small tricks. Each trick is worth learning on its own, because the same tricks reappear whenever an edge problem or a single-vertex problem needs to be turned into a vertex-set problem.
For a vertex \(a\) and a vertex set \(B\) not containing \(a\), an \(a\)–\(B\) fan is a set of \(a\)–\(B\) paths, any two of which meet only in \(a\). Picture the ribs of a hand fan spreading from one pivot. Full disjointness is impossible at \(a\), so we relax exactly there and nowhere else.[3]
The minimum number of vertices other than \(a\) needed to separate \(a\) from \(B\) equals the maximum number of paths in an \(a\)–\(B\) fan.[3]
Proof idea, one line: delete \(a\) and apply Menger's theorem in \(G - a\) with the left shore taken to be \(N(a)\), the vertices joined to \(a\) by an edge. Every route out of \(a\) starts at one of them, so disjoint \(N(a)\)–\(B\) paths reattach to \(a\) as fan ribs.
Next, the version people usually quote, between two named vertices.
Let \(a\) and \(b\) be distinct vertices of \(G\). (i) If \(ab\) is not an edge, the minimum number of vertices other than \(a, b\) separating \(a\) from \(b\) equals the maximum number of independent \(a\)–\(b\) paths. (ii) With no restriction, the minimum number of edges whose removal separates \(a\) from \(b\) equals the maximum number of edge-disjoint \(a\)–\(b\) paths.[3]
Proof idea for (i): delete \(a\) and \(b\), then apply Menger's theorem with \(A := N(a)\) and \(B := N(b)\). For (ii): move to the line graph \(L(G)\) from Chapter 1, whose vertices are the edges of \(G\), two of them joined when they share an end. There, edge-disjoint paths of \(G\) become disjoint paths and edge cuts become vertex separators, so the vertex theorem applies and translates back. Turning an edge problem into a vertex problem this way is a reusable pattern.
Part (i) genuinely needs \(a\) and \(b\) non-adjacent. With the edge \(ab\) present, no vertex set separates \(a\) from \(b\) at all, since no guard on a third vertex can touch that edge. Anyone who quotes "minimum vertex cut between \(a\) and \(b\) equals maximum independent paths" without the caveat is saying something false.
Finally, the payoff promised at the start of the chapter. This is the version that converts the negative definition of \(k\)-connectedness into a positive one.
(i) A graph is \(k\)-connected if and only if it contains \(k\) independent paths between every two of its vertices. (ii) A graph is \(k\)-edge-connected if and only if it contains \(k\) edge-disjoint paths between every two of its vertices.[3]
Proof idea. One direction is the two-line argument from the chapter opening: \(k\) independent routes cannot all be destroyed by \(k-1\) deletions. Conversely, suppose \(G\) is \(k\)-connected but some pair \(a, b\) has fewer than \(k\) independent paths. By Corollary 3.3.5 (i) that forces \(ab\) to be an edge, so delete it: the pair is now non-adjacent, giving a separator \(X\) of at most \(k-2\) vertices in \(G - ab\). Since \(G\) has more than \(k\) vertices, some vertex lies outside \(X \cup \{a,b\}\), and \(X\) plus whichever of \(a, b\) is on the far side separates \(G\) using at most \(k-1\) vertices, contradicting \(k\)-connectedness. That adjacent case is the fiddly part, and skipping it is a common gap.
Take the wheel \(C^5 * K^1\) of Figure 3.4 and check \(\kappa = 3\) both ways. Cut resistance: deleting the hub and one rim vertex leaves the other four rim vertices in a path, still connected, and deleting two rim vertices leaves the hub reaching everything. So \(\kappa \ge 3\), while \(\kappa \le \delta = 3\) because each rim vertex has degree 3. Route redundancy: the rim vertices \(a\) and \(c\) are joined by \(a\,b\,c\), by \(a\,e\,d\,c\), and by \(a\,h\,c\) through the hub, three paths sharing only \(a\) and \(c\). The Global Version says the two computations had to agree, and they do.
Menger's theorem is the combinatorial ancestor of the max-flow min-cut theorem, whose founding paper is Ford and Fulkerson's "Maximal Flow Through a Network" of 1956. Its origin was a practical question posed to the authors by T. Harris: find the maximum steady-state flow through a rail network joining two cities, where every link has a capacity.[6] Menger's version is the case of unit capacities sitting on vertices rather than links, and the answer has the same shape: the biggest thing you can push equals the cheapest thing you can cut. Chapter 6 develops flows properly, and they yield a fourth proof of Menger's theorem.
The duality does visible work in computer vision. To cut an object out of a photograph, build a graph with one vertex per pixel, edges between neighbouring pixels weighted by how similar they look, and two terminals standing for "object" and "background". A minimum cut separating the terminals traces the boundary along the cheapest seam. Boykov and Funka-Lea document that such cuts reach global optima efficiently and work in any number of dimensions, including three-dimensional medical scans.[7] The bottleneck the algorithm exposes is the outline of the tumour or the person.
The same picture underlies epidemic interdiction. Disease spread is a process on a contact network, and the standard susceptible-infective-removed models can be solved exactly on a wide range of network structures.[8] To stop every transmission chain between two populations you are looking for a minimum separator, and Menger's theorem certifies optimality: exhibit that many disjoint chains and no smaller barrier can exist.
Why must \(a\) and \(b\) be non-adjacent in the independent-path version of Corollary 3.3.5?
Counting round trips: A-paths and Mader's theorem
Menger's theorem counts paths that run between two shores. A different question counts paths that start and end on the same chosen set and go abroad in between. Think of \(A\) as a set of terminals and ask how many non-colliding round trips through the surrounding network you can run at once.
For a vertex set \(A\), an \(A\)-path is a path with at least one edge whose two ends lie in \(A\) and none of whose interior vertices lies in \(A\). For a subgraph \(H\), an \(H\)-path is an \(A\)-path for \(A = V(H)\) that is not itself an edge of \(H\): it leaves \(H\), travels outside, and returns, touching \(H\) only at its two ends. The clause "not an edge of \(H\)" stops the count from being inflated by \(H\)'s own edges.[4]
The first result is a packing-versus-covering statement of exactly the kind Chapter 2 trained you to expect: either the thing you want exists in quantity, or a small blocker exists.
For a vertex set \(A\) and an integer \(k \ge 1\), a graph either contains \(k\) disjoint \(A\)-paths, or it contains a set of at most \(2k-2\) vertices meeting every \(A\)-path.[4]
Notice the loss. In Menger's theorem the two numbers match exactly. Here, failing to pack \(k\) paths only buys you a blocker of size \(2k-2\) rather than \(k-1\), and the factor of roughly two is not slack in the proof. It is real, and the smallest complete graphs show why.
The general sharpness example is \(K^{2k-1}\) with \(A\) all of its vertices. Disjoint \(A\)-paths are then disjoint edges, and \(2k-1\) vertices cannot host \(k\) of those, so packing maxes out at \(k-1\). Blocking every edge takes \(2k-2\) guards, since two unguarded vertices leave the edge between them free. Both halves of Gallai's statement are tight at once.
Gallai's theorem is an inequality. The exact answer was found seventeen years later by Mader, and getting it exact required changing what counts as a blockade.
Let \(H\) be an induced subgraph of \(G\). A mixed blockade of the \(H\)-paths is a pair \((X, F)\) where \(X\) is a set of vertices outside \(H\) and \(F\) is a set of edges avoiding \(H\) and \(X\), such that every \(H\)-path either passes through a vertex of \(X\) or uses an edge of \(F\). Score such a blockade as \(|X|\) plus, for each connected cluster \(C\) formed by the edges of \(F\), the quantity \(\lfloor \frac{1}{2}|\partial C|\rfloor\), where \(\partial C\) is the set of vertices of \(C\) that still send an edge outward. Then \(M_H(G)\) is the smallest score over all mixed blockades.[4]
Why the strange scoring? A cluster of cut edges is worth less than the number of edges in it. Any \(H\)-path crossing the cluster \(C\) enters and leaves through different boundary vertices, and independent paths cannot reuse one, so the cluster is crossed at most \(\lfloor \frac{1}{2}|\partial C|\rfloor\) times. That makes the score a valid upper bound; counting \(|X| + |F|\) would also be valid but wasteful.
For every graph \(G\) with an induced subgraph \(H\), the maximum number of independent \(H\)-paths in \(G\) is exactly \(M_H(G)\).[4]
Diestel states this theorem without proving it. The book explains why \(M_H(G)\) is an upper bound, the part you can check by hand, then points to Schrijver's proof for the equality.[4] This course follows the book: take the equality on trust, and spend your effort on why the refined score is the right thing to minimise. The result swallows two earlier theorems whole, since Gallai's theorem follows from it and so does Tutte's 1-factor theorem from Chapter 2.
Two clean consequences avoid the heavy machinery. Recall \(\kappa_H(G)\), the fewest vertices outside \(H\) that meet every \(H\)-path, and \(\lambda_H(G)\), the fewest edges that do.
With \(H\) induced in \(G\), there are always at least \(\frac{1}{2}\kappa_H(G)\) independent \(H\)-paths, and at least \(\frac{1}{2}\lambda_H(G)\) edge-disjoint \(H\)-paths. The factor \(\frac{1}{2}\) cannot be improved.[4]
Proof idea. Turn an optimal mixed blockade into a pure vertex blockade by keeping \(X\) and adding, for each edge cluster, all but one of its boundary vertices. That at most doubles the score, so \(\kappa_H(G) \le 2 M_H(G)\) and Mader's equality does the rest; the edge version follows by the line graph trick. Whatever it costs to block every round trip with vertices alone, you can run at least half that many, and the factor of two is the price of banning mixed blockades.
Two rules keep this section honest. Guards must stay off \(H\), since posting them on \(H\) makes blocking trivial and the numbers meaningless. And \(M_H(G)\) is not the minimum of \(|X| + |F|\): the per-cluster term is genuinely smaller than the cluster's edge count, and only the refined score is attained exactly.
In a mixed blockade, why is a cluster \(C\) of blocking edges scored \(\lfloor \frac{1}{2}|\partial C|\rfloor\) rather than by its number of edges?
Linking prescribed pairs
Every theorem so far counted paths without caring which endpoint went with which: Menger hands you \(k\) disjoint routes and you take the pairing you are given. Now make the problem harder. You have \(k\) calls to place, call \(i\) running from \(s_i\) to \(t_i\), and the pairing is not negotiable. Can the network carry them all at once without collisions?
A vertex set \(X\) is linked in \(G\) if for every choice of distinct vertices \(s_1, \dots, s_\ell, t_1, \dots, t_\ell\) in \(X\) there are disjoint paths \(P_1, \dots, P_\ell\), where \(P_i\) runs from \(s_i\) to \(t_i\) and has no interior vertex in \(X\). A graph \(G\) is \(k\)-linked if \(|G| \ge 2k\) and every set of at most \(2k\) vertices is linked. Equivalently, for any \(2k\) distinct vertices \(s_1, \dots, s_k, t_1, \dots, t_k\) there are disjoint paths joining \(s_i\) to \(t_i\) for each \(i\).[5]
The clause forbidding interior vertices in \(X\) earns its place: the leftover vertices of \(X\), the ones not currently serving as terminals, stay untouched and available inside a bigger argument. Stated in the second form, with exactly \(2k\) terminals named, that condition takes care of itself.
Every \(k\)-linked graph is \(k\)-connected, for the same free reason as before: if fewer than \(k\) vertices could separate the graph, pick terminals on both sides and no linkage could cross. The converse fails, and it fails at the smallest possible size.
So \(k\)-linked is strictly stronger than \(k\)-connected. The question of the section is how much stronger. Does high connectivity eventually force linkedness, and if so how high?
The first answer, from 1970, is yes with an appalling constant. Its engine is a result whose proof Diestel postpones to the extremal graph theory chapter: there is a function \(h\) such that any graph whose average degree is at least \(h(r)\) contains a subdivision \(TK^r\), meaning \(r\) branch vertices joined pairwise by internally disjoint paths.[5]
There is a function \(f\) such that every \(f(k)\)-connected graph is \(k\)-linked. The proof gives \(f(k) = h(3k) + 2k\).[5]
Proof idea. High connectivity forces high average degree, which produces a subdivided complete graph \(TK^{3k}\) inside \(G\). Its branch vertices form a switchboard in which every pair of ports already owns a private corridor. Menger's theorem carries the \(2k\) terminals into that switchboard along disjoint paths, chosen to use as few outside edges as possible; the economy leaves \(k\) ports spare, one per demand, so each pair \(s_i, t_i\) is stitched through its own spare port.
The switchboard is the whole idea. In a subdivided complete graph any pairing of the ports can be realised, since every pair already owns a dedicated corridor. The routing problem then splits in two: get the terminals to the switchboard without collisions, which is a Menger problem, then let the switchboard do the pairing. That is also why the first bound was astronomical: the connectivity had to guarantee a large switchboard.
Thirty-five years later the constant came down to something usable. The improvement replaces "find an enormous switchboard" with "find a small dense one", which needs far less connectivity but does need the graph to be genuinely edge-rich.
If \(G\) is \(2k\)-connected and has edge density \(\varepsilon(G) \ge 8k\), that is at least \(8k|G|\) edges, then \(G\) is \(k\)-linked. Since \(2\varepsilon(G) = d(G) \ge \delta(G) \ge \kappa(G)\), every \(16k\)-connected graph satisfies both hypotheses, so the function \(f\) above may be taken to be \(f(k) = 16k\).[5]
Proof idea, in outline. The statement as written is too rigid to induct on, so it is replaced by a flexible claim: if the territory outside the terminal set \(X\) is edge-rich, and every bottleneck cutting a piece away from \(X\) cuts away only an edge-poor piece, then \(X\) is linked. Diestel calls edge-rich sets heavy and edge-poor sets light, measuring \(\|U\|^+\) against \(8k|U|\). The gain is that "everything cut off is light" survives edge deletion and contraction, whereas \(2k\)-connectedness does not.
The induction runs on graph size and on the number of edges outside \(X\). A bottleneck whose far side can itself route any pairing of the interface acts as a black box, and Menger's theorem finishes at once, so assume none exists. Contracting or deleting an edge outside \(X\) then either preserves the hypotheses, letting induction apply, or squeezes the smallest outside degree into a narrow window, where a minimum-degree vertex and its neighbours form a small dense graph.
Any graph \(H\) with \(\delta(H) \ge 8k \ge |H|/2\), that is, at most \(16k\) vertices and every vertex having at least \(8k\) neighbours, contains a \(k\)-linked subgraph.[5]
With that local switchboard in hand, Menger's theorem applies one last time: either it links \(X\) to the switchboard by \(|X|\) disjoint paths, finishing the argument, or it produces exactly the bottleneck already ruled out. The Notes record refinements: edge density \(5k\) is enough, and for graphs of large girth, meaning no short cycles, \(2k\)-connectedness alone suffices.[5]
Prescribed-pair routing is the daily problem of circuit layout. A chip or board says which terminals must be wired to which, and the wires must not contend for the same physical resource, which is the engineering form of "disjoint paths for prescribed pairs". Lengauer's monograph on integrated circuit layout treats the pipeline that turns a circuit description into geometry, from partitioning and placement through global and detailed routing to compaction, with graph algorithms throughout the routing stages.[9] The theory here explains the shape of the difficulty: connectivity alone buys many routes, but prescribing which route joins which pair costs a constant factor more.
What job does the subdivided complete graph \(TK^{3k}\) do in the Jung and Larman–Mani proof?
What to carry forward
Four things from this chapter deserve permanent residence.
First, the min-max habit in its most quoted form: a quantity defined by destruction, the cheapest way to break something, equals a quantity defined by construction, the largest number of non-colliding routes. Whenever you meet a hard combinatorial minimum, ask what maximum it might secretly equal.
Second, the build recipes. Two-connected means cycle plus ears; three-connected means \(K^4\) plus vertex splittings, or \(K^4\) plus edge additions with subdivisions. A property defined by a prohibition becomes one you can generate, and generation is what makes induction possible.
Third, the three flavours of non-collision: disjoint paths share nothing, independent paths share only their two endpoints, edge-disjoint paths may share vertices freely. Menger's theorem is stated for disjoint paths between sets, and its two-vertex corollaries split into an independent-path version, needing non-adjacent endpoints, and an edge version, which does not.
Fourth, the gap between counting and prescribing. Getting \(k\) routes is a connectivity question; getting \(k\) routes that join the pairs you named is strictly harder, and bringing that gap under a linear bound took from 1970 to 2005.
The threads continue. Menger's theorem returns as the unit-capacity ancestor of max-flow min-cut in Chapter 6, which supplies another proof of it. The alternating-walk lemmas are reused word for word in Chapter 8 for infinite graphs. The block tree becomes the tree-decompositions of Chapter 12. And the planarity arguments of Chapter 4 lean on the 3-connected recipes proved here.
The first thing the chapter tells you to carry forward is a habit of mind. Which one?
Check your understanding
In this chapter, what does \(G \mathbin{\dot{-}} e\) mean?
What does \(k(G, A, B)\) denote?
For an induced subgraph \(H\) of \(G\), the quantity \(\kappa_H(G)\) is:
Two different blocks of a graph \(G\) can share:
In some graph the minimum number of vertices separating a set \(A\) from a set \(B\) is 3. What does Menger's theorem let you conclude?
According to the Global Version of Menger's theorem, a graph is \(k\)-connected if and only if:
Tutte's contraction characterisation builds every 3-connected graph from \(K^4\). Which reduction step does it use?
Take the cycle on four vertices labelled in cyclic order \(s_1, s_2, t_1, t_2\). Which statement is true?
Let \(G = K^5\) and let \(A\) be all five of its vertices. What is the maximum number of disjoint \(A\)-paths, and what does Gallai's theorem with \(k = 3\) then promise?
Which pair of hypotheses does the Thomas and Wollan theorem use to force a graph \(G\) to be \(k\)-linked?
Sources and further reading
- R. Diestel, Graph Theory, 6th ed., Springer GTM 173 (2024), §3.1 (ear decomposition, Proposition 3.1.1; blocks and the block graph; Lemmas 3.1.2, 3.1.3 and 3.1.4).
- R. Diestel, Graph Theory, 6th ed., Springer GTM 173 (2024), §3.2 (the operation \(G \mathbin{\dot{-}} e\); Lemmas 3.2.1 and 3.2.2; Tutte's construction theorem 3.2.3, 1966; Lemma 3.2.4; Tutte's vertex-splitting theorem 3.2.5, 1961; Tutte's cycle-space theorem 3.2.6, 1963).
- R. Diestel, Graph Theory, 6th ed., Springer GTM 173 (2024), §3.3 (Menger's theorem 3.3.1, 1927, with three proofs; alternating-walk Lemmas 3.3.2 and 3.3.3; fan version, Corollary 3.3.4; two-vertex versions, Corollary 3.3.5; Global Version 3.3.6, Whitney 1932).
- R. Diestel, Graph Theory, 6th ed., Springer GTM 173 (2024), §3.4 (Gallai's theorem 3.4.1, 1961; Mader's theorem 3.4.2, 1978, stated there without proof, with a pointer in the Notes to Schrijver's proof; Corollary 3.4.3).
- R. Diestel, Graph Theory, 6th ed., Springer GTM 173 (2024), §3.5 (linked sets and \(k\)-linked graphs; Lemma 3.5.1, proved in §7.2; Theorem 3.5.2, Jung 1970 and Larman & Mani 1970; Lemma 3.5.4; Theorem 3.5.3, Thomas & Wollan 2005; Notes on the refinements).
- L. R. Ford Jr., D. R. Fulkerson, "Maximal Flow Through a Network", Canadian Journal of Mathematics 8 (1956), 399–404. cambridge.org.
- Y. Boykov, G. Funka-Lea, "Graph Cuts and Efficient N-D Image Segmentation", International Journal of Computer Vision 70 (2006), 109–131. springer.com.
- M. E. J. Newman, "Spread of epidemic disease on networks", Physical Review E 66, 016128 (2002). arXiv:cond-mat/0205009.
- T. Lengauer, Combinatorial Algorithms for Integrated Circuit Layout, Vieweg+Teubner (1990). springer.com.