Title: Trees and Distance
1Chapter 2
2.1 Basic properties 2.2 Spanning tree and
enumeration 2.3 Optimization and trees
2Acyclic, tree2.1.1
- A graph with no cycle is acyclic
- A forest is an acyclic graph
- A tree is a connected acyclic graph
- A leaf (or pendant vertex) is a vertex of degree 1
leaf
tree
tree
forest
3Spanning Subgraph 2.1.1
- A spanning subgraph of G is a subgraph with
vertex set V(G) - A spanning tree is a spanning subgraph that is a
tree
Spanning tree
Spanning subgraph
4Lemma. Every tree with at least two vertices has
at least two leaves. Deleting a leave from a
n-vertex tree produces a tree with n-1 vertices.
2.1.3
- Proof (1/2)
- A connected graph with at least two vertices has
an edge. - In an acyclic graph, an endpoint of a maximal
nontrivial path has no neighbor other than its
neighbor on the path. - Hence the endpoints of such a path are leaves.
-
Impossible! Cycle occurs
Impossible! It is Maximal.
5Lemma. Every tree with at least two vertices has
at least two leaves. Deleting a leave from a
n-vertex tree produces a tree with n-1 vertices.
2.1.3
- Proof (2/2)
- Let v be a leave of a tree G, and that GG-v.
- A vertex of degree 1 belongs to no path
connecting two other vertices. - Therefore, for u, w ? V(G), every u, w-path in G
is also in G. - Hence G is connected.
- Since deleting a vertex cannot create a cycle, G
also is acyclic. - Thus G is a tree with n-1 vertices.
6Theorem 2.1.4. For an n-vertex graph G (with
n?1), the following are equivalent (and
characterize the trees with n vertices)A) G is
connected and has no cyclesB) G is connected and
has n-1 edgesC) G has n-1 edges and no cyclesD)
For, u, v?V(G), G has exactly one u, v-path 2.1.4
- Proof We first demonstrate the equivalence of A,
B, and C by proving that any two of connected,
acyclic, n-1 edges together imply the third
7Theorem 2.1.4 Continue
- A?B,C. connected, acyclic ? n-1 edges
- We use induction on n.
- For n1, an acyclic 1-vertex graph has no edge.
- For ngt1, we suppose that implication holds for
graphs with fewer than n vertices. - Given an acyclic connected graph G, Lemma 2.1.3
provides a leaf v and states that GG-v also is
acyclic and connected (see figure above). - Applying the induction hypothesis to G yields
e(G)n-2. - Since only one edge is incident to v, we have
e(G)n-1.
8Theorem 2.1.4 continue
- B?A, C. connected and n-1 edges ? acyclic
- Delete edges from cycles of G one by one until
the resulting graph G is acyclic. - Since no edge of a cycle is a cut-edge(Theorem
1.2.14), G is connected. - Now the preceding paragraph implies that
e(G)n-1. - Since we are given e(G)n-1, no edges were
deleted. - Thus GG, and G is acyclic.
9Theorem 2.1.4 continue
- C?A, B. n-1 edges and no cycles ? connected
- Let G1,,Gk be the components of G.
- Since every vertex appears in one component,
?in(Gi)n. - Since G has no cycles, each component satisfies
property A. - Thus e(Gi)n(Gi)-1.
- Summing over i yields e(G)?In(Gi)-1n-k.
- We are given e(G)n-1,so k1, and G is connected.
10Theorem 2.1.4
- A?D. Connected and no cycles ? For u, v?V(G),
one and only one u, v-path exists. - Since G is connected, each pair of vertices is
connected by a path. - If some pair is connected by more than one , we
choose a shortest (total length) pair P, Q of
distinct paths with the same endpoints. - By this extremal choice, no internal vertex of P
or Q can belong to the other path. - This implies that P?Q is a cycle, which
contradicts the hypothesis A.
p
v
u
q
11Theorem 2.1.4
- D?A.
- For u, v?V(G), one and only one u, v-path
exists ? connected and no cycles. - If there is a u,v-path for every u,v?V(G), then G
is connected. - If G has a cycle C, then G has two u,v-paths for
u,v ?V(G) which contradicts the hypothesis D - Hence G is acyclic (this also forbids loops).
12Corollarya) Every edge of a tree is a cut-edge
b) Adding one edge to a tree forms exactly one
cyclec) Every connected graph contains a
spanning tree 2.1.5
- Proof
- A tree has no cycles, so Theorem 1.2.14 implies
that every edge is a cut-edge. - A tree has a unique path linking each pair of
vertices (Theorem2.1.4D), so joining two vertices
by an edge creates exactly one cycle. - As in the proof of B?A, C in Theorem 2.1.4,
iteratively deleting edges from cycles in a
connected graph yields a connected acyclic
subgraph.
13Proposition If T, T are spanning trees of a
connected graph G and e?E(T)-E(T), then there is
an edge e?E(T)- E(T) such that T-ee is a
spanning tree of G. 2.1.6
- Proof By Corollary 2.1.5a, every edge of T is a
cut-edge of T. Let U and U be the two components
of T-e. Since T is connected, T has an edge e
with endpoints in U and U. Now T-ee is
connected, has n(G)-1 edges, and is a spanning
tree of G.
e
e
G
T
T
T-ee
14Distance in trees and Graphs
- If G has a u, v-path, then the distance from u to
v, written dG(u,v) or simply d(u,v), is the least
length of a u,v-path. If G has no such path, then
d(u,v) ? - The diameter (diam G) is maxu,v?V(G) d(u,v).
- Upper bound of distance between every pair.
- The eccentricity of a vertex u, written ?(u), is
maxv?V(G) d(u,v). - Upper bound of the distance from u to the others.
- The radius of a graph G, written rad G, is
minu?V(G) ?(u). - Lower bound of the eccentricity.
15Distance, Diameter, Eccentricity, and Radius
a
b
f
e
c
g
d
Distance(f,c) 2 Distance(g,c) 2 Distance(a,c)
3
radius 2
diameter 3
eccentricity(f)2 eccentricity(a) 3
16 If G is a simple graph, then diam G?3 ? diam
?3 2.1.11
- Proof 1/2
- Since diam Ggt2, there exist nonadjacent vertices
u, v?V(G) with no common neighbor. - If any pair of nonadjacent vertices has a common
neighbor, the distance of every pair is less than
or equal to 2 and diam G2
17 If G is a simple graph, then diam G?3 ? diam
?3 2.1.11
- Proof 2/2
- Hence every x?V(G)-u,v has at least one of
u,v as a nonneighbor. - Equivalently, this makes x adjacent to at least
one of u,v in . - Since also uv?E( ), for every pair x, y there
is an x, y-path of length at most 3 in
through u,v. Hence diam ?3
u
v
18Center 2.1.12
- Definition The center of a graph G is the
subgraph induced by the vertices of minimum
eccentricity. - The center of a graph is the full graph if and
only if the radius and diameter are equal.
Center
19Theorem The center of a tree is a vertex or an
edge 2.1.13
- Proof We use induction on the number of vertices
in a tree T. - Basis step n(T)?2. With at most two vertices,
the center is the entire tree.
20Theorem. 2.1.13 Continue
- Induction step n(T)gt2.
- Let T T- leaves. By Lemma 2.1.3, T is a
tree. - Since the internal vertices on the paths between
leaves of T remain, T has at least one vertex. - Every vertex at maximum distance in T from a
vertex u?V(T) is a leaf (otherwise, the path
reaching it from u can be extended farther). - Since all the leaves have been removed and no
path between two other vertices uses a leave,
?T(u) ?T(u)-1 for every u?V(T). - Also, the eccentricity of a leaf in T is greater
than the eccentricity of its neighbor in T. - Hence the vertices minimizing ?T(u) are the same
as the vertices minimizing ?T(u). - It is shown T and T have the same center. By the
induction hypothesis, the center of T is a
vertex or an edge.
21Spanning Trees and Enumeration 2.2
- There are 2c(n,2) simple graphs with vertex set
n1,,n. - since each pair may or may not form an edge.
- How many of these are trees?
22Enumeration of Trees 2.2
- One or two vertices, then there is only one tree.
- Three vertices, three trees.
- Four vertices, then four stars and 12 paths,
total 16. - Five vertices, then there are 125 trees.
23Algorithm for tree generation by using Prufer
code 2.2.1
- Algorithm. (Prufer code) Production of
f(T)(a1,,an-2) - Input A tree T with vertex set S?N
- Iteration At the ith step, delete the least
remaining leaf, and say that ai is the neighbor
of the deleted leaf
1. Delete 2 a1 7 2. Delete 3 a2 4 3. Delete 5
a3 4 4. Delete 4 a4 1 5. Delete 6 a5 7 6.
Delete 7 a6 1
4
7
1
3
2
5
6
8
24Theorem For a set S?N of size n, there are nn-2
trees with vertex set S 2.2.3
- Proof (sketch)
- Trees with vertex set S ?Sn-2 of lists of length
n-2 - One prufer code ? one tree.
- There are nn-2 codes.
- Proved by induction
25Spanning Trees in Graphs 2.2.6
- Example. A kite. To count the spanning trees
- Four are path around the outside cycle in the
drawing - The remaining spanning trees use the diagonal
edge - Since we must include an edge to each vertex of
degree 2, we obtain four more spanning trees. - The total is eight.
26Contraction 2.2.7
- In a graph G, contraction of edge e with
endpoints u, v is the replacement of u and v with
a single vertex whose incident edges are the
edges other than e that were incident to u or v.
The resulting graph Ge has one less edge than G.
u
e
G
v
27Proposition. Let ?(G) denote the number of
spanning trees of a graph G. If e?E(G) is not a
loop, then ?(G) ?(G-e) ?(Ge) 2.2.8
- Proof 1/2
- The spanning trees of G that omit e are precisely
the spanning trees of G-e. - We need show that G has ?(Ge) spanning trees
containing e - It must be shown that contraction of e defines a
bijection from the set of spanning trees of G
containing e to the set of spanning trees of Ge.
28Proposition. Let ?(G) denote the number of
spanning trees of a graph G. If e?E(G) is not a
loop, then ?(G) ?(G-e) ?(Ge) 2.2.8
- Proof2/2
- When we contract e in a spanning tree that
contains e, we obtain a spanning tree of Ge
because - the resulting subgraph of Ge is spanning and
connected and - It has the right number of edges.
- The other edges maintain their identity under
contraction, - So no two trees are mapped to the same spanning
tree of Ge by this operation.
29Proposition. Let ?(G) denote the number of
spanning trees of a graph G. If e?E(G) is not a
loop, then ?(G) ?(G-e) ?(Ge) 2.2.8
- ?(G-e) The number of trees without e
- ?(Ge) The number of trees with e
- A spanning tree in G.e ? A spanning tree having
e in G
G
G-e
u
e
v
Ge
30A Matrix Tree computation. 2.2.12
- Given a loopless graph G with vertex set v1, .,
vn, let aij be the number of edges with endpoints
vi and vj. Let Q be the matrix in which entry (i,
j) is ai,j when i? j and is d(vi) when ij. If
Q is a matrix obtained by deleting row s and
column t of Q, then - ?(G) (-1)st detQ
31A Matrix Tree computation. 2.2.11
- Theorem 2.2.12 instructs us to form a matrix by
putting the vertex degrees on the diagonal and
subtracting the adjacency matrix. We then delete
a row and a column and take the determinant. - When G is the kite of Example 2.2.9, the vertex
degrees are 3,3,2,2. We form the matrix on the
left below and take the determinant of the matrix
in the middle. The result is the number of
spanning trees.
32Example 2.2.11
v1
v3
v4
v2
v1 v2 v3 v4
v1 v2 v3 v4
8
33Minimum Spanning Tree 2.3
- In a connected weighted graph of possible
communication links, all spanning trees have n-1
edges we seek one that minimizes or maximizes
the sum of the edge weights. - Kruskals Algorithm
- Prims Algorithm
34Kruskals Algorithm for Minimum Spanning Tree
2.3.1
- Input A weighted connected graph
- Idea
- Maintain an acyclic spanning subgraph H.
- Enlarging it by edges with low weight to form a
spanning tree. - Consider edges in nondecreasing order of weight.
35Kruskals Algorithm for Minimum Spanning Tree
2.3.1
- Initialization Set E(H)?.
- Iteration If the next cheapest edge joins two
components of H, then include it otherwise,
discard it. Terminate when H is connected.
H
Join Two vertices in one component. Cycle
occurs. Not Allowed!
Join two components. It works
36Example of using Kruskals Algorithm
9
9
9
2
2
8
8
4
2
1
4
1
8
4
1
6
7
6
7
6
7
5
5
5
10
10
10
11
3
11
3
11
3
12
12
12
9
9
9
2
8
4
1
2
2
1
8
4
8
4
1
7
6
7
6
7
6
5
10
10
5
5
3
11
3
11
11
3
10
12
12
12
37Theorem In a connected weighted graph G,
Kruskals Algorithm constructs a minimum-weight
spanning tree. 2.3.3
- Proof 1/3
- We show first that the algorithm produces a tree.
- It never chooses an edge that completes a cycle.
- If the final graph has more than one component,
then there is no edge joining two of them and G
is not connected, because such an edge would be
accepted. - Since G is connected, some such edge exists and
we considered it. Thus the final graph is
connected and acyclic, which makes it a tree.
38Theorem 2.3.3 Continue
- Proof continue
- Let T be the resulting tree, and let T be a
spannig tree of minimum weight. - If TT, we are done.
- If T?T, let e be the first edge chosen for T
that is not in T. Adding e to T creates one
cycle C. Since T has no cycle, C has an edge
e?E(T). Consider the spanning tree Te-e. - Since T contains e and all the edges of T
chosen before e, both e and e are available when
the algorithm chooses e, and hence w(e)?w(e).
Thus Te-e is a spanning tree with weight at
most T that agrees with T for a longer initial
list of edges than T does. - Repeating this argument eventually yields a
minimum-weight spanning tree that agrees
completely with T. - Phrased extremely, we have prove that the minimum
spanning tree agreeing with T the longest is T
itself.
39Shortest Paths
- How can we find the shortest route from one
location to another?
40Dijkstras Algorithm2.3.5
- Input A graph (or digraph) with nonnegtive edge
weights and a starting vertex u. The weight of
edge xy is w(xy) let w(xy)? if xy is not an
edge. - Idea Maintain the set S of vertices to which a
shortest path from u is known, enlarging S to
include all vertices. To do this, maintain a
tentative distance t(z) from u to each z?S, being
the length of the shortest u, v-path yet found. - Initialization Set Su t(u)0 t(z)w(uz) for
z?u
41Dijkstras Algorithm2.3.5
- Iteration
- Select a vertex v outside S such that t(v)minz?S
t(z). - Add v to S.
- Explore edges from v to update tentative
distance for each edge vz with z?S, update t(z)
to mint(z), t(v)w(vz) - The iteration continues until SV(G) or
until t(z)? for every z?S. At the end, set d(u,
v)t(v) for all v.
42Example Find Shortest paths by using Dijkstras
Algorithm 2.3.6
t1
a
d
5
d
a
5
1
2
1
2
u
4
4
4
u
e
e
4
d0
3
6
6
3
c
b
5
c
5
b
t3
43Example Find Shortest paths by using Dijkstras
Algorithm continue 2.3.6
d1
t5
a
4
c
1
5
2
u
e
d0
5
6
3
4
d
t6
d3
b
44Example Find Shortest paths by using Dijkstras
Algorithm continue 2.3.6
d5
d5
c
c
d1
d1
4
4
6
a
a
t11
6
e
5
5
e
5
1
1
d0
d0
u
u
t8
5
2
2
3
3
4
d
4
t6
d
d3
d3
d6
b
b
45Theorem Given a (di)graph G and a vertex u?V(G),
Dijkstras algorithm compute d(u,z) for every z
?V(G) 2.3.7
- Proof
- We prove the stronger statement that at each
iteration, - For z?S, t(z)d(u, z), and
- For z?S, t(z) is the least length of a u, z-path
reaching z directly from S. - We use induction on kS.
- Basis step k1. From the initialization, Su,
d(u, u)t(u)0, and the least length of a u,
z-path reaching z directly from S is t(z)w(u,z),
which is infinite when uz is not an edge.
46Theorem 2.3.7 Continue
- Induction step
- Suppose that when Sk, (1) and (2) are true.
- Let v be a vertex among z?S such that t(z) is
smallest. - The algorithm now choose v let SS?v. We
first argue that d(u, v)t(v). A shortest u,
v-path must exit S before reaching v. The
induction hypothesis states that the length of
the shortest path going directly to v from S is
t(v). The induction hypothesis and choice of v
also guarantee that a path visiting any vertex
outside S and later reaching v has length at
least t(v). - Hence d(u, v)t(v), and (1) holds for S.
47Theorem 2.3.7 Continue
- To prove (2) for S, let z be a vertex outside S
other than v. - By the hypothesis, the shortest u, v-path
reaching z directly from S has length t(z) (? if
there is no such path). - When we add v to S, we must also consider paths
reaching z from v. Since we have now computed
d(u, v)t(v), the shortest such path has length
t(v)w(vz), and we compare this with the previous
value of t(z) to find the shortest path reaching
z directly from S. - We have verified that (1) and (2) hold for the
new set S of size k1 this completes the
induction step.
48Prims Algorithm
- Input A graph (or digraph) with nonnegtive edge
weights and a starting vertex u. The weight of
edge xy is w(xy) let w(xy)? if xy is not an
edge. - Idea Maintain a tree T including u at the
beginning, enlarging T to include all vertices.
To do this, select the cheapest edge from the
edges E(x,v) x? T, v?T . - Initialization Set Tu.
49Prims Algorithm
- Iteration Select a vertex v outside T such that
w(x,v)minx? T, v?T w(x,v) . Add v to T. - The iteration continues until
V(T)V(G).
50Dijkstras Algorithm v.s. Prims Algorithm
t6
d
d1
6
a
e
t5
3
c
u
d0
b
8
t3
The end vertex of the cheapest edge
The vertex which is the nearest to u
51Algorithm - Breadth First Search 2.3.8
- Input An unweighted graph (or digraph) and a
start vertex u. - Idea Maintain a set R of vertices that have been
reached but not searched and a set S of vertices
that have been searched. The set R is maintained
as a First-In First-Out list (queue), so the
first vertices found are the first vertices
explored. - Initialization Ru, S?, d(u, u)0
- Iteration As long as R??, we search from the
first vertex v of R. The neighbors of v not in
S?R are added to the back of R and assigned
distance d(u, v)1, and then v is removed from
the front of Rand assigned distance d(u, v)1,
and then v is removed from the front of R and
placed in S
52Example of BFS
a
b
d
c
e
g
j
i
f
h
Order of BFS a, b, c, d, e, f, g, h, i, j,
a, c, b, d, f, h, e, g, i,
j, b, a, g, f, e, c, d, h, i, j,
53Breadth-F-S vs. Depth-F-S
a
a
b
b
d
d
c
c
e
e
g
g
j
j
i
i
f
h
f
h
a,b,c,d,e,f,g,h,i,j,
a,b,e,f, c, h,
54Application Chinese Postman Problem 2.3.9
- A mail carrier must traverse all edges in a road
network, starting and ending at the Post Office.
The edges has nonnegative weights representing
distance or time. - We seek a closed walk of minimum total length
that uses all the edges. - This is the Chinese Postman Problem, named in
honor of the Chinese mathematician Guan Meigu
1962, who proposed it.
55Application Chinese Postman Problem continue
2.3.9
- If every vertex is even, then the graph is
Eulerian and the answer is the sum of the edge
weights. - Otherwise, we must repeat edges. Every traversal
is an Eulerian circuit of a graph obtained by
duplicating edges. - Finding the shortest traversal is equivalent to
finding the minimum total weight of edges whose
duplication will make all vertex degrees even .
56Application Chinese Postman Problem continue
2.3.9
- We say duplication because we need not use an
edge more than twice. If we use an edge three or
more times in making all vertices even, then
deleting two of those copies will leave all
vertices even. There may be many ways to choose
the duplicated edges.
57Application Chinese Postman Problem continue
2.3.9
- If there are only two odd vertices, then
- We can use Dijkstras Algorithm to find the
shortest path between them and solve the problem - If there are 2k odd vertices, then
- Use Dijkstras algorithm to find the shortest
paths connecting each pair of odd vertices - Use these lengths as weights on the edges of K2k
- Find the minimum total weight of k edges that
pair up these 2k vertices. This is a maximum
matching problem.
58Application Chinese Postman Problem continue
2.3.9
- A vertex
- An odd vertex
- An edge between u and v
- The shortest path between u and v in the
given graph
20
A matching in a general graph with minimum total
weight
40
10
16
15
20
59Rooted Tree 2.3.11
- A rooted tree is a tree with one vertex r chosen
as root. - For each vertex v, let P(v) be the unique v,
r-path. - The parent of v is its neighbor on P(v)
- Its children are its other neighbors.
- Its ancestors are the vertices of P(v)-v.
- Its descendants are the vertices u such that P(u)
contains v. - The leaves are the vertices with no children.
- A rooted plane tree or planted tree is a rooted
tree with a left-toright ordering specified for
the children of each vertex.
60Rooted Tree 2.3.11
root
Parent of v, Ancester of v
v
A leaf, A child of v
61Binary Tree 2.3.12
- A binary tree is a rooted plane tree where each
vertex has at most two children, and each child
of a vertex is designated as its left child or
right child. - The subtrees rooted at the children of the root
are the left subtree and the right subtree of the
tree. - A k-ary tree allows each vertex up to k children.
62Huffmans Algorithm 2.3.13
- Input Weights (frequencies or probabilities)
p1,,pn - Output Prefix-free code (equivalently, a binary
tree) - Idea Infrequent items should have longer codes
put infrequent items deeper by combining them
into parent nodes. - Initial case When n2, the optimal length is
one, with 0 and 1 being the codes assigned to the
two items (the tree has a root and two leaves
n1 can also be used as the initial case)
63Huffmans Algorithm 2.3.13
- Recursion
- Replace the two least likely items p, p with a
single item q of weight pp when ngt2 - Treat the smaller set as a problem with n-1
items. - After solving it, give children with weights p,
p to the resulting leaf with weight q. - Equivalently, replace the code computed for the
combined item with its extensions by 1 and 0,
assigned to the items that were replaced.
64Example of Huffman coding 2.3.14
- Consider eight items with frequencies 5, 1, 1, 7,
8, 2, 3, 6. - Algorithm 2.3.13 combines items according to the
tree on the left below, working from the bottom
up. - First the two items of weight 1 combine to from
one of weight 2.
65Huffman coding 2.3.14
- Now this and the original item of weight 2 are
the least likely and combine to form an item of
weight 4.
66Huffman coding 2.3.14
7
7
11
4
4
2
2
5
1
1
8
2
7
3
6
5
1
1
8
2
7
3
6
67Huffman coding 2.3.14
68Theorem 2.3.15
- Given a probability distribution pi on n items,
Huffmans Algorithm produces the prefix-free code
with minimum excepted length