The Chinese Postman Problem: Multigraph Shown Below
The Chinese Postman Problem: Multigraph Shown Below
The Problem
A postman is seeking the shortest (time, distance) way to complete his assigned route of streets.
Each street must be traversed at least once and the postman must end up at the same place where
he began his route.
Background
In the 1730s, the Swiss mathematician Leonhard Euler (“oil-er”) decided to study the city of
Köningsberg in Prussia. Köningsberg was built on the banks of a river and had seven bridges
which connected the two islands to the river banks. What Euler wanted to discover was whether
it would be possible to cross all the bridges in a type of “tour” without crossing the same bridge
twice.
There are some differences between the Köningsberg Bridge Problem (KBP) and the Chinese
Postman Problem (CPP) . First, Euler did not require the starting and ending points for the KBP
to be the same. Second, Euler was not trying to minimize the distance traveled. The CPP gained
its name because it was proposed by a Chinese mathematician (Mei-ko Kwan) in 1962. It is also
known under the alternative name of the Route Inspection Problem. The CPP has many practical
applications including bus routing, trash collection, road sweeping, snow-plowing, and
transmission line inspection.
Mathematical Formulation
We can turn both of these problems into network models. For example, in the KBP, let the four
land masses be represented by nodes and the seven bridges by edges. Then we have the
multigraph shown below.
Definition: A multigraph is a graph where multiple edges (between two distinct nodes) and self
loops (an edge that joins a node to itself) are allowed. A graph that does not allow multiple
edges or self loops is called a simple graph.
Definition: Let G be a graph. A walk in G that traverses every edge in G exactly once is called
an Eulerian trail. In addition, if the trail begins and ends at the same vertex, it is called an
Eulerian circuit (or Eulerian tour). If G has an Eulerian tour, we say G is an Eulerian graph.
We see that the KBP is the problem of finding an Eulerian trail in a graph. The CPP can be
converted into the problem of finding an Eulerian tour in a graph that has minimum cost.
Definition: Let v be a vertex in G. The degree of v, degree(v) is the number of edges that are
attached to v. If degree(v) is odd, we say v is an odd vertex; if degree(v) is even, we say v is an
even vertex.
Theorem: Let G be a graph. G is an Eulerian graph if all the vertices are even and all the edges
belong to a single component.
Examples
G1 and G2 are Eulerian graphs but G3 and G4 are not. G3 is not Eulerian because it contains odd
vertices. G4 is not Eulerian because it is composed of two nontrivial components.
Theorem: Let G be a graph. G has an Eulerian trail if all the edges belong to a single
component and there are at most two odd vertices.
Observation 1: The Eulerian trail would necessarily begin and end at the odd nodes.
Observation 2: The KBP does not have an Eulerian trail since all four vertices have odd degree.
Hence, there is no way to traverse all seven bridges exactly once.
Observation 3: If G is a graph with only even vertices and one nontrivial component then the
solution to the CPP uses every edge in G EXACTLY once and the total cost of the tour is the
sum of all of the edge weights.
Fleury’s Algorithm
If G is a graph with only even vertices and one nontrivial component then we may identify an
Eulerian tour as follows:
1. Start with any vertex.
2. From the current vertex traverse any unselected edge whose deletion would not result in a
graph with two nontrivial components.
3. Delete the selected edge from the graph. If there are no edges remaining STOP;
otherwise, go back to STEP 2.
If G is a graph with at most two odd vertices and one nontrivial component then we may identify
an Eulerian trail as follows:
4. Start with any odd vertex. (If all vertices are even, start anywhere)
5. From the current vertex traverse any unselected edge whose deletion would not result in a
graph with two nontrivial components.
6. Delete the selected edge from the graph. If there are no edges remaining STOP;
otherwise, go back to STEP 2.
Example
In the graph above, degree(a) = 3 and degree(h) = 3. All other vertices are even. Hence, the
graph does not have an Eulerian tour but it does have an Eulerian trail beginning at a and ending
at h.
Starting at a, we have a→b→c→a→j→h→c→d. At this point we have the graph shown below
(with the edges that have been already traversed deleted).
We cannot visit g next because deleting dg would leave a graph with two nontrivial components:
ANSWER: He pairs up the odd vertices and tries to find the shortest path between the two
vertices in each pair.
Example
In the graph below, there are two odd vertices, b and f. If we only wanted an Euler trail, we
could just use Fleury’s Algorithm. But we want to solve the CPP on this graph so we need to
find the shortest path between b and f and augment the graph with the edges in the shortest path.
The new graph is Eulerian and now we can use Fleury’s Algorithm to find an Euler tour in it.
CPP Algorithm
1. List all the odd vertices in the graph. If there are no odd vertices, go to STEP 5.
2. Find all possible SETS pairings of the odd vertices.
3. For each SET of pairings, find the shortest path between the two vertices in each pair.
Compute the total cost of the SET of pairings by adding up the costs of the shortest paths.
4. Select the SET of pairings with minimum weight and repeat these edges in the graph.
5. Use Fleury’s algorithm to find an Euler tour in the resulting graph.
What we have done in STEPS 2 through 4 is to convert a non-Eulerian graph into an Eulerian
graph by adding edges to the graph. This is equivalent to having our postman walk up and down
the same street.
Example
In the graph below, there are four odd vertices, b, e, f, and g. There are three SETS of pairings:
{b&e, f&g}; {b&f, e&g}; and {b&g, f&e}.
The cheapest SET of pairs is {b&f, e&g} so we repeat the edges ba, af, and eg in the graph.
The new graph is Eulerian and now we can use Fleury’s Algorithm to find an Euler tour in it.
References Include: