While writing the Eulerian path wiki, I had an instructive blind spot in one of the proofs I was writing up.

To understand this note, you'll want to read the wiki, or at least know what a graph is (a collection of vertices and edges) and what the **degree** of a vertex is (the number of edges that emanate from the vertex).

An **Eulerian path** is a trip around the graph that passes through each edge exactly once, and an **Eulerian circuit** is an Eulerian path that starts and ends in the same place.

The two main theorems in the wiki are

(1) For a finite, connected graph, an Eulerian circuit exists if and only if every vertex has even degree

(2) For a finite, connected graph, an Eulerian path exists if and only if \( 0 \) or \( 2 \) vertices have odd degree.

The proof of (1) is in the wiki (it involves inductively constructing the circuit via an explicit algorithm). The blind spot I had was: how does (1) imply (2)? That is, if I have two vertices of odd degree, how can I construct an Eulerian path, given the information that Eulerian cycles exist on graphs where every vertex is even?

If there are two vertices of odd degree, it's clear that the Eulerian path will have to start at one of them and end at the other one. So my first idea was to start by walking along the graph from one of them to the other (using the fact that the graph is connected), and then to use (1) to make a circuit on the graph that remains after deleting the edges I already used. It's clear that this graph will have every vertex of even degree.

The problem with this idea is the graph may no longer be connected, so there is not necessarily a circuit. (Imagine, for instance, if the two odd-degree vertices had degree 1, and the graph looked like the Greek letter \( \phi \). Starting by walking from the top of the \( \phi \) to the bottom will not lead to an Eulerian path on that graph.)

I had a vague idea that there might be a way to get around this issue, but while I was thinking about it I happened to read the very short and elegant argument that proves that (1) implies (2). It is the kind of thing that is extremely obvious once you see it, but is easy to miss if you haven't seen it. Can anyone see what that argument is?

## Comments

Sort by:

TopNewestGeneralize the statement to apply to multigraphs (you allow multiple edges between the same pair of vertices). Add an edge between the two odd vertices. Get the Eulerian circuit. Remove the new edge; you now have an Eulerian path. – Ivan Koswara · 1 year ago

Log in to reply

– Patrick Corn · 1 year ago

Right. The idea of temporarily adding an edge is very pretty, and it definitely did not occur to me since I was concentrating on deleting edges instead.Log in to reply

@Ivan Koswara – Nihar Mahajan · 1 year ago

Log in to reply