100% found this document useful (1 vote)
225 views

Shimon Even Graph Algorithms Computer Software Engineering Series

Libro de Graph Algorithms Computer Software Engineering Series de Shimon Even

Uploaded by

Raul Hernández
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
225 views

Shimon Even Graph Algorithms Computer Software Engineering Series

Libro de Graph Algorithms Computer Software Engineering Series de Shimon Even

Uploaded by

Raul Hernández
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 260

i GRAPH

ALGORITHMS

SHIMON EVEN

COMPUTER SCIENCE PRESS


GRAPH
ALGORITHMS
COMPUTER SOFTWARE ENGINEERING SERIES

ELLIS HOROWITZ, Editor


University of Southern California

CALINGAERT
Assemblers, Compilers, and Program Translation

CARBERRY, KHALIL, LEATHRUM, and LEVY


Foundations of Computer Science

EVEN
Graph Algorithms

FINDLAY and WATT


PASCAL: An Introduction to Methodical Programming

HOROWITZ and SAHNI


Fundamentals of Computer Algorithms

HOROWITZ and SAHNI


Fundamentals of Data Structures
GRAPH
ALGORITHMS

SHIMON EVEN
Technion Institute

Computer Science Press


Copyright © 1979 Computer Science Press, Inc.

Printed in the United States of America.

All rights reserved. No part of this work may be reproduced, transmitted, or stored in
any form or by any means, without the prior written consent of the Publisher.

Computer Science Press, Inc.


9125 Fall River Lane
Potomac, Maryland 20854

2 3 4 5 6 85 84 83 82 81 80

Library of Congress Cataloging in Publication Data

Even, Shimon.
Graph algorithms.

(Computer software engineering series)


Includes bibliographies and index.
1. Graph theory. 2. Algorithms 1. Title.
11. Series.
QA166.E93 511 '.5 79-17150
ISBN 0-914894-21-8
UK 0-273-08467-4
PREFACE

Graph theory has long become recognized as one of the more useful mathe-
matical subjects for the computer science student to master. The approach
which is natural in computer science is the algorithmic one; our interest is
not so much in existence proofs or enumeration techniques, as it is in find-
ing efficient algorithms for solving relevant problems, or alternatively
showing evidence that no such algorithm exists. Although algorithmic
graph theory was started by Euler, if not earlier, its development in the last
ten years has been dramatic and revolutionary. Much of the material of
Chapters 3, 5, 6, 8, 9 and 10 is less than ten years old.
This book is meant to be a textbook of an upper level undergraduate, or
graduate course. It is the result of my experience in teaching such a course
numerous times, since 1967, at Harvard, the Weizmann Institute of
Science, Tel Aviv University, University of California at Berkeley and the
Technion. There is more than enough material for a one semester course,
and I am sure that most teachers will have to omit parts of the book from
their course. If the course is for undergraduates, Chapters 1 to 5 provide
enough material, and even then the teacher may choose to omit a few sec-
tions, such as 2.6, 2.7, 3.3, 3.4. Chapter 7 consists of classical nonalgo-
rithmic studies of planar graphs, which are necessary in order to under-
stand the tests of planarity, described in Chapter 8; it may be assigned as
preparatory reading assignment. The mathematical background needed for
understanding Chapter I to 8 is some knowledge of set theory, com-
binatorics and algebra, which the computer science student usually masters
during his freshman year through a course on discrete mathematics and a
course on linear algebra. However, the student will also need to know a
little about data structures and programming techniques, or he may not
appreciate the algorithmic side or miss the complexity considerations. It is
my experience that after two courses in programming the students have the
necessary knowledge. However, in order to follow Chapters 9 and 10, addi-
tional background is necessary, namely, in theory of computation. Specifi-
cally, the student should know about Turing machines and Church's
thesis.

V
vi Preface

The book is self-contained. No reliance on previous knowledge is made


beyond the general background discussed above. No comments such as
"the rest of the proof is left to the reader" or "this is beyond the scope of
this book" is ever made. Some unproved results are mentioned, with a ref-
erence, but not used later in the book.
At the end of each chapter there are a few problems which the teacher
can use for homework assignments. The teacher is advised to use them dis-
criminately, since some of them may be too hard for his students.
I would like to thank some of my past colleagues for joint work and the
influence they had on my work, and -herefore on this book: 1. Cederbaum,
M. R. Garey, J. E. Hopcroft, R. M. Karp, A. Lempel, A. Pnueli, A.
Shamir and R. E. Tarjan. Also, I would like to thank some of my former
Ph.D. students for all I have learned. from them: 0. Kariv, A. Itai, Y.
Perl, M. Rodeh and Y. Shiloach. Finally, I would like to thank E.
Horowitz for his continuing encouragement.

S.E.

Technion, Haifa, Israel


CONTENTS

PREFACE................................................ v

1. PATHSIN GRAPHS
1.1 Introduction to graph theory .......................... 1
1.2 Computer representation of graphs ..................... 3
1.3 Euler graphs ..................................... 5
1.4 De Bruijn sequences ................................. 8
1.5 Shortest-path algorithms ............................. 11
Problems ........................................... 18
References ......................................... 20

2. TREES
2.1 Tree definitions ..................................... 22
2.2 Minimum spanning tree .............................. 24
2.3 Cayley's theorem .................................... 26
2.4 Directed tree definitions .............................. 30
2.5 The infinity lemma .................................. 32
2.6 The number of spanning trees ......................... 34
2.7 Optimum branchings and directed spanning trees ......... 40
2.8 Directed trees and Euler circuits ....................... 46
Problems....................................... 49
References ......................................... 51

3. DEPTH-FIRST SEARCH
3.1 DFS of undirected graphs ............................ 53
3.2 Algorithm for nonseparable components ................ 57
3.3 DFS on digraphs .................................... 63
3.4 Algorithm for strongly-connected components ............ 64
Problems....................................... 66
References ......................................... 68

vii
viii Contents

4. ORDERED TREES
4.1 Uniquely decipherable codes .......................... 69
4.2 Positional trees and Huffrnan's optimization problem ...... 74
4.3 Application of the Huffman tree to sort-by-merge
techniques..................................... 80
4.4 Catalan numbers .................................... 82
Problems....................................... 87
References ......................................... 88

5. MAXIMUM FLOW IN A NETWORK


5.1 The Ford and Fulkerson algorithm .................... 90
5.2 The Dinic algorithm ................................. 97
5.3 Networks with upper and lower bounds ................ 104
Problems ........................................... 112
References ......................................... 115

6. APPLICATIONS OF NETWORK FLOW TECHNIQUES


6.1 Zero-one network flow ............................. 116
6.2 Vertex connectivity of graphs .......................... 121
6.3 Connectivity of digraphs z.rd edge connectivity ........... 130
6.4 Maximum matching in bipartite graphs ................. 135
6.5 Two problems on PERT cligraphs ...................... 138
Problems....................................... 142
References ......................................... 146

7. PLANAR GRAPHS
7.1 Bridges and Kuratowski's theorem ..................... 148
7.2 Equivalence ........................................ 160
7.3 Euler's theorem ..................................... 161
7.4 Duality ........................................ 162
Problems ........................................... 168
References ......................................... 170

8. TESTING GRAPH PLANARITY


8.1 Introduction .................................... 171
8.2 The path addition algorithm of Hopcroft and Tarjan ...... 172
8.3 Computing an st-numbering .......................... 180
Contents ix

8.4 The vertex addition algorithm of Lempel, Even and


Cederbaum ................................... 183
Problems....................................... 190
References ......................................... 191

9. THE THEORY OF NP-COMPLETENESS


9.1 Introduction ........................................ 192
9.2 The NP class of decision problems .................... 195
9.3 NP-complete problems and Cook's theorem ............. 198
9.4 Three combinatorial problems which are NPC ........... 204
Problems...................................... 209
References ......................................... 211

10. NP-COMPLETE GRAPH PROBLEMS


10.1 Clique, independent set and vertex cover ................ 212
10.2 Hamilton paths and circuits ........................ 214
10.3 Coloring of graphs ............................... 217
10.4 Feedback sets in digraphs ............................ 223
10.5 Steiner tree ..................................... 225
10.6 Maximum cut ................................... 226
10.7 Linear arrangement .................................. 230
10.8 Multicommodity integral flow ......................... 233
Problems...................................... 240
References ......................................... 243

INDEX ................................................ 245


Chapter 1

PATHS IN GRAPHS
1.1 INTRODUCTION TO GRAPH THEORY

A graph G(V. E) is a structure which consists of a set of vertices V = {v , ,


v 2 , . .. } and a setof edgesE = {eI, e 2, . . .}; each edgee is incident to the
elements of an unordered pair of vertices {u, v} which are not necessarily dis-
tinct.
Unless otherwise stated, both V and E are assumed to be finite. In this
case we say that G is finite.
For example, consider the graph represented in Figure 1.1. Here V = {v 1,
V2 , v 3 , V4 , vs}, E ={e
1 , e2 , e3 , e4 , eS} . The edge e2 is incident to v1 and v2 ,
which are called its endpoints. The edges e4 and es have the same endpoints
and therefore are called paralleledges. Both endpoints of the edge eI are the
same; such an edge is called a self-loop.
The degree of a vertex v, d(v), is the number of times v is used as an end-
point of the edges. Clearly, a self-loop uses its endpoint twice. Thus, in our
example d(v 4 ) = 1, d(v2 ) = 3 and d(v 1 ) = 4. Also, a vertex v whose degree is
zero is called isolated;in our example v 3 is isolated since d(v3 ) = 0.

Lemma 1.1: The number of vertices of odd degree in a finite graph is even.

Proof: Let I VI and JEl be the number of vertices and edges, respectively.
Then,

WvI
Ed(vi) = 2 El,

since each edge contributes two to the left hand side; one to the degree of
each of its two endpoints, if they are different, and two to the degree of its
endpoint if it is a self-loop. It follows that the number of odd degrees must be
even.
Q.E.D.

1
2 Paths In Graphs

Figure 1.1

The notation u -v means that the edge e has u and v as endpoints. In this
case we also say that e connects vertices u and v, and that u and v are adja-
cent.
A path is a sequence of edges e,, e2, .such that:
..

(1) ei and ei+1 have a common endpoint;


(2) if ei is not a self-loop and is not the first or last edge then it shares one of
its endpoints with ei-, and the other with ei+,.

The exception specified in (2) is necessary to avoid the following situation:


Consider the graph represented in Figure 1.2.

Figure 1. 2
Computer Representation of Graphs 3

We do not like to call the sequence e,, e2 , e3 a path, and it is not, since the
only vertex, b, which is shared by e 1and e 2 is also the only vertex shared by e 2
and e3 . But we have no objection to calling e,, e 4 , e3 a path. Also, the se-
quence e,, e2 , e2, e3 is a path since e1 and e2 share b, e2 and e2 share d, e2
ande 3 share b. It is convenient to describe a path as follows:vo e' v, 2 .-..
Vi-, v,. Here the path is el, e2, . . ., et and the endpoints shared are trans-
parent; vo is called the start and v, is called the end vertex. The length of the
path is l.
A circuit is a path whose start and end vertices are the same.
A path is called simple if no vertex appears on it more than once. A
circuit is called simple if no vertex, other than the start-end vertex, ap-
pears more than once, and the start-end vertex does not appear elsewhere
in the circuit; however, u -' v _' u is not considered a simple circuit.
If for every two vertices u and v there exists a path whose start vertex is u
and whose end vertex is v then the graph is called connected.
A digraph (or directed graph) is defined similarly to a graph except that
the pair of endpoints of an edge is now ordered; the first endpoint is called
the start-vertex of the edge and the second (which may be the same) is called
its end-vertex. The edge (u -- v) e is said to be directed from u to v. Edges
with the same start vertex and the same end vertex are called parallel, and if
u • v, u ' v and v 2 u then e l and e 2 are antiparallel.An edge u -u is called
a self-loop.
The outdegree, d.o, (v), of a vertex v is the number of edges which have v as
their start-vertex; indegree, din (v), is defined similarly. Clearly, for every
graph
MI IvI
di (v i) = dou (v i).
A directedpath is a sequence of edges e,, e 2, ... such that the end vertex
of ei- is the start vertex of ei. A directed path is a directed circuitif the start
vertex of the path is the same as its end vertex. The notion of a directed path
or circuit being simple is defined similarly to that in the undirected case. A
digraph is said to be strongly connected if for every vertex u and every vertex
v there is a directed path from u to v; namely, its start-vertex is u and its end-
vertex is v.

1.2 COMPUTER REPRESENTATION OF GRAPHS

In order to understand the time and space complexities of graph


algorithms one needs to know how graphs are represented in the computer
4 Paths in Graphs

memory. In this section two of the most common methods of graph represen-
tation are briefly described.
Graphs and digraphs which have no parallel edges are called simple. In
cases of simple graphs, the specification of the two endpoints is sufficient to
specify the edge; in cases of digraph the specification of the start-vertex and
end-vertex is sufficient. Thus, we can represent a graph or digraph of n ver-
tices by an n X n matrix C, where Cy = 1 if there is an edge connecting
vertex v, to v; and Cy = 0, if not. Clearly, in the case of graphs Cy = 1 im-
plies C,, = 1; or in other words, C is symmetric. But in the case of di-
graphs, any n X n matrix of zeros and ones is possible. This matrix is
called the adjacency matrix.
Given the adjacency matrix of a graph, one can compute d(v,) by counting
the number of ones in the i-th row, except that a one on the main diagonal
contributes two to the count. For a digraph, the number of ones in the i row
is equal to dou,(v i) and the number of ones in the i column is equal to d i(v i).
The adjacency matrix is not an efficient representation of the graph in case
the graph is sparse; namely, the number of edges is significantly smaller than
n2 . In these cases the following representation, which also allows parallel
edges, is preferred.
For each of the vertices, the edges incident to it are listed. This incidence
list may simply be an array or may be a linked list. We may need a table
which tells us the location of the list for each vertex and a table which tells us
for each edge its two endpoints (or start-vertex and end-vertex, in case of a
digraph).
We can now trace a path starting from a vertex, by taking the first edge on
its incidence list, look up its other endpoint in the edge table, finding the in-
cidence list of this new vertex etc. This saves the time of scanning the row of
the matrix, looking for a one. However, the saving is real only if n is large and
the graph is sparse, for instead of using one bit per edge, we now use edge
names and auxiliary pointers necessary in our data structure. Clearly, the
space required is O(IEI + IlVI), i.e., bounded by a constant times JEl +
IVI. Here we assume that the basic word length of our computer is large
enough to encode all edges and vertices, If this assumption is false then the
space required is O((IEI + IVI) log (lEl + IVl))*.
In practice, most graphs are sparse. Namely, the ratio (IEI + I VI)/ I VI 2
tends to zero as the size of the graphs increases. Therefore, we shall prefer
the use of incidence lists to that of adjacency matrices.

*The base of the log is unimportant (clearly greater than one), since this estimate is
only up to a constant multiplier.
Euler Graphs 5

The reader can find more about data structures and their uses in graph
theoretic algorithms in references 1 and 2.

1.3 EULER GRAPHS

An Euler path of a finite undirected graph G(V, E) is a path el, e2,. . ., e


such that every edge appears on it exactly once; thus, I = 1El. An undirected
graph which has an Euler path is called an Euler graph.

Theorem 1.1: A finite (undirected) connected finite graph is an Euler graph


if and only if exactly two vertices are of odd degree or all vertices are of even
degree. In the latter case, every Euler path of the graph is a circuit, and in
the former case, none is.

As an immediate conclusion of Theorem 1.1 we observe that none of the


graphs in Figure 1.3 is an Euler graph, because both have four vertices of
odd degree. The graph shown in Figure 1.3(a) is the famous Konigsberg
bridge problem solved by Euler in 1736. The graph shown in Figure 1.3(b) is
a common misleading puzzle of the type "draw without lifting your pen from
the paper".

Proof: It is clear that if a graph has an Euler path which is not a circuit, then
the start vertex and the end vertex of the path are of odd degree, while all the
other vertices are of even degree. Also, if a graph has a Euler circuit, then all
vertices are of even degree.

(a) Mb
Figure 1.3
6 Paths In Graphs

Assume now that G is a finite graph with exactly two vertices of odd
degree, a and b. We shall described now an algorithm for finding a Euler
path from a to b. Starting from a we choose any edge adjacent to it (an edge
of which a is an endpoint) and trace it (go to its other endpoint). Upon enter-
ing a vertex we search for an unused incident edge. If the vertex is neither a
nor b, each time we pass through it we use up two of its incident edges. The
degree of the vertex is even. Thus, the number of unused incident edges after
leaving it is even. (Here again, a self-loop is counted twice.) Therefore, upon
entering it there is at least one unused incident edge to leave by. Also, by a
similar argument, whenever we reenter a we have an unused edge to leave by.
It follows that the only place this process can stop is in b. So far we have
found a path which starts in a, ends in b, and the number of unused edges in-
cident to any vertex is even. Since the graph is connected, there must be at
least one unused edge which is incident to one of the vertices on the existing
path from a to b. Starting a trail from this vertex on unused edges, the only
vertex in which this process can end (because no continuation can be found)
is the vertex in which it started. Thus, we have found a circuit of edges which
were not used before, and in which each edge is used at most once: it starts
and ends in a vertex visited in the previous path. It is easy to change our path
from a to b to include this detour. We continue to add such detours to our
path as long as not all edges are in it
The case of all vertices of even degrees is similar. The only difference is
that we start the initial tour at any vertex, and this tour must stop at the same
vertex. This initial circuit is amended as before, until all edges are included.
Q.E.D.
In the case of digraphs, a directedEttler path is a directed path in which
every edge appears exactly once. A directedEuler circuit is defined similarly.
Also a digraph is called Euler if it has a directed Euler path (or circuit).
The underlying (undirected) graph of a digraph is the graph resulting from
the digraph if the direction of the edges is ignored. Thus, the underlying
graph of the digraph shown in Figure '1.4(a) is shown in Figure 1.4(b).

Theorem 1.2: A finite digraph is an Lutler digraph if any only if its underly-
ing graph is connected and one of the following two conditions holds:
1. There is one vertex a such that d o, (a) = di.(a) + 1 and another vertex b
such that d.out(b) + 1 = din (b), while for all other vertices v, d.out(v) = din (v).
2. For all vertices v, do0 t(v) = di.(v).
If 1 holds then every directed Euler path starts in a and ends in b. If 2 holds
then every directed Euler path is a directed Euler circuit.
Euler Graphs 7

(a) (b)
Figure 1.4

The proof of the theorem is along the same lines as the proof of Theorem 1. 1,
and will not be repeated here.
Let us make now a few comments about the complexity of the algorithm
for finding an Euler path, as described in the proof of Theorem 1.1. Our pur-
posed is to show that the time complexity of the algorithm is O( IEl); namely,
there exists a constant K such that the time it takes to find an Euler path is
bounded by K - E l.
In the implementation, we use the following data structures:

1. Incidence lists which describe the graph.


2. A doubly-linked list P describing the path. Initially this list is empty.
3. A vertex table, specifying for each vertex v the following data:
(a) A mark which tells whether v appears already on the path. Initially all
vertices are marked "unvisited".
(b) A pointer N(v), to the next edge on the incidence list, which is the first
not to have been traced from v before. Initially N(v) points to the first
edge on v's incidence list.
(c) A pointer E(v) to an edge on the path which has been traced from v.
Initially E(v) is "undefined".
4. An edge table which specified for each edge its two endpoints and whether
it has been used. Initially, all edges are marked "unused".
5. A list L of vertices all of which have been visited. Each vertex enters this
list at most once.

First let us describe a subroutine TRACE(d, P), where d is a vertex and P


is a doubly linked list, initially empty, for storage of a traced path. The trac-
ing starts in d and ends when the path, stored in P, cannot be extended.

TRACE(d, P):
(1) v - d
(2) If v is "unvisited", put it in L and mark it "visited".
(3) If N(v) is "used" but is not last on v's incidence list then have N(v) point
to the next edge and repeat (3).
(4) If N(v) is "used" and it is the last edge on v's incidence list then stop.
8 Paths In Graphs

(5) e - N(v)
(6) Add e to the end of P.
(7) If E(v) is "undefined" then E(v) is made to point to the occurrence of e
in P.
(8) Mark e "used".
(9) Use the edge table to find the other endpoint u of e.
(10) v - u and go to (2).

The algorithm is now as follows:

(1) d - a
(2) TRACE(d, P). [Comment: The subroutine finds a path from a to b.]
(3) If L is empty, stop.
(4) Let u be in L. Remove u from L.
(5) Start a new doubly linked list of edges, P', which is initially empty.
[Comment: P' is to contain the detour from u.1
(6) TRACE(u, P')
(7) Incorporate P' into P at E(u). [Comment: This joins the path and the
detour into one, possibly longer path. (The detour may be empty.) Since
the edge E(u) starts from u, the detour is incorporated in a correct
place.]
(8) Go to (3).

It is not hard to see that both the time and space complexity of this
algorithm is O(IEI).

1.4 DE BRUUN SEQUENCES

Let E = {O, 1, . . ., a - 1} be an alphabet of a letters. Clearly there are a n


different words of length n over E. A de Bruijn sequence* is a (circular) se-
quence aoa, ... aL-1 over E such that for every word w of length n over E
there exists a unique i such that

aiai+, ... ai-n- = W,

where the computation of the indices is modulo L. Clearly if the sequence


satisfies this condition, the L = a,. The most important case is that of a = 2.

*Sometimes they are called maximum-length shift register sequences.


De Bruijn Sequences 9

Binary de Bruijn sequences are of great importance in coding theory and are
implemented by shift registers. (See Golomb's book [3] on the subject.) The
interested reader can find more information on de Bruijn sequences in
references 4 and 5. The only problem we shall discuss here is the existence of
de Bruijn sequences for every a > 2 and every n.
Let us describe a digraph Go,,(V, E) which has the following structure:

1. V is the set of all all-I words of length n - 1 over


2. E is the set of all a, words of length n over E.
3. The edge bib2 ... b, starts at vertex b1b2 ** bt, and ends at vertex b2 b3
... bn.

The graphs G2. 3, G2,4 , and G3,2 are shown in Figures 1.5, 1.6 and 1.7
respectively.

These graphs are sometimes called de Bruijn diagrams, or Good's


diagrams, or shift register state diagrams. The structure of the graphs is such
that the word w2 can follow the word w, in a de Bruijn sequence only if the
edge W2 starts at the vertex in which w, ends. Also it is clear that if we find a
directed Euler circuit (a directed circuit which uses each of the graph's edges
exactly once) of Ge,,,, then we also have a de Bruijn sequence. For example,
consider the directed Euler circuit of G2, 3 (Figure 1.5) consisting of the follow-
ing sequence of edges:

000, 001, 011, 111, 110, 101, 010, 100.

The implied de Bruijn sequence, 00011101, follows by reading the first letter
of each word in the circuit. Thus, the question of existence of de Bruijn se-
quences is equivalent to that of the existence of direct Euler circuits in the
corresponding de Bruijn diagram.

Theorem 1.3: For every positive integers a and n, G, has a directed Euler
circuit.

Proof: We wish to use Theorem 1.2 to prove our theorem. First we have to
show that the underlying undirected graph is connected. In fact, we shall
show that Ge,, is strongly connected. Let b 1b2 ... b,, and cIc2 ... c.-, be
any two vertices; the directed path b1b2 ... b.-ici, b2b3 ... b-IcIc2 , . . .,
b.- 1 cIc2 ... c**-I leads from the first to the second. Next, we have to show
that do(v) = di(v) for each vertex v. The vertex bib2 ... b.-l is entered by
10 Paths In Graphs

Figure 1.5

Figure 1.6
Shortest-Path Algorithms 11

edges cblb2 ... b.- 1 , where c can be chosen in a ways, and is the start vertex
of edges b1b2 ... b -c,1 where again c can be chosen in a ways.
Q.E.D.

Corollary 1.1: For every positive integers a and n there exists a de Bruijn
sequence:

1.5 SHORTEST-PATH ALGORITHMS

In general the shortest-path problems are concerned with finding shortest


paths between vertices. Many interesting problems arise, and the variety
depends on the type of graph in our application and the exact question we
want to answer. Some of the characteristics which may help in defining the
exact problem are as follows:

1. The graph is finite or infinite.


2. The graph is undirected or directed.
3. The edges are all of length 1, or all lengths are non-negative, or negative
lengths are allowed.
4. We may be interested in shortest paths from a given vertex to another, or
from a given vertex to all the other vertices, or from each vertex to all the
other vertices.
5. We may be interested in finding just one path, or all paths, or counting
the number of shortest paths.

00

il
Figure 1.7
12 Paths In Graphs

Clearly, this section will deal only with very few of all the possible prob-
lems. An attempt is made to describe the most important techniques.
First let us consider the case of a finite graph G in which two vertices s and
t are specified. Our task is to find a path from s to t, if there are any, which
uses the least number of edges. Clearly this is the case of the finite, un-
directed graph, with all length of edges being equal to 1, and where all we
want is one path from a given vertex to another. In fact, the digraph case is
just as easy and can be similarly solved.
The algorithm to be used here was suggested by Moore [6] and by now is
widely used. It is well known as the Breadth FirstSearch (BES) technique.
At first no vertices of the graph are considered labeled.

1. Label vertex s with 0.


2. i - 0
3. Find all unlabeled vertices adjacent to at least one vertex labeled i. If none
are found, stop.
4. Label all the vertices found in 03) with i + 1.
5. If vertex t is labeled, stop.
6. i - i + 1 and go to (3).

Clearly we can remove step 5 from the algorithm, and the algorithm is still
valid for finite graphs. However, step 5 saves the work which would be
wasted after t is labeled, and it permits the use of the algorithm on infinite
graphs whose vertices are of finite degree and in which there is a (finite) path
between s and t.
Let the distance between u and v be the least number of edges in a path
connecting u and v, if such a path exists, and oo if none exists.

Theorem 1.3: The BFS algorithm computes the distance of each vertex from
s, if t is not closer.

Proof: Let us denote the label of a vertex v, assigned by the BFS algorithm,
by X(v).

First we show that if a vertex is labeled )(v) = k, then there is a path of


length k from s to v. Such a path can be traced as follows: There must be a
vertex Vk-I adjacent to v = Vk, labeled k- 1, and similarly, there must
be a vertex Vk-i-, adjacent to vk-i labeled k- i - 1 for i = 0, 1, . . ., -1.
-
Clearly vo = s, since s is the only vertex labeled 0. Thus, vo - v, Vk-
- Vk is a path of length k from s to v.
Shortest-Path Algorithms 13

Now, let us prove by induction on I that if v is of distance 1from s and if t is


not closer to s, then ;(v) = 1.
After Step 1, X(s) = 0, and indeed the distance from s to s is zero.
Assume now that the statement holds for shorter distances, let us show
that it must hold for 1 too. Lets - v - V2 - v,- - v be a shortest path
from s to v. Clearly, s - v, - v 2 . . . V-2 -v,-, is a shortest path from s to
v,-,. If t is not closer to s than v then clearly it is not closer than v,-, either.
By the inductive hypothesis X(v, -) = I - 1. When i = 1 - 1, v receives the
label 1. It could not have been labeled before since if it were then its label is
less than 1, and there is a shorter path from s to v, in contradiction to l's
definition.
Q.E.D.

It is clear that each edge is traced at most twice, in this algorithm; once
from each of its endpoints. That is, for each i the vertices labeled i are
scanned for their incident edges in step 3. Thus, if we use the incidence lists
data structures the algorithm will be of time complexity O(jE ).
The directed case in even simpler because each edge is traced at most once.
A path from s to t can be traced by moving now from t to s, as described in
the proof of Theorem 1.3. If we leave for each vertex the name of the edge
used for labeling it, the tracing is even easier.
Let us now consider the case of a finite digraph, whose edges are assigned
with non-negative length; thus, each edge e is assigned a length l(e) 2 0.
Also, there are two vertices s and t and we want to find a shortest directed
path from s to t, where the length of a path is the sum of the lengths of its
edges.
The following algorithm is due to Dijkstra [71:
1. X(s) - 0 and for all v • s, X(v) - xc.
2. T - V.
3. Let u be a vertex in T for which X(u) is minimum.
4. If u = t, stop.
5. For every edge u -~ v, if v E T and Mv) > M(u) + I(e) then M(v) - (u) +
I(e).
6. T-T-{u} and go to step 3.
Let us denote the distance of vertex v from s by 6(v). We want to show that
upon termination 5(t) = X(t); that is, if 1(t) is finite than it is equal to 6(t)
and if (t) is infinite then there is no path from s to t in the digraph.

Lemma 1.2: In Dijkstra's algorithm, if A(v) is finite then there is a path from
s to v whose length is X(v).
14 Paths In Graphs

Proof: Let u be the vertex which gave v its present label X(v); namely, X(u) +
1(e) = (v), where u e V. After this assignment took place, u did not change
its label, since in the following step (step 6) u was removed from the set T (of
temporarily assigned vertices) and its label remained fixed from there on.
Next, find the vertex which gave u its final label X(u), and repeating this
backward search, we trace a path from s to v whose length is exactly X(v).
The backward search finds each time a vertex which has left T earlier, and
therefore no vertex on this path can be repeated; it can only terminate in s
which has been assigned its label in step 1.
Q.E.D.

Lemma 1.3: In Dijkstra's algorithm, when a vertex is chosen (in Step 3), its
label X(u) satisfies X(u) = 6(u).

Proof: By induction on the order in which vertices leave the set T. The first
one to leave is s, and indeed X(s) = b(s) == 0.

Assume now that the statement holds for all vertices which left T before u.
If X(u) = xc, let u ' be the first vertex whose label X(u ') is infinite when it is
chosen. Clearly, for every v in T, at this point, X(v) = o, and for all vertices
v'E V - T, X(v') is finite. Therefore, there is no edge with a start-vertex in
V - T and end-vertex in T. It follows that there is no path from s (which is in
V - 7) to u (which is in 7).
If X(u) is finite, then by Lemma 1.2, X(u) is the length of some path from s
to u. Thus, X(u) 2 6(u). We have to show that X(u) > 6(u) is impossible. Let
ashortest path fromstoubes = v. 'p "** . - Vk = u. Thus, for
every i = 0O 1, . . ., k

6(vW)= L I(e ).

Let vi be the right most vertex on this path to leave T before u. By the induc-
tive hypothesis

X((v1) = 6(v1 ) - I(ej).


j=I

If vj+1 • u, then N(vi+ 1) c X(vi) + I(ei+±) after vi has left T. Since labels
can only decrease if they change at all, when u is chosen X(vi+:) still satisfies
this inequality. We have:

X(vi+±) C X(vi) + I(ei+±) = 6(vi) + l(ei+-) = 6(Vi+i) ' 6(u),


Shortest-Path Algorithms is

and if 6(u) < X(u), u should not have been chosen. In case v,+, = u, the
same argument shows directly that X(u) c 6(u).
Q.E.D.

It is an immediate corollary of Lemma 1.3 that X(t) = 6(t) upon termina-


tion.
Let us now consider the complexity of Dijkstra's algorithm. In step 3, the
minimum label of the elements of T has to be found. Clearly this can be done
in I Tj - 1 comparisons. At first T = V; it decreases by one each time and
the search is repeated I VI times. Thus, the total time spent on step 3 is
O(i VI2). Step 5 can use each edge exactly once. Thus it uses, at most,
O( El) time. Since it makes no sense to have parallel edges (for all but the
shortest can be dropped) or self-loops, JEl c | VI * (I VI - 1). Thus, the
whole algorithm is of O( i VI 2) complexity.
Clearly, for sparse graphs the BFS algorithm is better; unfortunately it
does not work if not all edge lengths are equal.
Dijkstra's algorithm is applicable to undirected graphs too. Simply repre-
sent each edge of the graph by two anti-parallel directed edges with the same
length. Also, it can be used on infinite graphs, if outgoing degrees are finite
and there is a finite directed path from s to t. However, this algorithm is not
applicable if 1(e) may be negative; Lemma 1.2 still holds, but Lemma 1.3
does not.
Next, an algorithm for finding the distance of all the vertices of a finite
digraph from a given vertex s, is described. It allows negative edge lengths,
but does not allow a directed circuit whose length (sum of the lengths of its
edges) is negative. The algorithm is due to Ford [8, 9]:

1. X(s) - Oand for every v X s, A(v) - ao.


2. As long as there is an edge u -r v such that X(v) > X(u) + I(e) replace X(v)
by X(u) + 1(e).

For our purposes X is not greater than X + k, even if k is negative.


It is not even obvious that the algorithm will terminate; indeed, it will not
if there is a directed circuit accessible from s (namely, there is a directed path
from s to one of the vertices on the circuit) whose length is negative. By going
around this circuit the labels will be decreased and the process can be
repeated indefinitely.

Lemma 1.4: In the Ford algorithm, if X(v) is finite then there is a directed
path from s to v whose length is X(v).
16 Paths In Graphs

Proof: As in the proof of the similar previous statements, this is proved by


displaying a path from s to v, and its construction is backwards, from v to s.
First we find the vertex u which gave v its present label \(v). The value of X(u)
may have decreased since, but we shall refer to its value X' (u) at the time
that it gave v its label. Thus, X(v) = t(u) + 1(e), where u - v. We continue
from u to the vertex which gave it the value X'(u) etc., each time referring to
an earlier time in the running of the algorithm. Therefore, this process
must end, and the only place it can end is in s.
Q.E.D.

The lemma above is even true if there are negative length directed circuits.
But if there are no such circuits, the path traced in the proof cannot return to
a vertex visited earlier. For if it does, then by going around the directed cir-
cuit, a vertex improved its own label; this implies that the sum of the edge
lengths of the circuit is negative. Therefore we have:

Lemma 1.5: In the Ford algorithm, if the digraph has no directed circuits of
negative length and if A(v) is finite then there is a simple directed path from s
to v whose length is X(v).

Since each value, X(v), corresponds to at least one simple path from s to v,
and since the number of simple directed paths in a finite digraph is finite, the
number of values possible for X(v) is finite. Thus, the Ford algorithm must
terminate.

Lemma 1.6: For a digraph with no negative directed circuit, upon termina-
tion of the Ford algorithm, X(v) = 6(v) for every vertex v.

Proof: By Lemma 1.5, )(v) 2 6(v). If X(v) > 6(v), let s =v v . . .


Vk- e / Vik = v be a shortest path from s to v. Clearly, for every i =0, 1,

.. k

Wi)- a(ej).
j=1

Let vi be the first vertex on this path for which X(vi) > 6(vi). Since X(vi-1)
6(vi- ), the edge vi-, i vi can be used to lower X(vi) to v(vi-) + l(ei),
(which is equal to 6(v 1)). Thus, the algorithm should not have terminated.
Q.E.D.
Shortest-Path Algorithms 17

We can use a simple device to bound the number of operation to 0(|E| -


IVI). Order the edges: e 1, e2, .. ., e jE. Now, perform step 2 by first check-
ing e,, then e 2, etc., and improving labels accordingly. After the first such
sweep, go through additional sweeps, until an entire sweep produces no im-
provement. If the digraph contains no negative directed circuits then the pro-
cess will terminate. Furthermore, if a shortest path from s to v consists of k
edges, then by the end of the kth sweep v will have its final label; this is easily
proved by induction on k. Since k is bounded by IVI, the whole algorithm
takes at most O( |E * IVI) steps. Moreover, if by the IVI th sweep any im-
provement of a label takes place then the digraph must contain a negative
circuit. Thus, we can use the Ford algorithm to detect the existence of a
negative circuit, if all vertices are accessible from s. If the existence of a
negative circuit is indicated, we can find one by starting a backward search
from a vertex whose label is improved in the IVI th sweep. To this end we
need for each vertex v a pointer to the vertex u which gave v its last label. This
is easily achieved by a simple addition to step 2.
The Ford algorithm cannot be used on undirected graphs because any
negative edge has the effect of a negative circuit; one can go on it back and
forth decreasing labels indefinitely. All three algorithms can be used to find
the distances of all vertices from a given vertex s; the BFS and Dijkstra's
algorithm have to be changed: instead of stoping when t is labeled or taken
out of T, stop when all accessible vertices are labeled or when T is empty. The
bounds on the number of operations remain O(IE ), 0(I VI 2) and 0(IEI -
IVI) respectively for the BFS, Dijkstra and the Ford algorithm. If this is
repeated from all vertices, in order to find the distance from every vertex to
all the others, the respective complexities are O(IEI I VI), °(| VI 3) and
O(IEI . I VI 2). Next, let us describe an algorithm which solves the case with
negative lengths in time 0(1 VI 3).
Let G(V, E) be a finite digraph with V = {1, 2, ... , n). The length of
edge e is denoted by l(e), as before, and it may be negative. Define

60j,j) = le) if i _ej,


0c if there is no edge from i toj.

Let k (i,j) be the length of a shortest path from i toj among all paths which
may pass through vertices 1, 2, ... , k but do not pass through vertices k +
1,k + 2, ... ,n.
18 Paths In Graphs

Floyd's algorithm [10] is as follows:

1. k - 1
2. For every 1 c i, j c n compute

6k(ij) - 1 k) + 6k- 1(k,j)}.


Min{6k-'(ij), 6 -'(i,

3. If k = n, stop. If not, increment k and go to step 2.

The algorithm clearly yields the right answer; namely, 6"(i, j) is the
distance from i toj. The answer is on y meaningful if there are no negative
circuits in G. The existence of negative circuits is easily detected by 6 k(i, i) <
0. Each application of step 2 requires i ' operations, and step 2 is repeated n
times. Thus, the algorithm is of complexity 0(n 3 ).
For the case of finite graphs with non-negative edge lengths, both the
repeated Dijkstra algorithm and Floyd's take 0(1 VI3). Additional informa-
tion on the shortest path problem can be found in Problems 1.9 and 1.10 and
references 11 and 12.

PROBLEMS

1.1 Prove that if a connected (undirected) finite graph has exactly 2k ver-
tices of odd degree then the set of edges can be partitioned into k paths
such that every edge is used exactly once. Is the condition of connec-
tivity necessary or can it be replaced by a weaker condition?
A Hamilton path (circuit) is a simple path (circuit) on which every
vertex of the graph appears exactly once.

1.2 Prove that the following graph has no Hamilton path or circuit.
Problems 19

1.3 Prove that in every completely connected directed graph (a graph in


which every two vertices are connected by exactly one directed edge in
one of the two possible directions) there is always a directed Hamilton
path. (Hint: Prove by induction on the number of vertices.)
1.4 Prove that a directed Hamilton circuit of G0 ,, corresponds to a directed
Euler circuit of G.,,-,. It is true that G,,, always has a direct Hamilton
circuit?
1.5 In the following assume that G(V, E) is a finite undirected graph, with
no parallel edges and no self-loops.
(a) Describe an algorithm which attempts to find a Hamilton circuit in
G by working with a partial simple path. If the path cannot be ex-
tended in either direction then try to close it into a simple circuit by
the edge between its endpoints, if it exists, or by a switch, as sug-
gested by the diagram, where edges a and b are added and c is
deleted. Once a circuit is formed, look for an edge from one of its
vertices to a new vertex, and open the circuit to a now longer
path, etc.

(b) Prove that if for every two vertices u and v, d(u) + d(v) 2 n, where
n=I VI, then the algorithm will never fail to produce a Hamilton
circuit.
(c) Deduce Dirac's theorem [13]: If for every vertex v, d(v) > n/2,
then G has a Hamilton circuit.
1.6 Describe an algorithm for finding the number of shortest paths from s
to t after the BFS algorithm has been performed.
1.7 Repeat the above, after the Dijkstra algorithm has been performed.
Assume 1(e) > 0 for every edge e. Why is this asumption necessary?
1.8 Prove that a connected undirected graph G is orientable (by giving
each edge some direction) into a strongly connected digraph if and only
if each edge of G is in some simple circuit in G. (A path u - V U is
not considered a simple circuit.)
1.9 The transitiveclosure of a digraph G(V, E) is a digraph G '(V, E) such
that there is an edge u - v in G' if and only if there is a (non-empty)
20 Paths In Graphs

directed path from u to v in G. For the BFS, Dijkstra and Floyd's


algorithms, explain how they can be used to construct G' for a given
G, and compare the complexities of the resulting algorithms.
1.10 The following algorithm, due tc Dantzig [14], finds all distances in a
finite digraph, like Floyd's algorithm. Let bk(i, j) be the distance from i
toj, where 1 ' i, j < k and no vertices higher than k are used on the
path. Let k(j, i) = 0 for all i and k. Also, let l(i, j) be 1(e) if i e j, and
oo if no such edge exists.
(1) 6(1, 1) - Min {O, 1(1, 1)}.
(2) k - 2
(3) For 1 - i < k do
bk(i, k) - Mini,i<k{bk- 1 1ij) + i(j, k))
bk(k, i) - Minlsj<k{l(k,j) + bk-l(j, i)}
(4) For 1 ' i,j < k do
6k(i, j) - Min {k -(i, j). 5k(i, k) + o k(k, j)}.
(5) If k = n, stop, If not, increment k and go to step 3.

Show that Dantzig's algorithm is valid. How are negative circuits de-
tected? What is the time complexity of this algorithm?

REFERENCES

[1] Knuth, D. E., The Art of Compuler Programming, Vol. 1: Fundamental


Algorithms, Addison-Wesley, 1968.
[2] Aho, A. V., Hopcroft, J. E., and Ullman, J. D., The Design and Analysis of
Computer Algorithms, Addison-Wesley, 1974.
[3] Golomb, S. W., Shift Register Sequ,ences, Holden-Day, 1967.
[4] Berge, C., The Theory of Graphsanti Its Applications, Wiley, 1962, Chapter 17.
[51 Hall, M., Jr., CombinatorialTheor), Blaisdell, 1967, Chapter 9.
[6] Moore, E. F., "The Shortest Path Through a Maze", Proc. Iternat. Symp.
Switching Th., 1957, Part II, Harvard Univ. Press, 1959, pp. 285-292.
[7] Dijkstra, E. W., "A Note on Two Problems in Connection with Graphs",
Numerische Math., Vol. 1, 1959, pp. 269-271.
[8] Ford, L. R., Jr., "Network Flow Theory", The Rand Corp., P-923, August,
1956.
[91 Ford, L. R., Jr. and Fulkerson. D. R., Flows in Networks, Princeton Univ.
Press, 1962, Chap. III, Sec. 5.
[10] Floyd, R. W., "Algorithm 97: Shortest Path", Comm. ACM, Vol. 5, 1962, p.
345.
References 21

[11] Dreyfus, S. E., "An Appraisal of Some Shortest-Path Algorithms", Operations


Research, Vol. 17, 1969, pp. 395-412.
[12] Lawler, E. L., Combinatorial Optimization: Networks and Matroids, Holt,
Rinehart and Winston, 1976, Chapter 3.
[13] Dirac, G. A., "Connectivity Theorems for Graphs", Quart. J. Math., Ser. (2),
Vol. 3, 1952, pp. 171-174.
[14] Dantzig, G. B., "All Shortest Routes in a Graph", Oper. Res. House, Stanford
Univ. Tech. Rep. 66-3, November 1966.
Chapter 2

TREES

2.1 TREE DEFINITIONS

Let G(V, E) be an (undirected), finite or infinite graph. We say that


G is circuit-free if there are no simple circuits in G. G is called a tree if
it is connected and circuit-free.

Theorem 2.1: The following four conditions are equivalent:


(a) G is a tree.
(b) G is circuit-free, but if any new edge is added to G, a circuit is formed.
(c) G contains no self-loops and for every two vertices there is a unique
simple path connecting them.
(d) G is connected, but if any edge is deleted from G, the connectivity of G
is interrupted.

Proof: We shall prove that conditions (a) - (b) * (c) - (d) - (a).

(a) w (b): We assume that G is connected and circuit-free. Let e be


a new edge, that is e 0 E; the two endpoints of e, a and b, are elements
of V. If a = b, then e forms a self-loop and therefore a circuit exists.
If a • b, there is a path in G (without e) between a and b; if we add e,
this path with e forms a circuit.
(b) w (c): We assume that G is circuit-free and that no edge can be
added to G without creating a circuit. Let a and b be any two vertices of
G. If there is no path between them, then we can add an edge between a
and b without creating a circuit. Thus, G must be connected. Moreover, if
there are two simple paths, P and P', between a and b, then there is a circuit
in G. To see this, assume that P = e, e2, . . ., el and P' = e 1 ', e 2 ', * * *,
em'. Since both paths are simple, one cannot be the beginning of the
other. Let i be the first index for which ei P ei', and let v be the first
vertex on ej, ei+-, ... , el which is also on ei', ei+:', . . ., e",'. The two

22
Tree Definitions 23

disjoint subpaths between the branching off vertex and v form a simple
circuit in G.
(c) - (d): We assume the existence of a unique simple path between
every pair of vertices of G. This implies that G is connected. Assume now
that we delete an edge e from G. Since G has no self-loops, e is not a self-
loop. Let a and b be e's endpoints. If there is now (after the deletion of e)
a path between a and b, then G has more than one simple path between a
and b.
(d) - (a): We assume that G is connected and that no edge can be
deleted without interrupting the connectivity. If G contains a simple cir-
cuit, any edge on this circuit can be deleted without interrupting the con-
nectivity. Thus, G is circuit-free.
Q.E.D.
There are two more common ways to define a finite tree. These are given
in the following theorem.

Theorem 2.2: Let G(V, E) be a finite graph and n = I VI. The following
three conditions are equivalent:

(a) G is a tree.
(b) G is circuit-free and has n -1 edges.
(c) G is connected and has n -1 edges.

Proof: For n = 1 the theorem is trivial. Assume n 2 2. We shall prove


that conditions (a) > (b) * (c) > (a).
(a) w (b): Let us prove, by induction on n, that if G is a tree, then its
number of edges is n - 1. This statement is clearly true for n = 1. As-
sume that it is true for all n < m, and let G be a tree with m vertices. Let
us delete from G any edge e. By condition (d) of Theorem 2.1, G is not
connected any more, and clearly is broken into two connected components
each of which is circuit-free and therefore is a tree. By the inductive hy-
pothesis, each component has one edge less than the number of vertices.
Thus, both have m - 2 edges. Add back e, and the number of edges is
mr-1.
(b) > (c): We assume that G is circuit-free and has n - 1 edges. Let us
first show that G has at least two vertices of degree 1. Choose any edge e.
An edge must exist since the number of edges is n - 1 and n > 2. Extend
the edge into a path by adding new edges to its ends if such exist. A new
edge attached at the path's end introduces a new vertex to the path or a
24 Trees

circuit is closed. Thus, our path remains simple. Since the graph is finite,
this extension must terminate on both sides of e, yielding two vertices of
degree 1.
Now, the proof that G is connected proceeds by induction on the number
of vertices, n. The statement is obviously true for n = 2. Assume that it is
true for n = m - 1, and let G be a circuit-free graph with m vertices and
m - 1 edges. Eliminate from G a vertex v, of degree 1, and its incident
edge. The resulting graph is still circuit-free and has m - 1 vertices and
m - 2 edges; thus, by the inductive hypothesis it is connected. There-
fore, G is Lonnected too.
(c) w (a): Assume that G is connected and has n - 1 edges. If G con-
tains circuits, we can eliminate edges (without eliminating vertices) and
maintain the connectivity. When this process terminates, the resulting
graph is a tree, and, by (a) - (b), has n - 1 edges. Thus, no edge can be
eliminated and G is circuit-free.
Q.E.D.

Let us call a vertex whose degree is 1, a leaf. A corollary of Theorem 2.2


and the statement proved in the (b) = (c) part of its proof is the following
corollary:

Corollary 2.1: A finite tree, with more than one vertex, has at least two
leaves.

2.2 MINIMUM SPANNING TREE

A graph G'(V', E') is called a subgraph of a graph G(V, E), if


V' c V and E' ' E. Clearly, an arbitrary choice of V' ' V and E' ' E
may not yield a subgraph, simply because it may not be a graph; that is,
some of the endpoints of edges in E' may not be in V'.
Assume G(V, E) is a finite, connected (undirected) graph and each edge
e E E has a known length 1(e) > 0. Assume we want to find a connected
subgraph G'(V, E') whose length, E',ee l(e), is minimum; or, in other
words, we want to remove from G a subset of edges whose total length is
maximum, and which leaves it still connected. It is clear that such a sub-
graph is a tree. For G' is assumed to be connected, and since its length
is minimum, none of its edges can be removed without destroying its
connectivity. By Theorem 2.1 (see part (d)) G' is a tree. A subgraph of G,
which contains all of its vertices and is a tree is called a spanning tree of G.
Thus, our problem is that of finding a minimum-length spanning tree of G.
Minimum Spanning Tree 25

There are many known algorithms for the minimum spanning tree
problem, but they all hinge on the following theorem:

Theorem 2.3: Let U c V and e be of minimum length among the edges


with one endpoint in U and the other endpoint in V - U. There exists a
minimum spanning tree T such that e is in T.

Proof: Let To be a minimum spanning tree. If e is not in To, add e to To.


By Theorem 2.1 (part (b)) a circuit is formed. This circuit contains e and
at least one more edge u v, where u E U and v E V - U. Now, 1(e) <
l(e'), since e is of minimum length among the edges connecting U with
V - U. We can delete e' from To + e. The resulting subgraph is still
connected and by Theorem 2.2 is a tree, since it has the right number of
edges. Also, the length of this new tree, which contains e, is less than or
equal to that of To. Thus, it is optimal.
Q.E.D.
Let G(V, E) be the given graph, where V = {1, 2, ... , n}. We assume
that there are no parallel edges, for all but the shortest can be eliminated.
Thus, let l(i, j) be l(e) if there is an edge i--j, and infinity otherwise.
The following algorithm is due to Prim [11:
(1) t - 1, T - 0 and U - {1}.
(2) Let l(t, u) = MinVEv-u {I(t, v)}.
(3) T - T U {e} where e is the edge which corresponds to the length
l(t, U).
(4) U - U U {u}.
(5) If U = V, stop.
(6) For every v ( V - U, l(t, v) - Min{l(t, v), l(u, v)}.
(7) Go to Step (2).
(Clearly t = 1 throughout. We used t instead of 1 to emphasize that
l(t, v) may not be the original 1(1, v) after Step (6) has been applied.)
The algorithm follows directly the hint supplied by Theorem 2.3. The
"vertex" t represents the subset U of vertices, and for v E V - U l(t, v) is
the length of a shortest edge from a vertex in U to v. This is affected by
Step (6). Thus, in Step (2), a shortest edge connecting U and V - U is
chosen.
Although each choice of an edge is "plausible", it is still necessary to
prove that in the end, T is a minimum spanning tree.
Let a subgraph G'(V', E') be called an induced subgraph if E' con-
tains all the edges of E whose endpoints are in V'; in this case we say that
G' is induced by V'.
26 Trees

First observe, that each time we reach Step (5), T is the edge set of a
spanning tree of the subraph induced by U. This is easily proved by induc-
tion on the number of times we reach Step (5). We start with U = {1} and
T = 0 which is clearly a spanning tree of the subgraph induced by {I}.
After the first application of Steps (2), (3) and (4), we have two vertices in
U and an edge in T which connects them. Each time we apply Steps (2),
(3) and (4) we add an edge from a vettex of the previous U to a new vertex.
Thus the new T is connected too. Also, the number of edges is one less
than the number of vertices. Thus, by Theorem 2.2 (part (c)), T is a span-
ning tree.
Now, let us proceed by induction to prove that if the old T is a sub-
graph of some minimum spanning tree of G then so is the new one. The
proof is similar to that of Theorem 2.3. Let To be a minimum spanning
tree of G which contains T as a subgraph, and assume e is the next edge
chosen in Step (2) to connect betweer a vertex of U and V - U. If e is not
in To, add it to To to form To + e. It contains a circuit in which there is
one more edge, e', connecting a vertex of U with a vertex of V - U. By
Step (2), 1(e) c l(e'), and if we delete e' from To + e, we get an minimum
spanning tree which contains both T, as a subgraph, and e, proving that
the new T is a subgraph of some minimum spanning tree. Thus, in the end
T is a minimum spanning tree of G.
The complexity of the algorithm is °(| VI 2); Step (2) requires at most
IVI - 1 comparisons and is repeated IVI - 1 times, yielding O(1 VI 2).
Step (6) requires one comparison for each edge; thus, the total time spent
on it is O(IEI).
It is possible to improve the algorithm and the interested reader is ad-
vised to read the Cheriton and Tarjan paper [2]. We do not pursue this
here because an understanding of advanced data structures is necessary.
The faster algorithms do not use any graph theory beyond the level of this
section.
The analogous problem for diagraphs, namely, that of finding a subset
of the edges E' whose total length is minimum among those for which
(V, E') is a strongly connected subgraph, is much harder. In fact, even the
case where 1(e) = 1 for all edges is hard. This will be discussed in Chap-
ter 10.

2.3 CAYLEY'S THEOREM

In a later section we shall consider the question of the number of span-


ning trees in a given graph. Here we consider the more restricted, and yet
Cayley's Theorem 27

interesting problem, of the number of trees one can define on a given set of
vertices, V = {1, 2, . . ., n}.
For n = 3, there are 3 possible trees, as shown in Figure 2.1. Clearly,
for n = 2 there is only one tree. The reader can verify, by exhausting all
the cases, that for n = 4 the number of trees is 16. The following theorem
is due to Cayley [3]:

Theorem 2.4: The number of spanning trees for n distinct vertices is n n-2.

The proof to be presented is due to Prufer [4]. (For a survey of various


proofs see Moon [5].)

Proof: Assume V = {1, 2, ... , n}. Let us display a one-to-one corre-


spondence between the set of the spanning trees and the n"-2 words of
length n - 2 over the alphabet {1, 2, ... , n}. The algorithm for finding
the word which corresponds to a given tree is as follows:

(1) i - 1.
(2) Among all leaves of the current tree letj be the least one (i.e., its name
is the least integer). Eliminated and its incident edge e from the tree.
The ith letter of the word is the other endpoint of e.
(3) If i = n - 2, stop.
(4) Increment i and go to step 2.

For example, assume that n = 6 and the tree is as shown in Figure 2.2.
On the first turn of Step (2),] = 2 and the other endpoint of its incident
edge is 4. Thus, 4 is the first letter of the word. The new tree is as shown in
Figure 2.3. On the second turn, j = 3 and the second letter is 1. On the
third, j = 1 and the third letter is 6. On the fourth, j = 5 and the fourth
letter is 4. Now i = 4 and the algorithm halts. The resulting word is 4164
(and the current tree consists of one edge connecting 4 and 6).

Figure 2.1
28 Trees

Figure 2.2

Figure 2.3

By Corollary 2.1, Step (2) can always be performed, and therefore for
every tree a word of length n - 2 is produced. It remains to be shown that
no word is produced by two different trees and that every word is generated
from some tree. We shall achieve both ends by showing that the mapping
has an inverse; i.e., for every word there is a unique tree which produces it.
Let w = ala2 ... a,-2 be a word over V. If T is a tree for which the
algorithm produces w then the degree of vertex k, d (k), in T, is equal to
the number of times k appears in w, plus 1. This follows from the observa-
tion that when each, but the last, of the edges incident to k is deleted, k is
written as a letter of w; the last edge may never be deleted, if k is one of
the two vertices remaining in the tree, or if it is deleted, k is now the re-
moved leaf, and the adjacent vertex, not k, is the written letter. Thus, if
w is produced by the algorithm, for some tree, then the degrees of the
vertices in the tree must be as stated.
For example, if w = 4164 then d(1) = 2, d(2) = 1, d(3) = 1, d(4) = 3,
d(5) = 1 and d(6) = 2 in a tree which produced w.
Given this data, apply the following algorithm:

(1) i - 1.
(2) Letj be the least vertex for which d(j) = 1. Construct an edge j-ai,
d(j) - 0 and d(a) - d(ai) -1.
(3) If i = n - 2, construct an edge between the two vertices whose degree
is 1 and stop.
(4) Increment i and go to step 2.

It is easy to see that this algorithm picks the same vertexj as the original
algorithm, and constructs a tree (the proof is by induction). Also, each step
Cayley's Theorem 29

of the reconstruction is forced, therefore it is the only tree which yields w,


and for every word this algorithm produces a tree.
In our example, for i = 1, i = 2 and since a, = 4 we connect 2-4, as
shown in Figure 2.4. Now, d(l) = 2, d(2) = 0, d(3) 1, d(4) = 2,
d(5) = 1 and d(6) = 2. For i = 2, j 3 and since a2 1 we connect
3-1, as shown in Figure 2.5. Now d(l) = 1, d(2) = 0,d(3) = 0,d(4) =
2, d(5) = 1 and d(6) = 2. For i = 3, = l and since a 3 = 6 we connect
1-6 as shown in Figure 2.6. Now, d(l) = d(2) = d(3) = 0,d(4) = 2 and
d(5) = d(6) = 1. Finally, i = 4, j = 5 and since a4 = 4 we connect 5-4,
as shown in Figure 2.7. Now, d(l) d(2) = d(3) = d(5) = 0 and d(4) =
d(6) = 1. By step 3, we connect 4-6 and stop. The resulting graph is as
in Figure 2.2.
Q.E.D.

A similar problem, stated and solved by Lempel and Welch [6], is that
of finding the number of ways m labeled (distinct) edges can be joined by
unlabeled endpoints to form a tree. Their proof is along the lines of Priifer's
proof of Cayley's theorem and is therefore constructive, in the sense that
one can use the inverse transformation to generate all the trees after the
words are generated. However, a much simpler proof was pointed out to
me by A. Pnueli and is the subject of Problem 2.5.

240 (0
Figure 2.4.

2 4 ( 13 (
Figure 2.5.

3 1
Figure 2.6
6 0
Figure 2.7
30 Trees

2.4 DIRECTED TREE DEFINITIONS

A digraph G(V, E) is said to have a root r if r E V and every vertex


v E V is reachable from r; i.e., there is a directed path which starts in r
and ends in v.
A digraph (finite or infinite) is called a directed tree if it has a root and
its underlying undirected graph is a tree.

Theorem 2.5: Assume G is a digraph. The following five conditions are


equivalent:

(a) G is a directed tree.


(b) G has a root from which there is a unique directed path to every vertex.
(c) G has a root r for which d,(r) = 0 and for every other vertex v,
din(v) = 1.
(d) G has a root and the deletion of any edge (but no vertices) interrupts
this condition.
(e) The underlying undirected graph of G is connected and G has one
vertex r for which din(r) = 0, while for every other vertex v, din(v) = 1.

Proof: We prove that (a) * (b) w (c) > (d) > (e) w (a).

(a) - (b): We assume that G has a root, say r, and its underlying un-
directed graph G' is a tree. Thus, by Theorem 2.1, part (c), there is a
unique simple path from r to every vertex in G'; also, G' is circuit-free.
Thus, a directed path from r to a vertex v, in G, must be simple and
unique.
(b) * (c): Here we assume that G has a root, say r, and a unique
directed path from it to every vertex v. First, let us show that din(r) = 0.
Assume there is an edge u r. There is a directed path from r to u, and it
can be continued, via e, back to r. Thus, in addition to the empty path
from r to itself (containing no edges ), there is one more, in contradiction
of the assumption of the path uniqueness. Now, we have to show that if
v • r then din(v) = 1. Clearly, din(v) > 0 for it must be reachable from r.
If din(v) > 1, then there are at least two edges, say v,1 - v and v2 e' v.
Since there is a directed path P1 from r to v,, and a directed path P2 from
r to v2 , by adding el to PI and e2 to P 2 we get two different paths from
r to v. (This proof is valid even if v, == v2 .)
(c) > (d): This proof is trivial, for the deletion on any edge u -e v will
make v unreachable from r.
Directed Tree Definitions 31

(d) - (e): We assume that G has a root, say r, and the deletion of any
edge interrupts this condition. First dj,(r) = 0, for any edge entering r
could be deleted without interrupting the condition that r is a root. For
every other vertex v, din(v) > 0, for it is reachable from r. If din(v) > 1, let
VI eA V and V 2 em V be two edges entering v. Let P be a simple directed path
from r to v. It cannot use both el and e2 . The one which is not used in P
can be deleted without interrupting the fact that r is a root. Thus, di11(v) = 1.
(e) - (a): We assume that the underlying undirected graph of G, G', is
connected, din(r) = 0 and for v X r, din(v) = 1. First let us prove that r is
a root. Let P' be a simple path connecting r and v in G'. This must corre-
spond to a directed path P from r to v in G, for if any of the edges points
in the wrong direction it would either imply that din(r) > 0 or that for
some u, di.(u) > 1. Finally, G' must be circuit-free, for a simple circuit
in G' must correspond to a simple directed circuit in G (again using
din(r) = 0 and di.(v) = 1 for v • r), and at least one of its vertices, u,
must have din(u) > 1, since the vertices of the circuit are reachable from r.
Q.E.D.
In case of finite digraphs one more useful definition of a directed tree is
possible:
Theorem 2.6: A finite digraph G is a directed tree if and only if its under-
lying undirected graph, G', is circuit-free, one of its vertices, r, satisfies
di,(r) = 0, and for all other vertices v, di,(v) = 1.
Proof: The "only if" part follows directly from the definition of a directed
tree and Theorem 2.5, part (c).
To prove the "if" part we first observe that the number of edges is
n - 1. Thus, by Theorem 2.2, (b) (c), G' is connected. Thus, by
C
Theorem 2.5, (e) - (a), G is a directed tree.
Q.E.D.
Let us say that a digraph is arbitrated (Berge [71 calls it quasi strongly
connected) if for every two vertices v, and v2 there is a vertex V called an
arbiter of v, and v2, such that there are directed paths from v to v, and
from v to v2 . There are infinite digraphs which are arbitrated but do not
have a root. For example, see the digraph of Figure 2.8. However, for
finite digraphs the following theorem holds:

0F0

Figure 2.8
32 Trees

Theorem 2.7: If a finite digraph is arbitrated then it has a root.

Proof: Let G(V, E) be a finite arbitrated digraph, where V = {1, 2,


n}. Let us prove, by induction, that every set {I, 2, . . ., m}, where m n,
has an arbiter; i.e., a vertex a. such that every 1 c i < m is reachable
from a,,. By definition, a2 exists. Assume a,-, exists. Let a, be the arbiter
of am-, and m. Since am- is reachable from am and every 1 c i c m - 1
is reachable from a,,, -, every 1 c i - m - is also reachable from a,,.
Q.E.D.
Thus, for finite digraphs, the condition that it has a root, as in Theorem
2.5 part a, b, c and d, can be replaced by it being arbitrated.

2.5 THE INFINITY LEMMA

The following is known as Kdnig's Infinity Lemma [8]:

Theorem 2.8: If G is an infinite digraph, with a root r and finite out-


degrees for all its vertices, then G has an infinite directed path, starting
in r.

Before we present the proof let us point out the necessity of the finiteness
of the out-degrees of the vertices. For if we allow a single vertex to be of
infinite out-degree, the conclusion does not follow. Consider the digraph of
Figure 2.9. The root is connected to vertices v,1 , Vt2 , V13, . . ., where v 1 k is
the second vertex on a directed path of length k. It is clear that the tree is
infinite, and yet it has no infinite path. Furthermore, the replacement of
the condition of finite degrees by the condition that for every k the tree has
a path of length k, does not work either, as the same example shows.

Proof: First let us restrict our attention to a directed tree T which is an


infinite subgraph of G. T's root is r. All vertices of distance 1 away from r
in G are also of distance 1 away from r in T. In general, if a vertex v is of
distance 1 away from r in G it is also of distance l away from r in T; all
the edges entering v in G are now dropped, except one which connects a
vertex of distance 1 - 1 to v. It is sufficient to show that in T there is an
infinite directed path from r. Clearly, since T is a subgraph of G, all its
vertices are of finite outdegrees too.
In T, r has infinitely many descendants (vertices reachable from r). Since
r is of finite out-degree, at least one of its sons (the vertices reachable via
one edge), say ri, must have infinitely many descendants. One of r1 's sons
The Infinity Lemma 33

Figure 2.9

has infinitely many descendants, too, and so we continue to construct an


infinite directed path r, ri, r2,
Q.E.D.
In spite of the simplicity of the theorem, it is useful. For example, if we
conduct a search on a directed tree of finite degrees (where a bound on the
degree may not be known) for which it is known that it has no infinite
directed paths, then the theorem ensures us that the tree is finite and our
search will terminate.
An interesting application of Theorem 2.8 was made by Wang [9]. Con-
sider the problem of tiling the plane with square tiles, all of the same size
(Wang calls the tiles "dominoes"). There is a finite number of tile families.
The sides of the tiles are labeled by letters of an alphabet, and all the tiles
of one family have the same labels, thus are indistinguishable. Tiles may
not be rotated or reflected, and the labels are specified for their north
side, south side, and so on. There is an infinite supply of tiles of each
family. The tiles may be put one next to another, the sides converging only
if these two sides have the same labels. For example, if the tile families are
as shown in Figure 2.10, then we can construct the "torus" shown in
Figure 2.11. Now, by repeating this torus infinitely many times horizontally
and vertically, we can tile the whole plane.
Wang proved that if it is possible to tile the upper right quadrant of the
plane with a given finite set of tile families, then it is possible to tile the
whole plane. The reader should realize that a southwest shift of the upper-
right tiled quadrant cannot be used to cover the whole plane. In fact, if
the number of tile families is not restricted to be finite, one can find sets
34 Trees

Figure 2.10

c d a

a aa bb a

a d c
a d c

b aa b b b

c d a

Figure 2.11

of families for which the upper-right quadrant is tileable, while the whole
plane is not.
Consider the following directed tree T: The root r is connected to ver-
tices, each representing one of the tile families, i.e., a square 1 X 1 tiled with
the tile of that family. For every k, each one of the legitimate ways of tiling
a (2k + 1) X (2k + 1) square is represented by a vertex in T; its father is
the vertex which represents the tiling of a (2k - 1) X (2k - 1) square,
identical to the center part of the square represented by the son.
Now, if the upper-right quadrant is tilable, then T has infinitely many
vertices. Since the number of families is finite, the out-degree of each ver-
tex is finite (although, may not be bounded). By Theorem 2.8, there is an
infinite directed path in T. Such a path describes a way to tile the whole
plane.

2.6 THE NUMBER OF SPANNING TREES

A subgraph H of a finite digraph G is called a directed spanning tree of


G if H is a directed tree which includes all the vertices of G. If r is the root
of H, then it is clearly a root of G. Also, if r is a root of G, then a spanning
Number of Spanning Trees 35

directed tree H of G exists with root r. This is simply observed by con-


structing H, edge by edge, starting from r and adding each time an edge of
G from a vertex already reachable from r in H to one which is not reachable
yet.
We shall now describe a method of Tutte [10] for computing the number
of spanning directed trees of a given digraph with a given specified root.
(For historical details, see reference 11.)
Let us define the in-degree matrix D of a digraph G(V, E), where V
{ 1, 2, . . ., n}, as follows:

din(i) if i = j,
D(i, j) =
-k if i X j, where k is the number of edges in G from
itoj.

Lemma 2.1: A finite digraph G(V, E), with no self-loops is a directed tree
with root r if and only if its in-degree matrix D has the following two
properties:

O if i =r,
(1) D(i, i) =
-1 if i Xr.
(2) The minor, resulting from erasing the rth row and column from D and
computing the determinant, is 1.

Proof: Assume that G(V, E) is a directed tree with root r. By Theorem


2.5, part c, D satisfies property (1). Now, renumber the vertices in such a
way that 1 is the root and if i - j then i < j. This can be achieved by
numbering the vertices of unit distance from 1 as 2, 3, .... Next number
the vertices of distance two, three, etc. The new in-degree matrix is deri-
vable from the previous one by performing some permutation on the rows,
and the same permutation on the columns. Since such a permutation does
not change the determinant, the two minors are the same. The new in-
degree matrix D' satisfies the following properties:

D'(1, 1) = 0,
D'(i,i) 1 for i = 2, 3, ... , n,
D'(i,j) =0 if i > j.
36 Trees

Thus, the minor, resulting from the erasure of the first row and the first
column from D' and computing the determinant, is 1.
Now assume that D satisfies properties (1) and (2). By property (1) and
Theorem 2.6, if G is not a directed tree then its underlying undirected
graph contains a simple circuit. The vertex r cannot be one of the vertices
of the circuit, for this would imply that either di,(r) > 0 or for some other
vertex v din(v) > 1, contrary to property (1). The circuit must be of the
form:

il -i2- i,- i,

where 1 is the length of the circuit, and no vertex appears on it twice. Also,
there may be other edges out of i,, i!, . .. , ii, but none can enter. Thus,
each of the columns of D, corresponding to one on this vertices, has exactly
one + 1 (on the main diagonal of D) and one -1 and all the other entries
are 0. Also, each of the rows of this submatrix is either all zeros, or there
is one +1 and one -1. The sum of these columns is therefore a zero
column, and thus, the minor is 0. This contradicts property (2).
Q.E.D.

As a side result of our proof, we have the additional property that the
minor of a graph whose in-degree matrix satisfies property (1) is 0 if the
graph is not a directed tree with root r.

Theorem 2.9: The number of directed spanning trees with root r of a di-
graph with no self-loops is given by the minor of its in-degree matrix which
results from the erasure of the rth row and column.

The proof of this theorem follows immediately from Lemma 2.1, the
comment following it, and the linearity of the determinant function with
respect to its columns. Let us demonstrate this by the following example.
Consider the graph shown in Figure 2.12. Its in-degree matrix D is as fol-
lows:

2 -1 -1
D= 1 1 -2

-1 0 3

.
Number of Spanning Trees 37

Figure 2.12

Assume that we want to compute the number of directed spanning trees


with root 2. We erase the second row and column. The resulting deter-
minant is

2 -1
- 5
-1 3

Now let us decompose this determinant into columns which represent


one edge in every column. First, the 2 X 2 determinant can be written as

2 o -1
-1 1 -2

-1 0 3
We have returned the second row of D except its second entry, which
must be made equal to 1 (in this case its value did not change). All other
entries in the second column are changed into zero. Next, we decompose
each column, except the second, into columns which consist of a single +1
and a single -1, as follows:

2 o -1 1 0 -1 1 0 -1

-1 1 -2 -1 1 -2 + 0 1 -2

-1 0 3 0 0 3 -1 0 3
38 Trees

1 0 -1 o o

= -1 1 0 + -1 1 -1

0 0 1 0 0 1

1 0 0 1 0 -1

+ -1 1 -- ] + 0 1 0

0 0 I -1 0 1

1 0 0 1 0 0

+ 0 1 --1 + 0 1 -1

-1 0 1 -1 0 1
These six determinants correspond to the following selections of sets of
edges, respectively: {e3 , e2}, fe 3 , e4 }, {e3, es}, {e6, e2 }, {e6, e4 }, {e 6 , eS}.
After erasing the second row and column, this corresponds to
2 -1 1 -I 0 1 0

-1 3 0 1 0 1 0 1

1 -1 1 0 1 0
+
I
-1 -1 1 -1 1

Each of these six determinants corresponds to a selection of n - 1 edges


of the original graph. By Lemma 2.1, the resulting subgraph is a directed
tree with root 2 if and only if the corresponding determinant is equal to
one. Otherwise, it is zero. Thus, we get the number of directed trees with 2
as a root. Clearly, in our case, the only set which does not yield a directed
tree is {e 6, e2} and indeed

1
= 0.
-1 1
Q.E.D.
Number of Spanning Trees 39

Let us now consider the question of the number of spanning trees of a


given undirected graph G(V, E). Consider the digraph G'(V, E') defined
as follows: For every edge u e v in G define the two edges u - V and
v e: u in G'. Let r be a vertex. There is a one-one correspondence between
the set of spanning trees of G and the set of directed spanning trees of G'
with root r: Let T be a spanning tree of G. If the edge u v is in T and if
u is closer than v to r in T then pick e ' for T'; if v is closer, pick e ". Also,
given T', it is easy to find the corresponding T by simply ignoring the
directions; i.e., the existence of either e' or e" in T' implies that e is in T.
Thus, we can compute the number of spanning trees of G by writing the
in-degree matrix of G', and computing the minor with respect to r. Clearly,
the choice of r cannot make any difference. Now, the in-degree matrix of
G' is given by

(i) in G if i j,

( 'i) -k where k is the number of edges connecting i and j


in G.

This matrix is called the degree matrix of G. Hence, we have the following
theorem:

Theorem 2.10: The number of spanning trees of an undirected graph with


no self-loops is equal to any of the minors of its degree matrix which re-
sults from the erasure of a row and a corresponding column.

We can now use Theorem 2.10 to describe another proof of Cayley's


Theorem (2.4). The number of spanning trees that can be constructed with
vertices 1, 2, . .. , n is equal to the number of spanning trees of the com-
plete graph of n vertices; that is, the graph G(V, E) with V = {1, 2,
n} and for every i ii j there is one edge i-j. Its degree matrix is

-1 I -1:-
-1 n-1 -1
-1 -1 ... n-ij.

After erasing one row and the corresponding column, the matrix looks
the same, except that it is now (n - 1) X (n - 1). We can now add to any
40 Trees

column (or row) a linear combination of the others, without changing its
determinant. First subtract the first column from every other. We get:
- -

n-1 -n --e ...- n

-1 n 0 0

- 0 21 0

-1 0 0 n

Now add every one of the other rows to the first:


-

1 0 0) ... 0

-1 n l) 0

-1 0 n 0

-1 0 0 n

Clearly, the determinant of this matrix is nn-2.

2.7 OPTIMUM BRANCHINGS AND DIRECTED


SPANNING TREES

A subgraph B(V, E') of a finite digraph G(V, E) is called a branching


if it is circuit-free and din(v) < 1 for every v E V. Clearly, if for only one
vertex r, din(r) = 0 and for all the rest of the vertices, v, di,(v) = 1 then,
by Theorem 2.6, the branching is a directed tree with root r.
Let each edge e have a cost c(e). Our problem is to find a branching
B(V, E') for which the sum of the edge costs, c(e), is maximum. ThisFE.E

problem was solved independently by a number of authors [12, 13, 14]. We


shall follow here Karp's paper [151. First, we will show how to find a
maximum branching. Then, we shall point out the simple modification for
finding a minimum branching and a minimum spanning tree.
Let us call an edge ue - v, of G, critical if

(i) c(e) > 0 and


(ii) for all other edges u # v, c(e) > c(e').
Optimum Branchings and Directed Spanning Trees 41

Let H be a set of critical edges, where for each vertex one entering critical
edge is chosen, if any exist. The graph (V, H) is called critical.

Lemma 2.2: If a critical graph (V, H) is circuit-free then it is a maximum


branching.

Proof: Clearly (V, H) is a branching if it is circuit-free. If vertex v has no


positive edges entering it in G and if B is a branching, then either B has
no edge entering v, or if it has one, we can drop it without reducing B's
total cost. Clearly, H contains no edge which enters v either. If vertex v has
positive edges which enter it in G, then the one in H is of maximum cost,
and therefore no branching can do better here either. Since H is at least
as good as B in each vertex, (V, H) is a maximum branching.
Q.E.D.

If a critical graph contains circuits then it is not a branching. Let us


study some of its properties.

Lemma 2.3: Each vertex in a critical graph is on at most one circuit.

Proof: If a vertex v is on two directed circuits then there must be a vertex


u for which djn(u) - 2; a contradiction. Such a vertex can be found by
tracing backwards on one of the circuits which passes through v.
Q.E.D.

Let B(V, E') be a branching and u -e v an edge not in B. Then e is


eligible relative to B if the set

E" =E' U {e} - {e'Ie' EE' and itentersv}

yields a branching (V E ").

Lemma 2.4: Let B(V, E') be a branching and e E E - E'. u - v is


eligible relative to B if and only if there is no directed path in B from
v to U.

Proof: If there is a directed path from v to u in B. then when we add e


a directed circuit is formed. The deletion of the edge entering v in B, if
any, cannot open this circuit. Thus, e is not eligible.
If there is no directed path from v to u in B, then the addition of e
cannot close a directed circuit. However, the resulting edge set may not
42 Trees

be a branching if B already has an edge entering v. Now this edge is


deleted, and the resulting edge set is a branching. Thus, e is eligible.
Q.E.D.

Lemma 2.5: Let B be a branching and C be a directed circuit such that


no edge of C - B is eligible relative to B. Then C - B I = 1.

Proof: Since B is circuit-free, IC - > 1. Let e,, e 2 , . . ., elm be the


2I
edges in C - B, in the order in which they appear on C. More specifically
e, e ~ j. Pk~ k Pk
U1 VI U2 - V2-- '* Uk Vk U

is the circuit C, where the pi's are directed paths common to C and B.
Since e, is not eligible, by Lemma 2.4 there is a directed path in B, from
v, to u . This path leaves pI somewhere and enters Vk, and continues via
Pk to uI; it cannot enter Pk after Vk or B would have two edges entering
the same vertex. Similarly, e, is nol eligible, and therefore there is a
directed path in B, from vj to uj, which leaves pj somewhere and enters
pj-, at vj-,. We now have a directed circuit in B: It goes from v,, via part
of pl, to a path leading to Vk, via part of Pk, to a path leading to Vk-1,
etc., until it returns to vI. The situation is described pictorially in Figure
2.13. Since B is circuit-free, k c 1.
Q.E.D.

Theorem 2.11: Let (V, H) be a critical graph. There exists a maximum


branching B(V, E') such that for every directed circuit C in (V, H),
IC-E'l =-1.

Proof: Let B(V, E') be a maximum branching which, among all maxi-
mum branchings, contains a maximum number of edges of (V, H). Con-
sider e E H - E'. If u -. v is eligible then

E' U {e} - {e' i e' E:E' and it enters v}

defines another maximum branching which contains one more edge of


(V, H), a contradiction. Thus, no edge of H - E' is eligible. By Lemma
2.5, for every directed circuit C in (V, H), C - E' I 1.
Q.E.D.

Thus, we can restrict our search of maximum branchings to those which


share with (V, H) all the edges on circuits, except one edge per circuit.
Optimum Branchings and Directed Spanning Trees 43

Figure 2.13

If B contains an edge u - v such that u is not on C but v is, then the


edge entering v in C must be dropped. But if no such edge exists, then
an edge el on C, whose cost is minimum is dropped. This suggests the
following method: We shrink each circuit C into a single vertex a and solve
the maximum branching problem on the new digraph. We then expand
this branching to be a branching of the original graph by dropping from
each circuit one edge; if in the new digraph the branching contains no
edge entering a then we drop from C the edge e 0; if the branching contains
an edge entering a which corresponds to u v in G then we drop from C
the edge which enters v. It remains to define the new graph, including the
cost of its edges and to prove that indeed the resulting branching is
maximum in G.
Let C,, C2 , ... , Ck be the circuits of the critical graph (V, H). Let ei°
be an edge of minimum cost on Ci and let Vi be the set of vertices on Ci.
Define V = V - W=i V,. For u -e v, where u 0 Vi but v E V,, let e be
the edge of C, which enters v. We define the shrunk digraph G(V, E) as
follows:
44 Trees

V = V U {a,, a2 , .. ., ak}, where the ai's are new symbols.


E = {u -e vleither u and v are in V and e E E
or u E V, v = ai and u w in G where w is on Ci,
or u = aj, v E Vand w vV in G, where w is on Ci,
or u = ai, v =aj,i •4jandw - X inGwherewison Ci and
x is on Cj.}

c(e) if u vinGandvE V,
e(e) =
c(e) - c(e) + c(ej°) if u vV in G and v is on C,.

The reason for this definition of e(e), in case v is on C,, is that the least
cost we must drop is c(ei0). If we do pick e as part of the branching, we
gain c(e), but we lose c(e) - c(ei0), since now e must be dropped instead
of eiY.
Let e be the set of all branchings fl(V, E') of G for which ICi -E'
= 1 for every circuit C, of the critical graph (V, H) and if there is no
edge u vV in B, with u 0 Vi and v E Vi then C, -E' = {e,0 }. By
Theorem 2.11, Z contains some maximum branchings. Also, let EB be the
set of all branchings of G.

Theorem 2.12: There is a one-one correspondence between


e and !. The
branching B(V, E') E e which corresponds to B(V, E') E Z is defined
byE' =E' nEand
A k
c(B) = e(B) + , c(C,) - c(ej ) (1)

where c(B) and e(B) are the total costs of B and B respectively and c(C,)
is the total cost of the edges in CQ.

Proof: First assume that B(V, E') ( e and let us show that B(V, E')
defined by E' =E E E is a branching of G. In B there can be at most
one edge entering Vi from outside; this follows from the fact that all
edges of Ci, but one, are in B and therefore only one vertex can have one
edge enter it from V - Vi. Thus, in B there can be at most one edge
entering aj. If v E V, then in B and therefore in B, there can be only one
edge entering v. It remains to be shown that B is circuit-free. A directed
circuit in B would indicate a directed circuit in B; whenever the circuit
in B goes through a vertex aj, in B we go around Ci and exit from the
Optimum Branchings and Directed Spanning Trees 45

vertex u, where e is the next edge on the circuit in B and u -e v in G. As


we go around Ci, the missing edge is never needed, because in B we enter
Ci at the vertex whose incoming edge in Ci is the missing one.
Next, assume that B(V, E') is a branching of G and let us show that
there is exactly one B(V, E') E e such that f' = E,' n E. For all edges e
E E' such that u -v and v E V, put e in E'. For all edges e E E' such that
u e aj, put e in E', and all the edges of Ci, except e. If there is no
edge u -e a, in B then put in E' all the edges of C, except e10. Clearly,
in the resulting graph (V, E'), din(v) < 1 for every v E V, and if it con-
tains a directed circuit, then there must be one in B too. Thus, it is a
branching andE' =E' nfE.

We have established the one-one correspondence and it remains to be


shown that (1) holds. There are three cases in B to be considered:

(1) u -e v and v E V. In this case e is both in B and B and c(e) = e(e).


Thus, e contributes the same amount to both sides of (1).
(2) u 2e v where u 0 Vi and v E Vi. Again e is both in B and B, but
c(e) = e(e) + c(e) - c(ej0). Clearly, in this case all edges of Ci,
except e are in B. Thus, the total contribution of edges entering V,
to c(B) is

e(e) + c(Ci) - c(ej0 ).

(3) There is no edge u -e ai in B. In this case there is no edge u e v,


u 0 Vi, v E Vi in B. However, all edges of Ci except e10 are in B,
contributing c(Ci) - c(ej0 ).

We conclude that (1) holds.


Q.E.D.

The resulting algorithm is of time complexity 0(1El * I VI), since finding


a critical graph is 0(I El) and this may have to be repeated at most I VI
times. It is not hard to see that all the additional computations and book-
keeping does not increase the complexity beyond this bound. For more
efficient algorithms see Tarjan [16].
The case of minimum branching is easily solved by a similar algorithm.
All we have to do is change (i) to c(e) < 0 and in (ii) require c(e) ' c(e'),
in the definition of a critical graph. If we want to find a directed spanning
tree with root r, assuming that r is a root of G, we remove (i) altogether
46 Trees

from the definition of a critical graph and remove all edges entering
r in G.

2.8 DIRECTED TREES AND EULER CIRCUITS

Let G(V, E) be a finite digraph which satisfies d0 ut(v) = din(v) for


every v E V and whose undirected underlying graph is connected. By
Theorem 1.2 G has Euler paths, and all of them are circuits. Assume that
el Vi, emu-I ew
C: Vi, - Vz - . .. V",,, V,,,-i i

is one such circuit. Thus, if i • I, then e, • ej, and m = [El; but ver-
tices may repeat. Consider now a subgraph HC(V, E') defined in the
following way: Let es, be any one of The edges entering vi. Let I VI = n.
For every p = 2, 3, . . ., n let ep be the first edge on C to enter vp after the
appearance of ej,. Now E' = {ej, ei , . . ., ej .
For example, consider the graph of Figure 2.14.
The sequence of edges el, e2 , ... , e6 designates a Euler circuit C. If
we choose ej, = e6 (the only choice in this case), then ej, = el, ej, = e2
and ej4 = e4 . The resulting subgraph H,(V, E') is shown in Figure 2.15,
and is easily observed to be a directed spanning tree of G. The following
lemma states this fact in general.

Lemma 2.6: Let C be a directed Euler circuit of a directed finite graph


G(V, E). The subgraph HC(V, E'), constructed as described above, is a
directed spanning tree of G, with root v,.

V4 :

Figure 2.14
Directed Trees and Euler Circuits 47

Figure 2.15

Proof: The definition of H implies that dj1 (vj) = 0 while din(v,) = 1 for
p = 2, 3, . . ., n. By Theorem 2.6 it remains to be shown that the under-
lying undirected graph of H is circuit-free. It suffices to show that H has
no directed circuits, but an edge u e v in H means that u is discovered
before v, if we go along C starting from the reference edge ei,. Thus, no
directed circuits exist in H.
Q.E.D.

Now assume that we are given a directed spanning tree H of a finite


digraph G for which d0 u,(v) = din(v) for every v E V. Assume also that
v, is the root of H and ej, is one of the edges entering v, in G. We shall
describe now a method for using this information to trace an Euler circuit
of G, without having to add detours, in contrast to the approach of
section 1.3. We start from v, and leave it backwards on e>,. In general,
upon arrival at v, we leave it backwards via an edge entering v, which
was never used before, and we use ej, only when no other choice remains.
If no unused entering edges exist, we stop.
By the construction, we never use an edge more than once. Also, the
only vertex in which the process can stop is v, itself; this is guaranteed by
the fact that d0u,(v) = din(V) for every vertex v, and the situation is like
that of Section 1.3. When the process stops, all the edges emanating
from v1, and among those the edges which belong to H, have been traced
back. Thus, all the vertices of distance 1 from v, in H have been visited;
furthermore, since the edges of H have been used, all other incoming edges
to them have been used, too. Thus, all vertices of distance 2 from v1 in H
have been visited; and so on. By induction, all edges of G have been
traced.
48 Trees

In the construction of a Euler circuit from H and e,, there are places
of choice. If din(vp) > 1, there are (din(Vp) - 1)! different orders for
picking the incoming edges (with en, picked last). Also, it is clear that
different orders will yield different Euler circuits. Thus, the number of dis-
tinct Euler circuits to be constructed from a given H and ej, is

111 (dn(v, - 1)!.


P=

Furthermore, different choices of H (but with the same root v1 and the
same eja) yield different Euler circuits; because a different eip for some
2 < p c n, will yield a different first entry to vp after ej, in the resulting
Euler circuit.
Finally, Lemma 2.6 guarantees that every Euler circuit will be generated
for some H and some choice of ordering the backtracking edges, because
the construction of Euler circuits from a directed tree is the reversal of
the procedure of deriving a directed tree from a circuit.
We have thus proved the following theorem:

Theorem 2.13: The number of Euler circuits of a given finite digraph


G(V, E) for which d,,,(v) = din(v) for every v E V and whose undirected
underlying graph is connected, is giver, by

n
a- H (djjvp)-1)!
P=1

where A is the number of directed spanning trees of G.

Clearly the result cannot depend on the choice of the root. This proves
that if d0 u,(v) = din(v) for every v E V then the number of spanning trees is
the same for every choice of root.
For example, the in-degree matrix of the digraph of Figure 2.14 is

1 -- 1 0 0

0 2 -1 -1
D=
-1 --1 2 0

0 0 -1 1
Problems 49

By Theorem 2.9,

2r~-1
= 1 2 0 =2

0 -1 I

which in this case is also the number of Euler circuits.


The reader is cautioned that if G contains self-loops, one should remove
them before using Theorem 2.9, but of course take them into account in
Theorem 2.13.

PROBLEMS

2.1 Let TI(V, El) and T 2(V, E2 ) be two spanning trees of G(V, E). Prove
that for every a E E, n E2 there exists a ,3 E E, n E2 such that each
of the sets

(El- {a}) U {(3}


(E 2 -{ 3}) U {at}

defines a spanning tree.


2.2 Let G(V, E) and 1(e) be as in the discussion of the minimum span-
ning tree problem. Give an algorithm for finding a maximum-length
spanning tree and explain briefly why it works and its complexity.
2.3 Show that if d(vi), d(v 2 ), ... d(v,) are positive integers which satisfy
,

the condition

n
Ed(vi) = 2n -2
,=1

then there exists a tree with v,, v2 , ... , v,, as vertices and the d's
specify the vertices' degree in the tree. How many different trees are
there (if edges are unlabeled)?
2.4 Compute the number of trees that can be built on n given labeled
vertices, with unlabeled edges, in such a way that one specified vertex
is of degree k.
50 Trees

2.5 What is the number of trees that one can build with n labeled ver-
tices and m = n - 1 labeled edges? Prove that the number of trees
that can be built with m labeled edges (and no labels on the vertices)
is (m + 1)--2
2.6 Prove the following: If G is ar, infinite undirected connected graph,
whose vertices are of finite degrees, then every vertex G is the start
vertex of some simple infinite path.
2.7 Show that if rotation or flipping of tiles is allowed, the question of
tiling the plane becomes trivial.
2.8 Describe a method for computing the number of in-going directed
trees of a given digraph with a designated root. (Here a root is a
vertex r such that from every vertex there is a directed path to r.)
Explain why the method is valid. (Hint: Define an out-degree matrix.)
2.9 How many directed trees with root 000 are there in G2 ,4?

Our purpose in Problems 2.10, 2.11 and 2.12 is to develop deBruijn's


formula for the number of deBruijr sequences for the words of length n
over an alphabet of a letters.

2.10 Show that tons the number of spanning trees of Go, satisfies
Au.. = -
,o.-I
1ln-2

Hint: Form D, the D in-matrix of G, Erase its first row and


column. Subtract the last a",2 Tows from the first aO-l-' -2- 1
rows, to eliminate all the -1's. Add the first a"n - an-2 - 1 columns
to others to factor out a"" "., 2 In the remaining determinant
add all rows to the first.
2.11 By Problem 2.10 show that A,,,= a -n.

2.12 Show that the number of deBruijn sequences for a given a and n is

(a!)" 1l

con

(A similar development of deBruijn's formula can be found in Knuth


[17].)
2.13 Let T be an undirected tree with n vertices. We want to invest 0(n)
time labeling the graph properly, in such a way that once the labeling
References 51

is done, for every two vertices, of distance I apart in the tree, one can
find the (minimum) path connecting them in time 0(l). Describe
briefly the preparatory algorithm, and the algorithm for finding the
path.
2.14 Prove that the complement of a tree (contains the same vertices and
an edge between two vertices iff no such edge exists in the tree) is
either connected, or consists of one isolated vertex while all the others
form a clique (a graph in which every pair of vertices is connected
by an edge).
2.15 Let G(V, E) be an undirected finite graph, where each edge e has a
given length 1(e) > 0. Let X(v) be the length of a shortest path from
S to v.
(a) Explain why each vertex v of s has an incident edge u e V such
that X(v) = X(u) + I(e).
(b) Show that if such an edge is chosen for each vertex v X. s (as in
(a)) then the set of edges forms a spanning tree of G.
(c) Is this spanning tree always of minimum total weight? Justify
your answer.

REFERENCES

1. Prim, R. C., "Shortest Connection Networks and Some Generalizations," Bell


System Tech. J., Vol. 36, 1957, pp. 1389-1401.
2. Cheriton, D., and Tarjan, R. E., "Finding Minimum Spanning Trees," SIAM
J. on Comp., Vol. 5, No. 4, Dec. 1976, pp. 724-742.
3. Cayley, A., "A Theorem on Trees," Quart. J. Math., Vol. 23, 1889, pp. 376-378,
Collected Papers, Vol. 13, Cambridge, 1897, pp. 26-28.
4. Prefer, H., "Neuer Beweis eines Satzes 6ber Permutationen," Arch. Math.
Phys., Vol. 27, 1918, pp. 742-744.
5. Moon, J. W., "Various Proofs of Cayley's Formula for Counting Trees," A
Seminar Graph Theory, F. Harary (ed.), Holt, Rinehart and Winston, 1967,
pp. 70-78.
6. Lempel, A., and Welch, L. R., "Enumeration of Arc-Labelled Trees," Dept. of
E.E., Univ. of Southern Cal, 1969.
7. Berge, C., and Ghouila-Houri, A., Programming, Games and Transportation
Networks, Wiley, 1965, Sec. 7.4.
8. Konig, D., Theorie der endlichen und unendlichen Graphen, Liepzig, 1936,
reprinted by Chelsea, 1950.
52 Trees

9. Wang, H., "Proving Theorems by Pattern Recognition, II," Bell System Tech.
J., Vol. 40, 1961, pp. 1-41.
10. Tutte, W. T., "The Dissection of Equilateral Triangles into Equilateral Tri-
angles," Proc. CambridgePhil. Soc., Vol. 44, 1948, pp. 463-482.
11. Harary, F., Graph-Theory, Addison Wesley, 1969, Chap. 16.
12. Chu, Y. J., and T. H. Liu, "On the Shortest Arborescence of a Directed
Graph," Sci. Sinica, 14, 1965, pp. 1396-1400.
13. Edmonds, J., "Optimum Branchings," J. of Res. of the Nat. Bureau of Stan-
dards, 71B, 1967, pp. 233-240.
14. Bock, F., "An Algorithm to Construct a Minimum Directed Spanning Tree in
a Directed Network," Developments in Operations Research, Gordon and
Breach, 1971, pp. 29-44.
15. Karp, R. M., "A Simple Derivation of Edmonds' Algorithm for Optimum
Branchings," Networks, 1, 1971, pp. 265-272.
16. Tarjan, R. E., "Finding Optimum Branchings," Networks, 7, 1977, pp. 25-35.
17. Knuth, D. E., "Oriented Subtrees of an Arc Digraph," J. Comb. Th., Vol. 3,
1967, pp. 309-314.
Chapter 3

DEPTH-FIRST SEARCH
3.1 DFS OF UNDIRECTED GRAPHS

The Depths-First Search technique is a method of scanning a finite un-


directed graph. Since the publication of the papers of Hopcroft and Tarjan
[1, 2] it is widely recognized as a powerful technique for solving various graph
problems. However, the algorithm is not new; it was already known in the
19th century as a technique for threading mazes. For example, see Lucas' [3]
report of Tremaux's work. Another algorithm, which was suggested later by
Tarry [4], is just as good for threading mazes, and in fact DFS is a special
case of it; but it is the additional structure of DFS which makes it so useful.
Assume we are given a finite connected graph G(V, E). Starting in one of
the vertices we want to "walk" along the edges, from vertex to vertex, visit all
the vertices and halt. We seek an algorithm that will guarantee that we scan
the whole graph, and recognize when we are done, without wondering too
long in the "maze". We allow no preplanning, as by studying the road-map
before we start our excursion; we must make our decisions, one at a time,
since we discover the structure of the graph as we scan it. Clearly, we need to
leave some "markers" as we go along, to recognize the fact that we have
returned to a place visited before. Let us mark the passages, namely the con-
nections of the edges to vertices. If the graph is presented by incidence lists
then we can think of each of the two appearances of an edge in the incidence
lists of its two endpoints as its two passages. It suffices to use two types of
markers: F for the first passage used to enter the vertex, and E for any other
passage when used to leave the vertex. No marker is ever erased or changed.
As we shall prove later the following algorithm will terminate in the original
starting vertex s, after scanning each edge once in each direction.

Tremaux's Algorithm:

(1) v-s.
(2) If there are no unmarked passages in v, go to (4).

53
54 Depth-First Search

(3) Choose an unmarked passage, mark it E and traverse the edge to its
other endpoint u. If u has any marked passages (i.e. it is not a new
vertex) mark the passage, through which u has just been entered, by E,
traverse the edge back to v, and go to Step (2). If u has no marked
passages (i.e. it is a new vertex), mark the passage through which u has
been entered by F, v - u and go to Step (2).
(4) If there is no passage marked F, halt. (We are back ins and the scanning
of the graph is complete.)
(5) Use the passage marked F, traverse the edge to its other endpoint u, v -
u and go to Step (2).

Let us demonstrate the algorithm on the graph shown in Figure 3.1. The
initial value of v, the place "where we are" or the center of activity, is s. All
passages are unlabelled. We choose one, mark itE and traverse the edge. Its
other endpoint is a (u = a). None of its passages are marked, therefore we
mark the passage through which a has been entered by F, the new center of
activity is a (v = a), and we return to Step (2). Since a has two unmarked
passages, assume we choose the one leading to b. The passage is marked E
and the one at b is marked F since b is new, etc. The complete excursion is
shown in Figure 3.1 by the dashed line.

Lemma 3.1: Trdmaux's algorithm never allows an edge to be traversed twice


in the same direction.

Figure 3.1
DFS of Undirected Graphs 55

Proof: If a passage is used as an exit (entering an edge), then either it is be-


ing marked E in the process, and thus the edge is never traversed again in
this direction, or the passage is already marked F. It remains to be shown
that no passage marked F is ever reused for entering the edge.
Let u v be the first edge to be traversed twice in the same direction, from
u to v. The passage of e, at u, must be labeled F. Since s has no passages
marked F, u • s. Vertex u has been left d(u) + 1 times; once through each
of the passages marked E and twice through e. Thus, u must have been
entered d(u) + 1 times and some edge w- u has been used twice to enter u,
before e is used for the second time. A contradiction.
Q.E.D.

An immediate corollary of Lemma 3.1 is that the process described by


Trdmaux's algorithm will always terminate. Clearly it can only terminate in
s, since every other visited vertex has an F passage. Therefore, all we need to
prove is that upon termination the whole graph has been scanned.

Lemma 3.2 Upon termination of Tremaux's algorithm each edge of the


graph has been traversed once in each direction.

Proof: Let us state the proposition differently: For every vertex all its inci-
dent edges have been traversed in both directions.
First, consider the start vertex s. Since the algorithm has terminated, all its
incident edges have been traversed from s outward. Thus, s has been left d(s)
times, and since we end up in s, it has also been entered d(s) times. However,
by Lemma 3.1 no edge is traversed more than once in the same direction.
Therefore, all the edges incident to s have been traversed once in each direc-
tion.
Assume now that S is the set of vertices for which the statement, that each
of their incident edges has been traversed once in each direction, holds.
Assume V X S. By the connectivity of the graph there must be edges con-
necting vertices of S with V - S. All these edges have been traversed once in
each direction. Let v u be the first edge to be traversed from v ES to u E V
- S. Clearly, u's passage, corresponding to e, is marked F. Since this
passage has been entered, all other passages must have been marked E.
Thus, each of u's incident edges has been traversed outward. The search has
not started in u and has not ended in u. Therefore, u has been entered d(u)
times, and each of its incident edges has been traversed inward. A contradic-
tion, since u belongs in S.
Q.E.D.
56 Depth-First Search

The Hopcroft and Tarjan version of DFS is essentially the same as


Trdmaux's, except that they number the vertices from 1 to n (= I VI) in the
order in which they are discovered. This is not necessary, as we have seen, for
scanning the graph, but the numbering is useful in applying the algorithm
for more advanced tasks. Let us denote the number of vertex v by k(v). Also,
instead of marking passages we shall now mark edges as "used" and instead
of using the F mark to indicate the edge through which we leave the vertex for
the last time, let us remember for each vertex v, other than s, the vertexf(v)
from which v has been discovered.f(v) is called thefather of v; this name will
be justified later. DFS is now in the following form:

(1) Mark all the edges "unused". For every v E V, k(v) - 0. Also, let i - 0
and v - s.
(2) i - i + 1, k(v) -
(3) If v has no unused incident edges, go to Step (5).
(4) Choose an unused incident edge v e u. Mark e "used". If k(u) X 0,
go to Step (3). Otherwise (k(u) =O)),f(u) - v, v - u and go to Step (2).
(5) If k(v) = 1, halt.
(6) v - f(v) and go to Step (3).

Since this algorithm is just a simple variation of the previous one, our
proof that the whole (connected) graph will be scanned, each edge once in
each direction, still applies. Here, in Step (4), if k(u) i• 0 then u is not a new
vertex and we "return" to v and continue from there. Also, moving our
center of activity from v tof(v) (Step (6)) corresponds to traversing the edge
v-f(v), in this direction. Thus, the whole algorithm is of time complexity
O( El), namely, linear in the size of the graph.
After applying the DFS to a finite and connected G(V, E) let us consider
the set of edgesE' consisting of all the edgesf(v) -v through which new ver-
tices have been discovered. Also direct each such edge fromf(v) to v.

Lemma 3.3: The digraph (V, E') defined above is a directed tree with root s.

Proof: Clearly di.(s) = 0 and din(v) =1 for every v • s. To prove that s is a


root consider the sequence v = Vo,V1, V2 , . . . where vi+I = f(vi) for i 2 0.
Clearly, this defines a directed path leading into v in (V, E '). The path must
be simple, since vi+ I was discovered before vs. Thus, it can only terminate in s
(which has nof(s)). Now by Theorem 2.5 (see part (c)), (V, E ') is a directed
tree with root s.
Q.E.D.
Algorithm for Nonseparable Components 57

Clearly, if we ignore now the edge directions, ( V, E ') is a spanning tree of


G. The following very useful lemma is due to Hopcroft and Tarjan [1, 2]:

Lemma 3.4: If an edge a eb is not a part of ( V, E ') then a is either an an-


cestor or a descendant of b in the directed tree (V, E ').

Proof: Without loss of generality, assume that k(a) < k(b). In the DFS
algorithm, the center of activity (v in the algorithm) moves only along the
edges of the tree (V, E '). If b is not a descendant of a, and since a is
discovered before b, the center of activity must first move from a to some
ancestor of a before it moves up to b. However, we backtrack from a (v -
f(a)) only when all a's incident edges are used, which means that e is used
and therefore b is already discovered-a contradiction.
Q.E.D.

Let us call all the edges of ( V, E ') tree edges and all the other edges back
edges. The justification for this name is in Lemma 3.4; all the non-tree edges
connect a vertex back to one of its ancestors.
Consider, as an example, the graph shown in Figure 3.2. Assume we start
the DFS in c (s = c) and discover d, e, f g, b, a in this order. The resulting
vertex numbers, tree edges and back edges are shown in Figure 3.3, where
the tree edges are shown by solid lines and are directed from low to high, and
the back edges are shown by dashed lines and are directed from high to low.
In both cases the direction of the edge indicates the direction in which the
edge has been scanned first. For tree edges this is the defined direction, and
for back edges we can prove it as follows: Assume u - v is a back edge and
u is an ancestor of v. The edge e could not have been scanned first from u, for
if v has been undiscovered at that time then e would have been a tree edge,
and if v has already been discovered (after u) then the center of activity could
have been in u only if we have backtracked from v, and this means that e has
already been scanned from v.

3.2 ALGORITHM FOR NONSEPARABLE COMPONENTS

A connected graph G(V, E) is said to have a separation vertex v


(sometimes also called an articulation point) if there exist vertices a and b,
a X v and b • v, such that all the paths connecting a and b pass through v.
In this case we also say that v separates a from b. A graph which has a
separation vertex is called separable, and one which has none is called
nonseparable.
58 Depth-First Search

Figure 3.2

/
/
/
/
/

e6

N1

Figure 3.3
Algorithm for Nonseparable Components 59

Let V' C V. The induced subgraph G ' (V', E ') is called a nonseparable
component if G ' is nonseparable and if for every larger V", V' C V" ' V,
the induced subgraph G "( V ", E ") is separable. For example, in the graph
shown in Figure 3.2, the subsets {a, b}, {b, c, d} and {d, e, , g} induce the
nonseparable components of the graph.
If a graph G( V, E) contains no separation vertex then clearly the whole G
is a nonseparable component. However, if v is a separating vertex then V -
{ v} can be partitioned into V,, V2, ... , Vk such that V, U V2 U ... U Vk =
V-{ v} and if i • j then Vi n V; 0; two vertices a and b are in the same
Vi if and only if there is a path connecting them which does not include v.
Thus, no nonseparable component can contain vertices from more than one
Vi. We can next consider each of the subgraphs induced by Vi U {v} and
continue to partition it into smaller parts if it is separable. Eventually, we
end up with nonseparable parts. This shows that no two nonseparable com-
ponents can share more than one vertex because each such vertex is a
separating vertex. Also, every simple circuit of length greater than one must
lie entirely in one nonseparable component.
Now, let us discuss how DFS can help to detect separating vertices.
Let the lowpoint of v, L(v), be the least number, k(u) of a vertex u which
can be reached from v via a, possible empty, directed path consisting of tree
edges followed by at most one back edge. Clearly L(v) ' k(v), for we can use
the empty path from v to itself. Also, if a non-empty path is used then its last
edge is a back edge, for a directed path of tree edges leads to vertices higher
than v. For example, in the graph of Figure 3.2 with the DFS as shown in
Figure 3.3 the lowpoints are as follows: L(a) = 7, L(b) = L(c) = L(d) = 1
and L(e) = L(f) = L(g) = 2.

Lemma 3.5: Let G be a graph whose vertices have been numbered by DFS.
If u - v is a tree edge, k(u) > 1 and L (v) 2 k(u) then u is a separating
vertex of G.

Proof: Let S be the set of vertices on the path from the root r (k(r) = 1) to u,
including r but not including u, and let T be the set of vertices on the subtree
rooted at v, including v (that is, all the descendants of v, including v itself).
By Lemma 3.4 there cannot be any edge connecting a vertex of T with any
vertex of V - (S U {u} U 7). Also, if there is any edge connecting a vertex t
E T with a vertex s E S then the edge t - s is a back edge and clearly k(s) <
k(u). Now, L(v) ' k(s), since one can take the tree edges from v to t followed
by t - s. Thus, L(v) < k(u), contradicting the hypothesis. Thus, u is
60 Depth-First Search

separating the S vertices from the T vertices and is therefore a separating


vertex.
Q.E.D.

Lemma 3.6: Let G(V, E) be a graph whose vertices have been numbered by
DFS. If u is a separating vertex and k(u) > 1 then there exists a tree edge u
- v such that L(v) 2 k(u).

Proof. Since u is a separating vertex.. there is a partition of V - {u} into VI,


such that m a 2 and if i , j then all paths from a vertex of Vi to
V2, . . ., V1/r
a vertex of Vj pass through u. We assume that the search does not start in u.
Let us assume it starts in r and r E V. The center of activity of the DFS must
pass through u. Let u - v be the first tree edge for which v 0 VI. Assume v E
V2. Since there are no edges connecting vertices of V2 with V - (V2 U {u}),
L(v) 2 k(u).
Q.E.D.

Lemma 3.7: Let G(V, E) be a graph whose vertices have been numbered by
DFS, starting with r (k(r) = 1). The vertex r is a separating vertex if and only
if there are at least two tree edges out of r.

Proof: Assume that r is a separating vertex. Let VI, V2, ... , Vm be a parti-
tion of V - {r} such that m 2 2 and if i • j then all paths from a vertex of
Vi to a vertex of Vj pass through r. Therefore, no path in the tree which starts
with r - v, v E Vi can lead to a vertex of Vj wherej X i. Thus, there are at
least two tree edges out of r.
Now, assume r - v1 and r - V2 are two tree edges out of r. Let T be the
set of vertices in the subtree rooted at v,. By Lemma 3.4, there are no edges
connecting vertices of T with vertices of V - (T U {r}). Thus, r separates T
from the rest of the graph, which is not empty since it includes at least the
vertex v2.
Q.E.D.

Let Cl, C2, ... , Cm be the nonseparable components of the connected


graph G(V, E), and let s1, S 2 , . .. , sip be its separating vertices. Let us define
the superstructureof G(V, E), 0(1', ,) as follows:

V (SI, S2, .*. . Sp} U {Co C 2 , * * *, Cm},

E = - Cj I si is a vertex of Cj in G}.
Algorithm for Nonseparable Components 61

By the observations we have made in the beginning of the section, (fV, E)


is a tree. By Corollary 2. 1, if m > 1 then there must be at least two leaf com-
ponents, each containing only one separating vertex, since for every
separating vertex si d(si) 2 2 in G. By Lemma 3.2, the whole graph will be
explored by the DFS.
Now, assume the search starts in a vertex r which is not a separating vertex.
Even if it is in one of the leaf-components, eventually we will enter another
leaf-component C, say via its separating vertex u and the edge u -e v. By
Lemma 3.6, L(v) Ž k(u), and if L(v) is known when we backtrack from v to
u, then by using Lemma 3.5, we can detect that u is a separating vertex.
Also, as far as the component C is concerned, from the time C is entered until
it is entirely explored, we can think of the algorithm as running on C alone
with u as the starting vertex. Thus, by Lemma 3.7, there will be only one tree
edge from u into C, and all the other vertices of C are descendants of v and
are therefore explored after v is discovered and before we backtrack on e.
This suggests the use of a stack (pushdown store) for producing the vertices
of the component. We store the vertices in the stack in the order that they are
discovered. If on backtracking e we discover that u is a separating vertex, we
read off all the vertices from the top of the stack down to and including v. All
these vertices, plus u (which is not removed at this point from the stack even
if it is the next on top) constitute the component. This, in effect removes the
leaf C from the tree ( Vk, E), and if its adjacent vertex s (a separating vertex)
has now d(s) = 1, then we can assume that it is removed too. The new
superstructure is again a tree, and the same process will repeat itself to detect
and trim one leaf at a time until only one component is left when the DFS ter-
minates.
If the search starts in a separating vertex r, then all but the components
which contain r are detected and produced as before, and the ones that do
contain r are detected by Lemma 3.7: Each time we backtrack into r, on r -
v, if r has additional unexplored incident edges then we conclude that the
vertices on the stack above and including v, plus r, constitute a component.
The remaining problem is that of computing L(v) in time; i.e. its value
should be known by the time we backtrack from v.
If v is a leaf of the DFS tree then L(v) is the least element in the following
set: {k(u) I u = v or v - u is a back edge}. Let us assign L(v) - k(v) im-
mediately when v is.discovered, and as each back edge v - u is explored, let
us assign
L(v) ,- Min{L(v), k(u)}.
Clearly, by the time we backtrack from v, all the back edges have been ex-
plored, and L(v) has the right value.
62 Depth-First Search

If v is not a leaf of the DFS tree, then L(v) is the least element in the follow-
ing set:

{k(u) I u = v or v -- u is a back edge} U


{L(u) I v - u is a tree edge}.

When we backtrack from v, we have already backtracked from all its sons
earlier, and therefore already know their lowpoint. Thus, all we need to add
is that when we backtrack from u tc v, we assign

L(v) - MinjL(v), L(u)}.

Let us assume that I VI > 1 and s is the vertex in which we start the search.
The algorithm is now as follows:

(1) Mark all the edges "unused". Empty the stack S. For every v E V let
k(v) - 0. Let i - 0 and v - s.
(2) i - i + 1, k(v) - i, L(v) -i and put v on S.
(3) If v has no unused incident edges go to Step (5).
(4) Choose an unused incident edge v u. Mark e "used". If k(u) X 0,
let L(v) - Min{L(v), k(u)} and go to Step (3). Otherwise (k(u) = 0) let
f(u) -v, v - u and go to Step (2).
(5) If k(f(v)) = 1, go to Step (9).
(6) (f(v) • s). If L(v) < k(f(v)), thenL(f(v)) - Min{L(f(v)), L(v)} and go
to Step (8).
(7) (L(v) 2 k(f(v)))f(v) is a separating vertex. All the vertices on S down to
and including v are now removed from S; this set, with f(v), forms a
nonseparable component.
(8) v -f(v) and go to Step (3).
(9) All vertices on S down to and including v are now removed from S; they
form with s a nonseparable component.
(10) If s has no unused incident edges then halt.
(11) Vertex s is a separating vertex. Let v - s and go to Step (4).

Although this algorithm is more complicated then the scanning algorithm,


its time complexity is still O(IE I). This follows easily from the fact that each
edge is still scanned exactly once in each direction and that the number of
operations per edge is bounded by a constant.
DFS on Digraphs 63

3.3 DFS ON DIGRAPHS

Let us consider now a DFS algorithm on digraphs. Again, each vertex v


gets a number k(v). The first scan of an edge u e v is always in the direction
of the edge; if after e is scanned v is visited for the first time thenf(v) = u.
The algorithm is as follows:

(1) Mark all the edges "unused". For every v E V let k(v) - 0 andf(v) be
"undefined". Also, let i - 0 and v - s. (s is the vertex we choose to start
the search from.)
(2) i - i + 1, k(v) - i.
(3) If there are no unused incident edges from v then go to Step (5).
(4) Choose an unused edge v -e u. Mark e "used". If k(u) • 0, go to Step
(3). Otherwise (k(u) = 0),f(u) - v, v - u and go to Step (2).
(5) Iff(v) is defined then v - f(v) and go to Step (3).
(6) (f(v) is undefined). If there is a vertex u for which k(u) = 0 then let v -
u and go to Step (2).
(7) (All the vertices have been scanned) Halt.

The structure which results from the DFS of a digraph is not as simple as it
is in the case of undirected graphs; instead of two types of edges (tree edges
and back edges) there are four:

(i) Tree edges: An edge x -y is a tree edge if it was used to "discover" y;


i.e. when it was scanned (Step (4)), k(y) = 0. Upon scanning e,the
center of activity, v, shifted from x to y. Later, the center of activity
returned to x (Step (5)) from y.
(ii) Forwardedges: An edge x e~ y is a forward edge if when it was scanned
for the first time, k(y) 2 k(x). Since e was "unused", we had not
backtracked from x yet. Thus, all the vertices with a higher label, in-
cludingy, are descendants of x; i.e. are reachable from x via tree edges.
Therefore, the forward edges do not add any newly reachable vertices
and thus are usually ignored.
(iii) Back edges: An edge x -e y is a back edge if when it was scanned for the
first time, k(y) < k (x) and y is an ancestor of x. (We shall need addi-
tional structure in order to be able to tell upon scanning e whether y is
an ancestor of x or not.)
(iv) Cross edges: An edge x y is a cross edge if when it was scanned for the
first time, k(y) < k(x) buty is not an ancestor of x.
64 Depth-First Search

Assume DFS was performed on a digraph G(V, E), and let the set of
tree edges be E'. The digraph (V. E ') is a branching (Section 2.7), or as
sometimes called, a forest, since it is a union of disjoint directed trees. The
only remnant parallel of the structure of DFS for undirected graphs (as in
Lemma 3.4) is in the fact that if x -~-y and k(y) > k(x) theny is a descendant
of x.

3.4 ALGORITHM FOR STRONGLY-CONNECTED COMPONENTS

Let G( V, E) be a finite digraph. Let us define a relation - on V. If x, y E


V we say that x - y if there is a directed path from x to y and also there is
a directed path from y to x in G. Clearly - is an equivalence relation, and
it partitions V into equivalence classes. These equivalence classes are called
the strongly-connected components of G.

Let C1, C2 , ... , C. be the strongly-connected components of a digraph


G( V, E). Let us define the superstructureof G, G( V, E) as follows:

V C1, C2, . . . C.)


E= { -C,
-' Ii j, x -y in G, x E C, and y E C,}.

The digraph & must be free of directed circuits; for if it has a directed cir-
cuit, all the strongly-connected components on it should have been one com-
ponent. Thus, there must be at least one sink, Ck, i.e., d0 ,t(Ck) = 0, in G.
Let r be the first vertex of Ck visited in the DFS of G; r may have been
reached via a tree edge q r, it may be s or it may have been picked by Step
e

(6). in the last two cases it is a root of one of the trees of the forest. Now, all
the vertices of Ck are reachable from r. Thus, no retracting from r is attempted
until all the vertices of Ck are discovered; they all get numbers greater than
k(r), and since there are no edges out of Ck in G, no vertex is visited outside,
Ck form the time that r is discovered until we retract from it. Thus, if we store
on a stack the vertices in the order of their discovery, then upon retraction
from r, all the vertices on the stack, down to and including r are the elements
of Ck. The only problem is how do we tell when we retract from a vertex that
it has been the first one in a sink-conponent?
For this purpose let us again define the lowpoint of v, L(v), to be the least
number, k(u), of a vertex u which can be reached from v via a, possibly
empty, directed path consisting of tree edges followed by at most one back
edge or a cross edge, provided u belongs to the same strongly-connected com-
ponent. It seems like a circular situation; in order to compute the low-
Algorithm for Strongly-Connected Components 65

point we need to identify the components, and in order to find the com-
ponents we need the lowpoint. However, Tarjan [21 found a way out. In the
following algorithm, whose validity we shall discuss later, we use a stack S,
on which we store the names of the vertices in the order in which they are
discovered. Also, in an array, we record for each vertex whether it is on S or
not, so that the question of whether it is on S can be answered is constant
time. The algorithm is as follows:

(1) Mark all the edges "unused". For every v E Vlet k(v) -0 andf(v) be
"undefined". Empty S. Let i - 0 and v - s.
(2) i - i + 1, k(v) - i, L(v) -i and put v on S.
(3) If there are no unused incident edges from v then go to Step (7).
(4) Choose an unused edge v - u. Mark e "used". If k(u) = 0 then
f(u) - v, v - u and go to Step (2).
(5) If k(u) > k(v) (e is a forward edge) go to Step (3). Otherwise (k(u) <
k(v)), if u is not on S (u and v do not belong to the same component) go
to Step (3).
(6) (k(u) < k(v) and both vertices are in the same component) Let L(v) -
Min [L(v), k(u)) and go to Step (3).
(7) If L(v) = k(v) then delete all the vertices form S down to and including
v; these vertices form a component.
(8) Iff(v) is defined then
L(f(v)) - Min L(f(v)), L(v) ], v - f(v) and go to Step (3).
(9) (f(v) is undefined) If there is a vertex u for which k(u) = 0 then let
v - u and go to Step (2).
(10) (All vertices have been scanned) Halt.

Lemma 3.8: Let r be the first vertex for which, in Step (7), L(r) = k(r).
When this occurs, all the vertices on S, down to and including r, form a
strongly-connected (sink) component of G.

Proof: All the vertices in S, on top of r, have been discovered after r, and
since no backtracking from r has been tempted yet, these vertices are the
descendants of r; i.e. are reachable from r via tree-edges.
Next, we want to show that if v is a descendant of r then r is reachable from
v. We have already backtracked from v, but since r is the first vertex for
which equality occurs in Step (7), L(v) < k(v). Thus, a vertex u, k(u) =
L(v) is reachable from v. Also, k(u) 2 k(r), since by Step (8) L(r) < L(v),
(k(u) = L (v) 2 L (r) = k(r)), and therefore u must be a descendant of r. If u
• r then we can repeat the argument again to find a lower numbered descen-
66 Depth-First Search

dant of r reachable from u, and therefore from v. This argument can be


repeated until r is found to be reachable from v.
So far we have shown that all the vertices on S, on top of r and including r,
belong to the some component. It remains to be shown that no additional
vertices belong to the same component.
When the equality L(r) = k(r) is discovered, all the vertices with numbers
higher than k(r) are on top of r in S. Thus, if there are any additional vertices
in the component, at least some of them must have been discovered already,
and all of those are numberes lower than k(r). There must be at least one
(back or cross) edge x - y such that k(r) - k(r) > k(y) > 0 and x, r andy
are in the same component. Since no removals from S have taken place yet,
L (x) c k(y) and therefore L(r) • L (x) c k(y) < k(r), a contradiction.
Q.E.D.

If r is the first vertex for which in Step (7), L(r) = k(r), then by Lemma
3.8, and its proof, a component C has been discovered and all its elements
are descendants of r. Up to now at most one edge from a vertex outside C into
a vertex in C may have been used, namelyf(r) - r. Thus, so far, no vertex of
C has been used to change the lowpoint value of a vertex outside C. At this
point all vertices of C are removed from S and therefore none of the edges
entering C can change a lowpoint value anymore. Effectively this is
equivalent to the removal of C and all its incident edges from G. Thus, when
equality in Step (7) will occur again, Lemma 3.8 is effective again. This
proves the validity of the algorithm.

PROBLEMS

3.1 Tarry's algorithm [31 is like Trrnwux's, with the following change. Re-
place Step (3) by:

(3) Choose an unmarked passage, mark it E and traverse the edge to its
other endpoint u. If u has no marked passages (i.e. it is a new ver-
tex), mark the passage through which u has been entered by F. Let v
- u and go to Step (2).

Prove that Tarry's algorithm terminates after all the edges of G have
been traversed, once in each direction. (Observe that Lemmas 3.1 and
3.2 remain valid for Tarry's algorithm, with virtually the same proofs.)
Problems 67

3.2 Consider the set of edges which upon the termination of Tarry's algo-
rithm (see Problem 3.1) have one endpoint marked E and the other F;
also assume these edges are now directed from E to F.

(a) Prove that this set of edges is a directed spanning tree of G with root
s. (See Lemma 3.3.).
(b) Does a statement like that of Lemma 3.4 hold in this case? Prove or
disprove.
3.3 Fraenkel [5, 6] showed that the number of edge traversals can sometimes
be reduced if the use of a two-way counter is allowed. The algorithm is
a variant of Tarry's algorithm (see Problem 3.1). Each time a new vertex
is entered the counter is incremented; when it is realized that all inci-
dent edges of a vertex have been traversed at least in one direction, the
counter is decremented. If the counter reaches the start value, the
search is stopped. One can return to s via the F marked passages.
Write an algorithm or a flow chart which realizes this idea. (Hint:
an additional mark which temporarily marks the passages used to re-
enter a vertex is used.) Prove that the algorithm works. Show that for
some graphs the algorithm will traverse each edge exactly once, for
others the savings depends on the choice of passages, and yet there are
graphs for which the algorithm cannot save any traversals.
3.4 Assume G is drawn in the plane in such a way that no two edges inter-
sect. Show how Trdmaux's algorithm can be modified in such a way
that the whole scanning path never crosses itself.
3.5 In an undirected graph G a set of vertices C is called a clique if every
two vertices of C are connected by an edge. Prove that in the spanning
(directed) tree resulting from a DFS, all the vertices of a clique appear
on one directed path. Do they necessarily appear consecutively on the
path? Justify your answer.
3.6 Prove that if C is a directed circuit of a digraph to which a DFS algo-
rithm was applied then the vertex v, for which k(v) is minimum among
the vertices of C, is a root of a subtree in the resulting forest, and all
the vertices of C are in this subtree.
3.7 An edge e of a connected undirected graph G is called a bridge if its
deletion destructs G's connectivity. Describe a variation of the DFS
algorithm which, instead of detecting separating vertices, detects
bridges.
3.8 (This problem was suggested by Silvio Micali) Let G be a connected graph.
(a) Prove that a vertex u •o s is a separating vertex of G if and only if,
68 Depth-First Search

upon the termination of DFS on G, there is a tree edge u - v for


which there is no back edge x - y such that x is a descendant of v
andy is a proper ancestor of u.
(b) Describe an algorithm, of complexity O(IEI), which detects sepa-
rating vertices and produces the nonseparable components without
numbering of vertices, and therefore without the use of lowpoint.
(Hint: For every back edge x - y, mark all the tree edges on the
path from y to x; proceed from x to y until an already marked
edge is encountered or the tree edge outgoing from y is reached.
This latter edge is not marked. The back edges are considered by
rescanning G in the same order, but the marking for x - y is done
when y is scanned for the first time. When all this is over, v £ s
is a separating vertex if and only if there is an unmarked tree edge
out of v.)
3.9 (This problem was suggested by Alessandro Tescari.) Show that the
algorithm for nonseparable components can be simplified by adding
a new edge r - s, where r is a new vertex, and starting the search at r.
Do we still need Lemma 3.7?

REFERENCES

[1] Hopcroft, J., and Tarjan, R., "Algorithm 447: Efficient Algorithms for Graph
Manipulation", Comm. ACM, Vol. 16, 1973, pp. 372-378.
12] Tarjan, R., "Depth-First Search and Linear Graph Algorithms", SIAM J. Coin-
put., Vol. 1, 1972, pp. 146-160.
[3] Lucas, E., Recreations Mathimatiques, Paris, 1882.
[4] Tarry, G., "Le Problime des Labyrinthes". Nouvelles Ann. de Math., Vol. 14,
1895, page 187.
[5] Fraenkel, A. S., "Economic Traversal of Labyrinths", Math. Mag., Vol. 43,
1970, pp. 125-130.
[6] Fraenkel, A. S., "Economic Traversal of Labyrinths (Correction)," Math. Mag.,
Vol. 44, No. 1, January 1971.
Chapter 4

4. ORDERED TREES
4.1 UNIQUELY DECIPHERABLE CODES

Let E = {0, 1, . . ., a - 1. We call E an alphabet and its elements are


called letters; the number of letters in E is a. (Except for this numerical use of
a, the "numerical" value of the letters is ignored; they are just "meaningless"
characters. We use the numerals just because they are convenient characters.)
A finite sequence aia2 ... a,, where ai is a letter, is called a word whose
length is 1. We denote the length of a word w by l(w). A set of (non-empty and
distinct) words is called a code. For example, the code { 102, 21, 00) consists
of three code-words: one code-word of length 3 and two code-words of length
2; the alphabet is {0, 1, 2) and consists of three letters. Such an alphabet is
called ternary.
Let c,, C2, . .. , ck be code-words. The message CIC2 .. * C is the word
resulting from the concatenation of the code-word c, with C2, etc. For exam-
ple, if c, = 00, c2 = 21 and C3 = 00, then CIC2C3 = 002100.
A code C over E (that is, the code-words of C consist of letters in E) is said
to be uniquely decipherable (UD) if every message constructed from code-
words of C can be broken down into code-words of C in only one way. For ex-
ample, the code {01, 0, 10) is not UD because the message 010 can be parsed
in two ways: 0, 10 and 01, 0.
Our first goal is to describe a test for deciding whether a given code C is
UD. This test is an improvement of a test of Sardinas and Patterson [11 and
can be found in Gallager's book [2].
If s, p and w are words and ps = w then p is called a prefix of w and s is
called a suffix of w. We say that a word w is non-empty if l(w) > 0.
A non-empty word t is called a tail if there exist two messages CIC2 ... Cm
and ci 'c2' * - *c,' with the following properties:

(1) ci, 1 < i < m, and c', 1 c j 5n are code-words and c,I c ';
(2) t is a suffix of c,, ';
(3) c, c2 ... c t = c, C2 C2.

69
70 Ordered Trees

Lemma 4.1: A code C is UD if and only if no tail is a code-word.

Proof: If a code-word c is a tail then by definition there exist two messages


ClC 2 Cm and CI 'C2 ' * * * c ' which satisfy cIc 2 CmC =
C I C 2 ' *. * * c . ', while c I X c I '. Thus, there are two different ways to parse
this message, and C is not UD.
If C is not UD then there exist messages which can be parsed in more than
one way. Let A be such an ambiguous message whose length is minimum: i
= ClC2 ... Ck - C'C2'
C -- c,'; i.e. all the ci-s and cj-s are code-words
and cl • cl'. Now, without loss of generality we can assume that Ck is a suf-
fix of c,,' (or change sides). Thus, ck is a tail.
Q.E.D.

The algorithm generates all the tails. If a code-word is a tail, the algorithm
terminates with a negative answer.

Algorithm for UD:

(1) For every two code-words, c, and (c (i 1j), do the following:


(1.1) If ci = cj, halt; C is not UD.
(1.2) If for some word s, either c,s cj or c= Cjs, put s in the set of
tails.

(2) For every tail t and every code-word c do the following:


(2.1) If t = c, halt; C is not UD.
(2.2) If for some word s either ts = c or cs = t, put s in the set of tails.

(3) Halt; C is UD.

Clearly, in Step (1), the words declared to be tails are indeed tails. In Step
(2), since t is already known to be a tail, there exist code-words cl, C2, .C . - m
and cl', C2', . . ., C.n' such that ctc2 * * ct = cl'c2' *** c,'. Now, if ts = c
then CIC2 ... CmC c1 'c2 ' * , 's, and therefore s is a tail; and if cs = t
then cIc 2 .. C*CS CI'C2' c,,' and s is a tail.
Next, if the algorithm halts in (3), we want to show that all the tails have
been produced. Once this is established, it is easy to see that the conclusion
that C is UD follows; Each tail has been checked, in Step (2.1), whether it is
equal to a code-word, and no such equality has been found; by Lemma 4.1,
the code C is UD.
Uniquely Decipherable Codes 71

For every t let m(t) = CIC2 ... Cm be a shortest message such that CIC2 ...
Cmt = c, 'C
12 ' *' C,', and t is a suffix of cn,'. We prove by induction on the
length of m(t) that t is produced. If m(t) = 1 then t is produced by (1.2),
sincem = n = 1.
Now assume that all tails p for which m(p) < m(t) have been produced.
Since t is a suffix of c,s', we have pt = c. '. Therefore, C IC2 cm = CX 'C2'
C
C.n-i
C 'P.
Ifp = cm then cmt = c, ' and t is produced in Step (1).
If p is a suffix of cm then, by definition, p is a tail. Also, m(p) is shorter
then m(t). By the inductive hypothesis p has been produced. In Step (2.2),
when applied to the tail p and code-word cn ', by pt = c, ', the tail t is pro-
duced.
If Cm is a suffix of p, then cmt is a suffix of c.', and therefore, cmt is a tail.
M(Cmt) = ClC2 * Cm-,, and is shorter than m(t). By the inductive hypothesis
Cmt has been produced. In Step (2.2), when applied to the tail cmt and code-
word Cm, the tail t is produced.
This proves that the algorithm halts with the right answer.
Let the code consists of n words and l be the maximum length of a code-
word. Step (1) takes at most O(n2 - 1) elementary operations. The number of
tails is at most O(n . 1). Thus, Step (2) takes at most O(n 212) elementary
operations. Therefore, the whole algorithm is of time complexity O(n2 12 ).
Other algorithms of the same complexity can be found in References 3 and 4;
these tests are extendible to test for additional properties [5, 6, 7].

Theorem 4.1: Let C = {CI, C2, . . ., c,} be a UD code over an alphabet of a


letters. If 1i = l(cj), i 1, 2, . . ., n, then

E a c 1. (4.1)
i=I

The left hand side of (4.1) is called the characteristicsum of C; clearly, it


characterizes the vector (li, 12, .. , la), rather than C. The inequality (4.1) is
called the characteristicsum condition. The theorem was first proved by
McMillan [8]. The following proof is due to Karush [9].

Proof: Let e be a positive integer

, 1 0i= *-E+Ii,+
-+lie).
72 Ordered Trees

There is a unique term, on the right hand side, for each of the ne messages of
e code-words. Let us denote by N(e, i) the number of messages of e code-
words whose length isj. It follows that

,, n n e;
LI, S1MeI
** 'e-I
* a~Ii+Ii2++Iie) = L N(e,j).cr
a
i

where I is the maximum length of a code-word. Since C is UD, no two


messages can be equal. Thus, N(e j) : ci. We now have,

e1el
EN(e,j) -oa ori- a-i - e-l.

We conclude that for all e 2 1

Sl,e ~i ) < e-l

This implies (4.1).


Q.E.D.

A code C is said to be prefix if no code-word is a prefix of another. For ex-


ample, the code {00, 10, 11, 100, 110} is not prefix since 10 is a prefix of 100;
the code {00, 10, 11, 010, 0111 is prefix. A prefix code has no tails, and is
therefore UD. In fact it is very easy to parse messages: As we read the
message from left to right, as soon as we read a code-word we know that it is
the first code-word of the message, since it cannot be the beginning of
another code-word. Therefore, in most applications, prefix codes are used.
The following theorem, due to Kraft [101, in a sense, shows us that we do not
need non-prefix codes.

Theorem 4.2: If the vector of integers. (l l, 12, . . . 1,,) satisfies

n
a-c"i1 (4.2)
i=j

then there exists a prefix code C = {c i, C2, . . ., c"}, over the alphabet of a
letters, such that 1i = l(c,).
Uniquely Decipherable Codes 73

Proof: Let XI < X2 ... < X,, be integers such that each 1i is equal to one
of the Xj-s and each Xiis equal to at least one of the li-s. Let kj be the num-
ber of lj-s which are equal to X+. We have to show that there exists a prefix
code C such that the number of code-words of length X\is kj.
Clearly, (4.2) implies that

E kj a -X•c 1 (4.3)
i-I

We prove by induction on r that for every 1 5 r 5 m there exists a prefix


code C, such that, for every 1 <j c r, the number of its code-words of length
Xi is kj.
First assume thatr= 1. Inequality (4.3) implies that kIa -X I 1, ork 1 c
oX1 . Since there are a~I distinct words of length X1, we can assign any k 1 of
them to constitute C,.
Now, assume C, exists. If r < m then (4.3) implies that

r+1
E kja-"j 5 1.
1=1

Multiplying both sides by a xr+I yields

,+1
E k U)r+ I -Xj < aXr+ I

which is equivalent to

kr+i < ayXr+l - SkouXr+ -Ij. (4.4)


i-I

Outofthe0Xr+ IdistinctwordsoflengthX,+i,kj -xr+I -X, 1 j r, have


prefixed of length Xi as code-words of C,. Thus, (4.4) implies that enough are
left to assign k,+ 1 words of length Xr+I, so that none has a prefix in C,. The
enlarged set of code-words is C, +.
Q.E.D.

This proof suggests an algorithm for the construction of a code with a


given vector of code-word length. We shall return to the question of prefix
code construction, but first we want to introduce positional trees.
74 Ordered Trees

4.2 POSITIONAL TREES AND HU[FFMAN'S OPTIMIZATION


PROBLEM

A positionala-tree (or when a is known, a positional tree) is a directed tree


with the following property: Each edge cut of a vertex v is associated with one
of the letters of the alphabet E = {0, I, . . ., a-1}; different edges, out of
v, are associated with different letters. [t follows that the number of edges out
of a vertex is at most a, but may be less; in fact, a leaf has none.
We associate with each vertex v the word consisting of the sequence of let-
ters associated with the edges on the path from the root r to v. For example,
consider the binary tree (positional 2-tree) of Figure 4. 1, where in each vertex
the associated word is written. (X denotes the empty word.)
Clearly, the set of words associated with the leaves of a positional tree is a
prefix code. Also, every prefix code cart be described by a positional tree in
this way.
The level of a vertex v of a tree is the length of the directed path from the
root to v; it is equal to the length of the word associated with v.
Our next goal is to describe a construction of an optimum code, in a sense
to be discussed shortly. It is described here as a communication problem, as
it was viewed by Huffman [111, who solved it. In the next section we shall
describe one more application of this optimization technique.

Figure 4.1
Positional Trees and Huffman's Optimization Problem 75

Assume words over a source alphabet of n letters have to be transmitted


over a channel which can transfer one letter of the alphabet L = {0, 1, ... ,
a - 1} at a time, and a < n. We want to construct a code over E with n code-
words, and associate with each source letter a code-word. A word over the
source alphabet is translated into a message over the code, by concatenating
the code-words which correspond to the source letters, in the same order as
they appear in the source word. This message can now be transmitted
through the channel. Clearly, the code must be UD.
Assume further, that the source letters have given probabilities p,
P2, . .. , p . of appearance, and the choice of the next letter in the source
word is independent of its previous letters. If the vector of code-word
lengths is (lI, 12, . , In ) then the average code-word length, 1, is given by
..

n
IT= pili. (4.5)

We want to find a code for which Iis minimum, in order to minimize the ex-
pected length of the message.
Since the code must be UD, by Theorem 4.1, the vector of code-word
lengths must satisfy the characteristic sum condition. This implies, by
Theorem 4.2, that a prefix code with the same vector of code-word lengths
exists. Therefore, in seeking an optimum code, for which [ is minimum, we
may restrict our search to prefix codes. In fact, all we have to do is find a vec-
tor of code-word lengths for which [ is minimum, among the vectors which
satisfy the characteristic sum condition.
First, let us assume thatp1 2 P 2 *... > pn. This is easily achieved by
sorting the probabilities. We shall first demonstrate Huffman's construction
for the binary case (a = 2). Assume the probabilities are 0.6, 0.2, 0.05, 0.05,
0.03, 0.03, 0.03, 0.01. We write this list as our top row (see Fig. 4.2). We add
the last (and therefore least) two numbers, and insert the sum in a proper
place to maintain the non-increasing order. We repeat this operation until we
get a vector with only two probabilities. Now, we assign each of them a word-
length 1 and start working our way back up by assigning each of the pro-
babilities of the previous step, its length in the present step, if it is not one of
the last two, and each of the two last probabilities of the previous step is
assigned a length larger by one than the length assigned to their sum in the
present step.
Once the vector of code-word lengths is found, a prefix code can be as-
signed to it by the technique of the proof of Theorem 4.2. (An efficient im-
plementation is discussed in Problem 4.6) Alternatively the back up pro-
76 Ordered Trees

0.6 0.2 0.05 0.05 0.03 0.03 0.03 0.01


l1 t2 l4 J4 5 5 5
0.6 0.2 0.05 0.05 Q.04 0.03 0.03
~1 ~2 4~~: 4 5T-
0.6 0.2 0.06 0.05
0.05 0.04
J1 J2 < X4 44
0.6 0.2 0.09 0.06 0.05
I,1 ,2 3 4- 4
0.6 0.2 0.11 0.09
11 l2 3 3
0.6 0.2 0.2
11 2 2
0.6 O.
1 1
Figure 4.2

cedure can produce a prefix code directly. Instead of assigning the last two
probabilities with lengths, we assign the two words of length one: 0 and 1. As
we back up from a present step, in which each probability is already assigned
a word, to the previous step, the rule is as follows: All, but the last two
probabilities of the previous step are assigned the same words as in the pre-
sent step. The last two probabilities are assigned cO and cl, where c is the
word assigned to their sum in the present step.
In the general case, when a Ž 2, we add in each step the last d
probabilities of the present vector of probabilities; if n is the number of
probabilities of this vector then d is given by:

1 < d :c a and n - d mod(a-1). (4.6)

After the first step, the length of the vector, n ', satisfies n' 1 mod (a -
1), and will be equal to one, mod (a - 1), from there on. The reason for this
rule is that we should end up with exactly a probabilities, each to be assigned
length 1. Now, a =- 1 mod (a - 1), and since in each ordinary step the
number of probabilities is reduced by e - 1, we want n =1 mod (a - 1). In
case this condition is not satisfied by the given n, we correct it in the first step
as is done by our rule. Our next goal is to prove that this indeed leads to an
optimum assignment of a vector of code-word lengths.
Positional Trees and Huffman's Optimization Problem 77

Lemma 4.2: If C = {c,, c2 , ... , c,,} is an optimum prefix code for the
probabilities ,P2, ... ,p,, thenpi > pj implies thatl(c,) c I(c,).

Proof: Assume 1(ci) > 1(cj). Make the following switch: Assign ci to
probability pj, and c, top j; all other assignments remain unchanged. Let I
denote the average code-word length of the new assignment, while I denotes
the previous one. By (4.5) we have

I- I[p.i *I(c) + pj* I(cj)] - [pi,I(cj) +


pj*l(C )]
-(pi - pj) ((Ci) - (c)) > 0,

contradicting the assumption that [ is minimum.


Q.E.D.

Lemma 4.3: There exists an optimum prefix code for the probabilities p I
P2 *-- 2 p, such that the positional tree which represents it has the
following properties:

(1) All the internal vertices of the tree, except possibly one internal vertex v,
have exactly a sons.
(2) Vertex v has 1 < p c a sons, where n p mod (a - 1).
(3) Vertex v, of (1) is on the lowest level which contains internal vertices,
and its sons are assigned to Pn-p+i , Pn-p+2, * * *, Pn -

Proof: Let T be a positional tree which represents an optimum prefix code.


If there exists an internal vertex u, which is not on the lowest level of T con-
taining internal vertices and it has less than a sons, then we can perform the
following change in T: Remove one of the leaves of T from its lowest level and
assign to the probability a new son of u. The resulting tree, and therefore, its
corresponding prefix code has a smaller average code-word length. A con-
tradiction. Thus, we conclude that no such internal vertex u exists.
If there are internal vertices, on the lowest level of internal vertices, which
have less than a sons, choose one of them, say v. Now eliminate sons from v
and attach their probabilities to new sons of the others, so that their number
of sons is a. Clearly, such a change does not change the average length and
the tree remains optimum. If before filling in all the missing sons, v has no
more sons, we can use v as a leaf and assign to it one of the probabilities from
the lowest level, thus creating a new tree which is better than T. A contradic-
tion. Thus, we never run out of sons of v to be transferred to other lacking in-
78 Ordered Trees

ternal vertices on the same level. Also, when this process ends, v is the only
lacking internal vertex (proving (1)) and its number of remaining sons must
be greater than one, or its son can be removed and its probability attached to
v. This proves that the number of sons of v, p, satisfies 1 < p < a.
If v's p sons are removed, the new tree has n' = n - p + 1 leaves and is
full (i.e., every internal vertex has exactly a sons). In such a tree, the number
of leaves, n ', satisfies n ' 3 1, mod (a - 1). This is easily proved by induc-
tion on the number of internal vertices. Thus, n - p + 1 1l mod (a - 1),
and therefore n 3 p mod (a - 1), proving (2).
We have already shown that v is on the lowest level of T which contains in-
ternal vertices and number of its sons is p. By Lemma 4.2, we know that the
least p probabilities are assigned to leaves of the lowest level of T. If they are
not sons of v, we can exchange sons of v with sons of other internal vertices on
this level, to bring all the least probabilities to v, without changing the
average length.
Q.E.D.

For a given alphabet size a and probabilities I P 2 .. . p n, let 0,


(pI, P2, . . ., p.) be the set of all a-ary positional trees with n leaves, as-
signed with the probabilities Pi, P2, . . ., p,, in such a way that P,,-d+l,
Pn-d+2 . . , pn (see (4.6)) are assigned, in this order, to the first d sons of a
.

vertex v, which has no other sons. By Lemma 4.3, 0,, (PI, P2, . . .,pP, con-
tains at least one optimum tree. Thus, we may restrict our search for an op-
timum tree to 00 (pa, P2, . . .,P.

Lemma 4.4: There is a one to one correspondence between o~(p l, P2,


p,,) and the set of a-ary positional trees with n - d + 1 leaves assigned with

P 1,P2, Pn-d, p I, where' = E Pi. The average word-length 1, of


i==,~ d H

the prefix code represented by a tree T of 0( p1, P2, . . ., pn) and the average
code word-length 1, of the prefix code represented by the tree T', which
corresponds to T, satisfy

I = V 4- p'. (4.7)

Proof: The tree T' which corresponds to T is achieved as follows: Let v be


the father of the leaves assigned p,,I--, P,, -d +2, .2.. pn . Remove all the
sons of v and assign p ' to it.
It is easy to see that two different trees T 1 and T2 in 0 , (p IP2, II
will yield two different trees T. ' and T 2 ', and that every a-ary tree T' with
Positional Trees and Huffman's Optimization Problem 79

n - d + 1 leaves assigned p P 2, . P-dP *. , is the image of some T;


establishing the correspondence.
Let 1i denote the level of the leaf assignedpi in T. Clearly 1I- d+1 = I -d+2
=..=In. Thus,
n-d n n-d
E- pi l
=
ii,.-d+1
="ElPi = i ElI pili + I*p'

n-d

it
Ei-,ili + (In 1) .p +p =P1 +p t

Q.E.D.

Lemma 4.4 suggests a recursive approach to find an optimum T. For Ito be


minimum, l' must be minimum. Thus, let us first find an optimum T' and
then find T by attaching d sons to the vertex of T' assigned p '; these d sons
are assigned, -d+I, p-d+2, . . . , pn. This is exactly what is done in Huff-
man's procedure, thus proving its validity.
It is easy to implement Huffman's algorithm in time complexity 0(n 2 ).
First we sort the probabilities, and after each addition, the resulting pro-
bability is inserted in a proper place. Each such insertion takes at most 0(n)
steps, and the number of insertions is r(n - a)/(a- 1)1 . Thus, the whole
forward process is of time complexity 0(n 2 ). The back up process is 0(n) if
pointers are left in the forward process to indicate the probabilities of which
it is composed.
However, the time complexity can be reduced to 0(n log n). One way of
doing it is the following: First sort the probabilities. This can be done in 0(n
log n) steps [14]. The sorted probabilities are put on a queue Si in a nonin-
creasing order from left to right. A second queue, S2 , initially empty, is used
too. In the general step, we repeatedly take the least probability of the two (or
one, if one of the queues is empty) appearing at the right hand side ends of
the two queues, and add up d of them. The result, p', is inserted at the left
hand side end of S 2 . The process ends when after adding d probabilities both
queues are empty. This adding process and the back up are 0(n). Thus, the
whole algorithm is 0(n log n).
The construction of an optimum prefix code, when the cost of the letters
are not equal is discussed in Reference 12; the case of alphabetic prefix
codes, where the words must maintain lexicographically the order of the
given probabilities, is discussed in Reference 13. These references give addi-
tional references to previous work.
80 Ordered Trees

4.3 APPLICATION OF THE HUFFMAN TREE TO


SORT-BY-MERGE TECHNIQUES

Assume we have n items, and there is an order defined between them. For
ease of presentation, let us assume that the items are the integers 1, 2, . . ., n
and the order is "less than". Assume that we want to organize the numbers
in nondecreasing order, where initially they are put in L lists, A 1, A 2, -. .*
AL. Each Ai is assumed to be ordered already. Our method of building
larger lists from smaller ones is as follows. Let B 1, B 2 , . . ., Bm be any m ex-
isting lists. We read the first, and therefore least, number in each of the lists,
take the least number among them away from its list and put it as the first
number of the merged list. The list from which we took the first number is
now shorter by one. We repeat this operation on the same m lists until they
merge into one. Clearly, some of the lists become empty before others, but
since this depends on the structure of lists, we only know that the general step
of finding the least number among m numbers (or less) and its transfer to a
new list is repeated bI + b2 + * + bm times, where bi is the number of
numbers in Bi.
The number m is dictated by our equipment or decided upon in some other
way. However, we shall assume that its value is fixed and predetermined. In
fact, in most cases m = 2.
The whole procedure can be described by a positional tree. Consider the
example shown in Fig. 4.3, where m = 2. First we merge the list <3 ) with
(1, 4). Next we merge <2, 5> with <1, 3, 4>. The original lists, A l, A 2....
AL, correspond to the leaves of the tree. The number of transfers can be

Figure 4.3
Application of the Huffman Tree to Sort-By-Merge Techniques 81

computed as follows: Let a Ebe the number of numbers in A i, and Ii be the


level of the list Ai in the tree. The number of elementary merge operations is
then

Eai * Ii. (4.8)

Burge [15] observed that the attempt to find a positional m-ary which
minimizes (4.8) is similar to that of the minimum average word-length prob-
lem solved by Huffman. The fact that the Huffman construction is in terms
of probabilities does not matter, since the fact that p I + P 2 + * * * + pL =
1 is never used in the construction or its validity proof. Let us demonstrate
the implied procedure by the following example.
Assume L = 12 and m = 4; the b i's are given in nonincreasing order: 9, 8,
8, 7, 6, 6, 6, 5, 5, 4, 3, 3. Since L 0- (mod 3), according to (4.6) d = 3.
Thus, in the first step we merge the last three lists to form a list of length
10 which is now put in the first place (see Fig. 4.4). From there on, we merge
each time the four lists of least length. The whole merge procedure is de-
scribed in the tree shown in Fig. 4.5.

9 8 8 7 6 6 6 5 5 4 3 3

l 2 2 2 2 2 2 2 2 2 2 2

10 9 8 8 7 6 6 6 5 5

l l 2 2 2 2 2 2 2 2

22 10 9 8 8 7 6

1 1 1 2 2 2 2

29 22 10 9
1 1 1 1

Figure 4.4
82 Ordered Trees

Figure 4.5

4.4 CATALAN NUMBERS

The set of well-formed sequences of parentheses is defined by the following


recursive definition:

1. The empty sequence is well formed.


2. If A and B are well-formed sequences, so is AB (the concatenation of A
and B).
3. If A is well formed, so is (A).
4. There are no other well-formed sequences.

For example, (((()) is well formed; (())(() is not.

Lemma 4.5: A sequence of (left and right) parentheses is well formed if and
only if it contains an even number of parentheses, half of which are left and
the other half are right, and as we read the sequence from left to right, the
number of right parentheses never exceeds the number of left parentheses.

Proof: First let us prove the "only if" part. Since the construction of every
well formed sequence starts with no parentheses (the empty sequence) and
each time we add on parentheses (Step 3) there is one left and one right, it is
clear that there are n left parentheses and n right parentheses. Now, assume
that for every well-formed sequence of mn left and m right parentheses, where
m < n, it is true that as we read it from left to right the number of right
parentheses never exceeds the number of left parentheses. If the last step in
Catalan Numbers 83

the construction of our sequence was 2, then since A is a well-formed se-


quence, as we read from left to right, as long as we still read A the condition
is satisfied. When we are between A and B, the count of left and right paren-
theses equalizes. From there on the balance of left and right is safe since B is
well formed and contains less than n parentheses. If the last step in the con-
struction of our sequence was 3, then since A satisfies the condition, so does
(A).
Now, we shall prove the "if" part, again by induction on the number of
parentheses. (Here, as before, the basis of the induction is trivial.) Assume
that the statement holds for all sequences of m left and m right parentheses,
if m < n, and we are given a sequence of n left and n right parentheses which
satisfies the condition. Clearly, if after reading 2m symbols of it from left to
right the number of left and right parentheses is equal and if m < n, this
subsequence, A, by the inductive hypothesis is well formed. Now, the re-
mainder of our sequence, B, must satisfy the condition, too, and again by the
inductive hypothesis is well formed. Thus, by Step 2, AB is well formed. If
there is no such nonempty subsequence A, which leaves a nonempty B, then
as we read from left to right the number of right parentheses, after reading
one symbol and before reading the whole sequence, is strictly less then the
number of left parentheses. Thus, if we delete the first symbol, which is a
"(", and the last, which is a ")", the remainder sequence, A, still satisfies the
condition, and by the inductive hypothesis is well formed. By Step 3 our se-
quence is well formed too.
Q.E.D.

We shall now show a one-to-one correspondence between the non-


well-formed sequences of n left and n right parentheses, and all sequences
of n - 1 left parentheses and n + 1 right parentheses.
LetpIp2 ... p2n be a sequence of n left and n right parentheses which is not
well formed. By Lemma 4.5, there is a prefix of it which contains more right
parentheses then left. Letj be the least integer such that the number of right
parentheses exceeds the number of left parentheses in the subsequence p I p 2
... pj. Clearly, the number of right parentheses is then one larger than the
number of left parentheses, orj is not the least index to satisfy the condition.
Now, invert all pi's for i > j from left parentheses to right parentheses, and
from right parentheses to left parentheses. Clearly, the number of left paren-
theses is now n - 1, and the number of right parentheses is now n + 1.
Conversely, given any sequence p pL2 ... p2n of n - 1 left parentheses and
n + 1 right parentheses, letj be the first index such thatp p 2 . . pj contains
one right parenthesis more than left parentheses. If we now invert all the
parentheses in the sectionpj+ Ipj+2 ... p 2n from left to right and from right to
84 Ordered Trees

left, we get a sequence of n left and n right parentheses which is not well
formed. This transformation is the inverse of the one of the previous
paragraph. Thus, the one-to-one correspondence is established.
The number of sequences of n - I left and n + 1 right parentheses is

2n
(n -_1)

for we can choose the places for the left parentheses, and the remaining
places will have right parentheses. Thus, the number of well-formed se-
quences of length n is

(2n) 2nl I (2n). (4.9)

These numbers are called Catalan numbers.


An orderedtree is a directed tree such that for each internal vertex there is
a defined order of its sons. Clearly, every positional tree is ordered, but the
converse does not hold: In the case of ordered trees there are no predeter-
mined "potential" sons; only the order of the sons counts, not their position,
and there is no limit on the number of sons.
An orderedforest is a sequence of ordered trees. We usually draw a forest
with all the roots on one horizontal line. The sons of a vertex are drawn from
left to right in their given order. For example, the forest shown in Fig. 4.6
consists of three ordered trees whose roots are A, B, and C.
There is a natural correspondence 'between well-formed sequences of n
pairs of parentheses and ordered forests of n vertices. Let us label each leaf
with the sequence (. Every vertex whose sons are labeled wl, W2, . .. , ws, is
labeled with the concatenation (WIw2 .. * w5 ); clearly, the order of the labels
is in the order of the sons. Finally, once the roots are labeled xI, X2, . . ., x,,
the sequence which corresponds to the forest is the concatenation x ,x2 ... x,,.
For example, the sequence which corresponds to the forest of Fig. 4.6 is
())(())()())((()))). The inverse transformation clearly exists and thus the
one-to-one correspondence is established. Therefore, the number of ordered
forests of n vertices is given by (4.9).
We shall now describe a one-to-one correspondence between ordered
forests and positional binary trees. The leftmost root of the forest is the root
of the binary tree. The leftmost son of the vertex in the forest is the left son of
the vertex in the binary tree. The next brother on the right, or, in the case of
a root, the next root on the right is the right son in the binary tree. For exam-
ple, see Fig. 4.7, where an ordered forest and its corresponding binary tree are
Catalan Numbers 85

((C ~)()C

(C )(
))

Figure 4.6

Figure 4.7
86 Ordered Trees

drawn. Again, it is clear that this is a one-to-one correspondence and there-


fore the number of positional binary trees with n vertices is given by (4.9).
There is yet another combinatorial enumeration which is directly related to
these.
A stack is a storage device which can be described as follows. Suppose that
n cars travel on a narrow one-way street where no passing is possible. This
leads into a narrow two-way street on which the cars can park or back up to
enter another narrow one-way street (see Fig. 4.8). Our problem is to find
how may permutations of the cars can be realized from input to output if we
assume that the cars enter in the natural order.
The order of operations in the stack is fully described by the sequence of
drive-in and drive-out operations. There is no need to specify which car
drives in, for it must be the first one on the leading-in present queue; also,
the only one which can drive out is the top one in the stack. If we denote a
drive-in operation by "(", and a drive-out operation by ")", the whole pro-
cedure is described by a well-formed sequence of n pairs of parentheses.
The sequence must be well-formed, by Lemma 4.5, since the number of
drive-out operations can never exceed the number of drive-in operations.
Also, every well-formed sequence of n pairs of parentheses defines a
realizable sequence of operations, since again by Lemma 4.5, a drive-out is
never instructed when the stack is empty. Also, different sequences yield dif-
ferent permutations. Thus, the number of permutations on n cars realizable
by a stack is given by (4.9).
Let us now consider the problem of finding the number of full binary trees.
Denote the number of leaves of a binary tree T by L(T), and the number of
internal vertices by I(T). It is easy to prove, by induction on the number of
leaves, that L(T) = I(T) + 1. Also, if all leaves of T are removed, the
resulting tree of I(T) vertices is a positional binary tree T'. Clearly, different
T-s will yield different T'-s, and one can reconstruct T from T' by at-

Output mm m E Input
I

Stack

Figure 4.8
Problems 87

taching two leaves to each leaf of T', and one leaf (son) to each vertex which
in T' has only one son. Thus, the number of full-binary trees of n vertices is
equal to the number of positional binary trees of (n - 1)/2 vertices. By (4.9)
this number is

2(2)

PROBLEMS

4.1 Prove the following theorem: A position between two letters in a


message m over a UD code C is a separation between two code-words if
and only if both the prefix and the suffix of m up to this position are
messages over C.
4.2 Use the result of Problem 4.1 to construct an efficient algorithm for
parsing a message m over a UD code C in order to find the words which
compose m. (Hint: Scan m from left to right and mark all the positions
such that the prefix m up to them is a message. Repeat from right to
left to mark positions which correspond to suffixes which are
messages.)
4.3 Test the following codes for UD:

(a) {00, 10, 11, 100, 110},


(b) {1, 10, 001, 0010, 00000, 100001},
(c) {1, 00, 101, 010}.

4.4 Construct a prefix binary code, with minimum average code-word


length, which consists of 10 words whose probabilities are 0.2, 0.18,
0.12, 0.1, 0.1, 0.08, 0.06, 0.06, 0.06, 0.04. Repeat the construction for
a = 3 and 4.
4.5 Prove that if a prefix code corresponds to a full positional tree then its
characteristic sum is equal to 1.
4.6 Prove that if the word-length vector (1l, 12, ... , In) satisfies the
characteristic sum condition and if 1, c 12 C ...* In, then there ex-
ists a positional tree with n leaves whose levels are the given 1,'s and the
order of the leaves, from left to right, is as in the vector.
88 Ordered Trees

4.7 A code is called exhaustive if every word over the alphabet is the begin-
ning of some message over the code. Prove the following:

(a) If a code is prefix and its characteristic sum is 1 then the code is ex-
haustive.
(b) If a code is UD and exhaustive then it is prefix and its characteristic
sum is 1.

4.8 Construct the ordered forest, the positional binary tree and the permuta-
tion through a stack which corresponds to the following well-formed se-
quence of 10 pairs of parentheses:

(O()((())((()()()) .

4.9 A direct method for computing the number of positional binary trees of
n vertices through the use of a generating function goes as follows: Let
b . be the number of trees of n vertices. Define b o I and define the func-
tion

B(x) = bo + b lx + b 2 x 2 +

(a) Provethat b. = bo. bn- 1 + * * + bn-j bo.


(b) Prove that xB 2 (X) - B(x) + 1 = 0.
(c) Use the formula

(1+a) 1+ 1a/2 ¼ 2l , 2 + t/2 ( 1/2 - ( /2 2)


1! 2! 3!

to prove that

n 1 (2n).

REFERENCES

[1] Sardinas, A. A., and Patterson, G. W., "A Necessary and Sufficient Condition
for the Unique Decomposition of Coded Messages", IRE Convention Record,
Part 8, 1953, pp. 104-108.
12] Gallager, R. G., Information Theorv and Reliable Communication, John Wiley,
1968. Problem 3.4, page 512.
References 89

[3] Levenshtein, V. I., "Certain Properties of Code Systems", Dokl. Akad. Nauk,
SSSR, Vol. 140, No. 6, Oct. 1961, pp. 1274-1277. English translation: Soviet
Physics, "Doklady", Vol. 6, April 1962, pp. 858-860.
[41 Even, S., "Test for Unique Decipherability", IEEE Trans. on Infor. Th., Vol.
IT-9, No. 2, April 1963, pp. 109-112.
[5] Levenshtein, V. I., "Self-Adaptive Automata for Coding Messages", DokI.
Akad. Nauk, SSSR, Vol. 140, Dec. 1961, pp. 1320-1323. English translation:
Soviet Physics, "Doklady", Vol. 6, June 1962, pp. 1042-1045.
[61 Markov, Al. A., "On Alphabet Coding", Dokl. Akad. Nauk, SSSR, Vol. 139,
July 1961, pp. 560-561. English translation: Soviet Physics, "Doklady", Vol. 6,
Jan. 1962, pp. 553-554.
[7] Even, S., "Test for Synchronizability of Finite Automata and Variable Length
Codes", IEEE Trans. on Infor. Th., Vol. IT-10, No. 3, July 1964, pp. 185-189.
[8] McMillan, B., "Two Inequalities Implied by Unique Decipherability", IRE
Tran. on Infor. Th., Vol. IT-2, 1956, pp. 115-116.
[9] Karush, J., "A Simple Proof of an Inequality of McMillan", IRE Trans. On In-
for. Th., Vol. IT-7, 1961, page 118.
[10] Kraft, L. G., "A Device for Quantizing, Grouping and Coding Amplitude
Modulated Pulses", M.S. Thesis, Dept. of E.E., M.I.T.
[111 Huffman, D. A., "A Method for the Construction of Minimum Redundancy
Codes", Proc. IRE, Vol. 40, No. 10, 1952, pp. 1098-1101.
[121 Perl, Y., Garey, M. R. and Even, S., "Efficient Generation of Optimal Prefix
Code: Equiprobable Words Using Unequal Cost Letters", J.ACM, Vol. 22, No.
2, April 1975, pp. 202-214.
[13] Itai, A., "Optimal Alphabetic Trees", SIAM J. Comput., Vol. 5, No. 1, March
1976, pp. 9-18.
[141 Knuth, D. E., The Art of Computer Programming, Vol. 3: Sorting and Search-
ing, Addison-Wesley, 1973.
[15] Burge, W. H., "Sorting, Trees, and Measures of Order", Infor. and Control,
Vol. 1, 1958, pp. 181-197.
Chapter 5

MAXIMUM FLOW IN A NETWORK


5.1 THE FORD AND FULKERSON ALGORITHM

A network consists of the following data:

(1) A finite digraph G(V, E) with no self-loops and no parallel edges.*


(2) Two vertices s and t are specified; x is called the source and t, the sink.**
(3) Each edge e E E is assigned a non-negative number c(e) called the ca-
pacity of e.

A flow function f is an assignment of a real number f(e) to each edge e,


such that the following two conditions hold:

(Cl) For every edge e E E, 0 < f(e) s c(e).


(C2) Let ae(v) and ,3(v) be the sets of edges incoming to vertex v and outgoing
from v, respectively. For every v V- {s, t}

0= E f(e) -- S f(e). (5.1)


eEa(')

The totalflow F off is defined by

F= E f(e) - E f(e). (5.2)


eE.(t) eE,3(t)

*The exclusion of self-loops and parallel edges is not essential. It will shortly
become evident that no generality is lost; the flow in a self-loop gains nothing, and a
set of parallel edges can be replaced by one whose capacity is the sum of their
capacities. This condition ensures that {Et s I VI (I V - 1).
**The choice of s or t is completely arbitrary. There is no requirement that s is a
graphical source; i.e. has no incoming edges, or that t is a graphical sink; i.e. has no
outgoing edges. The edges entering s or leaving t are actually redundant and have no
effect on our problem, but we allow them since the choice of s and t may vary, while
we leave the other data unchanged.

90
Ford and Fulkerson Algorithm 91

Namely, F is the net sum of flow into the sink. Our problem is to find anf for
which the total flow is maximum.
Let S be a subset of vertices such that s ES and t 0 S. S is the complement
of S, i.e. S = V - S. Let (S; S) be the set of edges of G whose start-vertex is
in S and end-vertex is in S. The set (S; S) is defined similarly. The set of edges
connecting vertices of S with S (in both directions) is called the cut defined
by S.
By definition, the total flow F is measured at the sink. Our purpose is to
show that F can be measured at any cut.

Lemma 5.1: For every S

F = E f(e) - E f(e). (5.3)


ee(S:3) ~ E(3s5)

Proof. Let us sum up equation (5.2) with all the equations (5.1) for v E S-
{ t}. The resulting equation has F on the left hand side. In order to see what
happens on the right hand side, consider an edge x - y. If both x andy be-
long to S then f(e) does not appear on the r.h.s. at all, in agreement with
(5.3). If both x and y belong to S thenf(e) appears on the r.h.s. once posi-
tively, in the equation fory, and once negatively, in the equation forx. Thus,
in the summation it is canceled out, again in agreement with (5.3). If x E S
andy E S thenf(e) appears on the r.h.s. of the equation fory, positively, and
in no other equation we use, and indeed e E (S; S), and again we have agree-
ment with (5.3). Finally, if x E S and y E S, f(e) appears negatively on the
r.h.s. of the equation for x, and again this agrees with (5.3) since e E (S; S).
Q.E.D.

Let us denote by c(S) the capacity of the cut determined by S which is


defined as follows:

c(S) = E c(e). (5.4)


eE(SS)

Lemma 5.2: For every flow function f, with total flow F, and every S,

F - c(S). (5.5)

Proof: By Lemma 5.1

F= f(e)- e (SSe).
92 Maximum Flow in a Network

By CI, 0 s f(e) c c(e) for every e EE. Thus,

F5
c c(e) - = c(S). QED
eE(S;S) Q.E.D.

A very important corollary of Lemma 5.2, which allows us to detect that a


given total flow F is maximum, and a given cut, defined by S, is minimum is
the following:

Corollary 5.1: IfF and S satisfy (5.5) by equality then F is maximum and the
cut defined by S is of minimum capacity.
Ford and Fulkerson [1] suggested the use of augmenting paths to change a
given flow function in order to increase the total flow. An augmenting path is
a simple path from s to t, which is not necessarily directed, but it can be used
to advance flow from s to t. If on this path, e points in the direction from s to
t, then in order to be able to push flow through it,f(e) must be less than c(e).
If e points in the opposite direction, then in order to be able to push through
it additional flow from s to t, we must be able to cancel some of its flow.
Therefore, f(e) > 0 must hold.
In attempt to find an augmenting path for a given flow, a labeling pro-
cedure is used. We label s. Then, every vertex v, for which we can find an
augmenting path from s to v, is labeled. If t is labeled than an augmenting
path has been found. This path is used to increase the total flow, and the pro-
cedure is repeated.
A forward labeling of vertex v by the edge u - v is applicable if

(1) u is labeled and v is not;


(2) c(e) > f(e).

The label that v gets is 'e'. If e is used for forward labeling we define A(e)
= c(e) -f(e).
A backward labeling of vertex v by the edge u ' v is applicable if

(1) u is labeled and v is not;


(2) f(e) > 0.

The label that v gets is 'e'. In this case we define A(e) = f(e).
The Ford and Fulkerson algorithm is as follows:

(1) Assign some legal initial flowf to the edges; an assignmentf(e) = 0 to


every edge e will do.
Ford and Fulkerson Algorithm 93

(2) Mark s "labeled" and all other vertices "unlabeled".


(3) Search for a vertex v which can be labeled by either a forward or back-
ward labeling. If none exists, halt; the present flow is maximum. If such
a vertex v exists, label it 'e,'where e is the edge through which the label-
ing is possible. If v = t, go to Step (4); otherwise, repeat Step (3).
(4) Starting from t and by the use of the labels, backtrack the path through
which the labeling reached t from s. Let this path be s = vo ' v1 ' V2 e
** -v,-el v = t. (The directions of the edges are not shown, since
each may be in either direction.) Let A = Minjj A(ej). If ej is forward,
i.e. v,-, -' v,, thenrf(ei) -f(ei) + A. If ej is backward, i.e. v,-,-1 ,
thenf(ei) -f(ei) - A.
(5) Go to Step (2)

(Note that if the initial flow on the edges entering s is zero, it will never
change. This is also true for the edges leaving t. )
As an example, consider the network shown in Fig. 5.1. Next to each edge
e we write c(e)f(e) in this order. We assume a zero initial flow everywhere. A
first wave of label propagation might be as follows: s is labeled; e2 used to
label c; e 6 used to label d; e 4 used to label a; e 3 used to label b; and finally, e 7
used to label t. The path is s ". c -" d -el a -eb t. A = 4, and the new flow
is shown in Fig. 5.2.
The next augmenting path may be

5 eA a e) b e5 c en d es t.
Now, A = 3 and the flow is as in Fig. 5.3.
The next augmenting path may be s A' a A. b A' t. Now, A = 3 and the
new flow is as in Fig. 5.4. Now, the labeling can proceed as follows: s is la-

Figure 5.1
94 Maximum Flow in a Network

Figure 5.2

Figure 5.3

Figure 5.4
Ford and Fulkerson Algorithm 95

beled; el is used to label a; e3 used to label b; (so far we have not used
backward labeling, but this next step is forced) e4 is used to label d; e8 is
used to label t. The path we backtrack is s -a a -e d -en t. Now, A(e ) = 9,
A(e 4) = 4 and A(e8) = 7. Thus, A = 4. The new flow is shown in Fig. 5.5.
The next wave of label propagation is as follows:

Figure 5.5

s is labeled, el is used to label a, e3 used to label b. No more labeling is pos-


sible and the algorithm halts.
It is easy to see that the flow produced by the algorithm remains legal
throughout. The definition of A(e) and A guarantees that forward edges will
not be overflowed, i.e., f(e) c c(e), and that backward edges will not be
underflowed, i.e.,f(e) 2 0. Also, since A is pushed from s to t on a path, the
incoming flow will remain equal to the outgoing flow in every vertex v EV -
{s, t}.
Assuming the algorithm halts, the last labeling process has not reached t.
Let S be the set of vertices labeled in the last wave. (In our example S = {s,
a, b},) If an edge x - y belongs to (S; 5) then it must be saturated, i.e., f(e)
= c(e), or a forward labeling could use it. Also, if e belongs to (S; S) then it
follows thatf(e) = 0, or a backward labeling could use it. By Lemma 5.1 we
have

F= E f(e)- E f(e) c(e) = c(S).


e(S;S) eE(S;S) eE(S;S)

Now, by Corollary 5. 1, F is a maximum total flow and S defines a minimum


cut. In our example, (S; S) = {e2, e5, e7}, (S; S) = {e 4} and the value of F is
14.
The question of whether the algorithm will always halt remains to be
discussed. Note first a very important property of the Ford and Fulkerson
96 Maximum Flow in a Network

algorithm: If the initial flow is integral, for example, zero everywhere, and if
all the capacities are integers, then the algorithm never introduces fractions.
The algorithm adds and subtracts, but it never divides. Also, if t is labeled,
the augmenting path is used to increase the total flow by at least one unit.
Since there is an upper bound on the total flow (any cut), the process must
terminate.
Ford and Fulkerson showed that their algorithm may fail, if the capacities
are allowed to be irrational numbers. Their counterexample (Reference 1, p.
21) displays an infinite sequence of flow augmentations. The flow converges
(in infinitely many steps) to a value which is one fourth of the maximum total
flow. We shall not bring their example here; it is fairly complex and as the
reader will shortly discover, it is not as important any more.
One could have argued that for all practical purposes, we may assume that
the algorithm is sure to halt. This follows from the fact that our computa-
tions are usually through a fixed radix (decimal, binary, and so on) number
representation with a bound on the number of digits used; in other words, all
figures are multiples of a fixed quantum and the termination proof works
here as it does for integers. However, a simple example shows the weakness
of this argument. Consider the network shown in Fig. 5.6. Assume that M is
a very large integer. If the algorithm starts withf(e) = 0 for all e, and alter-
natively uses s - a - b - t and s - b - a - t as augmenting paths, it will
take 2M augmentations before F = 2M is achieved.
Edmonds and Karp [21 were first to overcome this problem. They showed
that if one uses breadth-first search (BFS) in the labeling algorithm and
always uses a shortest augmenting path, the algorithm will terminate in
O(IVI3 IEI) steps, regardless of the capacities. (Here, of course, we assume

M M

Figure 5.6
The Dinic Algorithm 97

that our computer can handle, in one step, any real number.) In the next sec-
tion we shall present the more advanced work of Dinic [3]; his algorithm has
time complexity 0(1 VI2 IEI ). Karzanov [4] and Cherkassky [5] have reduced
it to °(l VI 3) and °(l VI 21E1112), respectively. This algorithms are fairly com-
plex and will not be described. A recent algorithm of Malhotra, Pramodh
Kumar and Maheshwari [6] has the same time complexity as Karzanov's
and is much simpler; it will be described in the next section.
The existence of these algorithms assures that, if one proceeds according
to a proper strategy in the labeling procedure, the algorithm is guaranteed to
halt. When it does, the total flow is maximum, and the cut indicated is
minimum, thus providing the max-flow min-cut theorem:

Theorem 5.1: Every network has a maximum total flow which is equal to the
capacity of a cut for which the capacity is minimum.

5.2 THE DINIC ALGORITHM

As in the Ford and Fulkerson algorithm, the Dinic algorithm starts with
some legal flow functions and improves it. When no improvement is possible
the algorithm halts, and the total flow is maximum.
If presently an edge u v has flowf(e) then we say that e is useful from u
to v if one of the following two conditions holds:

(1) u ' v andf(e) < c(e).


(2) u v andf(e) > 0.
-

The layered network of G(V, E) with a flow is defined by the following


algorithm:

(1) Vo - {s}, i - 0.
(2) Construct T - { v Iv £ Vj forj c i and there is a useful edge from a vertex
of Vi to v}.
(3) If T is empty, the present total flow F is maximum, halt
(4) If T contains t then l - i + 1, VI - {t} and halt.
(5) Let Vi+1 - T, increment i and return to Step (2).

For every 1 c i c 1, let Ei be the set of edges useful from a vertex of Vi-l
to a vertex of Vi. The sets Vj are called layers.
The construction of the layered network investigates each edge at most
twice; once in each direction. Thus, the time complexity of this algorithm is
O(IEI).
98 Maximum Flow in a Network

Lemma 5.3: If the construction of the layered network terminates in Step (3)
then the present total flow, F, is indeed maximum.

Proof: The proof here is very similar to the one in the Ford and Fulkerson
algorithm: Let S be the union of Vo, V 1, . . ., Vi. Every edge u -v in (S; S) is
saturated, i.e.f(e) = c(e), or else e is useful from u to v and T is not empty.
Also, every edge u Vis (S; S) hasf(e) 0, or again e is useful from u to v,
etc. Thus, by Lemma 5.1,

F= L f(e) - E f(e)- E c(e) - 0 = c(S).


eE(S;S) eM(S;S) eE(S;S)

By Corollary 5.1, F is maximum.


Q.E.D.

For every edge e in Ej let c(e) be defined as follows:

(i) If u E Vj-,, v E Vj and u -e v then c(e) = c(e) - f(e).


(ii) If u E Vj- 1, v E Vj and u e v then ((e) = f(e).

We now consider all edges of Ej to be directed from Vj-1 to Vj, even if in


G(V, E) they may have the opposite direction (in case (ii)). Also, the initial
flow in the new network isf(e) = 0 everywhere. We seek a maximal flow in
the layered network; by a maximalflowf we mean that satisfies the condi-
tion that for every paths e- VI - V2- Vl-t, where vjE Vj and ejEEj,
there is at least one edge ej such thatfje,) =c(ej). Clearly, a maximal flow is
not necessarily maximum as the example of Figure 5.7 shows: If for all edges
c = 1 and we push one unit flow from s to t via a and d then the resulting
flow is maximal in spite of the fact that the total flow is 1 while a total flow
of 2 is possible.
Later we shall describe how one can find a maximal flow function f effi-
ciently. For now, let us assume that such a flow function has been found and
its total value is F. The flowf in G(V, E) is changed intof' as follows:

(i) If u - v, u E Vj1 and v E Vj thenjr'(e) =f(e) + f(e).


(ii) If u - v, u E VjI and v E Vj thenf'(e) = f(e) - f(e).

It is easy to see that the new flow' satisfies both Cl (due to the choice of
c) and C2 (because it is the superposition of two flows which satisfy C2).
ClearlyF' = F + F > F.
Let us call the part of the algorithm which starts with, finds its layered
network, finds a maximal flow f in it and improves the flow in the original
The Dinic Algorithm 99

VO V1 V? VI
II

Figure 5.7

network to become f' - a phase. We want to show that the number of


phases is bounded by IVI. For this purpose we shall prove that the length of
the layered network increases from phase to phase; by length is meant the in-
dex of the last layer, which we called 1 in Step (4) of the layered network
algorithm. Thus, 1k denotes the length of the layered network of the kth
phase.

Lemma 5.4: If the (k + 1)st phase is not the last then 1,+ > 1,.

Proof: There is a path of length k + 1 in the (k + 1)st layered network


which starts with s and ends with t:
e, e} elk+1
S V I ... Vk+ 1 t.

First, let us assume that all the vertices of the path appear in the k-th
layered network. Let Vj be thejth layer of the kth layered network. We claim
that if Va E Vb then a 2 b. This is proved by induction on a. For a = 0, (vO =
s) the claim is obviously true. Now, assume va+I E V,. If c c b + 1 the induc-
tive step is trivial. But if c > b + 1 then the edge ea+: has not been used in
the kth phase since it is not even in the kth layered network, in which only
edges between adjacent layers appear. If ea+: has not been used and is useful
from va to va+, in the beginning of phase k + 1, then it was useful from va to
va+l in the beginning of phase k. Thus, va+l cannot belong to Vc (by the algo-
100 Maximum Flow in a Network

rithm). Now, in particular, t = v,,,, and t E VIk. Therefore, 1k+I 2 lk. Also,
equality cannot hold, because in this case the whole path is in the kth layered
network, and if all its edges are still useful in the beginning of phase k + 1
then theft of phase k was not maximal.
If not all the vertices of the path appear in the kth layered network then let
Va ea+ va+I be the first edge such that for some b Va E Vb but Va+I is not in

the kth layered network. Thus, ea+l was not used in phase k. Since it is useful
in the beginning of phase k + 1, it was also useful in the beginning of phase
k. The only possible reason for va+j not to belong to Vb+1 is that b + 1 = lk:
By the argument of the previous paragraph a 2 b. Thus a + 1 2 lk, and
therefore 1k+1 > lk.
Q.E.D.

Corollary 5.2: The number of phases is less than or equal to V - 1.

Proof: Since 1 c IVI - 1, Lemma 5.4 implies the corollary.


Q.E.D.

The remaining task is to describe art efficient algorithm to construct a


maximal flow in a layered network.
First, let us show Dinic's method.
We assume that NTis a layered network, and for every edge e in N c(e) > 0.

(1) For every e in N, mark e "unblocked" and letf(e) - 0.


(2) v - s and empty the stack S.
(3) If there is no unblocked edge v - u, with u in the next layer, then (v is
a dead-end and) perform the following operations:
(3.1) If s = v, halt; the presentfis maximal.
(3.2) Delete the top-most edge u -- v from S.
(3.3) Mark e "blocked" and let v - u.
(3.3) Repeat Step (3).
(4) Choose an unblocked edge v- u, with u in the next layer. Put e in S
and let v - u. If v • t then go to Step (3).
(5) The edges on S form an augmenting path:
eL e2 e, 0
s vI ' V2 Vi-I -t. Perform the following operations:
(5.1) A - Minxsisl(ce(i) -f(ei)).
(5.2) For every 1 < i c 1,f(ei) -- 1(e1 ) + A and iff(ei) = c(ei) then
mark es "blocked".
(5.3) Go to Step (2).
The Dinic Algorithm 101

It is easy to see that an edge is declared "blocked" only if no additional aug-


menting path (of length 1) can use it. Thus, when the algorithm halts (in Step
(3.1)) the resulting flow I is maximal in N. Also, the number of edges
scanned, in between two declarations of edge blocking, is at most 1, and 1 c
VI- 1. Since the number of edges in Nis at most IEI and since no blocked
edge becomes unblocked, the number of edge scannings is bounded by
I VI * El. Thus, the algorithm for finding a maximal flow in N is
0(J V I IE l ), yielding a bound 0(1 V1 2IE l) for the whole algorithm.
Next, let us describe the MPM algorithm [6] for finding a maximal flow in
N. This algorithm (following Karzanov) does not use augmenting paths. Let
V be the set of vertices in N. Clearly, V = Vo U VI U ... U VI. For every
vertex v E V, let &c(v)(O(v))be the set of edges u v (v -u) such that u be-
longs to the previous (next) layer. Let &(v) {evi, ev2, ... , e and 4(v)

Pv qv
(1) For every v E V, IP(v)- E j(ei), OP(v)- j(e'vi), m,-1, m '-1.
(2) For every e in N. I(e) -0.
(3) Perform the following operations:
(3.1) P(s) - OP(s), P(t) - IP(v).
(3.2) For v E V - {s, t3, P(v) - Min{IP(v), OP(v)}.
(3.3) Find a vertex v for which P(v) is minimum.
(4) If P(v) = 0, perform the following operations:
(4.1) If v = s or t, halt; the presentf is maximal.
(4.2) For every m, c m c pv, where u e.. v, if u E V then OP(u) -
OP(u) - (C(e.m) f(evm)).
(4.3) For every mi.' c m ' c q,, where v - u, if u E V then IP(u)
- IP(u) - (c(e vm f)-fev').
(4.4) V- V- {v} and go to (3).
(5) Find i for which v E V,. Letj - i, k - i. Also OF(v) - P(v), IF(v) -
P(v)andforeveryu E V- {v} let OF(u) - OandIF(u) -0.
(6) If k = I (the pushing from v to t is complete) go to (9).
(7) Assume Vk = {VI, V2, .. Vk}.
k.,
(7.1) r - 1.
(7.2) u - v,.
(7.3) If OF(u) = 0 then go to (7.5).
(7.4) (OF(u) > 0. Starting with e 'um', we push the excess supply to-
wards t.)
(7.4.1) e - e 'urm and assume u ' w.
102 Maximum Flow in a Network

(7.4.2) Iff(e) = c(e) or w E V then go to (7.4.5).


(7.4.3) If OF(u) ' c(e) -,f(e) then perform the following oper-
ations:
f(e) -f(e) + OF(u),
OF(w) - OF(w) + OF(u),
OP(u) - OP(u) - OF(u),
IP(w) - IP(w) -- OF(u),
and go to (7.5).
(7.4.4) (OF(u) > i(e) - fie))
OF(u) - OF(u) -( (e) -f(e)),
OF(w) - OF(w) + (c(e) -f(e)),
OP(u) - OP(u) - ( (e) -f(e)),
IP(w) -IP(w) -- (J(e) - f(e)),
f(e) -(e).
(7.4.5) m 'u-m '. + 1 and go to (7.4.1).
(7.5) If r =k', go to (8).
(7.6) r - r + 1 and go to (7.2).
(8) k - k + 1 and go to (6).
(9) If j = 1 (the pulling from s to v is complete too) then V- V - {v}
and go to (3).
(10) Assume Vj = {vI, V2, . v;}
(10.1) r - 1.
(10.2) u - v,.
(10.3) If IF(u) = 0 then go to (13.5).
(10.4) (IF(u) > 0. Starting with e.u., we pull the excess demand
into u.)
(10.4.1) e- eum, and assume w - u.
(10.4.2) Iff(e) = c(e) or w f V then go to (10.4.5).
(10.4.3) If IF(u) - c(e) -- f(e) then perform the following
operations:
f(e) - f(e) +- IF(u)
IF(w) - IF(w) + IF(u)
IP(u)- IP(u) - IF(u),
OP(w) - OP(w) - IF(u)
and go to (10.5).
(10.4.4) (IF(u) > c(e) -. f(e))
IF(u) - IF(u) - (cf(e) -f(e)),
IF(w) - IF(w) + (c(e) -f(e)),
IP(u) - IP(u) - (o(e) -f(e)),
OP(w) - OP(w) -- (c(e) - f(e)),
f(e) -C(e).
The Dinic Algorithm 103

(10.4.5) m. - m. + 1 and go to (10.4.1)


(10.5) If r = j', go to (11).
(10.6) r - r + 1 and go to (10.2).
(11) j -j-1 and go to (9).

First, we compute for every vertex v its in-potential IP(v), which is a local
upper bound on the flow which can enter v. Similarly, the out-potential
OP(v), is computed. For every vertex v • s or t, the potential, P(v), is the
minimum of IP(v), and OP(v). For s, P(s) = OP(s) and for t, P(t) = IP(t).
Next, we find v for which P(v) is minimum.
The main idea is that we can easily find a flow of P(v) units which goes
from s to t via v. We use the edges of O(v), one by one, saturating them as
long as the excess supply lasts, and pushing through them flow to the next
layer. For each of the vertices on higher layers we repeat the same process,
until all the P(v) units reach t. This is done in Steps (6) to (8). We can
never get stuck with too much excess supply in a vertex, since v is of mini-
mum potential. We then do the same while pulling the excess demand,
P(v), into v, from the previous layer, and then into it from the layer pre-
ceeding it, etc. This is done in Steps (9) to (11). When this is over, we
return to (3) to choose a vertex v for which P(v) is now minimum (Step (3)),
and repeat the pushing and pulling for it.
Clearly, when edges incident to a vertex are used, their in-potential and
out-potential must be updated. Also, variables IF(v) and OF(v) are used to
record the excess demand that should be flowed into v, and the excess
supply that should be flowed out of v, respectively. If P(v) = 0, none of v's
incident edges can be used anymore for flowing additional flow from s to t.
Thus, the in and out potentials of the adjacent vertices are updated accord-
ingly; this is done in Step (4). If P(s) or P(t) is zero, the flow is maximal,
and the algorithm halts (see (4.1)).
Every edge can be saturated once only (in (7.4.4) or (10.4.4)). The num-
ber of all other uses of edges (in (7.4.3) or (10.4.3)) can be bounded as
follows:
For every v, when P(v) is minimum and we push and pull for v, for every
u ; v we use at most one outgoing edge without saturating it (in (7.4.3))
or one incoming edge (in (10.4.3)). Thus, the number of edge-uses is
bounded by E + I VI2 = 0(1 VI2). Thus, the complexity of the MPM algo-
rithm for finding maximal flow in a layered network is 0(1 V12 ) and if we
use it, the maximum flow problem is solved in 0(1 Vl3 ) time, since the
number of phases is bounded by I VI .
104 Maximum Flow in a Network

5.3 NETWORKS WITH UPPER AND LOWER BOUNDS

In the previous sections we have assumed that the flow in the edges is
bounded from above but the lower bound on all the edges is zero. The
significance of this assumption is that the assignment off(e) = 0, for every
edge e, defines a legal flow, and the algorithm for improving the flow can be
started without any difficulty.
In this section, in addition to the upper bound, c(e), on the flow through e,
we assume that the flow is also bounded from below by b(e). Thus, f must
satisfy

b(e) < J(e)l c(e) (5.6)

in every edge e. Condition C2 remains unchanged.


Thus, our problem of finding a maximum flow is divided into two. First,
we want to check whether the given network has legal flows, and if the an-
swer is positive, we want to find one, Second, we want to increase the flow
and find a maximum flow.
A simple example of a network which has no legal flow is shown in
Figure 5.8. Here next to each edge e we write b(e), c(e).

Figure 5.8

The following method for testing whether a given network has a legal flow
function is due to Ford and Fulkerson 11]. In case of a positive answer, a flow
function is found.
The original network with graph G(V, E) and bounds b(e) and c(e) is
modified as follows:

(1) The new set of vertices, V, is defined by

V= {i, t} U V.

gf and F are new vertices, called the auxiliary source and sink, respec-
tively,
Networks with Upper and Lower Bounds 105

(2) For every v E V construct an edge v -f with an upper bound (capacity)

e(e) =E b(e),
eE 3(v)

where f(v) is the set of edges which emanate from v in G. The lower
bound is zero.
(3) For every v E V construct an edge i -e v with an upper bound

e(e) = E h(e),
eEfc(v)

where a(v) is the set of edges which enter v in G. The lower bound is zero.
(4) The edges of E remain in the new graph but the bounds change: The
lower bounds are all zero and the upper bound e(e) of e EE is defined by
e(e) = c(e) - b(e).
(5) Construct new edges s -e t and t s with very high upper bounds e(e)
and O.(e' )(=oo) and zero lower bounds.

The resulting auxiliary network has a source Y, a sink i; s and t are re-
garded now as regular vertices which have to conform to the conservation
rule, i.e. condition C2.
Let us demonstrate this construction on the graph shown in Fig. 5.9(a).
The auxiliary network is shown in Fig. 5.9(b). The upper bounds e(e) are
shown next to the edges to which they apply.
Now we can use the Ford and Fulkerson or the Dinic (with or without the
MPM improvement) algorithms to find a maximum flow in the auxiliary net-
work.

Theorem 5.2: The original network has a legal flow if and only if the max-
imum flow of the auxiliary network saturates all the edges which emanate
from.
Clearly, if all the edges which emanate from ! are saturated, then so are all
the edges which enter f. This follows from the fact that each b(e), of the origi-
nal graph, contributes its value to the capacity of one edge emanating from A
and to the capacity of one edge entering f. Thus, the sum of capacities of
edges emanating from I is equal to the sum of capacities of edges entering f.

Proof: Assume a maximum flow functionf of the auxiliary network saturates


all the edges which emanate from f. Define the following flow function, for
the original network:
106 Maximum Flow in a Network

(oi,

lb)
Figure 5.9
Networks with Upper and Lower Bounds 107

For every e E E

f(e) =f(e) + b(e). (5.7)

Since

0 cf(e) c e(e) = c(e) -b(e),

we have

b(e) cf(e) c c(e),

satisfying (5.6).
Now let v E V - {s, t}; a(v) is the set of edges which enter v in the original
network and $(v) is the set of edges which emanate from v in it. Let f- v and
v T ( be the edges of the auxiliary network, as constructed in parts (3) and
(2). Clearly,

rIfle) +f() = f(e) + f(T). (5.8)


eE.() 6)
eEO3

By the assumption

f(a) = e(u) = b(e)


M
eEa(v)

and

f(r) = O(r) = b(e).


M
eE3(v)

Thus

efa(e)
eE.4V) eE)(O'f(e).
el (5.9)

This proves that C2 is satisfied too, and f is a legal flow function of the
original network.
The steps of this proof are reversible, with minor modifications. Iff is a
legal flow function of the original network, we can defined for the auxiliary
network by (5.7). Sincef satisfies (5.6), by subtracting b(e), we get thatf(e)
satisfies C1 in e E E. Now, f satisfies (5.9) for every v E V - {s, t}. Letf(a)
= e(a) andf(r) = e(T). Now (5.8) is satisfied and therefore condition C2 is
held while all the edges which emanate from are saturated. Finally, since
.
108 Maximum Flow in a Network

the net flow which emanates from s is equal to the net flow which enters t, we
can make both of them satisfy C2 by flowing through the edges of part (5)
of the construction, this amount.
Q.E.D.

Let us demonstrate the technique for establishing whether the network has
a legal flow, and finding one in the case the answer is positive, on our exam-
ple (Fig. 5.9). First, we apply the Dinic algorithm on the auxiliary network
and end up with the flow, as in Fig. 5.10(a). The maximum flow saturates
all the edges which emanate from &,and we conclude that the original net-
work has a legal flow. We use (5.7) to define a legal flow in the original net-
work; this is shown in Fig. 5.10(b) (next to each edge e we write b(e), c(e),
f(e), in this order).
Once a legal flow has been found, we turn to the question of optimizing it.
First, let us consider the question of maximizing the total flow.
One can use the Ford and Fulkerson algorithm except that the backward
labeling must be redefined as follows:

A backward labeling of vertex v by the edge u e V is applicable if:

(1) u is labeled and v is not;


(2) f(e) > b(e).

The label that v gets is 'e'. In this case we define A(e) = f(e) - b(e).
We start the algorithm with the known legal flow. With this exception, the
algorithm is exactly as described in Section 5.1. The proof that when the
algorithm terminates the flow is maximum is similar too. We need to
redefine the capacity of a cut determined by S as follows:

c(S) = _ c(e) - E b(e).


eE(S;Sl 0(5;S)

It is easy to prove that the statement analogous to Lemma 5.2, still holds; for
every flow f with total flow F and every S

F s c(S'. (5.10)

Now, the set of labeled vertices S, when the algorithm terminates satisfies
(5.10) by equality. Thus, the flow is maximum and the indicated cut is
minimum.
The Dinic algorithm can be used too. The only change needed is in
the definition of a useful edge, part (ii): u v andf(e) > b(e), instead of
-
Networks with Upper and Lower Bounds 109

(a)

(b)
Figure 5.10
110 Maximum Flow in a Network

f(e) > 0. Also, in the definition of e(e), part (ii): If u E Vi-,, v E Vi and u
v then c(e) = f(e) - b(e).
Let us demonstrate the maximizing of the flow on our example, by
the Dinic algorithm. The layered network of the first phase for the net-
work, with legal flow, of Fig. 5.10(b) is shown in Fig. 5.11(a). The pair
i(e), f(e) is shown next to each edge. The new flow of the original network is
shown in Fig. 5.11(b). The layered network of the second phase is shown in
Fig. 5.11(c). The set S = {s, y} indicates a minimum cut, and the flow is
maximum.
In certain applications, what we want is a minimum flow, i.e. a legal flow
functionf for which the total flow F is minimum. Clearly, a minimum flow
from s to t is a maximum flow from t to s. Thus, our techniques solve this
problem too, by simply exchanging the roles of s and t. By the max-flow min-
cut theorem, the max-flow from t to 5, F(t, s) is equal to a min-cut from t to
s. Therefore, there exists a T C V, t i T, s f T such that

F(t, s) = c(T) = Ec(e) - E b(e).


.Ei TT) e(T ;T)

Now F(t, s) = -F(s, t), and if S =', then

F(s, t) = E bVe) - E c(e).


eE(5;S) ee(S;S)

For the min-flow problem we define the capacity of a cut determined by S. s E


S, t Sby

c(S) = b(e) - E c(e).


e((S;S) eE(S;S)

Clearly, every S yields a lower bound, c(S), on the flow F(s, t) and the
min-flow is equal to the max-cut.
Networks with Upper and Lower Bounds 111

I
I

LI

(a)

(b)

n
VO-- 1
V
I--------

(
S 3 y :
- -- -- -- - -i . -- -- -- -- -

(C)

Figure 5.11
112 Maximum Flow in a Network

PROBLEMS

5.1 Find a maximum flow in the network shown below. The number next to
each edge is its capacity.

5.2 In the following network, x 1, x2 , X3 are all sources (of the same com-
modity). The supply available at xi is 5, at x2 is 10, and at X3 is 5. The
verticesy1 ,Y2,y3 are all sinks. The demand required aty, is 5, aty2 is 10,
and aty3 is 5. Find out whether all the requirements can be met simul-
taneously. (Hint: One way of solving this type of problem is to introduce
an auxiliary source s and a sink t, connect s to xi through an edge of ca-
pacity equal to xi's supply; connect eachyi to t through an edge of capa-
city equal to yi's demand; find a maximum flow in the resulting net-
work and observe if all the demands are met.)
Problems 113

5.3 In the following network, in addition to the capacities of the edges,


each vertex other than s and t has an upper bound on the flow that may
flow through it. These vertex capacities are written below the vertex
labels. Find a maximum flow for this network. (Hint: One way of solv-
ing this type of problem is to replace each vertex v by two vertices v'
and v" with an edge v' - v", where c(e) is the upper bound on the flow
that may go through v in the original network. All the edges which pre-
viously entered v are now entering v', and all edges which previously
emanated from v now emanate from v".)

5.4 (a) Describe an alternative labeling procedure, like that of Ford and
Fulkerson, for maximizing the flow, except that the labeling starts
at t, and if it reaches s an augmenting path is found.
(b) Demonstrate your algorithm on the following network.

(c) Describe a method of locating an edge which has the property that
increasing its capacity increases the maximum flow in the graph.
114 Maximum Flow in a Network

(Hint: One way of doing this is to use both source-to-sink and sink-
to-source labelings.) Demonstrate your method on the graph of (b).
(d) Does an edge like this always exist? Prove your claim.
5.5 Prove that in a network with a nonnegative lower bound b(e) for every
edge e but no upper bound (c(e) = o), there exists a legal flow if and
only if for every edge e either e is iin a directed circuit or e is in a directed
path from s to t or from t to s.
5.6 Find a minimum flow from s to t for the network of Problem 5. 1, where
all the numbers next to the edges are now assumed to be lower bounds,
and there are no upper bounds =oo).
5.7 The two networks shown have both lower and upper bounds on the flow
through the edges. Which of the two networks has no legal flow? Find
both a maximum flow and minimum flow if a legal flow exists. If no
legal flow exists display a set of vertices which neither includes the
source, nor the sink, and is either required to "produce" flow or to "ab-
sorb" it.
References 115

5.8 Prove that a network with lower and upper bounds on the flow in the
edges has no legal flow if and only if there exists a set of vertices which
neither includes the source, nor the sink, and is required to "produce"
flow or to "absorb" it.

REFERENCES

[1] Ford, L. R., Jr. and Fulkerson, D. R., Fl7ows in Networks, Princeton University
Press, 1962.
[2] Edmonds, J., and Karp, R. M., "Theoretical Improvements in Algorithmic Ef-
ficiency for Network Flow Problems," J.ACM, Vol. 19, 1972, pp. 248-264.
[3] Dinic, E. A., "Algorithm for Solution of a Problem of Maximum Flow in a Net-
work with Power Estimation," Soviet Math. Dokl., Vol. 11, 1970, pp. 1277-1280.
[4] Karzanov, A. V., "Determining the Maximal Flow in a Network by the Method of
Preflows," Soviet Math. Doki., Vol. 15, 1974, pp. 434-437.
[5] Cherkassky, B., "Efficient Algorithms for the Maximum Flow Problem", Akad.
Nauk USSR, CEMI, Mathematical Methods for the Solution of Economical
Problems, Vol. 7, 1977, pp. 117-126.
[6] Malhotra, V. M., Pramodh Kumar, M., and Maheshwari, S. N., "An 0(1 VI 3)
Algorithm For Finding Maximum Flows in Networks," Computer Science Pro-
gram, Indian Institute of Technology, Kanpur 208016, India. 1978.
Chapter 6

APPLICATIONS OF NETWORK
FLOW TECHNIQUES
6.1 ZERO-ONE NETWORK FLOW

Several combinatorial problems can be solved through the network flow


techniques. In the networks we get, the capacity of all the edges is one. In
order to get better algorithms with lower time complexities we need to study
these network flow problems. We follow here the work of Even and Tarjan
[1].
Consider a maximum flow problem, where for every edge e of G(V, E),
c(e) = 1.
The first observation is that in Dinic's algorithm for maximal flow in a
layered network, each time we find a path, all the edges on it become
blocked, and in case the last edge leads to a deadend, we backtrack on this
edge and it becomes blocked. Thus., the total number of edge traversals is
bounded by IEl and the whole phase is of time complexity O(IEl). Since
the number of phases is bounded by I V , the Dinic algorithm for maxi-
mum flow is of complexity 0(1 VI *|E |).
Our first goal is to prove a better bound yet: O( IE 12). However, we need
to prepare a few results beforehand.
Let G(V, E) be a 0-1 network in which c(e) = 1 for all e E E) with some
integral legal flow function f Define G(V, E) as follows:

(i) If u v in G andf(e) = 0 then e E E.


(ii) If ue v in G andf(e) = 1 then u !-vis in G. Clearly, e ' is a new edge
which corresponds to e.

Thus, IEl = IE1. Clearly, the usef l edges of the layered network which is
constructed for G with present flow, with their direction of usefulness, are
all edges of G.

116
Zero-One Network Flow 117

Let us denote by (S; S)G, where s E S, t 0 S, and S = V - S, the set of


edges which emanate from a vertex of S and enter a vertex of S, and let
c(S, G) be the capacity of the corresponding cut in G. Also, let M be the total
maximum flow in G, while F is the total present flow.

Lemma 6.1: M=M - F.

Proof: Let S be a subset of V such that s E S and t 0 S. The definition of G


implies that

c(S, G) =(S;S)tl = (1 -f(e)) + r f(e).


eE(S;S)G eE(S;S)G

However,

F = Ef (e) - E f (e)-
eE(S;S)G eE(S;S)G

Thus,

c(S, G) =|(S;S)G IF = c(S, G) -F.

This implies that a minimum cut of G corresponds to a minimum cut of G;


i.e. is defined by the same S. By the max-flow min-cut theorem (Theorem
5.1), the capacity of a minimum cut of G is M, and the capacity of a
minimum cut of G is M (the maximum total flow in G). Thus, the lemma
follows.
Q.E.D.

Lemma 6.2: The length of the layered network for the 0-1 network defined
by G(V, E) (with a given s and t) and zero flow everywhere is at most
IEI /M.
Proof: We remind the reader that Vi is the set of vertices of the ith layer of
the layered network, and Ej is the set of edges from V,., to Vi. Sincef(e) = 0
for every e EE, the useful directions are all forward. Thus, everyEj is equal to
(S; S)G where S = V. U V, U ... U V, . Thus, by Lemma 5. 1,

M c IEjI . (6.1)

Summing up (6.1) for every i = 1, 2, . . ., 1 where 1 is the length of the layered


network, we get l M c |El, or
118 Applications of Network Flow Techniques

I c |E /M. (6.2)

Theorem 6.1: For 0-1 networks, Dinic's algorithm is of time complexity


O(IEl3/ 2 ).

Proof: If M < IE l/ 2 then the number of phases is bounded by IE 1/2, and


the result follows. Otherwise, consider the phase during which the total flow
reaches M - E 1/2. The total flow F. in G( V, E), when the layered network
for this phase is constructed satisfies

F <M-- JEl" 2 .

This layered network is identical with the one constructed for G with zero
flow everywhere. Thus, by Lemma 6. 1.

M = M -- F> |El"2 .

By lemma 6.2, the length I of this layered network satisfies

I IEIl/M < IEl/IEI"12 = El"2 .

Therefore, the number of phases up to this point is at most IE 1/2 - 1, and


since the number of additional phases to completion is at most IEl 1/2, the
total number of phases is at most 2lEl' 2.
Q.E.D.

A 0-1 network is of type 1 if it has no parallel edges. For such network we


can prove another upper bound on the time complexity. First, we prove a
lemma similar to Lemma 6.2.

Lemma 6.3: Let G( V, E) define a 0-1 network of type 1 with maximum total
flow M from s to t. The length 1of the first layered network, when the flow is
zero everywhere, is at most 21 VI /M1'2 + 1.

Proof: Let Vi be the set of vertices of the ith layer. Since there are no parallel
edges, the set of edges, E,+l, from V,to V + I in the layered network satisfies
IEj+, lI * VI , I for every i = 0. 1, .. .,- 1. Since each IEjI is the
capacity of a cut, we get that

M c IVi IVi+,1.
Zero-One Network Flow 119

Thus, either I Vj I I
Ml2 or V+| M2!2 Clearly,

E IVil ' IVI.

Thus,

[ +2 1 jMI2 IVI

and the lemma follows. Q.E.D.

Theorem 6.2: For 0-1 networks of type 1, Dinic's algorithm has time com-
plexity O(I VI21/3 [El ).

Proof: If M C | VI 2/3, the result follows immediately. Let F be the total flow
when the layered network, for the phase during which the total flow reaches
the value M - IVI2/3, is constructed. This layered network is identical with
the first layered network for & with zero flow everywhere. G may not be of
type 1 since it may have parallel edges, but it can have at most two parallel
edges from one vertex to another; if el and e2 are antiparallel in G, f (el) = 0
andf(e 2 ) = 1, then in G there are two parallel edges: el and e2'. A result
similar to Lemma 6.3 yields that

I < 2'321 VI/M /2 + 1

Since M= M - F >M - (M - I V i'23) = I V 2' 3 ,we get

1< 22/31 VI + 1 = 22/3- 1VI 2/3 + 1.

Thus, the number of phases up to this point is 0(1 VI2/3). Since the number of
phases from here to completion is at most IVI'23, the total number of phases
if O(l VI23).
Q.E.D.

In certain applications, the networks which arise satisfy the condition that
for each vertex other than s or t, either there is only one edge emanating from
it or only one edge entering it. Such 0-1 networks are called type 2.
120 Applications of Network Flow Techniques

Lemma 6.4: Let the 0-1 network defined by G(V, E) be of type 2, with max-
imum total flow M from s to t. The length I of the first layered network, when
the flow is zero everywhere, is at most (I VI - 2)/M + 1.

Proof: The structure of G implies that a max-flow in G can be decomposed


into vertex-disjoint directed paths from s to t; i.e., no two of these paths
share any vertices, except their common start-vertex s and end-vertex t. (The
flow may imply some directed circuits, vertex-disjoint from each other and
from the paths above, except possibly at s or t. These circuits are of no in-
terest to us.) The number of these paths is equal to M. Let A be the length
of a shortest of these paths. Thus, each of the paths uses at least X - 1 in-
termediate vertices. We have,

M-(X - 1) ' IVI -2,

which implies X c (IVI - 2)/M + 1. However, I c X. Thus, the lemma


follows.
Q.E.D.

Lemma 6.5: If the 0-1 network defined by G is of type 2 and if the present
flow function isf, then the corresponding G defines also a type 2 0-1 net-
work.

Proof: Clearly G defines a 0-1 network. What remains to be shown is that in


G for every vertex v, either there is only one emanating edge or only one
entering edge. If there is no flow through v (perf), then in 0 v has exactly the
same incident edges and the condition continues to hold. If the flow going
through v is 1, (clearly, it cannot be more) assume that it enters via el and
leaves via e2. In G neither of these two edges appears, but two edgesel' and
e2 are added, which have directions opposite to el and e2, respectively. The
other edges of G which are incident to v remain intact in 0. Thus, the
numbers of incoming edges and outgoing edges of v remains the same. Since
G is of type 2, so is G.
Q.E.D.

Theorem 6.3: For a 0-1 network of lype 2, Dinic's algorithm is of time com-
"EI).
plexity O(I VI 1/2 *

Proof: If M C IVI 1/2, then the number of phases is bounded by IVI 1/2, and
the result follows. Otherwise, consider the phase during which the total flow
reaches the value M-| V I 2, Therefore, the layered network for this phase
Vertex Connectivity of Graphs 121

is constructed when F < M - I 1/2. This layered network is identical with

the first for G, with zero flow everywhere. Also, by Lemma 6.5, G is of type 2.
Thus, by Lemma 6.4, the length 1 of the layered network is at most (I VI -
2)/AM + 1. Now, M M - F > M - (M - IVI /2) = IVII 2
Thus,

1VI -/2
IC VI -l,2 + 1 = °(I VI"2).

Therefore, the number of phases up to this one is at most 0(1 VI 1/2). Since the
number of phases to completion is at most I VI 1/2 more, the total number of
phases is at most 0(1 VI 1/2).
Q.E.D.

6.2 VERTEX CONNECTIVITY OF GRAPHS

Intuitively, the connectivity of a graph is the minimum number of elements


whose removal from the graph disconnect it to more than one component.
There are four cases. We may discuss undirected graphs or digraphs; we may
discuss the elimination of edges or vertices. We shall start with the problem
of determining the vertex-connectivity of an undirected graph. The other
cases, which are simpler, will be discussed in the next section.
Let G(V, E) be a finite undirected graph, with no self-loops and no parallel
edges. A set of vertices, S, is called an (a, b) vertex separatorif (a, b I C V
- S and every path connecting a and b passes through at least one vertex of
S. Clearly, if a and b are connected by an edge, no (a, b) vertex separator ex-
ists. Let a -9-b mean that there is no such edge. In this case, let N(a, b) be the
least cardinality of an (a, b) vertex separator. Also, let p(a, b) be the max-
imum number of pairwise vertex disjoint paths connecting a and b in G;
clearly, all these paths share the two end-vertices, but no other vertex ap-
pears on more than one of them.

Theorem 6.4: If a -/- b then N(a, b) = p(a, b).

This is one of the variations of Menger's theorem [2]. It is not only reminis-
cent of the max-cut min-flow theorem, but can be proved by it. Dantzig and
Fulkerson [3] pointed out how this can be done, and we shall follow their ap-
proach.

Proof: Construct a digraph G( V, E) as follows. For every v E V put two ver-


tices v ' and v" in V with an edge v' vvv". For every edge u -e v in G, put
122 Applications of Network Flow Techniques

two edges u "- v' and v" -u ' in G. Define now a network, with digraph
G, source a", sink b ', unit capacities for all the edges of the e, type (let us
call them internal edges), and infinite capacity for all the edges of the e' and
e" type (called external edges). For example, in Fig. 6.1(b) the network for
G. as shown in Fig. 6.1(a), is demonstrated.

We now claim that p(a, b) is equal to the total maximum flow F (from a"
to b ') in the corresponding network. First, assume we have p(a, b) vertex

'a)

(b)
Figure 6.1
Vertex Connectivity of Graphs 123
e1 e2 e3 e,-I e
disjoint paths from a to b in G. Each such path, a - vI
V2 .. . V/- I b,
indicates a directed path in G.:

a, VV 2V 1)2 . / v 1/ - 1 -I b'.

These directed paths are vertex disjoint, and each can be used to flow one
unit from a " to b '. Thus,

F 2 p(a, b).

Next, assume is a flow function which achieves a maximum total flow F in


the network. We may assume thatf(e) is either zero or one, for every e EE.
This follows from the fact that one can use the Ford and Funkerson
algorithm, or the Dinic algorithm, in which the flow is alwyas integral.
Also, the edges with infinite capacity enter a vertex with a single out-
going edge whose capacity is one and which must satisfy the conservation
rule (C2), or they emanate from a vertex with only one incoming edge of unit
capacity which is subject to C2; thus, the flow through them is actually
bounded from above by one. (We have assigned them infinite capacity for
convenience reasons, which will become clear shortly.) Therefore, the total
flow F can be decomposed to paths, each describing the way that one unit
reaches b ' from a ". These paths are vertex disjoint, since the flow through
v ' or v ", if v (ta, b }, is bounded by one. Each indicates a path in G. These
F paths in G are vertex disjoint too. Thus,

F c p(a, b).

We conclude that F = p(a, b).


By the max-flow min-cut theorem, F is equal to the capacity c(S) of some
cut defined by some S C V, such that a" E S and b' f S. Since

eE(S.S)

the set (S; S) consists of internal edges only. Now, every directed path from
a" to b' in Guses at least one edge of (S; S). Thus, every path from a to b in
G uses at least one vertex v such that e, E (S; 5). Therefore, the set R =
I vI v E V and e. E (S; S) J is an (a, b) vertex separator. Clearly JR I = c(S).
Thus, we have an (a, b) vertex separator whose cardinality is F. Proving that
N(a, b) c F = p(a, b).
Finally, it is easy to see that N(a, b) > p(a, b), since every path from a to b
124 Applications of Network Flow Techniques

uses at least one vertex of the separator, and no two paths can use the same
one.
Q.E.D.

The algorithm suggested in the proof, for finding N(a, b), when the Dinic
algorithm is used to solve the network problem, is of time complexity
0( I V| 1/2. * E
E ). This results from the following considerations. The number
of vertices in G is 21 VI; the number of edges is l VI + 21EI. Assuming [El
> i VI, we have IVI = °(| VI) and 1lFl = °(IEI). Since we can assign unit
capacity to all the edges without changing the maximum total flow, the net-
work is of type 2. By Theorem 6.3, the algorithm is of time complexity
O(I VI 1 /2. El). We can even find a minimum (a, b) vertex separator as
follows: Once the flow is maximum, change the capacity of the external edges
back to X and apply the construction of the layered network. The set of ver-
tices which appear also in this layered network, S, defines a minimum cut
which consists of internal edges only. Let R be the vertices of G which corre-
spond to the internal edges in (S; S). R is a minimum (a, b) vertex separator
in G. This additional work is of time complexity O(1El).

The vertex connectivity, c, of an undirected graph G( V, E) is defined as


follows:

(i) If G is completely connected, (i.e. every two vertices are connected by an


edge), then c = IVI - 1.
(ii) If G is not completely connected then

c = MinN(a, b).
af b

Lemma 6.6: If G is not completely connected then

Minp(a, b) = Minp(a, b).


af'b a.b

Namely, the smallest value of p(a, b) occurs also for some two vertices a and
b which are not connected by an edge.

Proof: Let a, b be a pair of vertices such that a - b and p(a, b) is minimum


over all pairs of vertices of the graph. Let G ' be the graph obtained from G
by dropping e. Clearly, the number of vertex disjoint paths connecting a and
b in G ', p '(a, b), satisfies

p '(a, b) = p(a, b) -1.


Vertex Connectivity of Graphs 125

Also, since a 7 b in G ', then by Theorem 6.4, there is an (a, b) vertex


separator R in G' such that p '(a, b) = R 1.
If IR =I I V - 2, thenp(a, b) = VI - 1, andp(a, b) cannot be the
least of all tp(u, v)Iu, v E V}, since for any u # v, p(u, v) ' | VI - 2.
Hence, IR I < V - 2. Therefore, there must be some vertex v E V - (R U
( a, b J). Now, without loss of generality we may assume that R is also an (a,
v) vertex separator (or exchange a and b). Thus, a -- v in G and R U I b ] is
an (a, v) vertex separator in G. We now have

p(a, v) c IR+ 1 =p(a, b),

and the lemma follows.


Q.E.D.

Theorem 6.5: c = Minp(a, b).


ab

Proof: If G is completely connected then for every two vertices a and b, p(a,
b) =I VI - 1 and the theorem holds. If G is not completely connected then,
by definition
c = MinN(a, b).

By Theorem 6.4, Min N(a, b) = Min p(a, b). Now by Lemma 6.6, Min
a,'b a-,lb a-b
p(a, b) = Minp(a, b).
ab

Q.E.D.

We can use the intermediate result,

c = Minp(a, b),

to compute the vertex connectivity of G with time complexity O( I V 125 I El).


However, a slightly better bound can be obtained.

Lemma 6.7: c c 21El/lVI.

Proof: The vertex (or edge) connectivity of a graph cannot exceed the degree
of any vertex. Thus,

c c Mind(v).
126 Applications of Network Flow Techniques

Also,

Ed(v) = 2. lEt.

Thus, Min d(v) c 2I El/I VI, and the lemma follows.


Q.E.D.

Let us conduct the procedure to find the vertex connectivity c, of a graph


G, which is not completely connected, as follows: Order the vertices vi, v2,
. . ., v, v, in such a way that v, -7- v for some v. Compute N(vi, v) for every v
such that v,1 v. (There are at most I VI such computations, each of time
complexity °(l VI 1/2. IEI).) Repeat the computation for V2, V3, . . . and ter-
minate with Pk, once k exceeds the minimum value of N(v,, v) observed so
far, ay.

Theorem 6.6: The procedure described above terminates with -y = c.

Proof: Clearly after the first computation of N(v1 , v) for some v, -4 v, y


satisfies

c s -y s l VIl - 2. (6.3)

From there on -y can only decrease, bat (6.3) still holds. Thus, for some k c
IVI - 1, the procedure will terminate. When it does, k 2 -y + 1 2 c + 1.
By definition, c is equal to the cardinality of a minimum vertex separator R
of G. Thus, at least one of the vertices v,, v2, . . ., Vk is not in R, say vi. R
separates the remaining vertices into at least two sets, such that each path,
from a vertex of one set to a vertex of another, passes through at least one
vertex of R. Thus, there exists a vertex v such that N(v,, v) ' JRI = c, and
therefore ey c.
Q.E.D.

Clearly, the time complexity of this procedure is O(c. I V 1312. I El). By


Lemma 6.7 this is bounded by 0(I VjI/2. IEl 2).

If c = 0 then G is not connected. We can use DFS (or BFS) to test


whether this is the case in 0(I E I) time. If c = 1 then G is separable, and as
we have seen in Section 3.2, this can be tested also by DFS in O(IEI) time.
This algorithm determines also whether c 2 2, i.e., whether it is non-
separable. Before we discuss testing for a given k, whether c 2 k, let us con-
Vertex Connectivity of Graphs 127

sider the following interesting theorem about equivalent conditions for G to


be nonseparable.*

Theorem 6.7: Let G(V, E) be an undirected graph with I VI > 2 and no


isolated vertices.** The following six statements are equivalent.

(1) G is nonseparable.
(2) For every two vertices x and y there exists a simple circuit which goes
through both.
(3) For every two edges el and e2 there exists a simple circuit which goes
through both.
(4) For every two vertices x and y and an edge e there exists a simple path
from x toy which goes through e.
(5) For every three vertices x, y and z there exists a simple path from x to
z which goes through y.
(6) For every three vertices x, y and z there exists a simple path from x to z
which avoids y.

Proof: First we prove that (1) is equivalent to (2).


(1) * (2): Since G is nonseparable, c > 2. By Theorem 6.5, for every two
vertices x and y p(x, y) 2 2. Thus, there is a simple circuit which goes
through x and y.
(2) - (1): There cannot exist a separation vertex in G since every two ver-
tices lie on some common simple circuit.
Next, let us show that (1) and (3) are equivalent.
(1) >(3): From G construct G ' as follows. Remove the edges u, el v, and
u2 V2 (without removing any vertices). Add two new vertices, x andy, and

four new edges: ul - x - vI, u2 - Y - V2. Clearly, none of the old vertices
become separation vertices, by this change. Also, x cannot be a separation
vertex, or either ul or v, are separation vertices in G. (Here I VI > 2 is used.)
Thus, G' is nonseparable. Hence, by the equivalence of (1) and (2), G'
satisfies (2). Therefore, there exists a simple circuit in G' which goes through
x andy. This circuit indicates a circuit through e1 and e2 in G.
(3) - (1): Letx andy be any two vertices. Since G has no isolated vertices,
there is an edge el incident tox and an edge e2 incident toy. (If el e2, chose
any other edge to replace e2 ; the replacement need not even be incident toy;
the replacement exists since there is at least one other vertex, and it is not

*Many authors use the term biconnected to mean nonseparable. I prefer to call a
graph biconnected if c = 2.
**Namely, for every v E V, d(v) > 0. G has been assumed to have no self-loops.
128 Applications of Network Flow Techniques

isolated.) By (3) there is a simple circuit through el and e2 , and therefore a


circuit through x andy. Thus, (2) holds, and (1) follows:
Now, let us prove that (3) * (4) - (5) : (6) - (3).
(3) - (4): Since (3) holds, the graph G is nonseparable. Add a new edge
x y, if such does not exist already in G. Clearly, the new graph, G', is still
nonseparable. By the equivalence of (1) and (3), G' satisfy statement (3).
Thus, there is a simple circuit which goes through e and e' in G'. Therefore,
there is a simple path in G, from x to y through e.
(4) * (5): Let e be an edge incident to vertex y; such an edge exists since
there are no isolated vertices in G. By (4) there is a simple path from x to z
through e. Thus, this path goes through y.
(5) - (6): Letp be a simple path which goes from x toy through z; such a
path exists since (5) holds for every three vertices. The first part of p, from x
to z, does not pass through y.
(6) - (1): If (6) holds then there cannot be any separation vertex in G.
Q.E.D.

Let us now return to the problem of testing the k connectivity of a given


graph G; that is, testing whether c is greater than or equal to the given
positive integer k. We have already seen that for k = 1 and 2, there is an
O(1El) algorithm. Hopcroft and Tarjan [4] showed that k = 3 can also be
tested in linear time, but their algorithm is quite complicated and does not
seem to generalize for higher values of k. Let us present a method which was
suggested by Kleitman [5] and improved by Even [6].
Let L I vI, V2, . . ., vi) be a subset of V, where I 2 k. Define O as
follows. G includes all the vertices and edges of G. In addition it includes a
new vertex s connected by an edge to each of the vertices of L. G is called
the auxiliary graph.

Lemma 6.8: Let u E V-L. If in Gp(vi, u) 2 k for every v, E L, then in G


p(s, u) - k.

Proof: Assume not. Then p(s, u) < k. By Theorem 6.4, there exists a (s, u)
vertex separator S, in G, such that IS < k. Let R be the set of vertices such
that all paths, in G, from s to v E R pass through at least one vertex of S.
Clearly, vi 0 R, since vi is connected by an edge to s. However, since 1 2 k >
IS I, there exists some 1 c i < I such that vi 0 S. All paths from v, to u go
through vertices of S. Thus, p(vi, u) < S I < k, contradicting the assump-
tion.
Q.E.D.
Vertex Connectivity of Graphs 129

Let V = (vI, V2, . . ., v. ]. Let j be the least integer such that for some
i <j,p(vi, v;) < kinG.

Lemma 6.9: Letj be as defined above and & be the auxiliary graph for L =
IVI, V2, . . ., vj- I. In t,,p(s, v>) < k.

Proof: Consider a minimum (vi, v,) vertex separator S. By Theorem 6.4,


lS I < k. Let R be the set of all vertices v E V such that all the paths from vi to
v, in G, pass through vertices of S. Clearly, Vj E R. If for some ' < j, v, E R,
then p(i, j ') - ISI < k, and the choice ofj is wrong. Thus, v; is the least
vertex in R (i.e. the vertex for which the subscript is minimum). Hence L n
R = 0. Thus, in G, S is an (s, v,) vertex separator, andp(s, v,) < k.
Q.E.D.

The following algorithm determines whether the vertex connectivity of a


given undirected graph G( V, E), where V = I v1, V2, .. ., v, ), is at least k.

(1) For every i andj such that 1 c i <j c k, check whetherp(vi, v,) 2 k. If
for some i andj this test fails then halt; G's connectivity is less then k.
(2) For every, k + 1 cj c n form G(withL = {vI, v 2 , ... , v, 1}) and
check whether in G p(s, vj) Ž k. If for some j this test fails then
halt; G's connectivity is less than k.
(3) Halt; the connectivity of G is at least k.

The proof of the algorithm's validity is as follows: If G's connectivity is at


least k, then clearly no failure will be detected in Step (1). Also, by Lemma
6.8, no failure will occur in Step (2), and the algorithm will halt in Step (3)
with the right conclusion. If G's connectivity is less than k, and it is not
detected directly in Step (1) then, by Lemma 6.9, it will be detected in Step
(2).
Step (1) takes O(k 3 El) steps, since we have to solve k(k - 1)/2 flow
problems. In each we have to find k augmenting paths, and each path takes
O(IE I) steps to find.
Step (2) takes O(k *I VI *JEl) steps, since we have to solve I VI - k flow
problem, again for each up to total flow k.
Thus, if k C I VI 1/2 then the time complexity of the algorithm is
O(k-IVI -EI).
The readers who are familiar with the interesting result of Gomory and Hu
[7] for finding all I VI (I VI - 1) total flows, for all source-sink pairs in an
undirected network by solving only I VI - 1 network flow problem, should
130 Applications of Network Flow Techniques

notice that this technique is of no hel in our problem. The reason for that is
that even if G is undirected, the network we get for vertex connectivity testing
is directed.

6.3 CONNECTIVITY OF DIGRAPHS AND EDGE CONNECTIVITY

First, let us consider the problem of vertex-connectivity of a digraph G( V,


E). The definition of an (a, b) vertex separator is the same as in the un-
directed case, except that now all we are looking at are directed paths from a
to b; i.e., an (a, b) vertex separatori: a set of vertices S such that I a, b I n
S = 0 and every directed path from a to b passes through at least one vertex
of S. Accordingly, N(a, b) and p (a, b) are defined. The theorem analogous to
Theorem 6.4, still holds, except that The algorithm is even simpler: For every
edge u -v in G there is only one edge u"o-e v ' in G.
The vertex connectivity, c, of a digraph G( V, E) is defined as follows:
(i) If G is completely connected, (i.e. for every two vertices a and b there are
edgesa - b and b -a), then c =l VI -1.
(ii) If G is not completely connected then

c = MinmN(a, b).

The lemma analogous to Lemma 6.6 still holds, and the proof goes along
the same lines. Also, the theorem analogous to Theorem 6.5 holds, and the
complexity it yields is the same. If G has no parallel edges a statement like
Lemma 6.7 holds and the procedure and the proof of its validity (Theorem
6.6) extend to the directed case, except that for each v, we compute both
N(v1 , v) and N(v, v,).
The algorithm for testing k connectivity extends also to the directed case
and again all we need to change is that whenever p(a, b) was computed, we
now have to compute both p(a, b) and p(b, a).
Let us now consider the case of e dge connectivity both in graphs and
digraphs.
Let G( V, E) be an undirected graph. A set of edges, T, is called an (a, b)
edge separatorif every path from a to b passes through at least one edge of T.
Let M(a, b) be the least cardinality of an (a, b) edge separator. Let p (a, b)
be now the maximum number of edge disjoint paths which connect a
with b.
Theorem 6.8: M(a, b) = p(a, b).
Connectivity of Digraphs and Edge Connectivity 131

The proof is similar to that of Theorem 6.4, only simpler. There is no need
to split vertices. Thus, in G, V = V. We still represent each edge u - v of
G by two edges u - v and v u in G. There is no loss of generality in assum-
ing that the flow function in G satisfies the condition that eitherf(e') = 0 or
f(e") = 0; for iff(e ') =f(e") = 1 then replacing both by 0 does not change
the total flow. The rest of the proof raises no difficulties.
The edge connectivity, c, of a graph G is defined by c = Mingb M(a, b).
By Theorem 6.8 and its proof, we can find c by the network flow technique.
The networks we get are of type 1. Both Theorem 6.1 and Theorem 6.2 ap-
ply. Thus, each network flow problem is solvable by Dinic's algorithm with
complexity O(Min I IEl3 '2 , l VI213. |ElI).
Let T be a minimum edge separator in G; i.e. ITI = c. Let v be any vertex
of G. For every vertex v ', on the other side of T, M(v, v ') = c. Thus, in
order to determine c, we can use

c= Min M(v, v
,t'EV- 'I

We need to solve at most I VI - 1 network flow problems. Thus, the com-


plexity of the algorithm is 0(1 VI *|El -Min I |El1'/2 I V12/3 ).
In the case of edge connectivity of digraphs, we need to consider directed
paths. The definition of an (a, b) edge separatoris accordingly a set of edges,
T, such that every directed path from a to b uses at least one edge of T. The
definition of p (a, b) again uses directed paths, and the proof of the statement
analogous to Theorem 6.8 is the easiest of all, since G is now G with no
changes.
In the definition of c, the edge connectivity, we need the following change:

c = Min IM(a, b)I(a, b) E V X V),

namely, we need to consider all ordered pairs of vertices.


The networks we get are still of type 1 and the complexity of each is still
O(IEl *Mint lEl 1/2, {Vl2/31). The approach of testing for one vertex v, both
M(v, v ') and M(v ', v) for all v ' E V - v ) still works, to yield the same
complexity: 0(l VI -jEJ -Min llEt}/2, | Vl 2/13 ). However, the same result,
with an improvement only in the constant coefficient follows from the follow-
ing interesting observation of Schnorr [8), which applies both to the directed
and undirected edge connectivity problems.

Lemma 6.10: Let v,, V2, . .. , v. be a circular ordering (i.e. v,+, v,) of the
vertices of a digraph G. The edge connectivity, c, of G satisfies
132 Applications of Network Flow Techniques

c = Min AM(v,, vi+ 1).


I sis

Proof: Let T be a minimum edge separator in G. That means that there are
two vertices a and b such that T is an (a, b) edge separator. Define

L vI there is a directed path from a to v which avoids TJ,


R = Ithere is no directed path from a to v which avoids T}.

Clearly,L UR = VandL nR = 0. ]LetlELandrER. Tisan(l, r)edge


separator; for if it is not, then r belongs in L. Therefore, M(1, r) c I TI.
Since T is a minimum edge separator, M(l, r) = I T 1. Now neither L nor R
are empty, since they contain a and b, respectively.
Consider now the circular ordering of V. There must be an i, 1 c i c n,
such that vi E L and vi,-I E R. Hence, thie result.
Q.E.D.

Both, in the case of graphs and digraphs we can test for k connectivity,
easily, in time complexity O(k* I VI * ElI). Instead of running each network
flow problem to completion, we terminate it when the total flow reaches k.
Each augmenting path takes O(IEI) time and there are I VI flow problems.
As we can see, testing for k edge connectivity is much easier than for k vertex
connectivity. The reason is that vertices cannot participate in the separating
set which consists of edges.
We can also use this approach to determine the edge connectivity, c, in
time O(c* I VI - {El). We run all the I VI network flow problems in parallel,
one augmenting path for each network in turn. When no augmenting path
exists in any of the I VI problems, we terminate. The cost increase is only in
space, since we need to store all I VI problems simultaneously. One can use
binary search on c to avoid this increase in space requirements, but in this
case the time complexity is O(c IV| JEl .log c).

We conclude our discussion of edge connectivity with a very powerful


theorem of Edmonds [9]. The proof presented here is due to Lovasz [10].

Theorem 6.9: Let a be a vertex of a digraph G( V, E) and Minv, v- (aI M(a, v)


= k. There are k edge disjoint directed spanning trees of G rooted at a.

Proof: The theorem trivially holds for k = 1. We prove the theorem by in-
duction on k. Let us denote by 6G(S) the number of edges in (S; S) in G. If H
Connectivity of Digraphs and Edge Connectivity 133

is a subgraph of G then G - H is the digraph resulting from the deletion of


all the edges of H from G.
Clearly, the condition that Min,,v-1V M(a, v) 2 k is equivalent to the
statement that for every S C V, S • V and a E S, W(S) 2 k.
We prove the theorem by induction on k.

Let F(V', E ') be a subgraph of G such that


(i) F is a directed tree rooted at a (which is not necessarily spanning).
(ii) For every S C V, S •d V and a E S, 6G-F(S) 2 k-1.

If F is a spanning directed tree then we get the result immediately; by the


inductive hypothesis there are k - 1 edge disjoint spanning trees rooted at a
in G - F, and F is one more.
The crux of the proof is to show that if F is not spanning then an edge of
the set (V'; V') can be added to F, to increase its number of vertices by one
and still satisfy both (i) and (ii).
Consider the following three conditions on a subset of vertices, 5:

(1) a E 5,
(2) S U V' AV
(3) 6G-F(S) k - I

Let us show that if no such $ exists then one can add any edge e E (V'; V')
to F. Clearly, F + e satisfies (i). Now, if (ii) does not hold then there exists
an S such that S • V, a E S and bG--(f+.) (S) < k - 1. It follows that 6G-F(S)
< k. Now, by (ii), 6 G-F(S) 2 k - 1. Thus, 6G-F(S) = k - 1, and S satisfies
condition (3). Let u and v be vertices such that u -e v. Since 6G-(F+e)(S) <
k-1 and 6 G-F(S) = k-1, v £ S. Also, v £ V'. Thus S U V' • V, satisfy-
ing condition (2). Therefore, S satisfies all three conditions; a contradiction.
Now, let A be a maximal* set of vertices which satisfies (1), (2) and (3).
Since the edges of F all enter vertices of V'

BG-F(A U V') = &3(A U V') 2 k.

By condition (3)

6G-F(A U V') > 6G-F(A).

*Namely, no larger set which contains A has all three properties.


134 Applications of Network Flow Techniques

The inequality implies that there exists an edge x -y which belongs to (A


U V'; A U V') and does not belong to (A; A) in G - F. Hence, x E A
n V' andy EA n V'. ClearlyF + e satisfies (i). It remains to be shown that
it satisfies (ii).
LetS C V, S • Vanda E S. If' 0 (S; S) then

aG-(F+,)(S) =' 6G-F(S) 2 k - 1.

Assume e E (S; 5). It is not hard to prove that for every two subsets of V, S
and A

6 6 6 6
G-F(S U A) + G-F(S nl A) ' G-F(S) + G-F(A),

by considering the sets of edges connecting S n A, S n A, S n A and S n


A. Now, 6G-F(A) k - 1 and t5G-F,'S n A) 2 k - 1. Therefore,
6
G-F(S U A) C 6G-F(S).

Since x E S and x OA, S Z A. Namel) S U A is larger than A. Also, y E S, y


E A andy E V'. Thus, (S U A) U V' •6 V. By the maximality of A, 6G-P'(S
U A) > k. This implies that 6G-F(S) k and therefore 6G-(F+,)(S) 2 k - 1,
proving (ii).
Q.E.D.

The proof provides an algorithm fir finding k edge disjoint directed trees
rootedata. WelookforatreeFsuchthatMin,,EV-, M(a, v) 2 k- in G -
F, by adding to F one edge at a time. For each candidate edge e we have to
check whether MinvEV- I. IM(a, v) 2 k -- 1 in G - (F + e). This can be done
by solving I VI - 1 network flow problems, each of complexity O(k lEl).
Thus, the test for each candidate edge is O(k * IVI *IE I). No edge need be
considered more than once in the construction of F, yielding the time com-
plexity O(k I VI * El 2). Since we repeat the construction k times, the whole
algorithm is of time complexity O(k2 IVI *IEl 2 ).
The following theorem was conjectured by Y. Shiloach and proved by
Even, Garey and Tarjan [11].

Theorem 6.10: Let G(V, E) be a digraph whose edge connectivity is at least


k. For every two vertices, u and v, and every 1, 0 c 1 c k, there are I directed
paths from u to v and k - I directed paths from v to u which are all edge dis-
joint.
Maximum Matching in Bipartite Graphs 135

Proof: Construct an auxiliary graph G by adding to G a new vertex a, 1


parallel edges from a to u and k - I parallel edges from a to v. Let us first
show that, in G Min<,evM(a, w) = k.
If MinevM(a. w) < k then there exists a set S such that S C V U ta a, a E
S and I(S; S) I < k in G. Clearly S •-6aI for l({a}; V) I = k. Let x ES -
I a J. Thus, M(x, y) < k for every y E S, and the same holds in G too, since
G is a subgraph of G. This contradicts the assumption that in G the edge
connectivity is at least k.
Now, by Theorem 6.9, there are k edge disjoint directed spanning trees, in
0, rooted at a. Exactly one edge out of a appears in each tree. Thus, each of
the trees which uses an edge a - u contains a directed path from u to v, and
each of the trees which uses an edge a - v contains a directed path from v to
u. All these paths are, clearly, edge disjoint.
Q.E.D.

Corollary 6.1: If the edge connectivity of a digraph is at least 2 then for every
two vertices u and v there exists a directed circuit which goes through u and v
in which no edge appears more than once.

Proof: Use k = 2, 1 = 1 in Theorem 6.10.


Q.E.D.

It is interesting to note that no such easy result exists in the case of vertex
connectivity and simple directed circuit through given two vertices. In
Reference [11], a digraph with vertex connectivity 5 is shown such that for
two of its vertices there is no simple directed circuit which passes through
both. The author does not know whether any vertex connectivity will
guarantee the existence of a simple directed circuit through any two vertices.

6.4 MAXIMUM MATCHING IN BIPARTITE GRAPHS

A set of edges, M, of a graph G(V, E) with no self-loops, is called a match-


ing if every vertex is incident to at most one edge of M. The problem of
finding a maximum matching was first solved in polynomial time by Ed-
monds [12]. The best known result of Even and Kariv [13] is °(l V| 2 5). These
algorithms are too complicated to be included here, and they do not use net-
work flow techniques.
An easier problem is to find a maximum matching in a bipartite graph,
i.e., a graph in which V = X U Y, X n Y = 0 and each edge has one end
vertex in X and one in Y. This problem is also known as the marriage prob-
136 Applications of Network Flow Techniques

lem. We shall present here its solution via network flow and show that its
complexity is 0(1 V1/2-. El). This result was first achieved by Hopcroft and
Karp [14].
Let us construct a network N(G). Its digraph G(V, E) is defined as follows:

V = Ist3 U V,
E [s-xlxE X Uty-tIyE Y) U [x-ylx-yinG ).

Let c(s - x) = c(y - t) = 1 for every x E X and y E Y. For every edge


X y let c(e) = x. (This infinite capacity is defined in order to simplify our
e_

proof of Theorem 6.12. Actually, since there is only one edge entering x, with
unit capacity, the flow in x - y is bounded by 1.) The source is s and the sink
is t. For example consider the bipartite graph G shown in Fig. 6.2(a). Its cor-
responding network is shown in Fig. 6.2(b).

Theorem 6.11: The number of edges in a maximum matching of a bipartite


graph G is equal to the maximum flow, F, in its corresponding network,
N(G).

(a) (b)
Figure 6.2
Maximum Matching in Bipartite Graphs 137

Proof: Let M be a maximum matching. For each edge x - y of M, use the


directed path s - x - y - t to flow one unit from s to t. Clearly, all these
paths are vertex disjoint. Thus, F 2 jMI.
Let f be a flow function of N(G) which is integral. (There is no loss of
generality here, since we saw, in Chapter 5, that every network with integral
capacities has a maximum integral flow.) All the directed path connecting s
and t are of the form s - x - y - t. If such a path is used to flow (one unit)
from s to t then no other edge x -y ' or x ' - y can carry flow, since there is
only one edge s - x and its capacity is one, and the same is true for y - t.
Thus, the set of edges x - y, for whichf(x - y) = 1, indicates a matching in
G.Thus, IMI ŽF.
Q.E.D.

The proof indicates how the network flow solution can yield a maximum
matching. For our example, a maximum flow, found by Dinic's algorithm is
shown in Fig. 6.3(a) and its corresponding matching is shown in Fig. 6.3(b).
The algorithm, of the proof, is 0(1 VI"' IEl), by Theorem 6.3, since the
network is, clearly, of type 2.
Next, let us show that one can also use the max-flow min-cut theorem to
prove a theorem of Hall [151. For every A C X, let F(A) denote the set of ver-

1 Yl

(a) (b)
Figure 6.3
138 Applications of Network Flow Techniques

tices (all in Y) which are connected by an edge to a vertex of A. A matching,


M, is called complete if IM I = IX l.

Theorem 6.12: A bipartite graph G has a complete matching if and only if


foreveryA C X, IP(A)l 2 IA .

Proof: Clearly, if G has a complete matching M, then each x has a unique


"mate" in Y. Thus, for everyA C X, IP(A)I - A .
Assume now that G does not have a -omplete matching. Let S be the set of
labeled vertices (in the Ford and Fulkerson algorithm, or Dinic's algorithm)
upon termination. Clearly, the maximum total flow is equal to I MI, but IMI
< X l. Let A = X n s. Since all the edges of the type x -y are of infinite
capacity, r(A) C S. Also, no vertex of Y - F(A) is labeled, since there is no
edge connecting it to a labeled vertex. We have

(S;S) = (Isj;X -A) U (r(A); ItJ).

Since I(S; S)I = IM< IX , we get

IX-AI + II'(A)I < IXI,

which implies IF(A)I < IA .


Q.E.D.

6.5 TWO PROBLEMS ON PERT* DIGRAPHS

A PERT digraph is a finite digraph G( V, E) with the following properties:

(i) There is a vertex s, called the start vertex, and a vertex t( • s), called the
termination vertex.
(ii) G has no directed circuits.
(iii) Every vertex v E V - ts, t ) is on some directed path from s to t.

A PERT digraph has the following interpretation. Every edge represents a


process. All the processes which are represented by edges of $(s), can be
started right away. For every vertex v, the processes represented by edges of
3(v) can be started when all the processes represented by edges of ce(v) are
completed.

*Program Evaluation and Review Technique.


Two Problems on Pert Digraphs 139

Our first problem deals with the question of how soon can the whole pro-
ject be completed; i.e., what is the shortest time, from the moment the pro-
cesses represented by d(s) are started, until all the processes represented by
a(t) are completed. We assume that the resources for running the processes
are unlimited. For this problem to be well defined let us assume that each e E
E has an assigned length l(e), which specifies the time it takes to execute the
process represented by e. The minimum completion time can be found by the
following algorithm:

(1) Assign s the lable 0 (X(s) - 0). All other vertices are "unlabeled".
(2) Find a vertex, v, such that v is unlabeled and all edges of a(v) emanate
from labeled vertices. Assign

X(v) - Max I X(u) + I(e)}. (6.4)


u-v

(3) If v = t, halt; X(t) is the minimum completion time. Otherwise, go to


Step (2).

In Step (2), the existence of a vertex v, such that all the edges of a(v)
emanate from labeled vertices is guaranteed by Condition (ii) and (iii): If no
unlabeled vertex satisfies the condition then for every unlabeled vertex, v,
there is an incoming edge which emanates from another unlabeled vertex. By
repeatedly tracing back these edges, one finds a directed circuit. Thus, if no
such vertex is found then we conclude that either (ii) or (iii) does not hold.
It is easy to prove, by induction on the order of labeling, that X(v) is the
minimum time in which all processes, represented by the edges of a(v), can
be completed.
The time complexity of the algorithm can be kept down to O(1El) as
follows: For each vertex, v, we keep count of its incoming edges from
unlabeled vertices; this count is initially set to din(v); each time a vertex, u,
gets labeled we use the list $(u) to decrease the count for all v such that u
- v, accordingly; once the count of a vertex v reaches 0, it enters a queue of
vertices to be labeled.
Once the algorithm terminates, by going back from t to s, via the edge
which determined the label of the vertex, we can trace a longest path from s
to t. Such a path is called critical.* Clearly, there may be more than one criti-
cal path. If one wants to shorten the completion time, X(t), then on each
critical path at least one edge length must be shortened.

*The whole process is sometimes called the Critical Path Method (CPM).
140 Applications of Network Flow Techniques

Next, we shall consider another problem concerning PERT digraphs, in


which there is no reference to edge lengths. Assume that each of the pro-
cesses, represented by the edges, uses one processor for its execution. The
question is: How many processors do we need in order to be sure that no ex-
ecution will ever be delayed because of shortage of processors? We want to
avoid such a delay without relying on the values of l(e)'s either because they
are unknown or because they vary from time to time.
Let us solve a minimum flow problem in the network whose digraph is G,
source s, sink t, lower bound b(e) = I for all e E E and no upper bound (i.e.
c(e) = X for all e E E). Condition (iii) assures the existence of a legal flow
(see Problem 5).
For example, consider the PERT digraph of Fig. 6.4. The minimum flow
(which in this case is unique) is shown in Figure 6.5(a), where a maximum
cut is shown too.
A set of edges is called concurrent if for no two edges in the set there is a
directed path which passes through both. Now, let T be the set of vertices
which are labeled in the last attempt to find an augmenting path from t to s.
Clearly, t E T and s 0 T. The set of edges (T; T) is a maximum cut; there are
no edges in (T; T), for there is no upper bound on the flow in the edges, and
any such edge would enable to continue the labeling of vertices. Thus, the set
(T; T) is concurrent.
If S is a set of concurrent edges then the number of processors required is
at least IS 1. This can be seen by assigning the edges of S a very large length,

Figure 6.4
Two Problems on Pert Digraphs 141

(a)

(b)

Figure 6.5
142 Applications of Network Flow Techniques

and all the others a short length. Since no directed path leads from one edge
of S to another, they all will be operative simultaneously. This implies that
the number of processors required is at least I(T; T)I.
However, the flow can be decomposed into F directed paths from s to t,
where F is the minimum total flow, such that every edge is on at least one
such path (sincef(e) 2 1 for every e a E). This is demonstrated for our ex-
ample in Fig. 6.5(b). We can, now, assign to each processor all the edges of
one such path. Each such processor executes the processes, represented by
the edges of the path in the order in which they appear on the path. If one
process is assigned to more than one processor, then one of them executes
while the others are idle. It follows that whenever a process which cor-
responds to u - v, is executable (since all the the processes which correspond
to (x(u) have been executed), the processor to which this process is assigned is
available for its execution. Thus, F processors are sufficient for our purpose.
Since F = I(T; T)I, by the min-flow max-cut theorem, the number of pro-
cessors thus assigned is minimum.
The complexity of this procedure is as follows. We can find a legal initial
flow in time 0(1 VI| E l), by tracing for each edge a directed path from s to t
via this edge, and flow through it one unit. This path is found by starting
form the edge, and going forward and backward from it until s and t are
reached. Next, we solve a maximum flow problem, from t to s, by the algo-
rithm of Dinic, using MPM, in time C(/ VI'). Thus, the whole procedure is
of complexity 0( VI3), if EI c V.

PROBLEMS

6.1 Let G( V, E) be an acyclic* finite digraph. We wish to find a minimum


number of directed vertex-disjoint paths which cover all the vertices;
i.e., every vertex is on exactly one path. The paths may start anywhere
and end anywhere, and their lengths are not restricted in any way. A
path may be of zero length; i.e. consist of one vertex.

(a) Describe an algorithm for achieving this goal, and make it as effi-
cient as possible. (Hint. Form a network as follows:

*A digraph is called acyclic if it has no directed circuits.


Problems 143

V' = Its, tI U Ixi, X2, ... ,XIVII U IYI,Y2, .. .,YiVII

E' =Is-xill c i c IVI I U lyi-tli i < I VI ) U


(x, -yjlvi -vj in G).

The capacity of all edges is 1.

Show that the minimum number of paths which cover V in G is


equal to I V I-F where F is the maximum total flow of the network.)
(b) Is the condition that G is acyclic essential for the validity of your
algorithm? Explain.
(c) Give the best upper bound you can on the time complexity of your
algorithm.
6.2 This problem is similar to 6.1, except that the paths are not required
to be vertex (or edge) disjoint.

(a) Describe an algorithm for finding a minimum number of covering


paths. (Hint. Form a network as follows:

V' = Its, tI U Ix, X2, ... ,XIVII U IY1,Y2, Y..,yiVIi


E' = Is-xl1 ti< IVII U 1yj-t I1 Si• lVI U
I xi -yi 1 e i e I VI } U Jyj -xj vi -vj in G.

The lower bound of each xi - yi edge is 1.


The lower bound of all other edges is 0.
The upper bound of all the edges is mo. Find a minimum flow from
s to t.)
(b) Is the condition that G is acyclic essential for the validity of your
algorithm? Explain.
(c) Give the best upper bound you can on the time complexity of your
algorithm. (Hint. 0(1 VI *iEi) is achievable.)
(d) Two vertices u and v are called concurrent if no directed path exist
from u to v, or from v to u. A set of concurrent vertices is such that
every two in the set are concurrent. Prove that the minimum
number of paths which cover the vertices of G is equal to the maxi-
mum number of concurrent vertices. (This is Dilworth's Theorem
[16].)
6.3 (a) Let G(X, Y, E) be a finite bipartite graph. Describe an efficient
algorithm for finding a minimum set of edges such that each vertex
is an end vertex of at least one of the edges in the set.
144 Applications of Network Flow Techniques

(b) Discuss the time complexity of your algorithm.


(c) Prove that the size of a minimum set of edges which cover the ver-
tices (as in (a)) is equal to the maximum size of an independent set*
of vertices of G.
6.4 (a) Prove that if G(X, Y, E) is a complete bipartite graph (i.e. for every
two vertices x E X andy E Y, there is an edge x -y) then the vertex
connectivity of G is

c(G) = Mint IXI, I Y J.

(b) Prove that for every k there exists a graph G such that c(G) 2Ik
and G has no Hamilton path. (See Problem 1.2.)
6.5 Let M be a matching of a bipartite graph. Prove that there exists a
maximum matching M' such that every vertex which is matched in M
is matched also in M'.
6.6 Let G(V, E) be a finite acyclic cligraph with exactly one vertex s for
which di. (s) = 0 and exactly one vertex t for which d.., (t) = 0. We
say that the edge a - b is greater than the edge c - d if and only if
there is a directed path, in G, from b to c. A set of edges is called a
slice if no edge in it is greater than another, and it is maximal; no other
set of edges with this property contains it. Prove that the following
three conditions on a set of edges., P, are equivalent.:

(1) P is a slice.
(2) P is an (s, t) edge separator 'in which no edge is greater than any
other.
(3) P = (S;S)forsome IsI C S C V- ttl such that(S;S) = 0.

6.7 (The problem of a System of Distinct Representatives). LetSI, S2 , * *


Sm be finite sets. A set {et, e 2 , em} is called an SDR if for every
... ,

1 c i c m, ei E Si.

(a) Describe an efficient algorithm for finding an SDR, if one exists.


(Hint. Define a bipartite graph and solve a matching problem.)
(b) Prove that an SDR exists if and only if the union of any 1 c k c
m of the sets contains at least k elements.

*A set of vertices of a graph is called independent if there is no edge between two


vertices of the set.
Problems 145

6.8 Let 7r, and 1r2 be two partitions of a set of m elements, each containing
exactly r disjoint subsets. We want to find a set of r elements such that
each of the subsets of 7r and 7r2 is represented.
(a) Describe an efficient algorithm to determine whether there is such
a set of r representatives.
(b) State a necessary and sufficient condition for the existence of such a
set, similar to Theorem 6.12.
6.9 Let G(V, E) be a completely connected digraph (see Problem 1.3);
it is called classifiable if V can be partitioned into two nonempty
classes, A and B, such that all the edges connecting between them are
directed from A to B. Let V = {V,, V2, . . ., v.} where the vertices
satisfy
d..t(vi) < d..t(V2) < . .- < dout(vj.
Prove that G is classifiable if and only if there exists a k < n such that
k

E8d..,(vi) =(2).

6.10 Let S be a set of people such that 1SI 2 4. We assume that acquain-
tance is a mutual relationship. Prove that if in every subset of 4 people
there is one who knows all the others then there is someone in S who
knows everybody.
6.11 In the acyclic digraph, shown below, there are both AND vertices (de-
146 Applications of Network Flow Techbiiques

signated by A) and OR vertices (designated by v). As in a PERT net-


work, the edges represent processes, and the edge length is the time
the process requires. The processes which are represented by the
edges which emanate from an AND (OR) vertex can be started when
all (at least one of) the incoming processes are (is) completed. Describe
an algorithm for finding the minimum time from start (s) to reach
termination (which depends on the type of t). Apply your algorithm
on the given network. What is the complexity of your algorithm.
6.12 Consider Problem 6.11 on digraphs which are not necessarily acyclic.
Show how to modify the algorithm to solve the problem, or conclude
that there is no solution.
6.13 In a school there are n boys and n girls. Each boy knows exactly k
girls (1 c k c n) and each girl knows exactly k boys. Prove that if
"knowing" is mutual then all the boys and girls can participate in one
dance, where every pair of dancers (a boy and a girl) know each other.
Also show that it is always true that k consecutive dances can be
organized so that everyone will dance once with everyone he, or she,
knows.
6.14 Prove or disprove the following claim: If the vertex connectivity of a
digraph is at least 2 then for every three vertices x, y, z there exists a
simple directed path from x to z via y.
6.15 Let G be a finite undirected graph whose edge connectivity is at least 2.
For each one of the following claims determine whether it is true or
false. Justify your answer.

(a) For every three vertices x, y, z there exists a path, in which no edge
appears more than once, from x to z via y.
(b) For every three vertices x, y, 2 there exists a path, in which no edge
appears more than once, from x to z which avoids y.

REFERENCES
[tI Even, S., and Tarjan, R. E., "Network Flow and Testing Graph Connectivity,"
SIAM J. on Computing, Vol. 4, 1975, pp. 507-518.
[2] Menger, K., "Zur Allgemeinen Kurventheorie", Fund. Math., Vol. 10, 1927,
pp. 96-115.
[3] Dantzig, G. B., and Fulkerson, D. R., "On the Max-Flow Min-Cut Theorem
of Networks", LinearInequalities and Related Systems, Annals of Math. Study
38, Princeton University Press, 1956, pp. 215-221.
References 147

[4] Hopcroft, J., and Tarjan, R. E., "Dividing a Graph into Triconnected Com-
ponents", SIAM J. on Computing, Vol. 2, 1973, pp. 135-158.
[5] Kleitman, D. J., "Methods for Investigating Connectivity of Large Graphs",
IEEE Trans. on Circuit Theory, CT-16, 1969, pp. 232-233.
[6] Even, S., "Algorithm for Determining whether the Connectivity of a Graph
is at Least k." SIAM J. on Computing, Vol. 4, 1977, pp. 393-396.
[7] Gomory, R. E., and Hu, T. C., "Multi-Terminal Network Flows", J. of SIAM,
Vol. 9, 1961, pp. 551-570.
[8] Schnorr, C. P., "Multiterminal Network Flow and Connectivity in Unsym-
metrical Networks", Dept. of Appl. Math, University of Frankfurt, Oct. 1977.
[9] Edmonds, J., "Edge-Disjoint Branchings", in Combinatorial Algorithms,
Courant Inst. Sci. Symp. 9, R. Rustin, Ed., Algorithmics Press Inc., 1973, pp.
91-96.
[10] Lovisz, L., "On Two Minimax Theorems in Graph Theory", to appear in J. of
Combinatorial Th.
[11] Even, S., Garey, M. R. and Tarjan, R. E., "A Note on Connectivity and Circuits
in Directed Graphs", unpublished manuscript (1977).
[12] Edmonds, J., "Paths, Trees, and Flowers", Canadian J. of Math., Vol. 17,
1965, pp. 449-467.
[13] Even, S. and Kariv, O., "An O(n2 5) Algorithm for Maximum Matching in
General Graphs", 16-th Annual Symp. on Foundations of Computer Science,
IEEE, 1975, pp. 100-112.
[14] Hopcroft, J., and Karp, R. M., "An n5 2 Algorithm for Maximum Matching in
Bipartite Graphs", SIAM J. on Comput., 1975, pp. 225-231.
[15] Hall, P., "On Representation of Subsets", J. London Math. Soc. Vol. 10, 1935,
pp. 26-30.
[16] Dilworth, R. P., "A Decomposition Theorem for Partially Ordered Sets," Ann.
Math., Vol. 51, 1950, pp. 161-166.
Chapter 7

PLANAR GRAPHS
7.1 BRIDGES AND KURATOWSKI'S THEOREM

Consider a graph drawn in the plane in such a way that each vertex is
represented by a point; each edge is represented by a continuous line con-
necting the two points which represent its end vertices and no two lines,
which represent edges, share any points, except in their ends. Such a drawing
is called a plane graph. If a graph G has a representation in the plane which
is a plane graph then it is said to be planar.
In this chapter we shall discuss some of the classical work concerning
planar graphs. The question of efficiently testing whether a given finite graph
is planar will be discussed in the next chapter.
Let S be a set of vertices of a nonseparable graph G(V, E). Consider the
partition of the set V-S into classes, such that two vertices are in the same
class if and only if there is a path connecting them which does not use any
vertex of S. Each such class K defines a component as follows: The compo-
nent is a subgraph H(V', E') where V' D K. In addition, V' includes all the
vertices of S which are connected by an edge to a vertex of K, in G. E' con-
tains all edges of G which have at least one end vertex in K. An edge uv,
where both u and v are in S, defines a singular component ({u, v}, {e} ).
Clearly, two components share no edges, and the only vertices they can share
are elements of S. The vertices of a c emponent which are elements of S are
called its attachments.
In our study we usually use a set 5 which is the set of vertices of a simple
circuit C. In this case we call the components bridges; The edges of C are not
considered bridges.
For example, consider the plane graph shown in Fig. 7.1. Let C be the out-
side boundary: a _Lb 2 C - I I g - a. In this case the bridges are:
({e, g}, {8}), ({h, i, j, a, e, g}, {9, 10, 11, 12, 13, 14} ), ({a, e}, {15}) and
({k, b, c, d}, {16, 17, 18} ). The first and third bridges are singular.

Lemma 7.1: Let B be a bridge and al, a2 , a3 , three of its attachments.


There exists a vertex v, not an attachment, for which there are three vertex
148
Bridges and Kuratowski's Theorem 149

Figure 7.1

disjoint paths in B: PI(v, a,), P2(v, a2) and P3(v, a3). (P(a, b) denotes a
path connecting a to b.)

Proof: Let a, - vt, a2 " V2, a3 ' v3 be edges of B. If any of the via's (i = 1,
2, 3) is an attachment then the corresponding edge is a singular bridge and is
not part of B. Thus, vi E K, where K is the class which defines B. Hence,
there is a simple path P '(v 1, V2) which uses vertices of K only; if vt = v2 , this
path is empty. Also, there is a simple path P"(v3 , v 1) which uses vertices of K
only. Let v be the first vertex of P"(v3 , v 1 ) which is also on P'. Now, let P 1 (v,
a, ) be the part of P' which leads from v to v,, concatenated with v, -a
P2 (v, a2) be the part of P' which leads from v to V2, concatenated with V2-
a 2; P3 (v, a3 ) be the part of P" which leads from v to V3, concatenated with V3
-a 3. It is easy to see that these paths are disjoint.
Q.E.D.
Let C be a simple circuit of a nonseparable graph G, and B I, B 2, . . ., Bk
be the bridges with respect to C. We say that Bi and Bj interlace if at least
one of the following conditions holds:

(i) There are two attachments of B;, a and b, and two attachments of Bj, c
and d, such that all four are distinct and they appear on C in the order a,
c, b, d.
(ii) There are three attachments common to Bi and Bp.
150 Planar Graphs

For each bridge Bi, consider the subgraph C + Bi. If any of these graphs
is not planar then clearly G is not planar. Now, assume all these subgraphs
are planar. In every plane realization of G, C outlines a contour which
divides the plane into two disjoint parts: its inside and outside. Each bridge
must lie entirely in one of these parts. Clearly, if two bridges interlace they
cannot be on the same side of C. Thus, in every plane realization of G the set
of bridges is partitioned into two sets: those which are drawn inside C and
those which are drawn outside. No two bridges in the same set interlace.

Lemma 7.2: If B 1, B 2, . . ., B m is set of bridges of a nonseparable graph G


with respect to a simple circuit C arid the following two conditions are
satisfied:

(1) For every 1 c i c n, C + Bi is planar,


(2) No two bridges interlace,
then C + B1 + B2 + * * * + B. has a plane realization in which all these
bridges are inside C.

Proof: We shall only outline the proof. As we go clockwise around C there


must be a bridge Bi such that we encounter all its attachments in some order:
a,, a 2, . . ., a,, and no attachment of any other bridge appears between a,
and a, on C. Such a bridge can be found by starting from any attachment a of
B 1 and going around, say clockwise. If before encountering all the at-
tachments of B, we encounter an attachment of another bridge Bi, then all
Big's attachments are between two consecutive attachments of B, which may
also belong to Bi. We repeat the same process on Bi, etc. Since the number
of bridges is finite, and those discarded will not "interfere" with the new
ones, the process will yield the desired bridge.
This observation allows a proof by induction. First Bi is drawn, and since
no other bridge uses any of the vertices of C between a, and a,, we can take
C' to be the circuit which describes the part of C from a, to a 1 , clockwise,
and the boundary of Bi, from a, to a,, to form a simple circuit C', whose in-
side is so far empty. The remaining bridges are also bridges of C' and,
clearly, satisfy (1) and (2) with respect to C'.
Q.E.D.

Corollary 7.1: Let G be a nonseparable graph and C a simple circuit in G. G


is planar if and only if the bridges B. , B 2 .2.. Bk of G, with respect to C,
satisfy the following conditions:

(1) For every 1 c i c k, C + Bi is planar.


Bridges and Kuratowski's Theorem 151

(2) The set of bridges can be partitioned into two subsets, such that no two
bridges in the same subset interlace.

Let us introduce coloring of graphs. Here we consider only 2-coloring of


vertices. In later chapters we shall discuss more general colorings. A graph
G(V, E) is said to be 2-colorable if V can be partitioned into VI and V2 in
such a way that there is no edge in G with two end vertices in VI(V 2 ). (Ob-
viously, a 2-colorable graph is bipartite, and vice versa. It is customary to use
the term "bipartite" if the partition is given, and "2-colorable", if one
exists.) The following theorem is due to Konig [1].

Theorem 7.1: A graph G is 2-colorable if and only if it has no odd length cir-
cuits.

Proof: It is easy to see that if a graph has an odd length circuit then it is not
2-colorable. In order to prove the converse, we may assume that G is con-
nected; for if each component is 2-colorable then the whole graph is
2-colorable.
Let v be any vertex. Let us perform BFS (Section 1.5) starting from v.
There cannot be an edge u - w in G, if u and w belong to the same layer; i.e.
are the same distance from v. For if such an edge exists then we can display
an odd length circuit as follows: Let Pi(v, u) be a shortest path from v to u.
P2 (v, w) is defined similarly and is of the same length. Let x be the last vertex
which is common to PI and P2 . The part of PI from x to u, and the part of P2
from x to w are of equal length, and together with u - w they form an odd
length simple circuit.
Now, we can color all the vertices of even distance from v with one color
and all the vertices of odd distance from v with a second color.
Q.E.D.

We can use the concept of 2-colorability to decide whether the bridges B 1,


B 2 , . .. , Bk, with respect to a simple circuit C can be partitioned into two
subsets, each pairwise non interlacing, as follows: Construct a graph G'
whose vertices are the bridges B., B 2 , . . ., B k, and two vertices are con-
nected by an edge if and only if the corresponding bridges in G interlace.
Now test whether the graph G' is 2-colorable, by giving one vertex color 1
and using some search technique, such as DFS or BFS to color alternate ver-
tices with different colors out of { 1, 2}. If no contradiction arises, a coloring
is obtained and thus, a partition. If a contradiction occurs, there is no
2-coloring, and therefore, no partition of the bridges; in this case the graph is
nonplanar, by Corollary 7.1.
152 Planar Graphs

Let us now introduce the graphs of Kuratowski [2]: K3 ,3 and Ks5 . They are
shown in Fig. 7.2(a) and (b) respectively.
K 5 is a completely connected graph of 5 vertices, or a clique of 5 vertices.
K3, 3 is a completely connected bipartite graph with 3 vertices on each side.

Lemma 7.3: Neither K3 ,3 nor K 5 is planar

(CI)

(b)
Figure 7.2
Bridges and Kuratowski's Theorem 153

Proof: First, let us consider Ks, and its circuit C. a - h - c - d - e - a.


Clearly, there are 5 bridges, all singular, corresponding to the edges eI, e2,
e 3 , e 4 and e s. Let us construct G', as in the preceding discussion. It is shown
in Fig. 7.3. For example, the bridge e, interlaces with es and e 2 , etc. Since
G' contains an odd circuit, by Theorem 7.1 it is not 2-colorable, and the set
of bridges of Ks with respect to C is not partitionable. Thus, by Corollary
7.1, Ks is not planar.
In the case of K 3,3 , take C: a - b- a2 - b2- a3 - b3- a. The
bridges ab 2, a 2 - b 3 and a 3- b form a triangle in the corresponding
G'.
Q.E.D.

Before we take on Kuratowski's Theorem we need a few more definitions


and a lemma.
Let G(V, E) be a finite nonseparable plane graph with IVI > 2. Aface of
G is a maximal part of the plane such that for every two points x and y in it
there is a continuous line from x and y which does not share with the realiza-
tion of G any point. The contour of each face is a simple circuit of G; if any of
these circuits is not simple then G is separable. Each of these circuits is called
a window. One of the faces is of infinite area. It is called the external face,
and its window is the external window. It is not hard to show that for every
window W, there exists another plane realization, G', of the same graph,
which has the same windows, but in G' W is external. First draw the graph
on a sphere, maintaining the windows; this can be achieved by projecting

Figure 7.3
154 Planar Graphs

each point of the plane vertically up to the surface vi a sphere whose center is
in the plane and its intersecting circle with the plane encircles G. Next, place
the sphere on a plane which is tangent to it, in such a way that a point in the
face whose contour is W is the "north pole", i.e. furthest from the plane.
Project each point P (other then the ' north pole") of the sphere to the plane
by a straight line which starts from the 'north pole" and goes through P. The
graph is now drawn in the plane and VV is the external window.

Lemma 7.4: Let G(V, E) be a 2-vertex connected graph with a separating


pair a, b. LetH 1 ,H2 , . . .,H H.be the components with respect to {a, b}. G is
planar if and only if for every 1 c i nm Hi + (a -_ b) is planar, where e 0 E.
By Hi + (a - b) we mean that a new edge connecting a and b is added to
Hi.

Proof: In each Hi there is a path from a to b, or G is not 2-connected. Also m


> 1. Thus, for each Hi we can find a path P from a to b in one of the other
components. If G is planar, so is Hi +oP, and therefore Hi + (a - b) is
planar. Now assume that each Hi + ,a - b) is planar. For each of these
realization we can assume that e is on the external window. Thus, a planar
realization of G exists, as demonstrated in Fig. 7.4 in the case of m = 3.
Q.E.D.

Two graphs are said to be homeomorphic if both can be obtained from the
same graph by the insertion of new vertices of degree 2, in edges; i.e. an edge
is replaced by a path whose intermediate vertices are all new.* Clearly, if two
graphs are homeomorphic then either both are planar or both are not. We
are now ready to state Kuratowski's Theorem [1].

Theorem 7.2: A graph G is nonplanar if and only if there is a subgraph of G


which is homeomorphic to either K 3 ,3 cor Ks.

Proof: If G has a subgraph H which is homeomorphic to either K 3 , 3 or Ks,


then by Lemma 7.3, H is nonplanar, and therefore G is nonplanar. The con-
verse is much harder to prove. We prove it by contradiction.
Let G be a graph which is nonplanar and which does not contain a

*Two graphs GI (VI, El) and G2 ( 12, E2) are said to be isomorphic if there are
1-1 correspondencesf: VI - V2 and g: EI - E2 such that for every edge u ' v in
G, f(u) f(fe)(v) in G 2 . Clearly GI is planar if and only if G2 is. Thus, we are not
interested in the particular names of the vertices or edges, and distinguish between
graphs only up to isomorphism.
Bridges and Kuratowski's Theorem 155

(a ,FaF

Figure 7.4

subgraph which is homeomorphic to one of Kuratowski's graphs; in addition


let us assume that among such graphs G has the minimum number of edges.
First, let us show that the vertex connectivity of G is at least 3. Clearly, G is
connected and nonseparable, or the number of its edges is not minimum.
Assume it has a separating pair {a, b}, and let H 1, H 2 , . . ., H. be the com-
ponents with respect to {a, b}, where m > 1. By Lemma 7.4, there exists an
1 c i c m for which Hi + (a - b) is nonplanar. Clearly Hi + (a - b)
does not contain a subgraph which is homeomorphic to one of Kuratowski's
graphs either. This contradicts the assumption that G has the minimum
number of edges.
We now omit an edge a0o b o from G. The resulting graph, Go, is planar.
Since the connectivity of G is at least 3, Go is nonseparable. By Theorem 6.7,
there is a simple circuit in Go which goes through ao and bo. Let Go be a
plane realization of Go and C be a simple circuit which goes through a0 and
bo, such that C encircles the maximum number of faces of all such circuits in
all the plane realizations of Go. Note that the selection of Go and C is done
simultaneously and not successively. Assuming u and v are vertices on C, let
156 Planar Graphs

C[u, v] be the part of C going from u to v, clockwise. C(u, v) is defined


similarly, but the vertices u and v are excluded.
Consider now the external bridges of C in Go. If such a bridge, B, has two
attachments either on C[ao, bo] or C[bo, ao] then C is not maximum. To see
this, assume B has two attachments, a and b, in C[ao, b ol. There is a simple
path P(a, b) connecting a to b via edges and vertices of B, which is disjoint
from C, and therefore is exterior to C. Form C' by adding to P the path C[b,
a]. C' goes through a o and bo, and the interior of C is either completely in-
cluded in the interior of C' or in the exterior. In the first case C' has a larger
interior than C, in Go. In the latter case we have to find another plane
realization which is similar to Go, but the exterior of C' is now the interior.
In either case the maximality of the choice of Go and C is contradictory.
By a similar argument we can also prove that neither a nor b can be an
attachment of an external bridge. Thus, each bridge has one attachment in
C(ao, bo) and one in C(b0 , ao). Each of these bridges is singular (consists of
a single edge); for otherwise its two attachments are a separating pair in G,
contradicting its 3-connectivity. Finally, there is at least one such external
singular bridge, or one could draw the edge eo outside C, to yield a planar
realization of G. Similarly, there must be an internal bridge, B*, which
prevents the drawing of eo inside, and which cannot be transferred outside;
i.e. B* interlaces with an external singular bridge, saya I e' b l . The situation
is schematically shown in Fig. 7.5. We divide the argument to two cases ac-
cording to whether B* has any attachment other than a 0, b o, a I, b I.

Case 1: B* has an attachment a 2 other than a o, b 0, a 1, b 1 . Without loss of


generality we may assume that a2 is on C(a1, ao). Since B* prevents the
drawing of e 0, it must have an attachment on C(ao, b o). Since B* interlaces
e,, it must have an attachment on C(b I, a 1).

Case 1.1: G* has an attachment b2 onrC(b1 , b0 ). In B*, there is a path P


connecting a 2 with b 2 . The situation is shown in Fig. 7.6. The subgraph of G
shown in Fig. 7.6 is homeomorphic to K 3,3 , where aI, a o and b 2 play the role
of the upper vertices of Fig. 7.2(a), and a 2 , bI and b 0 play the role of the
lower vertices.

Case 1.2: B* has no attachment on C(bO, bo). Thus, B* has one attachment
b 2' on C(ao, b X]; i.e., it may be b 1 but not ao. Also, B* has an attachment
b 2" on C[bo, a 1). By Lemma 7.1, there exists a vertex v and three vertex dis-
joint paths in B*: P:(v, a 2 ), P2 (v, b2 ') and P3 (v, b2 "). The situation is
shown in Fig. 7.7. If we erase from the subgraph of G, shown in Fig. 7.7 the
path C[bI, bo I and all its intermediate vertices, the resulting subgraph is
Bridges and Kuratowski's Theorem 157

- a0 **

Fiure 7.5

homeomorphic to K 3 , 3: Vertices a 2, b 2 ' and b 2 " play the role of the upper
vertices, and a O,a 1 and v, the lower vertices.

Case 2: B* has no attachments other than a o, b O,a 1, b1 . In this case all four
must be attachments; for if ao or b oare not, then B* and e 1 do not interlace;
if a, or b are not, then B* does not prevent the drawing of e0 .

Case 2.1 There is a vertex v, in B*, from which there are four disjoint paths
in B*: PI(v, ao), P2 (v, bo), P3(v, a,) and P4 (v, b 1). This case is shown in
Fig. 7.8, and the shown subgraph is clearly homeomorphic to K 5 .

Case 2.2: No vertex as in Case 2.1 exists. Let Po(ao, b 0) andPI(a 1, b1 ) be


two simple paths in B*. Let c 1 be the first vertex on PI which is common with
PO, and let c2 be the last on PI which is common with Po. We use only the
first part, A, of Pi, connecting a, and c 1, and the last part, B, connecting C 2
with b 1. The pertaining subgraph of G is now shown in Fig. 7.9, and is
158 Planar Graphs

Figure 7.6

Figure 7.7
Bridges and Kuratowski's Theorem 159

Figure 7.8

Figure 7.9
160 Planar Graphs

homeomorphic to K3 ,3 , after C[ao, b I] and C[bo, a I] and all their in-


termediate vertices are erased: Vertices a 0, b I and c, play the role of the up-
per vertices and b 0, aj and C2, the lower. (IfcI is closer to ao than C2 then we
erase C[a , ao] and C[b I, bo], instead, and the upper vertices are ao, a Xand
C2.)
Q.E.D.

Kuratowski's theorem provides a necessary and sufficient condition for a


graph to be planar. However, it does not yield an efficient algorithm for
planarity testing. The obvious procedure, that of trying for all subsets of 5
vertices to see whether there are 10 vertex disjoint paths connecting all pairs,
or for every pairs of 3 and 3 vertices whether there are 9 paths, suffers from
two shortcomings. First there are (15) choices of 5-sets and 1/2 (I 1) ( V3-3 )
choices of 3 and 3 vertices; this alone is 0(I VI 6). But what is worse, we have
no efficient way to look for the disjoint paths; this problem may, in fact, be
exponential.
Fortunately, there are O(IEI) tests, as we shall see in the next chapter, for
testing whether a given graph is planar.

7.2 EQUIVALENCE

Let G, and G2 be two plane realizations of the graph G. We say that G


and G2 are equivalent if every window of one of them is also a window in the
other. G may be 2-connected and have nonequivalent plane realization; for
example see Fig. 7.10.
Let us restrict our discussion to planar finite graphs, with no parallel edges
and no self-loops, Our aim is to show that if the vertex connectivity of G,
c(G), is at least 3 then the plane realization of G is unique up to equivalence.

Lemma 7.5: A planar nonseparable graph G is 2-connected if there is a


plane realization of it, G, and one of its windows has more than one bridge.

Proof: If C is a window of G with more than one bridge, then all C's bridges
are external. Therefore, no two bridges interlace. As in the first paragraph of
the proof of Lemma 7.2, there exists a bridge B whose attachments can be
ordered a,, a2, . . ., a, and no attachments of any other bridge appear on
C(aI, a,). It is easy to see that {a, at,' is a separating pair; it separates the
vertices of B and C(a1 , a,) from the set of vertices of all other bridges and
C(a,, a1 ), where neither set can be empty since G has no parallel edges.
Q.E.D.
Euler's Theorem 161

Figure 7.10

Theorem 7.3: If G is a plane graph with no parallel edges and no self-loops


and if its vertex connectivity, c(G), is at least 3, then every two plane realiza-
tions of G are equivalent.
Proof: Assume G has two plane realizations G. and 62 which are not
equivalent. Without loss of generality we may assume that there is a window
C in G. which is not a window in 02. Therefore, C has at least two bridges.
By Lemma 7.5, and since C is a window in G 1, G is 2-connected. A con-
tradiction, since c(G) 2 3.
Q.E.D.

7.3 EULER'S THEOREM

The following theorem is due to Euler.


Theorem 7.4: Let G(V, E) be a non-empty connected plane graph. The
number of faces, f, satisfies
162 Planar Graphs

I VI +f- El = 2. (7.1)
Proof: By induction on JEl. If IE =l 0 then G consists of one vertex and
there is one face, and 7.1 holds. Assume the theorem holds for all graphs
with m = JEl. Let G(V, E) be a connected plane graph with m + 1 edges. If
G contains a circuit then we can remove one of its edges. The resulting plane
graph is connected and has m edges, and therefore, by the inductive
hypothesis, satisfies (7.1). Adding back the edge increases the number of
faces by one and the number of edges by one, and thus (7.1) is maintained. If
G contains no circuits, then it is a tree. By Lemma 2.1 it has at least two
leaves. Removing a leaf and its incident edge yields a connected graph with
one less edge and one less vertex which satisfies (7.1). Therefore, G satisfies
(7.1) too.
Q.E.D.

The theorem implies that all connected plane graphs with I VI vertices and
IEl edges have the same number of faces. There are many conclusions one
can draw from the theorem. Some of them are the following:

Corollary 7.1: If G(V, E) is a connected plane graph with no parallel edges,


no self-loops and IVI > 2, then

IEIJ 31Vl-6. (7.2)

Proof: Since there are no parallel edges, every window consists of at least
three edges. Each edge appears on the windows of two faces, or twice on the
window of one face. Thus, 3 *f c 2 IEl . By (7.1), IEI = I VI + f- 2.
Thus, EEl l V I + 2/3
% El -2, and (7.2) follows.
Q.E.D.

Corollary 7.2: Every connected plane graph with no parallel edges and no
self-loops has at least one vertex whose degree is 5 or less.
Proof: Assume the contrary; i.e. the degree of every vertex is at least 6.
Thus, 2 * JEl : 6 * I VI; note that each edge is counted in each of its two end
vertices. This contradicts (7.2).
Q.E.D.

7.4 DUALITY

Let G(V, E) be a finite undirected and connected graph. A set K E E is


called a cutset if it is a minimal separating set of edges; i.e. the removal of K
Duality 163

from G interrupts its connectivity, but no proper subset of K does it. It is easy
to see that a cutset separates G into two connected components: Consider
first the removal of K - {e}, where e E K. G remains connected. Now
remove e. Clearly G breaks into two components.
The graph G2 (V 2 , E2 ) is said to be the dual of a connected graph GJ(VI,
E, ) if there is a 1 - 1 correspondence: E, - E2 , such that a set of edges S
forms a simple circuit in GI if and only iff(S) (the corresponding set of edges
in G2 ) forms a cutset in G2 . Consider the graph G1 shown in Fig. 7.11(a). G2
shown in Fig. 7.11(b) is a dual of GI, but so is G3 , shown in Fig. 7.11(c), as
the reader can verify by considering all (six) simple circuits of GI and all
cusets of G2 , or G3 .

(a) (b)

(c)
FIgure 7.11
164 Planar Graphs

A contraction of an edge x y of a graph G( V, E) is the following opera-


e'

tion: Delete the edge e and merge x with y. The new contracted graph, G',
has one less edge and one less vertex, if x • y. Clearly, if G is connected so is
G'. A graph G' is a contraction of G if by repeated contractions we can con-
struct G' from G.

Lemma 7.6: If a connected graph G, has a dual and G. ' is a connected


subgraph of G, then GI ' has a dual.

Proof: We can get GI ' from G0 by a sequence of two kinds of deletions:

(i) A deletion of an edge e of the present graph, which is not in GI ', and
whose deletion does not interrupt the connectivity of the present graph.
(ii) A deletion of a leaf of the present graph, which is not a vertex of G. ', to-
gether with its incident edge.

We want to show that each of the resulting graphs, starting with G, and
ending with GI ', has a dual.
Let G be one of these graphs, except the last, and its dual be Gd. First con-
sider a deletion of type (i), of an edge e. Contractf(e) in G d, to get Gd,, If C
is a simple circuit in G - e, then clearly it cannot use e, and therefore it is a
circuit in G too. The set of edges of C is denoted by S. Thus,f(S) is a cutset of
G d, and it does not includef(e). Thus, the end vertices off(e) are in the same
component of Gd with respect tof(S), [t follows thatf(S) is a cutset of Gdc
too. If K is a cutset of Gd. then it is a cutset of Gd too. Thusf -1 (K) form a
simple circuit C' in G. However,f(e) is not in K, and therefore e is not in C'.
Hence, C' is a simple circuit of G - e.
Next, consider a deletion of type (ii) of a leaf v and its incident edge e.
Clearly, e, plays no role in a circuit. Thus,f(e) cannot be a part of a cutset in
Gd. Hence,f (e) is a self-loop. The deletion of v and e from G, and the con-
traction off (e) in Gd (which effectively, only deletesf (e) from Gd), does not
change the sets of simple circuits in 1, and cutsets in Gd, and the cor-
respondence is maintained.
Q.E.D.

Lemma 7.7: Let G be a connected graph and el, e2 be two of its edges,
neither of which is a self loop. If for every cutset either both edges are in it or
both are not, then el and e2 are parallel edges.

Proof: If e, and e2 are not parallel, then there exists a spanning tree which
includes both. (Such a tree can be found by contracting both edges and
Duality 165

finding a spanning tree of the contracted graph.) The edge e, is separating


the tree into two connected components whose sets of vertices are S and S.
The set of edges between S and S in G in a cutset which includes e, and does
not include e2. A contradiction.
Q.E.D.

Lemma 7.8: Let G be a connected graph with a dual Gd and letf be the 1
- 1 correspondence of their edges. If u ' x, ' x2 ' * * * xi- In v is a sim-
ple path or circuit in G such thatxI, x 2, . . ., x,-, are all of degree two, then
f(e:),f(e2 ), ._. ,f(ej) are parallel edges in Gd.

Proof: Every circuit of G which contains one ei, 1 c i 5 1, contains all the
rest. Thus, in Gd, if one edge,f(ei), is in a cutset then all the rest are. By
Lemma 7.7, they are parallel edges.
Q.E.D.

Lemma 7.9: If a connected graph G 1 has a dual and G2 is homeomorphic to


G. then G2 has a dual.

Proof: If an edge x - y of G. is replaced in G2 by a path x e' vi 2 V2


el
- * * * l then in the dualf(e) is replaced by parallel edges:f(eI),f(e 2 ),
y,
... ,f(ei). If a path of G. is replaced in G 2 by an edge e, then the edges of the
dual which correspond to the edges of the path are all parallel (by Lemma
7.8) and can be replaced by a single edgef(e). It is easy to see that every cir-
cuit which uses an edge e, when it is replaced by a path, will use all the edges
of the path instead; while in the dual, every cutset which usesf(e) will use all
the parallel edges which replace it. Thus, the correspondence of circuits and
cutsets is maintained.
Q.E.D.

Theorem 7.5: A (connected) graph has a dual if and only if it is planar.

Proof: Assume G0(V,, E,) is a planar graph and G. is a plane realization of


it. Choose a point p Ein each face Fi of 0 . Let V2 be the set of these points.
Since G. is connected, the boundary of every face is a circuit (not necessarily
simple) which we call its window. Let W, be the window of Fi, and assume it
consists of l edges. We can find I lines, all starting inpi, but no two share any
other point, such that each of the lines ends on one of the l edges of W1 , one
line per edge. If a separating edge* e appears on Wi, then clearly it appears

*An edge whose removal from GI interrupts its connectivity.


166 Planar Graphs

twice. In this case there will be two lines from pi hitting e from both direc-
tions. These two lines can be made to end in the same point on e, thus
creating a closed curve which goes through pi and crosses e. If e is not a
separating edge then it appears on two windows, say Wi and WJ. In this case
we can make the line from pi to e meet e at the same point as does the line
from pj to e, to form a line connecting p Ewith pj which crosses e. None of the
set of lines, thus formed crosses another, and we have one per edge of G.
Now define G 2 (V 2 . E 2 ) as follows: The set of lines connecting the pi's is a
representation of E2 . The 1-1 correspondence f El E2 is defined as
follows: f(e) is the edge of G2 which crosses e. Clearly, 2 is a plane graph
which is a realization of a graph G2 (V 2 ,E 2 ). It remains to show that there is
a 1-1 correspondence of the simple circuits of GI to the cutsets of G2 . The
construction described above is demonstrated in Fig. 7.12, where GI is
shown in solid lines, and &2 is shown in dashed lines.
Let C be a simple circuit of G 1. Clearly, in & 1, C describes a simple closed
curve in the plane. There must be at least one vertex of G 2 inside this circuit,
since at least one edge of G2 crosses the circuit, and it crosses the circuit ex-
actly once. The same argument applies to the outside too. This implies that
f(S), where S is the set of edges of C, forms a separating set of G2 . Let us
postpone the proof of the minimality of f(S) for a little while.
Now, let K be a cutset of G2. Let T and T be the sets of vertices of the two

- -

-11 1 , \ \

.-. - ,. /

- Figure-71

Figure 7.12
Duality 167

components of G2 formed by the deletion of K. The set of faces of G. which


correspond to the vertices of T, forms a continuous region, but not the whole
plane. The minimality of K implies that the boundary of this region is a cir-
cuit in G0, whose edges correspond to K. Thus we have shown that every sim-
ple circuit of G0 corresponds to a separating set of G2, and every cutset of G2
corresponds to a circuit of GI.
Now let us handle the minimality. If S is the set of edges of a simple circuit
C of GI andf(S) is not a cutset of G2, then there is a proper subset off(S)
which is a cutset, say K. Therefore, f 1 (K) is a circuit of G.. Howeverf-I
(K) W S. A contradiction to the assumption that C is simple. The proof that
if K is a cutset thenf l (K) is a simple circuit is similar.
This completes the proof that a connected planar graph has a dual. We
turn to the proof that a nonplanar graph has no dual. Here we follow the
proof of Parson [3].
First let us show that neither K3 , 3 nor Ks have a dual. In K 3 , 3 the shortest
circuit is of length 4, and for every two edges there exists a simple circuit
which uses one but does not use the other. Thus, in its dual no cutset consists
of less than 4 edges and there are no parallel edges. Therefore, the degree of
each vertex is at least 4 and there must be at least 5 vertices. The number of
edges is, therefore, at least 10 (5 *4/2), while K3 , 3 has 9 edges. Thus, K3 , 3 has
no dual. In the case of Ks, it has 10 edges, 10 simple circuits of length 3 and
no shorter circuits, and for every two edges there is a simple circuit which
uses one but not the other. Thus, the dual must have 10 edges, 10 cutsets of
three edges, no cutset of lesser size and therefore the degree of every vertex is
at least three. Also, there are no parallel edges in the dual. If the dual has 5
vertices then it is Ks itself (10 edges and no parallel edges), but Ks has no
cutsets of three edges. If the dual has 7 vertices or more, then it has at least
11 edges ( r(7 *3/21). Thus, the dual must have 6 vertices. Since it has 10
custsets of 3 edges, there is one which separates S from S where neither con-
sists of a single vertex. If 151 = 2 then it contains a vertex whose degree is 2.
If IS} = IS = 3, then the maximum number of edges in the dual is 9. Thus,
Ks has no dual.
Now, if G is a nonplanar graph with a dual, then by Kuratowski's theorem
(Theorem 7.2) it contains a subgraph G' which is homeomorphic to either
K 3, 3 or Ks. By Lemma 7.6, G' has a dual too. By Lemma 7.9, either K 3, 3 or
Ks have a dual. A contradiction. Thus, no nonplanar graph has a dual.
Q.E.D.

Theorem 7.5 provides another necessary and sufficient condition for


planarity, in addition to Kuratowski's theorem. However, neither has been
shown to be useful for testing planarity.
168 Planar Graphs

There are many facts about duality which we have not discussed. Among
them are the following:

(1) If GdisadualofGthenGisadualofGd.
(2) A 3-connected planar graph has a unique dual.

The interested reader can find additional information and references in


the books of Harary [4], Ore [5], and Wilson [6].

PROBLEMS

7.1 The purpose of this problem is to prove a variation of Kuratowski's


theorem.
(a) Prove that if G is a connected graph and v 1, V2, V 3 are three vertices
then there exists a vertex v and three (vertex) disjoint paths Pi (v,
vI), P2 (v, V2) and P3 (v, V 3 ), one of which may be empty.
(b) Prove that if G is a connected graph and S is a set of four vertices
then either there is a vertex v with four disjoint paths to the
members of S or there are two vertices u and v such that two
members of S are connected to u by paths, two to v, and u is con-
nected to v; all five paths are vertex disjoint.
(c) Show that if a graph is contractible to K3 ,3 then it has a subgraph
homeomorphic to K 3,3 -
(d) Show that if a graph is contractible to Ks then either it has a sub-
graph which is homeomorphic to Ks or it has a subgraph which is
contractible to K 3 ,3 .
(e) Prove the theorem: A graph is nonplanar if and only if it contains
a subgraph which is contractible to K3 ,3 or Ks.
7.2 Show a graph which is nonplanar but is not contractible to either K3 ,3
or Ks. Does it contradict the result of Problem 7. l(e)?
Problems 169

7.3 Use Kuratowski's theorem to prove that the Petersen graph, shown
below is nonplanar.

7.4 Is the graph shown below planar? Justify your answer.

7.5 A plane graph is called triangular if each of its windows is a triangle.


Let Ni be the number of vertices whose degree is i.
(a) Prove that every plane graph with 3 or more vertices which has no
self-loops and no parallel edges can be made triangular, by adding
170 Planar Graphs

new edges without creating any self-loops or parallel edges. (This


process is called triangulation.)
(b) Let G be a triangular plane graph as above, with I VI > 3. Prove
that
N, =VN 2 = 0-

(c) Let G be a triangular plane graph as above. Prove that

12 = 3 - N3 + 2 *N4 + Ns -. 7-2 *N8-3 *Ng-4 *Njo ...

(d) Prove that in a graph, as above, if there are no vertices of degree


3 or 4 then there are at least 12 vertices of degree 5.
(e) Prove that if G is a planar graph with no self-loops or parallel
edges, and I VI > 3, then it has at least 4 vertices with degrees less
than 6 and if N 3 = N4 = 0 then Ns 2 12.
(f) Prove that if the vertex connectivity, c(G), of a graph G(V, E) is at
least 5 thenlVl 2 12.
(g) Prove that if G is planar then c(G) < 6.
7.6 Prove that if Gl (Vi, El) and G 2 (V 2 , E 2 ) are homeomorphic then

1EI- VI1= 1E 2 1-IV 2 .


7.7 Show a triangular plane graph, without parallel edges, which is not
hamiltonian.
Let G be a plane graph. The plane graph G*, which is constructed by
the procedure in the first part of the proof of Theorem 7.5, is called its
geometric dual.
7.8 Prove that if G* is the geometric dual of G then G is the geometric dual
of G*.

REFERENCES
[1] K6nig, D., Theorie der endlichen and unendlichen Graphen. Leipzig, 1936.
Reprinted Chelsea, 1950.
[2] Kuratowski, K., "Sur le Probleme des Courbes Gauches en Topologie", Fund.
Math., Vol. 15, 1930, pp. 217-283.
[31 Parson, T. D., "On Planar Graphs", Am. Math. Monthly, Vol. 78, No. 2, 1971,
pp. 176-178.
[4] Harary, F., Graph Theory, Addison Wesley, 1969.
[5] Ore, O., The Four Color Problem, Academic Press, 1967.
[6] Wilson, R. J., Intr. to Graph Theory, Longman, 1972.
Chapter 8

TESTING GRAPH PLANARITY


8.1 Introduction

There are two known planarity testing algorithms which have been shown
to be realizable in a way which achieves linear time (O(I VI)). The idea in
both is to follow the decisions to be made during the planar construction of
the graph, piece by piece, as to the relative location of the various pieces.
The construction is not carried out explicitly because there are difficulties,
such as crowding of elements into a relatively small portion of the area allo-
cated, that, as yet, we do not know to avoid. Also, an explicit drawing of
the graph is not necessary, as we shall see, to decide whether such a drawing
is possible. We shall imagine that such a realization is being carried out,
but will only decide where the various pieces are laid, relative to each other,
and not of their exact shape. Such decisions may change later in order to
make place for later additions of pieces. In both cases it was shown that
the algorithm terminates within °(l VI) steps, and if it fails to find a "reali-
zation" then none exists.
The first algorithm starts by finding a simple circuit and adding to it
one simple path at a time. Each such new path connects two old vertices
via new edges and vertices. (Whole pieces are sometimes flipped over, around
some line). Thus, we call it the path addition algorithm. The basic ideas
were suggested by various authors, such as Auslander and Parter [11 and
Goldstein [2], but the algorithm in its present form, both from the graph
theoretic point of view, and complexity point of view, is the contribution of
Hopcroft and Tarijan [3]. They were first to show that planarity testing can
be done in linear time.
The second algorithm adds in each step one vertex. Previously drawn
edges incident to this vertex are connected to it, and new edges incident to
it are drawn and their other endpoints are left unconnected. (Here too,
sometimes whole pieces have to be flipped around or permuted). The algo-
rithm is due to Lempel, Even and Cederbaum [4]. It consists of two parts.
The first part was shown to be linarily realizable by Even and Tarjan [51;

171
172 Testing Graph Planarity

the second part was shown to be linearity realizable by Leuker and Booth [6].
We call this algorithm the vertex addition algorithm.
Each of these algorithms can be divided into its graph theoretic part and
its data structures and their manipulation. The algorithms are fairly com-
plex and a complete description and proof would require a much more
elaborate exposition. Thus, since this is a book on graphs and not on pro-
gramming, I have chosen to describe in full the graph theoretic aspects of
both algorithms, and only briefly describe the details of the data manipula-
tion techniques. An attempt is made to convince the reader that the algo-
rithms work, but in order to see the details which make it linear he will
have to refer to the papers mentioned above.
Throughout this chapter, for reasons explained in Chapter 7, we shall
assume that G(V, E) is a finite undirected graph with no parallel edges
and no self loops. Also, we shall assume that G is nonseparable. The first
thing that we can do is check whether JEl c 3 - IVI - 6. By Carollary 7.1,
if this condition does not hold then C, is nonplanar. Thus, we can restrict
our algorithms to the cases where IE I = 0(l VI).

8.2 The Path Addition Algorithm (of Hopcroft and Taijan

The algorithm starts with a DFS of G. We assume that G is nonsepa-


rable. Thus, we drop from the DFS the steps for testing nonseparability.
However we still shall need the lowpoint function, to be denoted now L1(v).
In addition we shall need the second lowpoint function, L2(v), to be defined
as follows. Let S(v) be the set of values k(u) of vertices u reachable from
descendants of v by a single back edge. Clearly, L1(v) = Min { {k(v)} U
S(v)}.
Define

L2(v) = Min {{k(v)I U [S(v) - {L1(v)}]}. (8.1)

Let us now rewrite the DFS in order to compute these functions:


(1) Mark all the edges "unused". For every v e V let k(v) - 0. Let i - 0
and v - s (the vertex s is where we choose to start the DFS).
(2) i - i + 1, k(v) - i, L1(v) - i, L2(v) -i.
(3) If v has no unused incident edges go to Step (5).
(4) Choose an unused incident edge v-'-u. Mark e "used". If k(u) • 0 then
do the following:
Path Addition Algorithm of Hoperoft and Tarjan 173

If k(u) < L1(v) then L2(v) - L1(v),


L1(v) - k(u).
If k(u) > L1(v) then L2(v) - Min {L2(v), k(u)}.
Go to Step (3).
Otherwise (k(u) = 0), letf(u) - v, v - u and go to Step (2).
(5) If k(v) = 1, Halt.
(6) (k(v) > 1; we backtrack).
If Ll(v) < L1(f(v)) then L2(f(v)) - Min {L2(v), LI(f(v))},
L1(f(v)) - Ll(v).
If LI(v) = L1(f(v)) then L2(f(v)) - Min {L2(v), L2(f(v))}.
Otherwise (Ll(v) > Ll(f(v))), L2(f(v)) - Min {Ll(v), L2(f(v))}.
v -f(v).
Go to Step (3).

From now on, we refer to the vertices by their k(v) number; i.e. we change
the name of v to k(v).
Let A (v) be the adjacency list of v; i.e. the list of edges incident from v.
We remind the reader that after the DFS each of the edges is directed; the
tree edges are directed from low to high and the back edges are directed
from high to low. Thus, each edge appears once in the adjacency lists.
Now, we want to reorder the adjacency lists, but first, we must define an
order on the edges. Let the value O(e) of an edge u -' v be defined as
follows:

72*v if u ' v is a back edge.

O(e) = 2 *L1(v) if u ' v is a tree edge and L2(v) 2 u.

2L1(v) + 1 if u ' visatreeedgeandL2(v) < u.

Next we order the edges in each adjacency list to be in nondecreasing


order with respect to k. [This can be done in 0(1 VI) time as follows. First
compute for each edge its k value. Prepare 2 * I VI + 1 buckets, numbered
1, 2, ... , 2 * I VI + 1. Put each e into the k(e) bucket. Now, empty the
buckets in order, first bucket number 1, then 2 etc., putting the edges
taken out into the proper new adjacency lists, in the order that they are
taken out of the buckets.]
The new adjacency lists are now used, in a second run of a DFS algo-
rithm, to generate the paths, one by one. In this second DFS, vertices are
174 Testing Graph Planarity

not renumbered and there is no need to recompute f(v), L1(v) or L2(v).


The tree remains the same, although the vertices may not be visited in the
same order. The paths finding algorithm is as follows:
(1) Mark all edges "unused" and let l - 1.
(2) Start the circuit C; its first vertex is 1.
(3) Let the first edge on A (v) be v -e U.
If u of 1 then add u to C, v - u and repeat Step (3). Otherwise,
(u = 1), C is closed. Output C.
(4) If v = 1, halt.
(5) If A (v) is used up then v - f(v) and go to Step (4).
(6) Start a path P with v as its first vertex.
(7) Let v -e u be the first unused edge on A (v).
If e is a back edge (u < v) terminate P with u, output P and go to (5).
(8) (e is a tree edge). Put u on P, v -- u and go to Step (7).

Lemma 8.1: The paths finding algorithm finds first a circuit C which con-
sists of a path from 1 (the root) to some vertex v, via tree edges, and a
back edge from v to 1.

Proof: Let 1 - u be the first edge of the tree to be traced (in the first appli-
cation of Step (3)). We assume that Gy is nonseparable and IVI > 2. Thus,
by Lemma 3.7, this edge is the only tree edge out of 1, and u = 2. Also, 2
has some descendants, other than itself. Clearly, 2 - 3 is a tree edge. By
Lemma 3.5, L1(3) < 2, i.e. L1(3) == 1. Thus L1(2) = 1. The reordering
of the adjacency lists assures that the first path to be chosen out of 1 will
lead back to 1 as claimed.
Q.E.D.

Lemma 8.2: Each generated path P is simple and it contains exactly two
vertices in common with previously generated paths; they are the first
vertexf, and the last 1.

Proof: The edge scanning during the paths finding algorithm is in a DFS
manner, in accord with the structure of the tree (but not necessarily in the
same scanning order of vertices). Thus, a path starts from some (old) vertex
f, goes along tree edges, via intermediate vertices which are all new, and
ends with a back edge which leads to 1. Since back edges always lead to
ancestors, I is old. Also, by the reordering of the adjacency lists and the
assumption that G is nonseparable I must be lower than. Thus, the path
is simple.
Q.E.D.
Path Addition Algorithm of Hoperoft and Tarjan 175

Let S. denote the set of descendants of v, including v itself

Lemma 8.3: Letf and I be the first and last vertices of a generated path P
andf - v be its first edge.
(i) if v • then l(v) = 1.
(ii) I is the lowest vertex reachable from Sf via a back edge which has not
been used in any path yet.

Proof: Let us partition Sf - { f } into two parts, et and fl, as follows. A


descendant u belongs to a if and only if when the construction of P begins,
we have already backtracked from u. Clearly, f E a and all the back edges
out of a have been scanned already. Let u be the lowest vertex reach-
able via an unused back edge from A. Clearly, the first remaining (unused)
edge of A(f) is the beginning of a directed path to u, which is either an
unused back edge from f to u or a path of tree edges, via vertices of /,
followed by a single back edge to u. Thus, u = 1, and the Lemma follows.
Q.E.D.
Lemma 8.4: Let Pi and P2 be two generated paths whose first and last
vertices aref:, 11 andf2, 12, respectively. If PI is generated before P2 andf 2
is a descendant off, then 11 ' 12.

Proof: The Lemma follows immediately from Lemma 8.3.


Q.E.D.

So far, we have not made any use of L2(v). However, the following
lemma relies on it.

Lemma 8.5: Let Pi: f - V:- -I and P 2 : f- V2 - -I be two


generated paths, where Pi is generated before P2 . If vI • I and L2(v:) < f
then V2 • 1 and L2(v 2) < f.

Proof: By the definition of O(e), k(el) = 2 -1 + 1. If V2 = I or L2(v 2 ) 2 f


then O(e2) = 2 *1, and e2 should appear in A (f ) before el. A contradiction.
Q.E.D.

Let C be 1- VI V2 *-v.~V 1. Clearly 1 < v, < v2 ... < v"..


Consider now the bridges of G with respect to C.

Lemma 8.6: Let B be a non-singular bridge of G with respect to C, whose


highest attachment is vi. There exist an tree edge vi -' u which belongs to
B and all other edges of B with endpoints on C are back edges.
176 Testing Graph Planarity

Proof: The Lemma follows from the fact that the paths finding algorithm
is a DFS. First C is found. We then 'backtrack from a vertex vj only if all
its descendants have been scanned. No internal part of B can be scanned
before we backtrack into vi. There must be a tree edge vi - u, where u
belongs to B, for the following reasons. If all the edges of B, incident to v,
are back edges, they all must come from descendents or go to ancestors of
vi (see Lemma 3.4). An edge from v, to one of its ancestor (which must be
on C) is a singular bridge and is not part of B. An edge from a descendant
w of vi to v, implies that w cannot be in B, for it has been scanned already,
and we have observed that no internal part of B can be scanned before we
backtrack into vi. If any other edge vk - x of B is also a tree edge then,
by the definition of a bridge, there is a path connecting u and x which is
vertex disjoint from C. Along this path there is at least one edge which
contradicts Lemma 3.4.
Q.E.D.

Corollary 8.1: Once a bridge B is entered, it is completely traced before it


is left.

Proof: By Lemma 8.6, there is only one edge through which B is entered.
Since eventually the whole graph is scanned, and no edge is scanned twice
in the same direction, the corollary follows.
Q.E.D.

Assuming C and the bridges explored from vertices higher than vi have
already been explored and drawn in the plane. The following lemma pro-
vides a test for whether the next generated path could be drawn inside; the
answer is negative even if the path itself can be placed inside, but it is
already clear that the whole bridge to which it belongs cannot be placed
there.

Lemma 8.7: Let v - -u2 - * ui(=v;) be the first path, P, of the


bridge B to be generated by the paths finding algorithm. P can be drawn
inside (outside) C if there is no back edge w - Vk drawn inside (outside)
for which j < k < i. If there is such an edge, then B cannot be drawn
inside (outside).

Proof: The sufficiency is immediate. If there is no back edge, drawn inside


C, which enters the path vj -. v. -- * * * v in one of its internal vertices,
.

then there cannot be any inside edge incident to these vertices, since bridges
Path Addition Algorithm of Hoperoft and Tarjan 177

to be explored from vertices lower than vi have not been scanned yet. Thus,
P can be drawn inside if it is placed sufficiently close to C.
Now, assume there is a back edge w - vk, drawn inside, for which
j < k < i. Let P' be the directed path from v, to Vk whose last edge is the
back edge w - vk. Clearly v, is on C and p 2 i; P' is not necessarily gen-
erated in one piece by the path finding algorithm, if it is not the first path
to be generated in the bridge B' to which it belongs.

Case 1: p > i. The bridges B and B' interlace by part (i) of the definition
of interlacement. Thus, B cannot be drawn inside.

Case 2: p = i. Let P'' be the first path of B ' to be generated, P'': v, -


x- x2- ** - v,. By Lemma 8.4, q ' j, since B' is explored before B.

Case 2.1: q < j. Since v, and vj are attachments of B, vk and Vq are attach-
ments of B' and q < j < k < i, the two bridges interlace. Thus, B cannot
be drawn inside.

Case 2.2: q = j. P" cannot consist of a single edge, for in this case it is a
singular bridge and Vk is not one of its attachments. Also, L2(x:) c vk.
Thus, L2(x:) < vi. By Lemma 8.5, ul X v; and L2(ul) < vi. This implies
that B and B' interlace by either part (i) or part (ii) of the definition of
interlacement, and B cannot be drawn inside.
Q.E.D.

The algorithm assumes that the first path of the new bridge B is drawn
inside C. Now, we use the results of Corollary 7.1, Theorem 7.1 and the
discussion which follows it, to decide whether the part of the graph ex-
plored so far is planar, assuming that C + B is planar. By Lemma 8.7, we
find which previous bridges interlace with B. The part of the graph explored
so far is planar if and only if the set of its bridges can be partitioned into
two sets such that no two bridges in the same set interlace. If the answer is
negative, the algorithm halts declaring the graph nonplanar. If the answer
is positive, we still have to check whether C + B is planar.
Let the first path of B be P: v5 - - U2 - - * - vi. We now have a
circuit C' consisting of C[vj, v,] and P. The rest of C is an outside path
P', with respect to C', and it consists of C[vi, 1] and C[1, v;]. The graph
B + C[vj, vi] may have bridges with respect to C', but none of them has all
its attachments on C[vj, vi], for such a bridge is also a bridge of G with
respect to C, and is not a part of B.
178 Testing Graph Planarity

Thus, no bridge of C', with attachments on C(vj, v,) may be drawn


outside C', since it interlaces with P'. We conclude that C + B is planar
if and only if B + C[vj, vi] is planar and its bridges can be partitioned
into an inside set and an outside sel so that the outside set contains no
bridge with attachments in C(vj, vi). The planarity of B + C[vj, vi] is tested
by applying the algorithm recursively, using the established vertex num-
bering L1, L2, f functions and ordering of the adjacency lists. If B + C[vj,
v,] is found to be nonplanar, clearly G is nonplanar. If it is found to be
planar, we check whether all its bridges with attachments in C(vj, vi) can be
placed inside. If so, C + B is planar; if not, G is nonplanar.
Hopcroft and Tarjan devised a simple tool for deciding whether the set
of bridges can be partitioned properly. It consists of three stacks HI, 12
and 113. Is contains in nondecreasing order (the greatest entry on top) the
vertices of C(1, vi) (where vi is the last vertex of C into which we have
backtraced), which are attachments of bridges placed inside C in the
present partition of the bridges. A vertex may appear on HI several times,
if there are several back edges into it from inside bridges. 112 is similarly
defined for the outside bridges. Both II, and 112 are doubly linked lists, in
order to enable switching over of complete sections from one of them to the
other, investing, per section, time bounded by some constant. 113 consists
of pairs of pointers to entries in HI and r12. Its task will be described shortly.
Let S be a maximal set of bridges, explored up to now, such that a
decision for any one of these bridges as to the side it is in, implies a decision
for all the rest. ( S corresponds to a connected component of the graph of
bridges, as in the discussion following Theorem 7.1.) Let the set of entries
in HI and 112, which correspond to back edges from the bridges of S, be
called a block.

Lemma 8.8: Let K be a block, whose highest element is vh and lowest


element is v,. If v, is an entry in II, or 12 then v, belongs to K if v, < v,
< Vh.

Proof: We prove the lemma by induction on the order in which the bridges
are explored. At first, both 1I, and 112 are empty and the lemma is vacuously
true. The lemma trivially holds after one bridge is explored.
Assume the lemma is true up to the exploration of the first path P of
the new bridge B, where P: vi - . .. - v>. If there is no vertex vk on IIl or
12 such that vj < Vk < vi then clearly the attachments of B (in C(1, vi))
form a new block (assuming C + B is planar) and the lemma holds. How-
ever, if there are vertices of H1 or Il2 in between v; and vi then, by Lemma
8.7, the bridges, they are attachments of, all interlace with B. Thus, the
Path Addition Algorithm of Hopcroft and Taijan 179

old blocks which these attachments belong to, must now be merged into
one new block with the attachments of B (in C(1, vi)). Now, let v, be the
lowest vertex of the new block and vA be the highest. Clearly, v, was the
lowest vertex of some old block whose highest vertex was Vh', and vA' > v;.
Thus, by the inductive hypothesis, no attachment of another block could
be in between v, and VA', and therefore cannot be in this region after the
merger. Also, all the attachments in between vj and vh are in the new block
since they are attachments of bridges which interlace with B. Thus, all the
entries of II, or 12 which are in between v, and vA belong to the new block.
Q.E.D.

Corollary 8.2: The entries of one block appear consecutively on 11(12).

Thus, when we consider the first path P: vi - * * * - Vj of the new


bridge B, in order to decide whether it can be drawn inside, we check the
top entries t1 and t2 of HIIand 12 respectively.
If v; 2 t1 and Vj 2 t2 then no merger is necessary; the attachments of
B (in C(1, vi)) are entered as a block (if C + B is found to be planar) on
top of HII.
If Vj < t1 and vj 2 t2 then we first join all the blocks for which their
highest entry is higher than Vj. To this end there is no need to check L2,
since v; 2 t2 , but still several blocks may merge. Next, switch the sections
of the new block, i.e. the section on HIIexchanges places with the section
on 1I2. Finally, place the attachments of B in nondecreasing order, on top
of 11,; these entries join the new block.
If v; 2 t1 and vi < t2 then again we join all the blocks whose highest
element is greater than vj; only the sections on 12 need to be checked. The
attachments of B join the same block and are placed on top of HII.
If Vj < tl and Vj < t2 then all blocks whose highest element is greater
than Vj are joined into one new block. As we join the blocks we examine them
one by one. If the highest entry in the section on II, is higher than Vj then
we switch the sections. If it is still higher, then we halt and declare the
graph nonplanar. If all these switches succeed, then the merger is completed
by adding the attachments of B on top of III.
In order to handle the sections switching, the examination of their tops
and mergers efficiently, we use a third stack, 113. It consists of pairs of
pointers, one pair (x, y) per block; x points to the lowest entry of the section
in HiI and y to the lowest entry of the section in 12. (If the section is empty
then the pointer's value is 0). Two adjacent blocks are joined by simply
discarding the pair of the top one. When several blocks have to be joined
together upon the drawing of the first path of a new bridge, only the pair
180 Testing Graph Planarity

of the lowest of these blocks need remain, except when one of its entries is
0. In this case the lowest nonzero enrry on the same side, of the pairs above
it, if any such entry exists, takes its place.
When we enter a recursive step, a special "end of stack" marker E is
placed on top of 112, and the three stacks are used as in the main algorithm.
If the recursive step ends successfully, we first attempt to switch sections
for each of the blocks with a nonempty section on 112, above the top most
E. If we fail to expose E, then C + B is nonplanar and we halt. Otherwise,
all the blocks created during the recursion are joined to the one which
includes vj (the end vertex of the first path of B). The exposed E, on top
of 112, is removed and we continue with the previous level of recursion.
When we backtrack into a vertex vi, all occurrences of v, are removed from
the top of ll, and 112, together with pairs of pointers of 113 which point to
removed entries on both 11, and 112. (Technically, instead of pointing to an
occurrence of vi, we point to 0, and pairs (0, 0) are removed).

Theorem 8.1: The complexity of the path addition algorithm is O(1 VI).

Proof: As in the closing remarks of Section 8.1, we can assume JEl =


0(l VI). The DFS and the reordering of the adjacency lists have been shown
to be 0( I VI). Each edge in the paths finding algorithm is used again, once
in each direction. The total number of entries in the stacks Hi and 12 is
bounded by the number of back edges (IE I - I VI + 1), and is therefore
0(j VI). After each section switching the number of blocks is reduced by
one; thus the total work invested in section switchings is 0(1 VI).
Q.E.D.

8.3 Computing an st-Numbering

In this section we shall define on st-numbering and describe a linear


time algorithm to compute it. This numbering is necessary for the vertex
addition algorithm, for testing planarity, of Lempel, Even and Cederbaum.
Given any edge s - t of a nonseparable graph G(V, E), a l-1 function
g: V - {1, 2, . .. , I VI} is called an st-numbering if the following condi-
tions are satisfied:

(1) g(s) = 1,
(2) g(t) = IVI (=n),
(3) for every v e V -{s, t} there are adjacent vertices u and w such that
g(u) < g(v) < g(w).
Computing an st-Numbering 181

Lempel, Even and Cederbaum showed that for every nonseparable graph
and every edge s - t, there exists an st-numbering. The algorithm described
here, following the work of Even and Tarijan [5], achieves this goal in linear
time.
The algorithm starts with a DFS whose first vertex is t and its first edge is
t- s. (i.e., k(t) = 1 and k(s) = 2). This DFS computes for each vertex
v, its DFS number, k(v), its father, f(v), its lowpoint L(v) and distinguishes
tree edges from back edges. This information is used in the paths finding
algorithm to be described next, which is different from the one used in the
path addition algorithm.
Initially, s, t and the edge connecting them are marked "old" and all the
other edges and vertices are marked "new". The path finding algorithm
starts from a given vertex v and finds a path from it. This path may be
directed from v or into v.

(1) If there is a "new" back edge v ' w (in this case k(w) < k(v)) then do
the following:
Mark e "old".
The path is v -' w.
Halt.
(2) If there is a "new" tree edge v -' w (in this case k(w) > k(v)) then do
the following:
Trace a path whose first edge is e and from there it follows a path
which defined L(w), i.e., it goes up the tree and ends with a back
edge into a vertex u such that k(u) = L(w). All vertices and edges on
the path are marked "old". Halt.
(3) If there is a "new" back edge w - v (in this case k(w) > k(v)) then do
the following:
Start the path with e (going backwards on it) and continue backwards
via tree edges until you encounter an "old" vertex. All vertices and
edges on the path are marked "old". Halt.
(4) (All edges incident to v are "old"). The path produced is empty. Halt.

Lemma 8.9: If the path finding algorithm is always applied from an "old"
vertex v • t then all the ancestors of an "old" vertex are "old" too.

Proof: By induction on the number of applications of the path finding


algorithm. Clearly, before the first application, the only ancestor of s is t
182 Testing Graph Planarity

and it is old. Assuming the statement is true up to the present application,


it is easy to see that if any of the four steps is applicable the statement
continues to hold after its application.
Q.E.D.

Corollary 8.3: If G is nonseparable and under the condition of Lemma 8.9,


each application of the path finding algorithm from an "old" vertex v
produces a path, through "new" vertices and edges, to another "old"
vertex, or in case all edges incident to v are "old", it returns the empty path.

Proof: The only case which requires a discussion is when case (2) of the
path finding algorithm is applied. Since G is nonseparable, by Lemma 3.5,
L(w) < k(v). Thus, the path ends "below" v, in one of its ancestor. By
Lemma 8.9, this ancestor is "old".
Q.E.D.

We are now ready to present the algorithm which produces an st-num-


bering. It uses a stack S which initially contains only t and s, s on top of t.

(1) i - 1.
(2) Let v be the top vertex on S. Remove v from S. If v = t then g(t) - i
and halt.
(3) (v • t) Apply the path finding algorithm to v. If the path is empty
then g(v) - i, i - i + l and go to Step (2).
(4) (The path is not empty) Let the path be v - ul - u2- - - w.
Put u,, u,-,, . . ., U2, U1, v on S in this order (v comes out on top) and
go to Step (2).

Theorem 8.2: The algorithm above computes for every nonseparable graph
G(V, E) an st-numbering.

Proof: First we make a few observations about the algorithm:

(i) No vertex ever appears in two or more places on S at the same time.
(ii) Once a vertex v is placed on S, nothing under v receives a number
until v does.
(iii) A vertex is permanently removed from S only after all its incident edges
become "old".

Next, we want to show that each vertex v is placed on S before t is removed.


Since t and s are placed on S initially, the statement needs to be proved
Vertex Addition Algorithm of Lempel, Even and Cederbaum 183

for v • s, t only. Since G is nonseparable, there exists a simple path from


s to v which does not pass through t (see Theorem 6.7 part (6)). Let this
path be s = uI - u2 - - u- = v. Let m be the first index such that
ur is not placed on S. Since urn-I is placed on S, t can be removed only after
um-r (fact (ii)), and urn- is removed only after all its incident edges are
"old" (fact (iii)). Thus, ur must be placed on S before t is removed.
It remains to be shown that the algorithm computes an st-numbering.
Since each vertex is placed on S, and eventually it is removed, each
vertex v gets a number g(v). Clearly, g(s) = 1, for it is the first to be
removed. After each assignment i is incremented. Thus, g(t) = IVI. Every
other vertex v is placed on S, for the first time, as an intermediate vertex
on a path. Thus, there is an adjacent vertex stored below it, and an adja-
cent vertex stored above it. The one above it (by fact (ii)) gets a lower
number and the one below it, a higher number.
Q.E.D.

It is easy to see that the whole algorithm is of time complexity O( El):


First, the DFS is O(IEI). The total time spent on path finding is also O(IEI)
since no edge is used more than once. The total number of operations in
the main algorithm is bounded also by O( El) because the number of stack
insertions is exactly [El + 1.

8.4 The Vertex Addition Algorithm of Lempel, Even and Cederbaum

In this section we assume that G(V. E) is a nonseparable graph whose


vertices are st-numbered. From now on, we shall refer to the vertices by
their st-number. Thus, V = { 1, 2, . . ., n}. Also, the edges are now directed
from low to high.
A (graphical) source of a digraph is a vertex v such that din(v) = 0; a
(graphical) sink is a vertex v such that d0,,(V) = 0.* Clearly vertex 1 is a
source of G and vertex n is a sink. Furthermore, due to the st-numbering,
no other vertex is either a source or a sink.
Let Vk = (1, 2, . . ., k}. Gk(Vk, Ek) is the digraph induced by Vk, i.e.,
E/ consists of all the edges of G whose endpoints are both in Vk.
If G is planar, let & be a plane realization of G. It contains a plane reali-
zation of Gk. The following simple lemma reveals the reason for the st-
numbering.

*Do not confuse with the source and sink of a network. The source of a network
is not necessarily a (graphical) source, etc.
184 Testing Graph Planarity

Lemma 8.10: If Gk is a plane realization of Gk contained in a plane digraph


G then all the edges and vertices of G- Gk are drawn in one face of Go.

Proof: Assume a face F of Gk contains vertices of V - Vk. Since all the


vertices on F's window are lower than the vertices in F, the highest vertex
in F must be a sink. Since G has only one sink, only one such face is possi-
ble.
Q.E.D.

Let Bk be the following digraph, Gk is a subgraph of Bk. In addition


Bk contains all the edges of G which emanate from vertices of Vk and enter
in G, vertices of V - Vk. These edges are called virtual edges, and the
leaves they enter in Bk are called virtual vertices. These vertices are labeled
as their counterparts in G, but they are kept separate; i.e., there may be
several virtual vertices with the same label, each with exactly one entering
edge. For example, consider the digraph shown in Fig. 8.1(a). B3 of this
digraph is shown in Fig. 8.1(b).
By Lemma 8.10, we can assume that if G is planar then there exist a
plane realization of Bk in which all the virtual edges are drawn in the out-
side face. Furthermore, since 1 - It is always an edge in G, if k < n then
vertex 1 is on the outside window and one of the virtual edges is e. In this
case, we can draw Bk in the following form: Vertex 1 is drawn at the bottom
level. All the virtual vertices appear on one horizontal line. The remaining
vertices of Gk are drawn in such a way that vertices with higher names are

(a) (b)
Figure 8.1
Vertex Addition Algorithm of Lempel, Even and Cederbaum 185

drawn higher. Such a realization is called a bush form. A bush form of B3,
of our example, is shown in Fig. 8.2.
In fact, Lemma 8.10 implies that if G is planar then there exists a bush
form of Bk such that all the virtual vertices with labeled k + 1 appear next
to each other on the horizontal line.
The algorithm proceeds by successively "drawing" B1, B2, . . ., Bn -I and
G. If in the realization of Bk all the virtual vertices labeled k + 1 are next
to each other, then it is easy to draw Bk + 1: One joins all the virtual vertices
labeled k + 1 into one vertex and "pulls" it down from the horizontal line.
Now all the edges of G which emanate from k + 1 are added, and their
other endpoints are labeled properly and placed in an arbitrary order on
the horizontal line, in the space evacuated by the former virtual vertices
labeled k + 1.
However, a difficulty arises. Indeed, the discussion up to now guarantees
that if G is planar then there exists a sequence of bush forms, such that
each one is "grown" from the previous one. But since we do not have a
plane realization of G, we may put the virtual vertices, out of k + 1, in a
"wrong" order. It is necessary to show that this does not matter; namely,
by simple transformations it will be possible later to correct the "mistake".

Lemma 8.11: Assume v is a separation vertex of Bk. If v > 1 then exactly


one component of Bk, with respect to v, contains vertices lower than v.

Figure 8.2
186 Testing Graph Planarity

Note that here we ignore the direction of the edges, and the lemma is
actually concerned with the undirected underlying graph of Bk.

Proof: The st-numbering implies that for every vertex u there exists a path
from 1 to u such that all the vertices on the path are less than u. Thus, if
u < v then there is a path from ] to u which does not pass through v.
Therefore, 1 and u are in the same component.
Q.E.D.

Lemma 8.11 implies that a separation vertex v of Bk is the lowest vertex


in each of the components, except the one which contains 1 (in case v > 1).
Each of these components is a sub-bush; i.e. it has the same structure as a
bush form, except that its lowest vertex is v rather than 1. These sub-bushes
can be permuted around v in any of the p! permutations, in case the num-
ber of these sub-bushes is p. In addition, each of the sub-bushes can be
flipped over. These transformations maintain the bush form. It is our pur-
pose to show that if Bk' and Bfk2 are bush forms of a planar Bk then through
a sequence of permutations and flippings, one can change Bk' into a Bk 3
such that the virtual vertices of Bk appear in Bk 2 and Bk 3 in the same order.
For efficiency reasons, to be become clear to those readers who will study
the implementation through P Q-trees, we assume that when a sub-bush is
flipped, smaller sub-bushes of other separation vertices of the component,
are not flipped by this action. For example, consider the bush form shown
in Fig. 8.3(a). The bush form of Fig. 3.3(b) is achieved by permuting about
1, Fig. 8.3(c) by flipping about 1 and Fig. 8.3(d) by flipping about 2.

Lemma 8.12: Let H be a maximal nonseparable component of Bk and


Y1, Y2, . .. , y be the vertices of H which are also endpoints of edges of
Bk - H. In every bush form Bk all the y's are on the outside window of H
and in the same order, except that the orientation may be reversed.

Proof: Since Bk is a bush form, all the y's are on the outside face of H.
Assume there are two bush forms Pk' and Bk 2 in which the realizations of
H are kH and IF, respectively. If the y's do not appear in the same order
on the outside windows of H' and f' then there are two y's, yi and yj which
are next to each other in 4' but not in If (see Fig. 8.4). Therefore, in f2,
there are two other y's, Yk and y, which interpose between yi and yj on the
two paths between them on the outside window of IF. However, from If
we see that there are two paths, Plys, yjJ and P21yk, yJe which are completely
disjoint. These two paths cannot exist simultaneously in fF. A contradiction.
Q.E.D.
Vertex Addition Algorithm of Lempel, Even and Cederbaum 187

8@ ;

if
\

(a)

(b)

Figure 8.3 (a & b)


188 Testing Graph Planarity

( :)

Figure 8.3 (c & d)


Vertex Addition Algorithm of Lempel, Even and Cederbaum 189

A^1 A2

/ H

\ //
\ //

Figure 8.4

Theorem 8.3: If B&. and B,*2 are bush forms of the same Bk then there exists
a sequence of permutations and flippings which transforms B&r into Pk',
such that in Bk2 and Bhk3 the virtual vertices appear in the same order.

Proof. By induction on the size* of bush or sub-bush forms. Clearly, if


each of the two (sub-)bushes consists of only one vertex and one virtual
vertex, then the statement is trivial. Let v be the lowest vertex in the (sub-)
busheskB and f?2 of the same B. If v is a separation vertex, then the com-
ponents of B appear as sub-bushes in h' and f12. If they are not in the
same order, by permuting them in fB', they can be put in the same order as
in 12 . By the inductive hypothesis, there is a sequence of permutations and
flippings which will change each of the sub-bushs of Bk to have the order
of its virtual vertices as in its counterpart in the fB2, and therefore the
theorem follows.
If v is not a separating vertex then let H be the maximal nonseparable
component of B which contains v. In fB'(fB2) there is a planar realization
y'(k)
of H. The vertices yi, y2, . . ., y. of H, which are also endpoints of
edges of B- H, by Lemma 8.12, must appear on the outside window of H
in the same order, up to orientation. If the orientation of the y's in k' is
opposite to that of H2, flip the (sub-) bush Bk about v. Now, each of the y's
is the lowest vertex of some sub-bush of B, and these sub-bushes appear in
(the new) Bk and f12 in the same order. By the inductive hypothesis, each of
these sub-bushes can be transformed by a sequence of permutations and

*The number of vertices.


190 Testing Graph Planarity

flippings to have its virtual vertices in the same order as its counterpart
in A2.
Q.E.D.

Corollary 8.4: If G is planar and Bk is a bush form of Bk then there exists a


sequence of permutations and flippings which transforms Bk into a Bk' in
which all the virtual vertices labeled k + 1 appear together on the horizontal
line.
It remains to be shown how one decides which permutation or flipping to
apply, how to represent the necessary information, without actually drawing
bush forms, and how to do it all efficiently. Lempel, Even and Cederbaum
described a method which uses a representation of the pertinent informa-
tion by proper expressions. However, a better representation was suggested
by Booth and Leuker. They invented a data structure, called PQ-trees,
through which the algorithm can be run in linear time. PQ-trees were used
to solve other problems of interest; see [6].
I shall not describe PQ-trees in detail. The description in [61 is long (30
pages) although not hard to follow. It involves ideas of data structure
manipulation, but almost no graph theory. The following is a brief and in-
complete description.
A PQ-tree is a directed ordered tree, with three types of vertices: P-
vertices, Q-vertices and leaves. Each P-vertex, or Q-vertex, has at least one
son. The sons of a P-vertex, which in our application represents a separating
vertex v of Bk, may be permuted into any new order. Each of the sons, and
its subtree, represents a sub-bush. A Q-vertex represents a maximal non-
separable component and its sons which represent the y's, may not be
permuted, but their order can be reversed. The leaves represent the virtual
vertices.
The attempt to gather all the leaves labeled k + 1 into an unbroken run,
is done from sons to fathers, starting with the leaves labeled k + 1.
Through a technique of template matching, vertices are modified while the
k + 1 labeled leaves are bunched together. Only the smallest subtree
which contains all the k + 1 labeled leaves is scanned. All these leaves, if
successfully gathered, are merged into one P-vertex and its sons represent
the virtual edges out of k + 1. This procedure is repeated until k + 1 = n.

PROBLEMS

8.1 Demonstrate the path addition algorithm on the Peterson graph (see
problem 7.3). Show the data for all the steps: The DFS for numbering
the vertices, defining the tree and computing LI and L2. The 0 function
References 191

on the edges. The sorting of the adjacency lists. Use the path finding
algorithm in the new DFS, to decompose the graph into C and a se-
quence of paths. Use Hi, 112, 13 and end of stack markers to carry out
all the recursive steps up to planarity decision.
8.2 Repeat the path addition planarity test, as in Problem 8.1, for the
graph given below.

8.3 Demonstrate the vertex addition planarity test on the Peterson graph.
Show the steps for the DFS, the st-numbering and the sequence of
bush forms.
8.4 Repeat the vertex addition planarity test for the graph of Problem 8.2.
8.5 Show that if a graph is nonplanar then a subgraph homeomorphic to
one of the Kuratowski's graphs can be found in 0(1 VI2). (Hints:
Only O(1 VI) edges need to be considered. Delete edges if their deletion
does not make the graph planar. What is left?)

REFERENCES

[1] Auslander, L., and Parter, S. V., "On Imbedding Graphs in the Plane," J.
Math. and Mech., Vol. 10, No. 3, May 1961, pp. 517-523.
[2] Goldstein, A. J., "An Efficient and Constructive Algorithm for Testing Whether
a Graph Can be Embedded in a Plane," Graph and Combinatorics Conf., Con-
tract No. NONR 1858-(21), Office of Naval Research Logistics Proj., Dept. of
Math., Princeton Univ., May 16-18, 1963, 2 pp.
[31 Hopcroft, J., and Tarjan, R., "Efficient Planarity Testing," JACM, Vol. 21,
No. 4, Oct. 1974, pp. 549-568.
[41 Lempel, A., Even, S., and Cederbaum, I., "An Algorithm for Planarity Testing
of Graphs," Theory of Graphs, InternationalSymposium, Rome, July, 1966. P.
Rosenstiehl, Ed., Gordon and Breach, N.Y. 1967, pp. 215-232.
[5] Even, S., and Tarjan, R. E., "Computing an st-numbering," Th. Comp. Sci.,
Vol. 2, 1976, pp. 339-344.
[6] Booth, K. S., and Lueker, G. S., "Testing for the Consecutive Ones Property,
Interval Graphs, and Graph Planarity Using PQ-tree Algorithms," J. of Comp.
and Sys. Sciences, Vol. 13, 1976, pp. 335-379.
Chapter 9

THE THEORY OF
NP-COMPLETENESS
9.1 Introduction

For many years many researchers have been trying to find efficient algo-
rithms for solving various combinatorial problems, with only partial success.
In the previous chapters several of the achievements were described, but
many problems arising in areas such as computer science, operations re-
search, electrical engineering, number theory and other branches of discrete
mathematics have defied solution in spite of the massive attempt to solve
them. Some of these problems are: The simplification of Boolean functions,
scheduling problems, the traveling salesman problem, certain flow prob-
lems, covering problems, placement of components problems, minimum
feedback problems, prime factorization of integers, minimum coloration of
graphs, winning strategies for combinatorial games.
In this chapter we shall introduce a class of problems, which includes
hundreds of problems which have been attempted individually, and no
efficient algorithm has been found to solve any of them. Furthermore, we
shall show that a solution of any one member of this class, will imply a
solution for all. This is no direct proof that members of this class are hard
to solve, but it provides a strong circumstantial evidence that such a solution
is unlikely to exist.
Since all the problems we consider are solvable, in the sense that there
is an algorithm for their solution (in finite time), we need a criterion for
deciding whether an algorithm is efficient. To this end, let us discuss what
we mean by the input length. For every problem (for example, deciding
whether a given integer is a prime) we seek an algorithm such that for every
instance of this problem (say, 5127) the algorithm will answer the question
("is it a prime"?) correctly. The length of the data describing the instance
is called the input length (in our illustration it is 4 decimal digits). This
length depends on the format we have chosen to represent the data; i.e. we
can use decimal notation for integers, or binary notation (13 bits for our

192
Introduction 193

illustration) or any other well defined notation; for graphs, we can use
adjacency matrices, or incidence lists, etc.
Following Edmonds [1], we say that an algorithm is efficient if there
exists a polynomial p(n) such that an instance whose input length is n takes
at most p(n) elementary computational steps to solve. That is, we accept
an algorithm as efficient only if it is of polynomial (time) complexity. This
is clearly a very crude criterion, since it says nothing about the degree or
coefficients of the polynomial. However, we accept it as a first approxima-
tion for the complexity of a problem for the following reasons:
(1) All the problems which are considered efficiently solved, in the litera-
ture, have known polynomial algorithms for their solutions. For ex-
ample, all the algorithms of the previous chapters of this book are
polynomial.
(2) None of the hard problems, mentioned above, is known to have a poly-
nomial algorithm.
(3) To see why polynomial is better than, say, exponential, consider the
following situation. Assume we have two algorithms for a solution of a
certain problem. Algorithm A is of complexity n2 and algorithm B is of
complexity 2n. Assume, we have a bound of say, one hour computation
time, and we consider an instance manageable with respect to a certain
algorithm if it can be solved by this algorithm within one hour. Let no
be the longest instance (no is its input length) which can be solved by
algorithm B, using a given computer C. Thus, the number of steps C
can perform in one hour is 2"o. Now, if we buy a new computer C', say
10 times faster, the largest instance n we can handle satisfies

2n = 10 *2"O

or

n = no + log2 10.

This means, that instead of, say, factoring integers of no binary digits
we can now factor integers of about no + 4 digits. This is not a very
dramatic improvement.
However, if no is the largest instance we could handle, by C, using
Algorithm A, then now we can handle, by C', instances of length up to
n, where

n2 = 10 *no2 ,
194 The Theory of NP-Completeness

and
7
n=- ALO no.

This means that we would be able to factor integers with more than 3
times the number of digits as we could before. This is much more
appealing. (Unfortunately, we dc not know of an n2 algorithm for fac-
toring integers.)
Having a problem in mind, we have to decide on the format of its input.
Only after this is done, the question of whether there is a polynomial algo-
rithm is mathematically defined. We do not mind exactly what format one
chooses for our problem, up to certain limits. We consider two formats
equally acceptable if each can be translated to the other in polynomial time.
If in one format the input length of an instance is n and q(n) is a poly-
nomial bound on the time to translate it (by the translation algorithm) to
the second format, then clearly the input length in the second format of the
same instance is bounded by q(n). Now, if we have a polynomial time algo-
rithm to solve the problem in the second format, where the complexity is
bounded by p(n), then there exists a polynomial time algorithm for the first
format too: First we apply the translation algorithm and to its output we
apply the polynomial algorithm for the second format. The combined algo-
rithm is of complexity

q(n) + p(q(n)),

which is still polynomial.


However, if no such polynomial translation algorithm exists, then we do
not consider the two formats equally acceptable. For example, the binary
representation of integers and the unary representation (13 is represented
by 1111111111111) are not equally acceptable, since the length of the sec-
ond is exponential, and not polynomial, in terms of the first. It is easy to
describe a polynomial algorithm for factoring integers given in unary (O(n2 ),
where n in this format is not only the input length but also the value of the
integer; how can this be done?). This does not imply a polynomial algorithm
for the binary representation. In this case we consider the binary repre-
sentation as acceptable, and the unary representation-unacceptable.
A problem is called a decision problem if the answer is 'yes' or 'no'; for
example, "is a given integer a prime?" is a decision problem. However, in
many problems the answer required may be more involved. For example,
"find the prime factorization of a given integer", or "what is the maximum
The NP Class of Decision Problems 195

flow possible in a given network?", require longer answers. For reasons to


become clear later, we prefer to represent each of our problems by a closely
related decision problem. For example, the problem of prime factorization
is replaced by the following: "Given an integer n and two more integers a
and b, is there a prime factor of n such that a c f < b?" The problem
of finding the maximum flow of a network can be replaced by: "Given a
network N and an integer k, is there a legal flow in N whose total value is
at least k?" Clearly, having a polynomial algorithm which answers the more
involved problem implies the existence of a polynomial algorithm to answer
the corresponding decision problem. [For example, if we have a polynomial
algorithm for prime factorization, we can examine each factor (how many
can an integer have if its binary representation is of length n?) and check
if any of them satisfies the condition.] The converse is less trivial, but still
holds; i.e. if we have a polynomial algorithm to solve the decision problem
we can solve the original problem in polynomial time too. In the case of
factoring an integer N (its input length is n= rlog2(N + 1)1 ), we first
ask whether there is a prime factor inbetween 2 and LN/2j (actually VNI
is sufficient, but this makes no difference in our discussion). If the answer
is positive we divide the region into 2, etc. continuing in a binary search
manner. In 0(n) repeated applications of the decision problem we find one
factor. We divide N by the factor found and repeat the process for the
quotient. Finding all factors requires at most 0(n2 ) applications of the
decision problem. Thus, if 0(p(n)) is the complexity of the decision prob-
lem, then the factorization is O(n2 p(n)). In most cases, the corresponding
algorithm is even simpler than in this demonstration.

9.2 The NP Class of Decision Problems

We need a more precise model for an algorithm. This is provided by the


Turing machine model. The readers are assumed to be acquainted with
Turing machines and Church's Thesis (see any standard textbook on theory
of computation, such as [2] or [3]). Here we shall define a Turing machine,
since we need its exact formulation in what follows, but we assume the
reader is familiar with the thesis that a problem can be solved by an algo-
rithm if and only if it can be solved by some Turing machine which halts
for every input.

A Turing machine M is defined by an eight-tuple (S. r, , f, b, SO, SY, SN)

where
196 The Theory of NP-Completeness

S is a finite set whose elements are called states; so, sy, SN are three
states called the initial state, the 'yes' state and the 'no' state, re-
spectively.
r is a finite set whose elements are called tape symbols; E is a proper
subset of r whose elements are called input symbols; b is an element
of r-s, called the blank symbol.
f is a function (S -{sY, SN}) x r - s x r x f 1, -1), called the
transition function.

A Turing machine has an infinite tape, divided into cells ... c(-2), c(-1),
c(O), c(1), c(2)- -.. The machine has a read-write head. Each unit of time
t, the head is located at one of the tape cells; the fact that at time t the
head is in c(i) is recorded by assigning the head location function h the
value i (h(t) = i). When the computation starts, t = 0. The head is initially
in c(1); i.e. h(O) = 1.
Each cell contains one tape symbol at a time. The tape symbol of c(i) at
time t is denoted by -y(i, t). The input data consists of input symbols x,, X2,
,x..
x. and is initially written on the tape in cells c(l), c(2), . . ., c(n) re-
spectively; i.e. y(l, 0) = xi, 'y(2, 0) = X2, . (n, 0) = x.. For all other
y..
cells c(i), y(i, 0) = b.
The state at time t is denoted by s(t). Assume s(t) e S - {SY, SN}, and
f(s(t), -y(h(t), t)) = (p, q, d). In this case, the next state s(t + 1) = p, the
symbol in c(h(t)) becomes q (y(h(t), I + 1) = q) and the head location
moves one cell to the right (left) if d == 1(-1); i.e. h(t + 1) = h(t) + d.
All other cells c(i), i • h(t), retain their symbol; i.e. -y(i, t + 1) = -y(i, t).
If s(t) r {sy, SN} the machine halts.
We assume that M has the property that for every input data it eventually
halts.
A Turing machine M is said to solve a decision problem P, if for every
instance of this problem, described according to the conventional format
by xi, X2, . . ., xn (n is the input length , the answer is 'yes' if and only if M,
when applied to xi, x2, . . ., x. as its input data, halts in state sy.
A Turing machine seems to be a very slow device for computation.
Typically, a lot of time is "wasted" on moving the head from one location
to another, step by step. This is in contrast to the random access machine
model which we usually use for our computations. Yet, it can be shown
that if an algorithm solves a problem in a random access machine in poly-
nominal time then a corresponding Turing machine will solve this problem
in polynomial time too. (The new polynomial may be of higher degree, but
this does not concern us.)
The NP Class of Decision Problems 197

There is a rich set of decision problems for which we do not know of a


polynomial algorithm (or Turing machine) for their solution, but a positive
answer can be verified in polynomial time if some additional information is
given. For example, if we are given an integer N for which the question: "Is
it true that N is not a prime?" has to be answered, and if a factor F of N
is given, it is easy to verify, in polynomial time, that N is not a prime by
simply verifying that F is indeed a factor. Another example is the following.
Assume we are given an undirected graph G(V, E) and want to answer the
question: "Does G have a Hamilton circuit?" (see Problem 1.2). If in
addition a Hamilton circuit is specified, it is easy to verify in polynomial
time that indeed the given circuit is Hamiltonian. To capture this concept
more formally, we use nondeterministic Turing machines.
Assume that before our machine M starts its computation, some informa-
tion is placed in cells c(-1), c(-2), ... on the tape; i.e. these cells are
not restricted to contain initially blanks only. The sequence of symbols

-y(-1, 0), -y(-2, 0), . . . `=gl, g2, - ..

is called the guess. Clearly, if the time alloted to M is bounded by some


polynomial p(n), then there is no point in placing a guess longer than
p(n) - 1, since c(-p(n)) cannot be reached at all during the computation.
We say that a decision problem D can be solved by a nondeterministic
Turing machine M in polynomial time if there exists a polynomial p(n)
such that if the answer to an instance I of input length n is 'yes' then there
exists a guess for which M will halt in p(n) units of time, in state sy; and if
the answer is 'no' then for every guess either M will not halt at all, or if it
halts, it will be in state SN.
The reason for calling such a "computation" nondeterministic is that we
do not claim to have a (deterministic) method to make the guess. We merely
say that one exists. The only obvious way to convert a nondeterministic
machine into an algorithm (or a deterministic Turing machine) is to try M
on all IrIp(n-1) possible guesses and see if any of them will give a positive
answer. Unfortunately, the time necessary is exponential (p(n)* IrIP(")-1).
The reader should realize that there are polynomial nondeterministic
Turing machines to solve the problems which we mentioned as "easy" to
verify. In the case of "Is it true that N is not a prime?" the guess is simply
a specification of a factor F. The machine divides N by F and verifies that
indeed the remainder is zero. It then enters sy and halts. If the remainder
is not zero, it enters SN and halt. (This does not mean that N is a prime. It
merely means that F is not one of its factors.)
198 The Theory of Completeness

In the case of the Hamilton circuit problem, the guess is a specification


of a circuit. The machine checks whether this is indeed a Hamilton circuit,
i.e. it is a circuit, it is simple and passes through all the vertices. If all the
tests end positively, it halts in state se. If the guess does not have the agreed
format, or if it is not a circuit, or if it is not simple or if it does not in-
clude all the vertices, then M halts in state SN, (Again, if it halts in SN, this
does not mean that G has no Hamilton circuit. All it says is that the given
guess is a failure.)
Thus, a polynomial nondeterministic Turing machine can be an efficient
device to get a positive answer, if we are lucky with the guess, but is a very
ineffective device for getting a negative answer to our decision problem.
Let P be the set of decision problems which can be solved by some poly-
nomial Turing machine (a deterministic Turing machine for which a poly-
nomial time bound p(n) exists).
Let NP be the set of decision problems which can be solved by some non-
deterministic Turing machine with a polynomial time bound.
Clearly, P c NP, since we can use the machine M which solves the
problem deterministically with the blank guess.
The question of whether P = NP has not been answered yet. It is gen-
erally believed that P •f NP; that is, there are problems in NP which can-
not be solved (deterministically) in polynomial time. However, we shall not
rely on this assumption. Instead, one can view what follows in this chapter
and the next, as circumstantial evidence that P • NP.

9.3 NP-Complete Problems and Cook's Theorem

Let Di and D2 be decision problems. We say that there exists a poly-


nomial reduction of Di to D2 (Di cc D!) if there exists a functionf(I) from
the set of inputs of Di to the set of inputs of D2 , such that the answer to I,
is 'yes', with respect to Di, if and only if the answer to f(I,) is 'yes' with
respect to D2 , and there exists a polynomially bounded algorithm to com-
putef(I). Such an algorithm is realizable by a Turing machine which com-
putes f(I,); i.e. unlike the machines of the previous section which only
produce a 'yes' or 'no' answer, this machine prints on the tape the value of
f(I) before it halts.
If Di oc D2 and D2 can be answered by a polynomially bounded algorithm
A2 then DI is also solvable by a polynomially bounded algorithm: Given an
input I, for Di, use first the polynomnially bounded algorithm to produce
f(Im), and assume this computation is bounded by the polynomial q(n),
where n is the length of II. Now, use A2 to answerf(I) with respect to D2 .
NP-Complete Problems and Cook's Theorem 199

Let p(m) the polynomial bounding the computation time of A2 , where m is


the length of I2 = f(II). Since m < q(n), the total computation time to
answer D1 is bounded by q(n) + p(q(n)), which is clearly a polynomial.
Following Karp's approach [41, let us define a decision problem D to be
NP-Complete (NPC) if D e NP and for every D' E NP, D' oc D.
Clearly, if D is NPC and if there is a polynomial algorithm to solve it
(D e P) then every D' e NP is also in P, or P = NP.
Note also that the relation cc is transitive; i.e. if D, cc D 2 and D 2 c D3
then D, oc D 3 . If f,(Ii) is a reduction function from D, to D 2 and f2(I2) is a
reduction function from D 2 to D 3 then f2(fi(Ii)) is a reduction function
from D, to D3, and if both f' and f2 are polynomially computable, then so
isf2(f).
It follows that if D is NPC, D' e NP and D XcD', then D' is also NPC.
Before we continue our study of the class of NPC problems it is worth
noting that there are two other definitions of NPC in the literature.
According to Cook's approach [51, a problem D e NP is NPC if for every
problem D' e NP there exists a polynomial algorithm in which questions of
the type: "What is the answer to I with respect to D?" can be asked, and
the answer be used. He calls such a question answering device an oracle,
and its use is like a subroutine. Clearly, if there is a polynomial algorithm
for some D which is NPC according to this definition, then P = NP. For
if each of the calls to the oracle takes a polynomial time to answer, and
there can be only a polynomial number of such calls, then the whole process
is polynomially bounded.
Aho, Hopcroft and Ullman [6] use a more "general" definition yet. They
call a problem D NPC if D e NP and the existence of a polynomial algo-
rithm for it implies a polynomial algorithm for every D' e NP.
Clearly

NPCKARP C NPCCOOK C NPCAHU.

None of these inclusions is known to be strict, but equality has not been
demonstrated either.
In certain studies the differences between these different definitions may
be crucial, and the reader is advised to be aware of the differences. How-
ever, these differences are irrelevant in what follows in this book. For
definiteness, we shall stick to the Karp approach.
Our aim is to prove that several combinatorial decision problems, which
are of wide interest, are NPC. Typically, it is easy to show that they belong
to NP, and as noted before, once we know one NPC problem D, a demon-
200 The Theory of NP-Completeness

stration of a polynomial reduction of D to the new problem will establish


its NP-Completeness. We need one NPC problem to start this approach off.
The problem which was chosen by Cook [4] to be the first established
NPC problem is the satisfiability of conjunctive normal forms (SAT)*.
SAT is defined as follows. There is a finite set X = {x 1 , X2, . . ., x"} of
variables. A literal is either a variable xi or its complement x,. Thus, the set
of literals is L = {xI, X2, . . ., X, Xl, r:, . .. X,}.
, , A clause C is a subset of
L. We are given a set of clauses C,, C2, ... , Cm. The question is whether
the set of variables can be assigned 'true' (T) or 'false' (F) values, so that
each clause contains at least one literal with a T value. Clearly, if a literal
is assigned a T(F) value, its value is the same in all the clauses in which it
appears. Also, if xi = T then xi = F, and if xi = F then xi = T. The re-
quirement that the assignment of truth values satisfies these last two con-
ditions is called the consistency condition. The requirement that each
clause contains at least one literal assigned T is called the satisfiability
condition.
A concise statement of SAT is, therefore, the following:

Input: A set of clauses.

Question: Is there a consistent assignment of truth values to the literals in


these clauses, which meets the satisfiability condition?

Theorem 9.1: SAT is NPC.

Proof: First, it is easy to see that SAT e NP. For if the set of clauses is
satisfiable, all we need to do is to use a satisfying truth assignment as the
guess and verify that indeed this assignment is consistent and satisfying. A
Turing machine which performs this task can be built; this is a cumber-
some but straightforward task.
The more demanding part of the proof is to show that every NP problem
is polynomially reducible to SAT. Although this proof is long, its idea is
ingeniously simple.
By definition, for every decision problem D in NP, there exists a poly-
nomially bounded nondeterministic Turing machine M which solves it. We
display a polynomial reduction such that when M, its bounding polynomial

*In fact Cook used the tautology problem of disjunctive normal forms. We use
SAT, which by De Morgan's law is the complement of the tautology problem, since
the latter is not known to be in NP.
NP-Complete Problems and Cook's Theorem 201

p(n) and the input I (for D) are given, it constructs an instance f(I) of
SAT, such that f(I) is satisfiable if and only if M "accepts" I; i.e. there
exists a guess with which M will verify that the answer to I, with respect
to D, is 'yes' and the computation time be at mostp (n).
The idea is that f(I) simulates the operation of M on the instance I.
There will be eight sets of clauses. The satisfiability of each set Si assures
that a certain condition holds. The conditions are:
(1) Initially, I is specified by the contents of cells c(1), c(2), ... , c(n); the
cells c(O) and c(n + 1), c(n + 2), . .. , c(p(n)) all contain blanks.
(2) The initial state is so and the head is in c(l) (h(0) = 1).
(3) For every 0 c t c p(n), the machine is exactly in one state.
(4) For every unit of time t, 0 c t c p(n), each cell c(i), -p(n) + 1 c i c
p(n) + 1, contains exactly one tape symbol.
(5) For every 0 c t < p(n), the head is exactly on one cell c(i), -p(n)
+ 1 < i c p(n) + 1.
(6) The contents of each cell can change from time t to time t + 1 only if
at time t the head is on this cell.
(7) If s(t) eS - (SY, SN} then the next state (s(t + 1)), the next tape symbol
in the cell under the head (y(h(t), t + 1)) and the next location of the
head (h(t + 1)) are according tof. If s(t) e (sY, SN} then s(t + 1) = s(t).
(We assume that the state does not change after M halts.)
(8) At time p(n) the state is sY.
To simplify our notation let S = {SO, SI, S2, .. ., Sq}, where Si is the 'yes'
state (sy) and S2 is the 'no' state (SN). We shall use the following conventions.
Index i is used for cells; -p(n) + 1 c i c p(n) + 1. Index t is used for
time; 0 c t c p(n). Index j is used for tape symbols; 0 c j c g, where
r = {yo, yi, . .. , yg} and -yo is the blank symbol (b). Index k is used for
states; 0 s k c q. The set of variables of the satisfiability problem is:

{G(i, t, j)} U {H(i, t)) U {S(t, k)}.

Since the number of tape symbols is fixed (for the given M, which does
not change with I) the number of G variables is O((p(n))2). The number of
H variables is also 0((p(n))2) and the number of S variables is 0(p(n)). The
interpretation is as follows:

G(i, t, j) = T if and only if y(i, t) = yj;

i.e. the tape symbol in c(i) at time t is zy.


202 The Theory of NP-Completeness

h(i, t) = T if and only if the head is on c(i) at time t.


S(t, k) T if and only if the state at time t is sk.

Assume that I = xIx 2x3 ... xn. The set Si is given by:

5S {{G(i, 0,j)} I I c i c n andx, = -yj U


{{G(i, 0, 0)} I n < i c p(n)} U {{G(0,0,0)}}.

It is easy to see that condition (1) holds if and only if all the clauses of
51 are satisfied. The fact that the values of G(i, 0, j) are not specified for
i < 0 corresponds to the fact that one imay use any guess one wants.

S2 = {{S(O, 0)), {H(1, 0))).


3= U [{{S(t, 0), S(t, 1), ... , S(t, q)}} U U {{S(t, k1 ), S(t, k 2)}}].
I kl <k2

For every t S3 contains one clause which guarantees that M is in a state


and for each pair of states there is a clause which assures that M is never
in two states at one time

4 = UU[{{G(i, t, 0), G(i, t, 1), . , G(i, t, g)}}

U U {{G(i, t, ji), G(i, t, j2 )}}].


.i1 <12

Ss = U [{{H(-p(n) + 1, t), H(-p(n) + 2, t), . . ., H(p(n) + 1, t)})

U U {{H(ii, t), H(i2 , t)}}].


56 = Ui Ost<P(n)
U U {{H(i, t,), G(i, t, j), G(i, t + 1, j))
j

For every i and (relevant) t there are g clauses which together require that
either the head is on cell c(i) at time t or the symbol y(i, is the same as t)
'y(i, t + 1); for if at time t + 1 it is j and at time t it is not, then no literal
j
in the clause for i, t, is 'true'.

S7 = U iO~rt<p(n)
U U
ko1. 2
U{{S(t,
j
k), H(i, t), G(i, t, j),.S(t + 1, k')},

{SQt, kj, H(i, r). G(i, t, j), G(i, t + 1,j')},


{S(t, k), H(i, t), G(i, t, j), H(i + d, t + 1)} If(sk, 'yj) = (Sk', yi;, d)}

U {{S(t, 1), S(t + 1, 1)}, {S(t, 2), S(t + 1, 2))).


U ,I<P(n)
NP-Complete Problems and Cook's Theorem 203

The clauses of the last line imply that if s(t) = s1 or S2 (the 'yes' and 'no'
states) then s(t + 1) = s(t). The other three lines imply that if s(t) = Sk,
h(t) = c(i) and -y(c(i), t) = yj then s(t + 1), y(c(i), t + 1) and h(t + 1)
are according to the transition functionf of the Turing machine M.

58 = {{S(p(n), 1)}}.
It follows that the set of clauses U I Si is satisfiable if and only if there
is a guess for which M accepts the input I, by reaching by t = p(n) the
'yes' state. Thus, every NP decision problem is polynomially reducible to
SAT.
Q.E.D.

The 3SAT problem is a subproblem of SAT, and yet it is also NPC.


This is a useful result since for many NP-Completeness proofs it is easier to
demonstrate a polynomial reduction from 3SAT, instead of using SAT
directly. The definition of 3SAT is as follows:

Input: A set of clauses, each consisting of exactly three literals.

Question: Is there a consistent assignment of truth values to the literals in


the clauses, which meets the satisfiability condition?

Theorem 9.2: 3SAT is NPC.

Proof. The proof that 3SAT e NP is the same as for SAT. Next we show
that SAT c 3SAT.

Let us demonstrate the idea of the reduction on a simple example. Let


Si be a set of clauses one of which is {a, b, c, d}; i.e. SI = {{a, b, c, d}}
U S'. Let x be a variable which does not appear in Si. Define S2 = {{a,
b, x}, {x, c, d} } U S'. Let us show that Si is satisfiable if and only if 52 is.
If a truth assignment in SI satisfies it, then the same assignment in S2
satisfies S' and at least one of the first two clauses of S2 , even if x and x
are ignored. Now x can be assigned a truth value which satisfies the re-
maining unsatisfied clause, if any. The resulting assigment satisfies S2.
If a truth assignment satisfies S2 then clearly it satisfies S'. Also, the
variable x can cause the satisfiability of only one of the first two clauses.
Thus one of the literals a, b, c, d is assigned a 'true' value. It follows that
the same assignment, ignoring x, satisfies SI too.
This example shows how a clause of length four can be replaced by two
clauses of length three. By introducing I - 3 new variables, a clause of
204 The Theory of NP-Completeness

of length I > 3 can be replaced by I - 2 clauses of length three, without


changing the satisfiability of the set of clauses. This can be done as follows:
The clause {a,, a2, ... , a,} is replaced by

{a,, a2, XI}, {xi, a 3 , X2}, {X, ai+2, Xi+ 1} . XI-3, a,-1, a,}.

If a truth assignment for ax, a2, . ., a, contains at least one 'true' literal
then the long clause {a,, a2, . . ., a,} is satisfied. Furthermore, the x vari-
ables can be assigned to satisfy all the clauses of length three which are not
satisfied by one of the a-s: If a, or a2 is T, assign xi = X2 = ... = X/-3
= F. If a,-, or a, is T, assign xi = X2 = Xl-3 = T. If some ak =T
2 < k < I-1, assignxi = X2 = . Xk-2 = TTandxk- =xk =**
Xl-3 = F. At least one of these cases applies. However, if a truth assign-
ment for a,, a2, .. , a, makes them all 'false' then the long clause is not
.

satisfied and no choice of values for the x variables will satisfy all the I - 2
short clauses.
Note that this replacement of long clauses by short ones can be done in
time which is bounded polynomially with the length of the input which
describes the original set of clauses. The number of clauses in the trans-
formed set is bounded by the number of literals, counting their repetitions,
in the original set, and each of the clauses in the transformed set contains
at most three literals.
Q.E.D.

9.4 Three Combinatorial Problems which are NPC

Although this book deals mainly with graph theoretic problems, we shall
discuss in this section three nongraphic combinatorial problems, and prove
their NP-Completeness. These problems are important and well known,
and their established NP-Completeness will help in the analysis of some
graphic problems in the next chapter.
The first problem is the three dimensional matching (3DM). In Section
6.4 we discussed the problem of maximum matching in bipartite graphs,
and saw that it can be solved in polynomial time; this problem is also called
the two dimensional matching problem (2DM). The 3DM is defined as
follows:

Input: Let W, X, and Y be three sets all of the same cardinality, p, and
Mc WXXX Y.
Three Combinatorial Problems which are NPC 205

Question: Is there a subset M' of M, of cardinality p, such that no two


triples in M' agree in any of their components?

For example, let W = X = Y = (0, 1} and M = {(O, 0, 0), (0, 0, 1),


(0, 1, 0), (1, 0, 0)}. For this instance of the input the answer to the 3DM is
'no', since two triples of M agree in at least one component. However, if
we change M by adding to it the triple (1, 0, 1), then the answer is 'yes',
since M' = {(O, 1, 0), (1, 0, 1)} satisfies the condition.

Theorem 9.3: 3DM is NPC.

Proof. Clearly 3DM is in NP. Let us show that 3SAT cc 3DM, and since
3SAT is already known to be NPC, this will prove that 3DM is NPC. The
proof follows Garey and Johnson [7]*.

Let xI, X2, . .. , x. be the variables which appear in the set C of clauses
C,, C2, . . ., Cm, which is the input I to the 3SAT problem.
We construct W, X, Y and M off (I), the input to 3DM, in the following
general manner. There will be a set of triples, AC, representing the truth
assignment consistency of the variables. Here the consistency means that in
all its appearances in C a variable gets the same truth value, and all the
appearances of its complement get the complementary truth value. There
will be a set of triples, SC, representing the satisfiability condition; its
task is to ensure that every clause will be satisfied. Finally, there will be a
set of triples, GC(garbage collection), which will enable to complete the
matching if the previous conditions have been met.
The sets W, X and Y are defined as follows:

W = {x , x, I I < i < n, 1 c j c m},

that is, for each variable xi and each clause Cj there is an element xij e W
representing the appearance of xi in Cj; similarly xij for Xi in Cj. [This is,
clearly, a great waste, since xi and xi are unlikely to appear in the same
clause, and only three variables can appear in each clause. However, we
are not concerned here with efficient reductions; as long as it is polynomial
it is acceptable, and the simpler construction is preferred.]
The sets X and Y are described piecewise,

*The use of 3SAT instead of SAT is unimportant. The same reduction proves also
SAT oc 3DM directly.
206 The Theory of NP-Completeness

X=A, US U G
Y=A 2 US U G

where Ai, S and G are pairwise disjoint; Ai plays a role in the assignment
consistency, S in the satisfiability and G in the garbage collection.

AI = {a I I < i s: n, 1 s j s m},
A2 = {bij I 1 s i c n, 1 s j
S = {sIjl S j < in),
G = {gk I s k c m(n - 1)).

Now M = AC U SC U GC, where AC, SC, GC are pairwise disjoint.


They are defined as follows:

AC = U,'-= AC,
where
ACi = {(xi, ai,, bi,) I 1 <j m} U
{(Zil ai j+ , bj) I 1 :i• rm! - 1} U {(iim, ail, bin)).

The structure of ACi is described in Figure 9.1, where the triples are
circumscribed and the i index is dropped. Since each aij and by participates
in only two triples, for every i M' must contain either all triples of the type
(xij, aij, bij) or all of the other type, but no mixture is possible. This repre-
sents the fact that all appearances of xi are 'false' (corresponds to covering
the a1,'s and big's with the xj's) or all are 'true', and if xi = T,then xi = F,
etc.
SC = U- , SC,

where
SCj = {(xiu, sj, sj) I xi e (Cj U {ip, s3, sO) Xie CEQ.

Since we are using 3SAT, each SC' contains three triples. In order to
cover s1, as a component in the second and third dimensions, one, and
only one of the triples must be in M'. Clearly this can be the case only
if x,, (x,,) has not been used in AW' n AC, namely, if x, gets 'true'
('false') assignment.
Three Combinatorial Problems which are NPC 207

b,, b\

\ 'S \-'-

- - _-

Figure 9.1

Now, M' n (AC U SC) uses up exactly m n + m of the 2mn elements


of W. In order to be able to cover the remaining m(n - 1) elements we
have
GC = {(xii, 9k, k)g, (Y gk, g9) 1c i n, 1 <j i m, 1 < k i m(n-1)}.
Q.E.D.
The exact cover by 3-sets (3XC) problem is defined as follows. We are
given a collection of sets Si, 52, ... , S,, all subsets of some universal set
U, and each consists of exactly three elements. Is there a subset I of {1, 2,
n} such that
U S, U (9.1)
id

and ifi, jeIandi 1j, then


Si nrS=0. (9.2)
The word 'cover' describes equation (9.1), and the word 'exact' describes
condition (9.2), i.e. that the sets in the cover must be disjoint. Thus, 3XC
can be described, in short, as follows:
208 The Theory of NP-Completeness

Input: A collection C of 3-sets, all subsets of a given universal set U.

Question: Is there a subcollection of C' which is an exact cover of U?

Theorem 9.4: 3XC is NPC.

Proof: Obviously, 3XC e NP. We show now that 3DM W 3XC. Given the
sets W, X, Y and M C W X X X Y which specify the instance of 3DM, let
us assume that W, X and Y are pairwise disjoint. If they are not, then by
using new names we can easily change them, (and M, accordingly) to satisfy
this assumption.
Define now

C = {{w, x, y} I (w, x, y) e M}

and

U = W U X U Y.

We claim that there is an exact covering of U by a subcollection of C if and


only if there is a complete matching M' c M.
Clearly, if M' is a matching then

C' = {{w, x, y} I (w, x, y) - M'}

is an exact cover. And conversely, if C' is an exact cover, then

M'= {(w, x, y) | {w, x, y} e C'}

is a complete matching.
Q.E.D.

The exact cover (XC) problem is similar to the 3XC, except that the sets
are not necessarily 3-sets. Clearly 3XC cx XC, and therefore XC is NPC too.
The set covering (SC) problem is defined as follows:

Input: A collection of sets C, all subsets of the universal set U, and an


integer k.

Question: Is there a subcollection C' of C, such that C' is a cover of U


and the number of sets in C' is less than or equal to k?
Problems 209

The conditions that C' must satisfy are therefore:

U S U,
SEW

and

IC'I ck.

Theorem 9.5: SC is NPC.

Proof. Let us show that 3XC xc SC.

Given C and U as input to 3XC, let k = LI U /3J . Now, C, U and k con-


stitute the input to the SC problem.
If IUI is not divisible by 3 then clearly the answer to the 3XC is 'no'.
Since each set covers 3 elements, k sets can cover at most 3k elements and
tba-refore cannot cover U. Thus, the answer to SC is also 'no'.
If I U I is divisible by 3 then if C' is an exact cover then C' is also a cover
and I C'[ = I U 1/3 = k since each set covers exactly 3 elements. Also, if
C' is a cover with IC'I < k then JC'| = k, since every set covers, at most,
three elements and there are IUI = 3k elements. It follows that if C' is
such a cover then the sets in it are disjoint, and therefore the cover is exact.
Q.E.D.

We can also define the set cover problem by 3-sets (3SC), and the same
proof shows that it is NPC.
Usually, when we encounter a covering problem, it is stated as an opti-
mization problem: Given a collection C of subsets of U, find the smallest
subcollection C' which covers U. Clearly, if we could solve this optimiza-
tion problem then we could also solve SC in polynomial time. It follows
that if SC is hard to solve, as is suggested by its being NPC, then so is the
optimization problem.

PROBLEMS

9.1 A set M 5 W X X X Y is pairwise consistent if for all a, b, c, w, x, y,


{(a, b, y), (a, x, c), (w, b, c)} C M implies that (a, b, c) e M. Prove
that 3DM remains NPC even if M is restricted to be pairwise consistent.
(Hint: Review the proof of Theorem 9.3.)
210 The Theory of NP-Completeness

9.2 The set packing problem is defined as follows:


Input: A collection C of sets and a positive integer k.
Question: Does C contain k sets which are pairwise disjoint?
Prove that this problem is NPC.
9.3 The hitting set (HS) problem is defined as follows:
Input: A collection C of subsets of a universal set U and a positive
integer k.
Question: Is there a U' c U such that I U' | c k and U' contains at
least one element from each subset in C?
Prove that HS is NPC.
(Hint: Show that SC o HS.
Let {S., 52, ... , S.} where S, C S = {u1 , U2, ... , un} and k be the
input to SC.
Define Ri = {j u|i e Sj.
The input to HS is as follows:

C = [Ri I I < i sn},


U = {jj I •<j c m}

and k remains unchanged.)


9.4 The 0-1 Knapsack problem (0-1 KNAP) is defined as follows:
Input: Positive integers a,, a2, . . ., a., b.
Question: Is there a subset I c {1, 2, . . ., n} such that Eiel ai = b?
(a) Prove that 0-1 KNAP is NPC if the integers are encoded in binary
or any other radix (greater than or equal to 2) system. (Hint: show that
XC oc 0-1 KNAP. Let the input I of XC consist of subsets S,, S2, . . ..
Sm of the universal set U = {uo, ua, .. ., u,-,}. Definef (I) as follows:

ai Sjesi (m + 1) i
E for i = 1, 2, . m
,

n =m,

and b = t(m +1)i = (m 1)'-I

(b) Show that if b is expressed in the unary notation then 0-1 KNAP is
solvable in polynomial time. (Hint: prepare a binary vector (xo, xi, ....
Xb) in which initially xo = 1 and xi = X2 . . . = Xb = 0. For each
i = 1, 2, . . ., n andj = b - 1, b -2, ... , 2, 1, if x; 1,j + ai < b
References 211

and xj+,,i = 0, set xj+i - 1. At the end, the answer to 0-1 KNAP is
'yes' if and only if Xb = 1.)
9.5 The partition problem (PART) is defined as follows:
Input: Positive integers pi, p2, .. p.P.
Question: Is there a subsetJ C (1, 2, ... , m} such that

E pi = E pi?
W6 i~J

Prove that (in radix 2 2) PART is NPC.


(Hint: By 0-1 KNAP oc PART. Define

m = n + 2,

pi ai for i = 1, 2, n,

n
p.+l= 2 ai + b,

pn+2 22- a - b.)

REFERENCES

[1] Edmonds, J., "Paths, Trees and Flowers", Canad. J. of Math., Vol. 17, 1965, pp.
449-467.
[2] Hopcroft, J. E., and Ullman, J. D., Formal Languages and their Relation to
Automata, Addison-Wesley, 1969.
[3] Minsky, M., Computation: Finite and Infinite Machines, Prentice Hall, 1967.
[4] Karp, R. M. "Reducibility among Combinatorial Problems", in R. E. Miller and
J. W. Thatcher (eds.), Complexity of Computer Computations, Plenum Press,
1972, pp. 85-104.
[5] Cook, S. A., "The Complexity of Theorem Proving Procedures", Proc. 3rd Ann.
ACM Symp. on Theory of Computing, ACM, 1971, pp. 151-158.
[6] Aho, A. V., Hopcroft, J. E., and Ullman, J. D., The Design and Analysis of Com-
puterAlgorithms, Addison-Wesley, 1974.
[7] Garey, M. R., and Johnson, D. S., Computers and Intractability;A Guide to the
Theory of NP-Completeness, W. H. Freeman, 1979.
Chapter 10

NP-COMPLETE GRAPH PROBLEMS

There are many known NPC graph problems, and we cannot possibly
describe them all in one chapter. The interested reader can refer to the
book of Garey and Johnson [1], for the most complete list of NPC prob-
lems. In this chapter some of the most interesting NPC graph problems are
discussed.

10.1 CLIQUE, INDEPENDENT SET AND VERTEX COVER

The graphs in this section are all finite, undirected, have no parallel
edges and no self-loops. These assumptions are natural when we deal with
any of the problems of this section.
A clique of a graph G(V, E) is a subset of vertices, C, such that if u, v E
C then u - v in G.* An independent set of G is a subset of vertices, 5,
such that if u, v E S then u - v in G. (Here u - v means that there is an
edge connecting u and v, and u 9- v means that there is no such edge.) A
vertex cover (of the edges) is a subset, C, of vertices such that if u - v then
{u, v} n c ; 0.
The maximum clique problem (CLIQUE) is defined as follows:

Input: A graph G(V, E) and a positive integer k c IVI.


Question: Is there a clique C in G such that IC| 2 k?
Clearly, this is called the maximum clique problem because if we could
solve it efficiently we could also solve the problem of finding the size of a
maximum clique efficiently. Also, if CLIQUE is shown to be hard to solve
then the problem of finding a clique of maximum size must be hard to
solve.

*The reader is warned that there is another common definition; according to it a


clique is a maximal set with this property

212
Clique, Independent Set and Vertex Cover 213

Theorem 10.1: CLIQUE is NPC.

Proof: Obviously CLIQUE E NP. We show now that 3DM oc CLIQUE.


Let M C W X X X Y be the input I of 3DM. Definef(I) as follows:
V =M,
E ={ml - m2|m, m2 EM and these two triples do not have any compo-
nent in common},
k = WI.

The graph G(V, E) has a clique of size k if and only if there is a com-
plete matching M' C M.
Q.E.D.

The maximum independent set problem (IND) is defined as follows:

Input: A graph G(V, E) and a positive integer k - I VI.


Question: Is there an independent set S C V in G such that IS I 2 k.

Theorem 10.2: IND is NPC.

Proof: Let us show that CLIQUE ac IND.


If the input I of CLIQUE consists of G(V, E) and k, letf(I) consist of G
and k, where Gis the graph complementary to G; i.e., G(V, E') is defined
by: u - v in G if and only if u - v in G. A subset of vertices S C V is a
clique in G if and only if S is an independent set in G. Thus the answer to
I, with respect to CLIQUE is 'yes' if and only if the answer tof(I) is 'yes',
with respect to IND. Q.E.D.

The minimum vertex cover problem (VC) is defined as follows:

Input: A graph G(V, E) and a positive integer I I VI.


Question: Is there a vertex cover C such that IC | 1.

Theorem 10.3: VC is NPC.

Proof: Let us show that IND oc VC.


Let the input I of IND consist of a graph G(V, E) and an integer k. In
f(I), G is unchanged and I = I VI -k.
214 NP-Complete Graph Problems

If there is an independent set S such that IS I 2 k then clearly V - S is


a vertex cover. The number of vertices in V - S is I VI - IS|I V|V- k
= I. Thus the answer to f(I) with respect to VC is also 'yes'. Conversely, if
C is a vertex cover and I Cl 1, then V - C must be an independent set.
The number of vertices in V -C is l Vi - Cl C | VI -1 = k. Thus the
answer to I with respect to IND is also 'yes'.
Q.E.D.

10.2 HAMILTON PATHS AND CIRCUITS

The directed Hamilton path problem (DHP) is defined as follows:

Input: A digraph G(V, E) and two vertices s, t.

Question: Is there a simple directed path which starts in s, ends in t and


passes through all the other vertices?

Theorem 10.4: DHP is NPC.

Proof: Let us show that VC a DHP. (This reduction is due to E. Lawler.)


Let G(V, E) be the graph and k be the positive integer in the input I to
VC. For every vertex, let e(v, 1), e(v, 2), ... , e(v, d(v)) be the edges
incident to v in G, where d(v) is the degree of v.
The digraph G'(V', E') off(I) is constructed as follows:

V {ao, as, , ak} U U {(v' 1, i), (v, 2, i)| 1 g i < d(v)}.


v(V

Here, ao, al, ... , ak are new symbols, and for every vertex v of G, there
are 2 * d(v) vertices in G'.

E'= {a, - (v, 1, 1)1°


I i < k and v E V} U
{(v, 2, d(v)) - aiIO < i : k and v E V} U
{(u, 1, i) - (v, 1,j), (u,2, i) - (v, 2,j)Ie(u, i) = e(v, j)} U
{(v, 1, i)- (v,2, i)lv E V and 1 • i ' d(v)} U
{(v, 2, i) -(v, 1, i + t)Iv E Vand 1 < i < d(v)}.

The last two parts, in the definition of E', describe a directed path from
(v, 1, 1) to (v, 2, d(v)) which passes through all the other 2 d(v) - 2 ver- .
Hamilton Paths and Circuits 215

tices in G', associated with v. This path will be called v's track. For every
edge u v in G there is a linkage between u's track and v's track as speci-
fied in the third part in the definition of E'; if e is the i-th edge incident to
u (e = e(u, i)) and is the j-th edge incident to v (e = e(v, j)) then the
connections it implies are as shown in Fig. 10.1. For every 0 c i < k and
every v E V by the first part of the definition of E', a, is connected by an
edge to (v, 1, 1). Similarly, by the second part, for every 0 < i < k and v
E V, (v, 2, d(v)) is connected by an edge to aj. Thus, the ai vertices serve as
passages from one track to another track.
The reason for the construction of the linkage as shown in Fig. 10.1 is
that if the Hamilton path enters from A it must exit from C, or else, either
(v, 1, j) or (u, 2, i) cannot be included in the path. The path can enter
from A and go through all four vertices and exit via C; it can enter from B,
go through all four vertices and exit via D; it can enter both from A and
B and exit via C and D, respectively. Thus, if the path enters (u, 1, 1)
(from some ai), it will go through all the 2 * d(u) vertices on u's track and
exit from (u, 2, d(u)) (to some aj). It may cover pairs of vertices (v, 1, j),
(v, 2, j), in addition, if u - v in G.
Let s = ao and t = ak. This completes the definition of f(I). We claim
that G has a k-vertex cover if and only if there is a Hamilton path from ao
to at in G'.
Assume C = {VI, V2, . . ., vj is a vertex cover of G.* One can construct
a Hamilton path in G', from ao to ak, as follows. Start with an edge from
ao to (v,, 1, 1), down the v, track to (v,, 2, d(vi)), from there to ai, to (v2,
1, 1), down the v2 track to (V2, 2, d(v 2)), etc. Finally, from (Vk, 2, d(vk)) to
ak. Now, for every edge u vVin G, if one vertex, say u, belongs to C but v
O C, the vertices (v, 1, j) and (v, 2, j), where e = e(v, j), are included by
making a detour in the u track. Assume e = e(u, i), then instead of going
directly from (u, 1, i) to (u, 2, 1), insert the detour (u, 1, i) - (v, 1, j) -
(v, 2,) - (u, 2, i). Since C is a vertex cover, we can include in this way all
the vertices on the unused tracks.
If P is an Hamilton path from ao to ak in G', then we can construct a k-
vertex cover, S, of G, as follows. v E S if and only if v's track is used in P.
The number of vertices in S is exactly k. Consider now an edge u v in G.
If both the v track and u track are used in P then clearly e is (doubly)
covered. If not, the only way to have (u, 1, i), (u, 2, i), (v, 1, j) and (v, 2, j)
in P is either to use the u track or the v track. Thus, e is covered by either
u or v. Q.E.D.

*There is no loss of generality in assuming that the cover contains exactly k


vertices, for addition of vertices does not ruin a cover.
216 NP-Complete Graph Problems

A B

C D
Figure 10.1

The directed Hamilton circuit problem (DHC) is defined similarly:

Input: A digraph G(V, E).

Question: Is there a simple directed circuit in G, which passes through all


the vertices?
Clearly, DHC is also NPC. This is easily proved by showing that DHP o
DHC. Given a digraph G(V, E) and two vertices s and t, as the input I to
DHP, construct the digraph G'(V', E') by adding to G one new vertex a
and two edges, t - a and a - s. Clearly, there is a Hamilton circuit in G'
if and only if there is a Hamilton path from s to t in G.
The (undirected) Hamilton path problem (HP) is also natural:

Input: A graph G(V, E) and two vertices s, t.

Question: Is there a simple path in G with endpoints s and t, which passes


through all the other vertices?

Theorem 10.5: HP is NPC.

Proof: Let us show that DHP a HP. (This proof is due to R. E. Tarjan.)
Let the input I of DHP consist of the digraph G(V, E) and the two vertices
be s and t. The graph G'(V', E'), off(I), is defined as follows:
V' = {(v, 0), (v, 1), (v, 2)1v E V}
E' {(v, 0)- (v, 1), (v, 1)- (v, 2)1v E V} U {(u, 2)- (v, 0)Iu - v in
G}.
Coloring of Graphs 217

The two endpoints, off(/), are (s, 0) and (t, 2).


It is easy to see that if there is a directed Hamilton path P, from s to t,
in G, then there is a Hamilton path P', in G', with endpoints (s, 0) and
(t, 2): P' consists of all the edges in the first part of the definition of E',
and if u - v in P then (u, 2) - (v, 0) is included in P'.
Assume now that P' is a solution to the HP problem specified by f(J).
Clearly, all the edges of the first part of the definition of E' appear in P',
or there would not be any way to pass through some (v, 1). We can now
scan P' from (s, 0) to (t, 2). Clearly, P' starts with (s, 0) - (s, 1) - (s, 2)
and ends with (t, 0) - (t, 1) - (t, 2). Whenever (u, 2) - (v, 0) is used in
P', we can use u - v in G. Thus, the resulting directed path is simple,
starts in s, ends in t, and passes through all other vertices of G.
Q.E.D.

The (undirected) Hamilton circuit problem (HC) is also NPC, and this is
again proved by showing that HP o HC. Again the reduction is simply by
adding a new vertex a and two new edges t - a and a - s.
The traveling salesman problem, is really not one problem. Generally, a
graph or a digraph is given, with length assigned to the edges. The
problem is to find a minimum circuit, or path from a vertex s to a vertex t,
such that every vertex is on it. Vertices may, or may not, be more than
once on the circuit or path.
For definiteness, let us assume that G(V, E) is an undirected graph,
each e E E is assigned a length l(e) and we are required to find a simple
circuit which passes through all the vertices and whose sum of edge lengths
is minimum. Clearly, if we could solve this traveling salesman problem in
polynomial time we could also solve HC. Simply, assign length 1 to all the
edges and solve the traveling salesman problem. This observation remains
valid even if in the traveling salesman problem the circuit is not required to
be simple; a minimum circuit is of length I VI if and only if it is
Hamiltonian. Similarly, the directed versions are related. We conclude that
the traveling salesman problems are hard to solve if P • NP.

10.3 COLORING OF GRAPHS

One of the classical problems in graph theory is that of coloring the ver-
tices of a graph in such a way that no two adjacent vertices (i.e. connected
by an edge) are assigned the same color. The minimum number of colors
necessary to color G is called the chromatic number, y(G), of G.
218 NP-Complete Graph Problems

In this section, we shall show that this problem is NPC. The problem re-
mains NPC even if all we ask is whether -y(G) s 3. Furthermore, even if
we restrict the question to planar graph, the problem remains NPC. Even
if we restrict the problem to a class of planar graphs with well behaved
planar realization, the problem of whether -y(G) • 3 is still NPC. One such
definition for well behaved realization is that all edges are straight lines, no
angle is less than 100 and the edge lengths are in between two given
bounds.
First we consider the 3-Coloration problem, (3C), which is defined as
follows:

Input: A graph G(V, E).

Question: Can one assign each vertex a color, so that only three colors are
used and no two adjacent vertices are assigned the same color? (In short: Is
-y(G) s 3?)

Theorem 10.6: 3C is NPC.

Proof: We show that 3SAT a 3C. (The proof of this theorem, and the
next, follows the works of Stockineyer [2] and Garey, Johnson and
Stockmeyer [3].) Let the set of literals, of the input I to 3SAT, be {xI, x2,
x2, . . .,
x,,, 1,n} and the clauses be C1, C2 , . . ., Cm,.
The graph G(V, E), which is the inpul f(1) to 3C is defined as follows:

V = a, b} U {xi, xi I c i :s n} U {wi I1 s i s 6 and


1 <j • m}.
E = {a - b} U {a - xi, a -- xi, xi - xi 1 i s n} U
{W1, - W2,, Wli - W41, W1 - W4j, W4j- W5a,
W3j - W5j, W3 - w6,, w
W1 - W6j, W6, - bl J1•j m} U
{ jtli - Wlj 1 - W 1 i. -, w3I1 •j • m and
C, = {t,, 42j 43j}}.

The structure of the last two parts in the definition of E, for each j, is
shown in Figure 10.2.
The significance of this structure is as follows: Assume each of the ver-
tices skj, ;2j and ~jtis colored 0 or 1, (we assume the three colors are 0, 1
and 2) and ignore for the moment vertex b. We claim that w6; can be
colored 1 or 2 if and only if not all three vertices jti, sti and ~ji are colored
0. First, it is easy to see that if ti,, it 23j are colored 0 then w4, must also
Coloring of Graphs 219

Figure 10.2

be colored 0, and therefore w0, must be colored 0. But, as the reader may
check for himself, if at least one of t, 42j, i is colored 1 then W6j can be
colored 1.
The structure of the first two parts of E's definition is shown in Fig.
10.3. Clearly, if a is colored 2 then all the literal-vertices must be colored 0
and 1, one of these colors is used for xi and the other for xi. Assume I is
satisfiable by some truth value assignment to the literals. To see thatf(I) is
3-colorable, assign a the color 2. Assign the literal t the color 1 if it is
'true' and 0 if it is 'false'. Now, since no triple (jX, 02y, 3jj is assigned all
zeros, we can color wj;, w2j, . . ., w~j in such a way that w6 j is colored 1, for
all j = 1, 2, . . ., m. Thus, b is colorable 0, and the 3-coloration of G is
complete. Conversely, if G is 3-colorable, call a's color 2 and b's color 0.
Clearly, all the literal vertices are colored 0 and 1, and w6, cannot be
colored 0. Thus, for each triple (y, 42i, 43j, not all three are colored 0.
Now, if we assign a literal 'true' if and only if its corresponding vertex is
colored 1, the assignment satisfies all clauses.
Q.E.D.

Figure 10.3
220 NP-Complete Graph Problems

Before we turn to the problem of 3-colorability of planar graphs in gen-


eral let us consider the diamond shape planar graph D of Figure 10.4. As-
sume we color it with the three colors 0, 1, and 2. If uo is colored 0, the cir-
cuit UI - U2 - U3 - U4 - ui is colored 1 and 2, alternately. For definite-
ness, assume ul and U3 are colored 1 and u2 and U4 are colored 2. Now,
there are two possible colors for us; i.e. 0 or 2. If us is colored 0, then vI is
colored 2, V4 is colored 1, U6 is colored 0, v2 is colored 2, U7 is colored 0, V3
is colored 1 and U8 is colored 0. The important fact is that v1 and v2 have
the same color (2) and V3 and V4 have the same color (1). If u5 is colored 2,
then vI is colored 0, u8 is colored 1, V3 is colored 0, U7 is colored 2, V2 is
colored 0, U6 is colored 1 and V4 is colored 0; i.e. all four vertices, vI, V2, V3
and V4 are colored identically. We conclude that in every 3-coloring of D vi
and V2 must have the same color. v,; and V4 must have the same color, but
the color of vI and V3 may or may not be the same. Thus, D, effectively

Figure 10.4
Coloring of Graphs 221

performes a crossover of the coloring of v, to V2, of V3 to V4, while no con-


straint as to the equality or inequality of the colors of v: and V3 is
introduced.
The 3-Coloration of planar graphs problem (3CP) is defined as follows:

Input: A plane graph G(V, E).

Question: Is y(G) ' 3?

(We remind the reader that a plane graph is a drawing of a graph in the
plane, so that no two edges share a point except, possibly, a mutual end-
point.)

Theorem 10.7: 3CP is NPC.

Proof: We show that 3C o 3CP. Let G(V, E) be the input I to the 3C prob-
lem, where V = {vI, v2, . . ., v.}. We construct f(I) in two steps. First,
construct a general layout, as demonstrated in Fig. 10.5 for the case of n
= 5. This general layout depends only on n, and not on E. (The idea here
is a variation of Johnson's construction, based on a simple and well known
sorting network, from which the last two layers are omitted. For a descrip-

E1 1
S- __8
I n

j -
\I
D I D

K
D
igue 1____5

Figure 10.5
222 NP-Complete Graph Problems

tion of the sorting network see, for example, references [4] or [51.) This
layout has n - 1 main layers of vertices and n main columns of vertices;
these vertices are denoted us;, where C[c i s n - 1 and 1 c j c n. If i +
j is even then a copy of D is constructed with vertices uj,, Ui(;+±), U(i+l)j and
U(i+l)j+i) playing the role of D's four points. If i < n - 1 and even then ui,
and u(i+t)1 are connected via two new vertices as shown in Fig. 10.5 in the
case of U2, and U31. If i < n - 1 and i + n is even then uin is connected,
similarly, to u(y+1)"; see uis and U25, and also U35 and U45 in Fig. 10.5. This
completes the description of the layout.
Assuming all vertices* are colored using only three colors. Clearly, ull,
U22, ... , u~ -,, are all colored identically. If i > 1 and odd then uij,
U2(i+1), -. -U(n-i+1)n, U(n-i+2)n, U(-ji43)(-1), .. , U(,- I)(n-i+3) are all colored

identically. Also, if n is even, ul., U2(-, ). U(,,-1)2 is such a track, and if


i < n and even then utu, U2(i-1), ... , l, U(i+1)1, U(i+2)2, . . , U(n-l)(n-i-l) is
such a track. Let us call the track that begins at ui,, the i-th track.
We want to show that for every tv'o tracks there is at least one 1 c i c
n - 1 and 1 < j < n such that uji is on one of these tracks and ui(.i+-) is
on the other. If this happens we say that these two tracks are adjacent at
the i-th level.
Assume i and j are both odd and i < j. If i = 1 then its track cuts
diagonally from upi to U(n-l)(n-I) and clearly it is adjacent to every other
track somewhere; in fact, if j X 3 then the two tracks intersect. If i > 1
then the i-th track ends in U(,,- )(,-,+3) and the j-th in U(n-1)(n-J+3). Thus,
they intersect somewhere.
The case of both i andj even is handled similarly.
If i < j, i is odd and]i is even, then the two tracks intersect before either
one reaches the side.
If i < I, i is even is odd, then the i-th track ends in U("-1) and the
j-th track ends in U(n-1)(n-J+3). If -- i = 1 they are adjacent at the first
level. IfJ - i 2 3 then

(n-j + 3)- (n - i 1L)= -(j-i) + 4 c 1,

and if the two tracks do not intersect they are adjacent at the (n - 1)-st
level.
Now, we turn to the second part of the reduction. If v, - v, in G, add an
edge Uk/ - Uk(l+1) to the layout, where Uk/ is on the i-th track (or the .l-th

*The number of vertices in the layout is altogether n(n - 1) + (9/2) * (n - 1)


(n - 2) + 2(n - 2).
Feedback Sets In Digraphs 223

track) and Uk(I+l) is on thej-th track (or the i-th track). Such a k and I can
be found since every two tracks are adjacent somewhere.
Now, if G is 3-colorable, color all the vertices of the i-th track with the
color of vi. Clearly, the remaining vertices of f(I) can also be legally
colored; the vertices in the D structures and the connecting pairs are easily
colored, and the edges which correspond to edges of E connect between
tracks of different color. Conversely, if f(I) is 3-colorable, each track is
uniformly colored, and we can assign vi, in G, the same color. No two
adjacent vertices in G get the same color, because there is an edge connect-
ing the two corresponding tracks in f(I), and since f(I) is legally colored,
the colors of these two tracks are different.
Q.E.D.

As the reader can easily observe the plane graph, f(I), constructed in
this proof is "well behaved". This justifies the claim, as made earlier in the
section, that even when the 3-colorability problem is restricted to such
graphs, the problem remains NPC.

10.4 FEEDBACK SETS IN DIGRAPHS


In certain engineering applications of graph theory one is given a di-
graph which contains directed circuits, and one wants to eliminate from
the digraph a minimum number of elements so that the remaining digraph
by acyclic; i.e. contain no directed circuits. We show (following Karp [7])
that both cases, that of eliminating vertices, and of eliminating edges are
NPC.
The minimum feedback vertex set problem (FVS) is stated as a decision
problem as follows:

Input: Digraph G(V, E) and a positive integer k.

Question: Is there a subset of vertices V' such that I V' l c k and the di-
graph resulting from G by eliminating all the vertices in V' and their
incident edges is acyclic?

Theorem 10.8: FVS is NPC.

Proof: We show that VC (c FVS. Let the input I to the vertex cover prob-
lem consist of the graph G(V, E) and the integer k. The input f(I) to FVS
consists of a digraph H(V, F) and the same integer k, where F is defined as
follows:
224 NP-Complete Graph Problems

F = {a - b, b - ala - b inE}.
Since each edge a - b of G corresponds to a directed circuit a - b - a of
H, clearly, a feedback vertex set S must contain either a or b (or both).
Thus the set S is a vertex cover of all the edges of G. Also, if S is a vertex
cover of G, the elimination of S and all edges incident to its elements from
H, leaves no edges, and therefore no directed circuits. Thus, G has a vertex
cover with k or less vertices, if and only if H has a feedback vertex set of k
or less vertices.
Q.E.D.

The minimum feedback edge set problem (FES) is defined as follows:

Input: A digraph G(V, E) and a positive integer k.

Question: Is there a subset of edges .', such that IE' I < k and G '(V, E
- E') is acyclic?

Theorem 10.9: FES is NPC.

Proof: We show that FVS ox FES. Let the input I to FVS consist of a di-
graph G(V, E) and a positive integer k. The input f(I) to FES consists of a
digraph H(W, F) and the same integer k, where H is defined as follows:

W = {(v, 1), (v, 2)1v E V}


F = {(v, 1)- (v, 2)1v E V} J {(u, 2)- (v, l)Iu - v in G}.

(This reduction is similar to the technique of Problem 5.3.)

Let us call the edges of H, of the type (v, 1) - (v, 2), internal, and those
of type (u, 2) - (v, 1), external. All the external edges incident to (v, 1)
are incoming, and there is exactly one internal edge incident to (v, 1) and
it is outgoing. It follows that if in a feedback edge set there is an external
edge, (u,2) - (v, 1), then it can be replaced by the internal edge, (v, 1) -
(v, 2), since all the directed circuits which go through (u, 2) - (v, 1), go
also through (v, 1) - (v, 2). Thus, if there is a feedback edge set F' in H,
which satisfies IF' |I k, we can assume that it consists entirely of internal
edges, and the set of vertices, V', in G, which correspond to these internal
edges, is a feedback vertex set of G. Also, if V' is a feedback vertex set of
G then the set of internal edges in H which correspond to vertices of V', is
a feedback edge set of H.
Q.E.D.
Steiner Tree 225

10.5 STEINER TREE

The Steiner tree problem in graphs (ST) is a generalization of the mini-


mum spanning tree problem (see Section 2.2).

Input: A connected graph G(V, E), a subset of vertices X(' V), a length
function l(e) > 0 defined on the edges and a positive integer k.

Question: Is there a tree T(W, F) in G, such that X C W C V, F C E


and ;eEF l(e) 5 k?
Clearly, if X = V, then ST is just the minimum spanning tree problem,
stated as a decision problem. As we saw in Section 2.2, this case is solvable
in polynomial time.

Theorem 10.10: ST is NPC.

Proof: (Following Karp [71.) We show that 3XC oc ST. Let the input I to
3XC consist of a universal set U = {(U, U2, ... , Ut} and a collection C =
{SI, 52, . . ., S.} such that Si C U and ISjI = 3. The input fI) to ST is
defined as follows:

V = {vo} U C U U,

E = fv eL
i 1 c i c n) U (Si-;AiuJu
IE Si},

X = {vo} U U,

I(e) = 1 for all e E E,

k = 4

Assume J is a subset of {1, 2, . n} which defines an exact cover of U;


i.e., UpsJ Si = U and if i. j E J then Si n s, = 0. Clearly, JI = t/3. De-
fine a Steiner tree T(W, F) as follows:

W = {vo} U {SiiiEJ} U U,

{e IiEJ} U fijIiEJanduESi}.
F=

Clearly, this is a Steiner tree and its cost is exactly 4t/3.


226 NP-Complete Graph Problems

Now, assume T(W, F) is a Steiner tree off(I). First, observe that we can
assume that in T, each vertex uj is a leaf; for if d(uj) > 1 we can reduce its
degree, without increasing the degree of any other u,, and without
changing T's total length, as follows. If in T us is connected by edges to Si,
and Si,, delete the edgefij (connecting u, with S,). One of Si, and Si, is now
disconnected from vo; add the edge which connects it directly to vo, to re-
store the connectivity.
We can now prove that if J = { i l E W} then it defines an exact cover
of U. Clearly, each Si E W can have at most 3 edges in T which lead to ele-
ments of U, and since U C W, if any Si E W has less then 3 such edges,
IJI > t/3. Also, for every Si E W. e E F. Thus, if IJI > t/3 then | Fj >
4t/3 contradicting the requirement that IFl c 4t/3. Therefore, each S, E
W has exactly 3 edges to elements of U, no us is connected by an edge to
more than one Si and we conclude that J defines an exact cover of U.
Q.E.D.

Note that we have proved that even if all edge lengths are 1, ST remains
NPC. For NP-Completeness results cf the Steiner problem on a rectilinear
grid and other related problems, see Garey, Graham and Johnson 18].

10.6 MAXIMUM CUT


As we saw in Chapter 5, the problem of finding a minimum cut is solv-
able in polynomial time. Karp [7] showed that the maximum cut problem
(MAXC) is NPC. In this section we shall show that even if all the edge
weights are 1 the problem is NPC. We follow Even and Shiloach [9].
Another proof of the same result was given by Garey, Johnson and Stock-
meyer [3].
MAXC is defined as follows:

Input: A graph G(V, E) and a positive integer k.

Question: Is there a subset S of vertices such that I (S; Y) I 2 k.


As in Chapter 5, (S; 5) is the set of edges in G such that one of their
endpoints is in S and the other in Y( == V - S).

Theorem 10.11: MAXC is NPC.

Proof: Let us show that 3SAT o MAXC. The reduction is done in two
steps. In the first step we shall assign weights to the edges, and will reduce
Maximum Cut 227

3SAT to a maximum weighted cut problem. In the second step we shall


show how these weights, being polynomially bounded by I VI, can be
eliminated.
Let Cl, C2 , . . ., Cm be the clauses of 3SAT, each consisting of exactly 3
literals; the set of literals being L = {XI, X2, .-. X.n,XI,
, X2, . . ., x.). We
construct the input to the weighted maximum cut problem, consisting of
G '(V', E'), a weight function w(e) and a positive integer k' as follows:

V' = {viJO < i < m} U L.

For every 1 c i c m let

Ai = {vo} U {vi} U Ci.

Now,

E' = {u - vIu • vand 3i 3 u,vEAi} U {x;-xjl j c n}.

The weight function w is defined by

m
W(VO-( E ICi n {a} I if E E L,

w(Q'-h") Ici
C {'}HIC
Ici {n"}1 if E', andt' •
"EL i",
w(X
1 - Xj) = 10 * m + 1,

w(v -u) = 1 if i > O and u E Ai,

k' = (10 *m + 1)n + 6 * m.

In this construction, I V' I = 2n + m + 1. The number of edges, IE' 1, is


bounded by 3n + 7m. Every clause Ci is represented by a clique Ai. In
addition, there is an edge between x; and xj whose weights is 10 * m + 1.
(This weight is designed to overweight the sum of all edges of the other
type.) The weight of an edge vo - t is equal to the number of times the
literal t appears in the clauses. The weight of an edge t ' - " is equal to
the number of clauses in which both literals appear. The weight of all
228 NP-Complete Graph Problems

edges incident to vi, i > 0, is 1. The sum of weights of all these three
classes of edges is exactly 10 m.
We now claim that the answer to the instance of 3SAT problem is the
same as to the question: Is there a setS' C V' such that

E_ w~e) 2 kI?
~E(S',S)
First, assume the answer to the 3SAT problem is affirmative, and let T be
the set of literals which have a 'true' value in a consistent assignment which
satisfies all the clauses. Let r C S' and L - T C S'. Clearly, for each 1 c
j < n, x; - xj belongs to the cut, and contributes 10 * m + 1 to its
weight. Altogether we already have K1I0 * m + 1) * n contributed to the
total weight of the cut. Now, put vo e S'. It is convenient to interpret the
rest of the edges and their weights as follows: Each A, is a clique, and each
edge appears as many times as it belongs to such cliques, which is exactly
equal to its defined weight. In each of these m cliques there is at least one
literal-vertex which is in S', vo is in S' and vi can be put in S' or S' in
such a way that 2 of A,'s vertices will be on one side and the remaining 3
on the other side. Thus, the clique contributes 6 to the cut, and the m
cliques contribute together 6 * m to the weight of the cut.
The argument above shows also that the total weight of a cut cannot ex-
ceed k', and if the answer to the weighted cut problem is affirmative then
all edges of the type x; - x; must in the cut and, each of the m cliques
must contribute 6, which is the maximum any such clique can contribute.
Therefore, in each clique 2 of the vertices are on one side of the cut, and
the remaining 3 are on the other side. Now, let us call the side vo is in, the
'false' side, and the other side, the 'true' side. It follows that at most 2
literal-vertices can be on the 'false' side. Thus, the defined assignment is
consistent and satisfies all clauses.
Now, in the second step we want to reduce the weighted cut problem into
an unweighted one. Actually, this has already been done above, when each
edge of weight w is replaced by w parallel edges of weight 1. Since all weights
are polynomially bounded by the input length to the 3SAT problem, this
increase in the number of edges is polynomially bounded. However, we
wish to show that the reduction can be done even if the graph is required
to be simple; i.e. have no parallel edges.
Let us replace each edge u ' v of , ', of weight w(e), by the construct
shown in Fig. 10.6, where a,, a2, ... , aw(e) are new vertices. We claim that
the new graph, G, has a cut of size k = 2[(10 - m + 1) - n + 10 * m] + k'
if and only if G' has a weighted cut of size k'. This can be shown as fol-
Maximum Cut 229

Figure 10.6

lows. In each path u - a,- - v if u and v are on the same side of the
cut, at most 2 edges can be in the cut. But if u and v are on different sides
of the cut, by putting b1 on u's side, and a, on v's side, the path contributes
3. Thus, each edge e of G' can give rise to at least 2 w(e) edges in a cut
of G even if its two endpoints are on the same side. Altogether, we get this
way, for all the edges of G' a contribution of 2 * Ee(E' w(e) to a cut in G,
and

E w(e) = (10 * m + 1)n + 10 * m.


eEEI

If the weight of (S'; S') in G' is equal to k', let S' C S andS' c . If u
and v are the same side of the cut, we can assign a, and b1 so that u -a,
- - v contributes 2, if not, it can contribute 3. Thus, we can complete
the definition of S and S in such a way that the value of the cut (S; S) in G
is

2[(10 * m + t)n + 10 * ml + k',

and therefore is equal to k.


Conversely, assume now that a cut (S; S) of G has at least k edges. For
every edge u v of G', if u and v are on the same side of this cut, e's con-
struct contributes 2 * w(e) at most to the cut, and without loss of generality
(or change S) we can assume that this is exactly the construct's contribu-
tion. For every edge u v of G', if u and v are on different sides of the cut,
230 NP-Complete Graph Problems

e's construct contributes as most 3 * w(e) to the cut, and without loss of
generality (or again, change S), we can assume that this is exactly the con-
struct's contribution. Thus,

I(S; S) 2 S n(e) + S w(e)


eaE eE(S';S)

where S' = S n V'. Since I(S; S) l k, we get that

E_ U(e) = k'.
'E(S:S')

Thus, G' has a cut of weight k' if and only if G has a cut with k edges.
Q.E.D.

10.7 Linear Arrangement

In many applications of graph theory, such as printed circuits or indus-


trial plant design, the question of optimal arrangement of its components
arises. Our purpose is to show that a very simple arrangement problem is
already NPC.
Let G(V, E) be a simple graph (i.e. no self-loops and no parallel edges).
We wish to place the vertices in the locations 1, 2, . . ., I VI of a one di-
mensional space, one vertex in each of the locations. If u is placed in p(u)
and v is placed in p(v), then the length to which u - v stretches is jp(u) -
p(v) I. The total length of G, in place rnent p, is therefore

u-
Ein G Ip(i','p(V) I

Our goal is to show that the problem of finding an arrangement for which
the length of G is minimum, or rather the corresponding decision problem,
MINLA, is NPC. As an intermediate result, we shall prove that MAXLA,
defined below, is NPC.

Definition of MAXLA:

Input: A simple graph G(V, E) and a positive integer k.

Question: Is there a 1-1 onto function p:V - {1, 2, . . ., I VI} such that

un lp(u, -p(v)I 2 k?
u-v in G
Linear Arrangement 231

Lemma 10.1: MAXLA is NPC.

Proof: Let us show that MAXC a MAXLA. (Here again, we follow [9]; a
similar proof appears in [3].)
Let the input I to MAXC consist of a graph G '(V', E') and a positive
integer k'. We define the inputf(I) to MAXLA, as follows:

V = V' U {XI, X2, . . . Xn

E E'.
k k' . n3

where n V' I, and xI, X2, x. are new isolated vertices. If we inter-
. .,

pose an isolated vertex between u and v, assuming u - v, then Ip(u) -


p(v) I is increased by 1.
Assume the answer to MAXC, with respect to I, is affirmative; i.e.
I (S'; S') I2 k'. Define a placement p for G, which satisfies the following
constraints:

If v E S' then I c p(v) < IS'1.


If v E {xx, X 2 , ... , X4X)then IS'I < p(v) c IS'I + n 3 .
If v ES ', then IS' I + n
3
< p(v) - n + n
3
.

3
The number of edges which span over the n vertices interposed in between
S' and S' is I (S'; S') I, and each has a length which exceeds n3. Thus,

u-
EinG jp(u) -p(v)I > I(S';S')I *n
3
> k' *
n3 = k,

and the answer tof(I), with respect to MAXLA, is affirmative too.


Now assume that the answer tof(I), with respect to MAXLA, is affirma-
tive. Thus, a placement p: V- {1, 2, . . ., n + n3 } exists for which

in G P(U) -p(V) k.

For each 1 c i < I VI define the set

Si = {vlv E Vandp(v) c i}.


232 NP-Complete Graph Problems

Clearly (Si; Si) is a cut. Define j by

I(Sj; 3j) I = Ms lx I(Si; 3t) .

We rearrange the vertices of G as follows. All the vertices in V' remain in


their relative positions but the vertices xi, X2, . .. , x,, are all moved to
interpose between Si n V' and So n V'. Clearly, each x, contributes now
the maximum value to the total length of G. Thus, the new placement, p',
satisfies:

u
-E
v,in G
IIp'(u) - p'(v)|I Ein p(u) -p(v)1 I2 k' n3.

The total length of G, in placement p ', can be divided into two parts:

(1) n3 I(S; S)I, where S = S n V' and (S; S) is the cut in G' defined
by S. This is the length caused by the interposition of xI, x2, . . ., xn' in
between S and S.
(2) The total length of the edges if xI, x2, ... , x, were dropped and the
gap between S and S was closed. This length is clearly bounded by

(n- l) 1 + (n 2) *2 + *-+ 1 *(n - ) =~n -


6

Thus,

3(S;S)I
- + k' n3

or

j(S; 5)1 +6 2 > k'

Since I(S; S) | and k' are integers, this implies that

(S;S)I 2 k'.
Therefore, the answer to I, with respect to MAXC is affirmative too.
Q.E.D.
Multicommodity Integral Flow 233

Let us repeat the definition of MINLA:

Input: A simple graph G(V, E) and a positive integer k.

Question: Is there a 1-1 onto functionp: V - {1, 2, . . ., VI) such that

u-
E Jp(u) -p(v) I ' k?
in G

Theorem 10.12: MINLA is NPC.

Proof: We show that MAXLA oc MINLA. This reduction is very simple.


Let G(V, E) and k be the input I to MAXLA. The input f(I) to MINLA is
defined as follows:

VI = V
E' = u-vIu X v and -/-
u vinG},
kI = n(n2- 1)/6 -k,

where n = I VI. Clearly, G'(V', E') is the graph complementary to G.


For every placement p

E IP(U)-P(V)I + E P(u)_p(v) = n(n 2 - 1)


u-v in G u- vinG

Thus, E.- inG IP(U) - p(V)I 2 k if and only if

u-v in Go PU ()|Ck'

The answer to I with respect to MAXLA is therefore identical to the answer


tof(I) with respect to MINLA. Q.E.D.

10.8 MULTICOMMODITY INTEGRAL FLOW

It is our purpose to show that the multicommodity flow problem is NPC


even if the number of commodities is just 2. This is true, for integral flow,
both in the directed and the undirected cases. We follow here Even, Itai
and Shamir [101. It is interesting to note that in the undirected case, if
234 NP-Complete Graph Problems

flow in halves (an integral multiple of 1/2) is allowed, the problem is


solvable in polynomial time [11].
Let G(V, E) be a digraph, with a capacity function c(e) (>O) defined on
the edges. Vertices Si, S2, t 1 , t2 (not necessarily distinct) play a special role:
si and S2 are called sources and t, and t 2 are called sinks. This data
specifies the network.
A two-commodity flow in the network is defined by two functions fi(e)
andf 2 (e), defined on the edges, which satisfy the following conditions:

(1) For every e E E, f,(e) 2 0, f2(e) Ž 0 and

fi(e) +f(2(e) - c(e).

(2) For each commodity i E {1, 2} and every vertex v E V-{si, ti}

fi(e) = E fi(e).
eecr~v)ef,3(v)

(We remind the reader that a(v) (g(v) is the set of edges which enter v
(emanate from v) in G.)

The total flows, F, and F2 , of the flow functions, andf 2 , are defined by

F; = E fi(e) - E fi(e).

We restrict our attention to the case in whichf,(e) andf2(e) are integral,


and it is natural, in this case, to assume that c(e) is integral too.
The two-commodity integral flow problem in directed networks (D2CIF)
is defined as follows:

Input: A directed network N and two nonnegative integers RI and R 2 ,


called the requirements.

Question: Are there integral flow functions, andf 2 for N, for which Fj 2
Rj?

We shall show that D2CIF is NPC, even if all the edge capacities are 1;
this is called the simple D2CIF.

Theorem 10.13: Simple D2CIF is NPC.


Multicommodity Integral Flow 235

Proof: Let us show that SAT x Simple D2CIF. The input I, to SAT, con-
sists of clauses C,, C 2 , . . . C., each a subset of the set of literals L =
{ X2 ..., ,C.,XI, X2, .. ., 4. The structure of f(I), the input to Simple
D2CIF is as follows. For each variable xi we construct a lobe, as shown in
Fig. 10.7. Here pi is the number of occurrences of xi in the clauses, and qj
is the number of occurrences of xi. The lobes are connected in series: v/ is
connected by an edge to vi+', s* is connected to V. and vn to tI. s2 is con-
1

nected by edges to all the vertices vji and vji where j is odd. In addition,
there are vertices C,, C2, . . ., C. and an edge from each to t 2 . For the j-th
occurrence of xi (xi), there is an edge from V2ji (V2ji) to vertex C, the clause
in which it occurs. The requirements are R I 1 and R2 = m .
The first commodity must flow from s, to t, through the lobes; vertices
52, CI, C 2 , .. . , C. and t2 cannot be used in this flow since there is no edge
from the lobe to s2, and there is no edge to return from C,, C 2 , . .. , Cm
and t2 to the lobes or to t,. Thus, the one unit of the first commodity must
use in each lobe either the upper or the lower path, but not both.
If the second commodity meets the requirement then F2 = R2 = m, and
all the edges which enter t2 are saturated. In this case, there is exactly one
unit of flow, of the second commodity entering each Ck,. If this unit of flow
comes from the upper track of the i-th lobe, through the edge v2ji - Ck,
then clearly it uses also the edge V2j-li - vzji and the unit of the first
commodity must use the lower track in this lobe.
Thus, if the answer to f(I), with respect to D2CIF, is positive, then we
can use the flows f, and f2 to assign a satisfying assignment of the literals

Figure 10.7
236 NP-Complete Graph Problems

as follows: If the first commodity goes through the lower track of the i-th
lobe, assign xi = T, and if through the upper, xi = F. In this case, the
answer to I, with respect to SAT, is also positive.
Conversely, assume there is a satisfying assignment of the variables. If xi
T, let the first commodity use the lower track in the i-th lobe; if xi = F,
use the upper track. Now, let t be a 'true' literal in Ck. If t = xi then the
upper track is free of the first commodity and we can use it to flow one
unit of the second commodity from s2 to Ck; if t = xi, use the lower track.
Finally, use the m edges entering t 2 to flow into it the m available units of
the second commodity.
Q.E.D.

In the case of undirected networks, the graph G(V, E) is undirected.


The flow in the edges may be in either direction, and

fi(u -v) = -- fi(V U).

(Note that c(u -e- v) = c(e) 2 0.) Condition (1) on the edges, is changed to:

If, (U V) I + If 2 (' v) I C c(e).

Condition (2), that for each v E V-{s;, ti}, the total flow of the i-th com-
modity entering v is equal to the total flow of the i-th commodity
emanating from v, is now in the following form

F, f (u e) = O
U e VEE 2

Note that in this equation v is fixed. Clearly,

Fi = E f(u-et1 ).
u '-tiEE

The undirected two-commodity integral flow problem (U2CIF) is defined


similarly to D2CIF:

Input: An undirected network N and two nonnegative integers R. and R2 .

Question: Are there integral flow functions f, and f2 for N, such that Fi 2
Rj?
Multicommodity Integral Flow 237

Again we restrict our attention to simple networks, i.e., for all e E E,


c(e) = 1. We show that even for simple networks U2CIF is NPC.

Theorem 10.14: Simple U2CIF is NPC.

Proof: We show that Simple D2CIF cc Simple U2CIF.

First we change the digraph G(V, E) of the directed network N, as follows:


we add four new vertices SI, S2, t, and t2 to serve as the two sources and
sinks, respectively. We connect sI to s: via R1 parallel edges and t1 to t,
via R1 parallel edges. Similarly, S2 is connected to S2 and t2 to t2 via R2
parallel edges in each case. Vertices Si, S2, t1 and t2 are now subject to the
conservation rule and the requirements are the same. Clearly, the require-
ments can be met in the new digraph G '(V', E') if and only if they can be
met in the original one. Also, without loss of generality, we may assume
that RI + R 2 < IEl, or obviously the requirements cannot be met.

Figure 10.8
238 NP-Complete Graph Problems

Thus, these changes can only expand the data describing the problem
linearly.
We proceed to construct the undirected network from the new directed
network N', as follows: Each edge a -. v of G' is replaced by the con-
struct shown in Fig. 10.8. (u or v may be any two vertices in V', including
sources and sinks.) The vertices of the construct, which are unlabeled in
Fig. 10.8, are new, and do not appear elsewhere in the graph.
The new requirements are Ri' = Ri + JE' |.
It remains to be shown that the requirements in N' can be met if and
only if the new requirements can be met in the new undirected network
N.
First assume that the requirements can be met in N'. Initially, flow one
unit of each commodity through each of the constructs, as shown in Fig.
10.9. This yields F. = F2 = |E'|. Next, if u -v is used in N' to flow one
unit of the first commodity, then we change the flows in the corresponding
construct as shown in Fig. 10.10. The case of the second commodity
flowing through e in N' is handled sirnilarly.

Figure 10.9
Multicommodity Integral Flow 239

Figure 10.10

It is easy to see that R. ' and R2 ' are now met in N.


Now assume we have a flow in the undirected graph satisfying the
requirements R.' and R 2 '. Since the number of edges incident to si(ti) is
Ri', all these edges are used to emanate (inject) i-th commodity flow from
(into) si(ti). The flow through each edge-construct must therefore be in one
of the following patterns:

(1) as in Fig. 10.9


(2) as in Fig. 10.10
(3) as in Fig. 10.10, for the second commodity.

We can now use the following flows through u -v, in N': If in e's con-
struct, in N. we use pattern (1) then fi(e) = f2(e) = 0. If it is pattern (2),
then f' (e) = 1 and f2 (e) = 0, etc. Clearly, this defines legal flows in N'
which meet its requirements.
Q.E.D.
240 NP-Complete Graph Problems

It is easy to see that the multicommodity integral flow problems, as we


have defined them in the reductions, are easily reducible to the version in
which we have only one total requirement, i.e. F. + F2 2 R. Thus, the
latter versions are NPC too. Also, the completeness of m > 2 commodity
integral flow problem follows as an immediate consequence.

PROBLEMS

10.1 Show that IND o CLIQUE without using Cook's theorem (Theorem
9.1) or any of its consequences.
10.2 Show that the problem of finding a minimum independent set which
is also a vertex cover is solvable in polynomial time.
10.3 A set S c V, in G(V, E), is called a dominating set if for every v E
V - S, there exists an edge u -- v in G, such that u E S. Formulate
the minimum dominating set problem as a decision problem and
prove that it is NPC. (Hint: One way is to show a reduction from
VC. For every edge u - v add a new path u - x - v in parallel).
10.4 Formulate the problem of finding a minimum independent set which
is also dominating, as a decision problem and prove its NP-complete-
ness. (Hint: Use 10.3. Duplicate vertices. The set of duplicates is in-
dependent. Add to each duplicate a path of length 2.)
10.5 Formulate the traveling salesman problem for undirected graphs,
where a circuit is required but it may pass through vertices more than
once, as a decision problem, and prove that it is NPC.
10.6 Show that there is a polynomial algorithm for finding a circuit C,
as in 10.5, whose length l(C) satisfies l(C) c 2 * 1(T), where l(T) is
the length of a minimum spanning tree T of the graph. Prove also
that every such circuit C satisfies l(C) > I(T), if all edge lengths are
positive.
10.7 Appel and Haken [6] proved that every plane graph is 4-colorable.
(This is the famous four color theorem.) Thus, 4-colorability of plane
graphs is polynomial (why?). Prove that for every k 2 3, k-colora-
bility of graphs in general is NPC.
10.8 The following is called the partition of a graph into cliques problem:
Input: A graph G(V, E) and a positive integer k.
Problems 241

Question: Can V be partitioned into k sets VI, V2, ... , Vk such


that the subgraph of G, induced* by each V,, is a clique?
Prove that this problem is NPC.
10.9 Consider the following problem on digraphs:
Input: A strongly connected digraph G(V, E) and a positive integer
k.
Question: Is there a subset of edges E' such that IE'l < k and
G '(V, E') is strongly connected?
Prove that this problem is NPC.
10.10 As we have seen in Chapter 1, the shortest path problem is poly-
nomially solvable. Show that even the following "simple" longest
path problem is NPC.
Input: A graph G(V, E), two vertices s and t and a positive integer
k.
Question: Is there a simple path in G with endpoints s and t and
length (measured by the number of edges) greater than or equal to
k?
10.11 Prove that the Hamilton path (HP) problem for undirected graphs,
remains NPC even if we restrict the graphs to be bipartite. (Hint: A
minor change in the proof of Theorem 10.5.)
10.12 Prove that the Hamilton path problem for undirected graphs re-
mains NPC (using Karp's definition) even if s and t are not specified.
10.13 The following is called the degree restricted spanning tree problem:
Input: A graph G(V, E) and a positive integer k.
Question: Is there a spanning tree for G in which for every vertex v,
d(v) c k?
Prove that the problem is NPC even if k 2 2 is fixed and not part of
the input. (Hint: First use 10.12 to prove for k = 2.)
10.14 Consider the following network communication problem. G(V, E) is
a graph, a vertex vo E V is called the center. Each vertex v E V-{vo}
is assigned a requirement r(v) > 0 (the quantity to be shiped to vo).

*The subgraph of G(V, E) induced by S C V, is the graph (S. E'), where E' is
the subset of E which includes all the edges whose endpoints are in S.
242 NP-Complete Graph Problems

Each edge e is assigned a capacity c(e) > 0 and a cost k(e) 2 0.


The problem is to find a minimum cost spanning tree T which satis-
fies the following condition: If U(e) is the set of vertices such that
the paths from vo to them go through e then EvEu(e) r(v) c c(e). The
cost of T is EeIT k(e). Form the corresponding decision problem and
prove that it is NPC. (Hint: A construction similar to the one in the
proof of Theorem 10.10 may be used.)
10.15 The following may be called the directed Steiner tree problem (with
no edge lengths):
Input: A digraph G(V, E). a set of vertices X, a vertex r E X, a
positive integer k.
Question: Is there a directed tree T(W, F) in G, with root r, such
that X C W c V and IF c k " Prove that the problem is NPC.
10.16 Prove that the Steiner tree problem remains NPC even if the follow-
ing restrictions are imposed: G is bipartite and the set X, to be con-
nected, is one of its parts, i.e.: G = (X, Y, E).
10.17 The following is called the minimum edge-deletion bipartite sub-
graph problem (MINEDB):
Input: A graph G(V, E) and a positive integer k.
Question: Is there a subset of edges, E', such that the subgraph
(V, E - E') is bipartite and E'I c k? Prove that MINEDB is
NPC. (Hint: MAXC ccMINEDB.)
10.18 The following is called the minimum cut into equal-sized subsets
problem (MINCES):
Input: A graph G(V, E), two vertices s and t and a positive integer
k.
Question: Is there a partition of V into S and S such that

= AS, s E S,t E S and I{u-vIu ES,v ES} I - k?


SISI

Prove that MINCES is NPC. (Hint: Garey et al [31, use MAXC cc


MINCES. If I consists of G'(lV', E') and k', f(I) consists of
G(V, E), s, t and k as follows:

V= V' U {xI, X2, ... , x.} where n = IV'


E ={u - vlu + v in G'}
References 243

S = XI

t = Xn

k = n2- k'.)

10.19 Prove that the problem of whether a maximum flow in a network


can be constructed by using only k augmenting paths (using the
Ford and Fulkerson algorithm) is NPC. (Hint: Consider the network
shown below and relate it to the Knapsack problem. See Problem
9.4.)

n
Yaj-b

10.20 The following network flow problem is called the integral flow with
bundles problem (IFWB). As in the maximum flow problems, there
is a digraph G(V, E), a vertex s, assigned as the source and a ver-
tex t, assigned as the sink. The bundles are subsets of edges, Bi,
B 2 , . . ., Bk. There are bundle capacities c,, C2, . . ., Ck, and the flow
f must satisfy the condition that for each Bi, E,2Bjf(e) c ci. In addi-
tion, for every vertex v E V - {s, t}, the incoming flow must equal
the outgoing flow. The question is whether there is a flow which
meets the requirement R. Prove that IFWB is NPC. (Hint: May be
proved by IND oc IFWB [12].)

REFERENCES

[1] Garey, M. R., and Johnson, D. S., Computers and Intractability, A Guide to
the Theory of NP-Completeness, Freeman, 1979.
[21 Stockmeyer, L. J., "Planar 3-Colorability is NP-Complete", SIGACT News,
Vol. 5, #3, 1973, pp. 19-25.
[3] Garey, M. R., Johnson, D. S., and Stockmeyer, L. J., "Some Simplified NP-
Complete Graph Problems", Theor. Comput. Sci., Vol. 1, 1976, pp. 237-267.
[4] Kautz, W. H., Levitt, K. N., and Waksman, A., "Cellular Interconnection
Arrays", IEEE Trans. Computers, Vol. C-17, 1968, pp. 443-451.
[5] Even, S., Algorithmic Combinatorics, Macmillan, 1973. (See Section 1.4.)
244 NP-Complete Graph Problems

[6] Appel, K., and Haken, W., "Every Planar Map is Four Colorable", Bull.
Amer. Math. Soc., Vol. 82, 1976, pp. 711-712.
[7] Karp, R. M., "Reducibility among Combinatorial Problems", in R. E. Miller
and J. W. Thatcher (eds.), Complexity of Computer Computations, Plenum
Press, 1972, pp. 85-104.
[81 Garey, M. R., Graham, R. L., and Johnson, D. S., "The Complexity of Com-
puting Steiner Minimal Trees", SIAM J. AppL. Math., Vol. 32, 1977, pp.
835-859.
[9] Even, S., and Shiloach, Y., "NP-Completeness of Several Arrangement Prob-
lems", Technical Report #43, Dept. of Comp. Sci., Technion, Haifa, Israel,
Jan. 1975.
[10] Even, S., Itai, A., and Shamir, A., "On the Complexity of Timetable and
Multicommodity Flow Problems", SIAM J. Comput., Vol. 5, #4, Dec. 1976,
pp. 691-703.
[11] Itai, A., "Two Commodity Flow" J. ACM, Vol. 25, #4, Oct. 1978, pp.
596-611.
112] Sahni, S., "Computationally Related Problems", SIAMJ. on Comput., Vol. 3,
1974, pp. 262-279.
INDEX

adjacency, 2 circuit-free, 22
matrix, 4 clause, 200
list, 173 clique, 51, 67, 212
Aho, A. V., 20, 199, 211 CLIQUE (problem), 212
alphabet, 69 code, 69
Appel, K., 240, 244 exhaustive, 88
arbiter, 31 uniquely decipherable (UD), 69
arbitrated (digraph), 31 word, 69
attachments, 148 complement, 200
augmenting path, 92 complete graph, 39
Auslander, L., 171, 191 component, 148
singular, 148
connectivity
back edge, 57
edge, 131
backward labeling, 92, 108
of digraphs, 130
Berge, C., 20, 31, 51
vertex, 124
BFS, 12, 96
consistency condition, 200
blank symbol, 196
contraction, 164
block, 198
Cook, S. A., 199, 200, 211
Bock, F., 52
cut, 91
Booth, K. S., 172, 190, 191
maximum cut problem (MAXC), 226
branching, 40
cutset, 162
breadth-first search, 12
bridge (component), 148
Dantzig, G. B., 20, 21, 121, 146
bridge (edge), 67
de Bruijn, 8
Burge, W. H., 81, 89
diagrams, 9, 50
bush form, 185
sequence, 8, 50
dead-end, 100
capacity, 90 degree, 1
of a cut, 91, 108 matrix, 39
Catalan numbers, 82 depth-first search, 53
Cayley, A., 26, 27, 51 DFS, 53, 56
Cederbaum, I., 171, 181, 191 DHC, 216
characteristic sum, 71 DHP, 214
condition, 71 digraph
Cheriton, D., 26, 51 arbitrated, 31
Cherkassky, B., 97, 115 connectivity, 130
chromatic number, 217 Euler, 6
Chu,Y.J.,52 PERT, 138
Church's thesis, 195 Dijkstra, E. W., 13, 18, 19, 20
circuit, 3 Dilworth, R. P., 143, 147
directed, 3 Dinic, E. A., 97, 115
directed Euler, 6 Dirac, G. A., 19, 21
Euler, 5 directed Hamilton circuit problem (DHC),
simple, 3 216

245
246 Index

directed Hamilton path problem (DHP), 214 forward labeling, 92


directed tree, 30, 46 Fraenkel, A. S., 67, 68
optimum spanning, 40 Fulkerson, D. R., 90, 92, 104, 115, 121, 146,
spanning, 34 243
distance, 12 FVS, 223
dominoe problem, 33
Dreyfus, S. E., 21 Gallager, R. G., 69, 88
D2CIF, 234 Garey, M. R., 89, 134, 147, 205, 211, 212,
dual, 163 218, 226, 242, 243, 244
geometric dual, 170
edge, I Goldstein, A. J., 171, 191
antiparallel, 3 Golomb, S. W., 9, 20
capacity, 90 Gomory, R. E. 129, 147
concurrent, 140 Good's diagrams 9
connecting, 2 Graham, R. L., 244
connectivity, 131 graph, 1
critical, 40 biconnected, 127
directed, 3 bipartite, 135
eligible, 41 complete, 39
external, 122 connected, 3
internal, 122 directed, 3
parallel, I dual, 163
separator, 130, 131 homeomorphic, 154
useful, 97 isomorphic, 154
Edmonds, J., 52, 96, 115, 132, 135, 147, 193, nonseparable, 57, 127
211 planar, 148
end-vertex, 3 plane, 148
endpoint, I separable, 57
Euler, 5, 161 simple, 4
circuit, 5 sparse, 4
digraph, 6 strongly connected, 3
directed path, 6 underlying, 6
directed circuit, 6, 46 guess, 197
graph, 5
path, 5 Haken, W., 240, 244
Even, S., 89, 116, 128, 134, 135, 146, 147, Hall, M., Jr., 20
171, 181, 191, 225, 233, 243, 244 Hall, P., 137, 147
exact cover (XC), 208 Hamilton
exact cover by 3-sets (3XC), 207 circuit, 18
circuit problem (HC), 217
face, 153 directed circuit, 19
external, 153 directed path, 19
father, 56 path, 13
feedback path problem (HP), 216
edge set problem (FES), 224 Harary, F., 52, 168, 170
vertex set problem (FVS), 223 HC, 217
FES, 224 head location function, 196
flow function, 90 hitting set (HS), 210
maximal, 98 homeomorphic, 154
maximum, 91 Hopcroft, J. E., 20, 53, 56, 57, 68, 128, 136,
minimum, 110 147, 171, 172, 191, 199, 211
Floyd, R. W., 18, 20 HP, 216
Ford, L. R., 15, 20, 90, 92, 104, 115, 243 HS, 210
Index 247

HU, T. C., 129, 147 Liu,T.H.,52


Huffman, D. A., 74, 89 LovAsz, L., 132, 147
lowpoint, 59, 64
IFWB, 243 second, 172
indicence, I Lucas, E., 53, 68
list, 4
IND, 213 Maheshwary, S. N., 97, 115
indegree, 3 Malhotra, V. M., 97, 115
matrix, 35 Markov, Al. A., 89
independent set, 144, 212 marriage problem, 135
problem (IND), 213 matching, 135
induced subgraph, 25 complete, 138
infinity lemma, 32 three dimensional, 204
in-potential, 103 MAXC, 226
input data, 196 max-flow min-cut theorem, 97
input length, 192 maximal flow, 98
input symbols, 196 maximum length shift register sequence, 8
interlace, 149 MAXLA, 230
isomorphic, 154 McMillan, B., 71, 89
Itai, A., 89, 233, 244 Menger, K., 121, 146
Micali, S., 67
Johnson, D. S., 205, 211, 212, 218, 221, 226, MINCES, 242
243, 244 MINEDG, 242
minimum flow, 110
Kariv, O., 135, 147 MINLA, 230
Karp, R. M., 40, 52, 96, 115, 199, 211, 136, Minsky, M., 221
147, 223, 225, 226, 244 Moon, J. W., 27, 51
Karush, J., 71, 89 Moore, E. F., 12, 20
Karzanov, A. V., 97, 101, 115 MPM, 101
Kautz, W. H., 243 multicommodity flow, 233
Kleitman, D. J., 128, 147
knapsack, 210 network, 90
Knuth, D. E., 20, 50, 52, 89 flow, 90
Kdnig, D., 32, 51, 151, 170 layered, 97
Konigsberg bridge problem, 5 with upper and lower bounds, 104
Kraft, L. G., 72, 89 zero-one, 116
Kuratowski, K., 152, 154, 170 nondeterministic Turing Machine, 197
nonseparable component, 59
Lawler, E. L., 21, 214 NP, 198
layer, 97 NPC, 199
layered network, 97 NP-complete, 199
leaf, 24
Lempel, A., 29, 51, 171, 181, 191 oracle, 199
length (of a phase), 99 ordered forest, 84
letter, 69 ordered tree, 84
Leuker, G. S., 172, 190, 191 Ore, O., 168, 170
level, 74 outdegree, 3
Levenshtein, V. I., 89 out-potential, 103
Levitt, K. N., 243
linear arrangement, 230 P, 198
maximum problem (MAXLA), 230 Parson, T. D., 167, 170
minimum problem (MINLA), 230 Parter, S. V., 171, 191
literal, 200 partition problem (PART), 211
248 Index

passage, 53 source, 90
path, 2 graphical, 183
augmenting, 92 spanning tree, 24
critical, 139 directed, 34
directed, 3 minimum, 24
directed Euler, 6 number of, 34
Euler, 5 ST, 225
length, 3 stack, 86
shortest, 11 state, 196
simple, 3 initial, 196
path addition algorithm, 171 ,no', 196
Patterson, G. W., 69, 88 'yes', 196
Perl, Y., 89 start-vertex, 3
PERT digraph, 138 in a PERT digraph, 138
Peterson graph, 169 Steiner tree problem (ST), 225
phase, 99 st-numbering, 180
planar, 148 Stockmeyer, L. J., 218, 226, 243
plane graph, 148 Strongly connected, 3
equivalence, 160 components, 64
Pnueli, A., 29 subgraph, 24
polynomial reduction, 198 induced, 25
potential, 103 suffix, 69
Pramodh Kumar, M., 97, 115 superstructure, 60, 64
prefix, 69
code, 72
Prim, R. C., 25, 51 tail, 69
Prefer, H., 27, 51 tape-symbols, 196
Tarjan, R. E., 26, 45, 51, 52, 53, 56, 57, 65,
quasi strongly connected, 31 68, 116, 128, 134, 146, 147, 171, 172,
181, 191, 216
reachability, 30 Tarry, G., 53, 66, 68
root, 30 termination vertex (PERT), 138
Tescari, A., 68
Sahni, S., 244 3-coloration of planar graphs problem (3CP),
Sardinas, A. A., 69, 88 221
SAT, 200 3-coloration problem (3C), 218
3SAT, 203 three dimensional matching (3DM), 204
satisfiability condition, 200 pairwise consistent, 209
SC, 208 tiling problem, 33
Schnorr, C. P., 131, 147 total flow, 90
SDR, 144 transition function, 196
second lowpoint, 172 transitive closure, 19
self-loop, 1, 3 traveling salesman problem, 217
set covering (SC), 208 tree, 22
3SC, 209 definitions, 22
set packing, 210 directed, 30
Shamir, A., 233, 244 full, 78
shift register state diagrams, 9 ordered, 69, 84
Shiloach, Y., 134, 226, 244 positional, 74
shortest path, 11 spanning, 24
singular component, 148 tree edge, 57
sink, 90 Tremaux, 53
graphical, 183 Turing machine, 195
sort-by-merge, 80 Tutte, W. T., 35, 52
Index 249

UD, 69 lowpoint, 59
Ullman, J. D., 20, 199, 211 separation, 57
Underlying graph, 6 separator, 121, 130
uniquely decipherable codes, 69 virtual edges, 184
U2CIF, 236 virtual vertices, 182

variables, 200 Wang, H., 33, 52


VC, 213 Waksman, A., 243
vertex, I well-formed sequences of parentheses, 82
addition algorithm, 172, 183 window, 153
adjacency, 2 word, 69
coloring, 217 length, 69
concurrent, 143 Welch, L. R., 29, 51
connectivity, 124, 130 Wilson, R. J., 168, 170
cover, 212
cover problem (VC), 213 XC, 208
dead-end, 100
degree, 1 zero-one network, 116
isolated, I type 1, 118
level, 74 type 2, 119
m
m
2

Eu

r
C)
0
II
I
CD

.4

You might also like