From a Primal Tree to a Dual Tree
A spanning tree selects enough edges to connect all vertices of a graph without creating a cycle. In a plane graph, each edge also has a corresponding edge in the dual: its endpoints are the faces on the two sides of the primal edge. A striking fact is that the edges omitted from a primal spanning tree, rather than the edges it selects, form a spanning tree in the dual. This complement is called the cotree of the primal spanning tree.
We work with finite, connected, simple plane graphs. A plane graph is a graph together with a fixed embedding in the plane in which edges meet only at common endpoints. Its faces are the regions of the complement of the embedded graph, including the unbounded face. The dual may have parallel edges or loops, even when the plane graph is simple: two different primal edges may have the same pair of incident faces, and a primal bridge has the same face on both sides.
A tree is a connected graph with no cycles. For a multigraph, a loop is a cycle of length one and a pair of parallel edges forms a cycle of length two. A tree on one vertex and no edges is allowed. We will show that the cotree is a tree, including in the case where the primal graph itself is a tree.
Why the Cotree Is Connected
We use two elementary facts about plane graphs and finite graphs. First, the dual of a connected plane graph is connected. To see this, take points in any two faces and join them by a curve that avoids all vertices and crosses edges transversely, one at a time. Such a curve can be chosen by a small perturbation because the graph has finitely many vertices and edges. The sequence of faces visited by the curve gives a walk in the dual between the chosen faces.
Second, we need the following fact about edges that separate two groups of faces. The proof is included because the nonempty condition matters.
Proof. Start with an edge and extend a trail (a walk with no repeated edges) as long as possible in the graph. This process terminates because the graph has finitely many edges. If the trail ended at a vertex different from its starting vertex, the trail would use an odd number of edges incident with its endpoint: each visit along the trail pairs an arrival with a departure, leaving one unpaired arrival at the endpoint. Since the endpoint has even degree, at least one incident edge would then be unused, and the trail could be extended. This contradicts its maximality. The trail therefore ends where it started and is a nonempty closed trail. Choose a shortest nonempty closed segment of that trail. Its internal vertices cannot repeat, since a repetition would give a shorter nonempty closed segment. It is therefore a cycle; because the graph is simple, its length is at least three. \(\square\)
Now let \(H\) be the subgraph of \(G^*\) consisting of the cotree edges and all dual vertices. Suppose, for contradiction, that \(H\) is disconnected. Partition its vertices into a nonempty group \(A\) and its nonempty complement so that no edge of \(H\) joins the two groups. Since the full dual \(G^*\) is connected, at least one dual edge does join the groups. Let \(B\) be the set of primal edges whose duals join the groups. No such edge belongs to the cotree, so every edge of \(B\) belongs to \(T\).
At each primal vertex, consider the faces in the sectors around it, in their circular order, and mark each face according to whether its dual vertex is in \(A\) or outside \(A\). An incident primal edge belongs to \(B\) exactly when the marks on its two sides differ. In a circular sequence of two possible marks, the number of changes is even: every change from the first mark to the second must be balanced by a change back. Thus every primal vertex has even degree in the subgraph with edge set \(B\). Also \(B\) is nonempty. The lemma gives a cycle made of edges in \(B\), hence a cycle in \(T\). That contradicts the definition of a tree. Therefore \(H\), the cotree, is connected.
The Spanning-Tree/Cotree Theorem
For a connected plane graph, Euler’s formula states that \(n-m+f=2\), where \(n\) is the number of vertices, \(m\) the number of edges, and \(f\) the number of faces. We use Euler’s formula as the standard result established in the earlier material on planar graphs.
Proof. We have shown that the cotree is connected. A spanning tree on \(n\) vertices has \(n-1\) edges: one can construct it by starting at a vertex and repeatedly adding an edge to a vertex not yet reached, until every vertex is reached. Each added edge brings in exactly one new vertex. In the connected plane graph \(G\), therefore, \(|E(T)|=n-1\). Euler’s formula gives \(m-n+1=f-1\), so the cotree has \(|E(G)\setminus E(T)|=m-(n-1)=m-n+1=f-1\) edges and \(f\) vertices.
Finally, any connected graph on \(f\) vertices contains a spanning tree with \(f-1\) edges, by the same construction. Since the connected cotree itself has exactly \(f-1\) edges, it has no edges in addition to those of that spanning tree. Thus it is itself a tree. This includes \(f=1\), when a connected one-vertex graph with zero selected edges is a tree. \(\square\)
The theorem’s complement is essential: the primal tree edges do not generally give a dual tree. The cotree uses all faces as its vertices and selects precisely the dual edges of the primal edges not in \(T\).
Worked Plane-Graph Examples
Worked Example: A Triangle
Embed the simple graph \(G\) with \(V(G)=\{1,2,3\}\) and \(E(G)=\{12,23,31\}\) as a triangle. It has an inside face \(f_1\) and an outside face \(f_0\). Each of its three edges has these two faces on its sides, so the dual has vertices \(\{f_0,f_1\}\) and three parallel edges \(12^*,23^*,31^*\) between them.
Choose the primal spanning tree \(T\) with \(E(T)=\{12,23\}\). It connects all three vertices, and it has no cycle. Its complement in the primal edge set is \(E(G)\setminus E(T)=\{31\}\), so the cotree has the two dual vertices and the single edge \(31^*\). That edge joins \(f_0\) to \(f_1\), making the cotree connected and acyclic.
Check: Here \(n=3\), \(m=3\), and \(f=2\), so Euler’s formula gives \(3-3+2=2\). The cotree has \(m-n+1=3-3+1=1\) edge, which is \(f-1=2-1=1\), as required for a tree on two vertices.
Worked Example: A Square with a Diagonal
Embed the simple graph \(G\) with \(V(G)=\{1,2,3,4\}\) and \(E(G)=\{12,23,34,41,13\}\) as a square with diagonal \(13\). Name the two triangular inside faces \(f_1\), with boundary \(12,23,13\), and \(f_2\), with boundary \(13,34,41\); name the outside face \(f_0\). The dual edge for \(12\) joins \(f_1\) to \(f_0\), as does \(23^*\). The dual edge for \(34\) and the one for \(41\) each join \(f_2\) to \(f_0\). The diagonal edge \(13^*\) joins \(f_1\) to \(f_2\).
Choose \(T\) with \(E(T)=\{12,23,34\}\). These edges form the path \(1,2,3,4\), so they connect all four vertices and have no cycle. The omitted primal edges are \(41\) and \(13\). Thus the cotree edges are \(41^*\), joining \(f_2\) to \(f_0\), and \(13^*\), joining \(f_1\) to \(f_2\). The cotree is the path \(f_0,f_2,f_1\), so it is a spanning tree of the three-face dual.
Check: The graph has \(n=4\), \(m=5\), and \(f=3\), and \(4-5+3=2\). The cotree has \(5-4+1=2\) edges, equal to \(3-1=2\). Independently, its listed edges connect all three faces in one path, with no repeated vertex and no cycle.
Worked Example: A Primal Tree and Dual Loops
Embed the simple graph \(G\) with \(V(G)=\{1,2,3\}\) and \(E(G)=\{12,23\}\) as a path. Its spanning tree \(T\) is the whole graph, so \(E(G)\setminus E(T)=\varnothing\). The embedded path has one face \(f_0\). Each primal edge has that same face on both sides, so the dual has one vertex \(f_0\) and two loops, \(12^*\) and \(23^*\). The cotree retains the dual vertex but selects no edges. A single vertex with no edges is connected and acyclic, so it is a tree.
Check: Here \(n=3\), \(m=2\), and \(f=1\), and \(3-2+1=2\). The cotree has \(m-n+1=2-3+1=0\) edges, equal to \(f-1=1-1=0\). The two dual loops are not in the cotree because both corresponding primal edges belong to \(T\).
Common Pitfall and Why the Correspondence Matters
Common mistake: dualizing the tree edges instead of taking their complement. In the triangle example, the chosen primal tree has edges \(12\) and \(23\). Its dual edges \(12^*\) and \(23^*\) are two parallel edges between \(f_0\) and \(f_1\). They connect the dual vertices, but together they form a cycle of length two, so they are not a dual tree. The correction is to omit those dual edges and select the dual of the remaining primal edge \(31\). That single edge is the cotree.
The correspondence is useful because it translates a choice in the primal graph into a complementary choice in the dual. For example, when an argument needs a connected, cycle-free set of dual edges, a primal spanning tree supplies one immediately: take the duals of exactly the edges not in that tree. The proof also explains why the two choices fit together: if the cotree failed to connect the faces, the primal edges crossing a partition of those faces would lie in the tree and would contain a cycle, which a tree cannot contain.
Keep the hypotheses in view. The theorem concerns a connected plane graph and its fixed embedding; the faces, and therefore the dual, depend on that embedding. The dual may have loops or parallel edges, and the cotree may have no edges when the primal graph is itself a tree. Neither feature invalidates the conclusion.
Check Your Understanding
Use the definitions and the spanning-tree/cotree theorem to answer these questions.
- For a connected plane graph with \(n\) vertices, \(m\) edges, and \(f\) faces, derive the number of edges in the cotree from Euler’s formula.
- In the square-with-diagonal example, choose \(T\) with edges \(\{12,23,13\}\). Identify the cotree edges by their endpoints in the dual.
- Why does the connectedness of the full dual matter in the proof that the cotree is connected?
- Explain why the even-degree lemma used in the proof must require at least one edge.
- For a connected plane graph with one face, what does Euler’s formula imply about the number of cotree edges?