Discrete Mathematics: Trees
Discrete Mathematics: Trees
Mathematics
Chapter 10
Trees
大葉大學 資訊工程系 黃鈴玲 (Lingling Huang)
Outline
10.1 Introduction to Trees
10.2 Applications of Trees
10.3 Tree Traversal
10.4 Spanning Trees
10.5 Minimal Spanning Trees
Ch10-2
10.1 Introduction to Trees
Def 1 A tree is a connected undirected graph with no
simple circuits.
Example 1. Which of the graphs are trees?
Sol: G1, G2
Note. 若拿掉 connected 的條件,就變成 forest
Ch10-3
Thm 1. Any undirected graph is a tree if and only if
there is a unique simple path between any two of
its vertices.
Def 2. A rooted tree is a tree in which one vertex has
been designed as the root and every edge is
directed away from the root. ( 箭頭可消掉 )
Example
Ch10-4
Def: a is the parent of b, b is the child of a,
a c, d, e are siblings,
a, b, d are ancestors of f
b c, d, e, f, g are descendants of b
c, e, f, g are leaves of the tree (deg=1)
c d e a, b, d are internal vertices of the tree
g
(at least one child)
f
subtree with d as its root: d
f g
Ch10-5
Def 3 A rooted tree is called an m-ary tree if every
internal vetex has no more than m children. The tree
is called a full m-ary tree if every internal vertex has
exactly m children. An m-ary tree with m=2 is called
a binary tree.
Example 3
full binary tree full 3-ary tree full 5-ary tree not full 3-ary tree
Ch10-6
Def:
a
b
c
left child of a
d e f
right child of c
left subtree of a
right subtree of a
Ch10-7
Properties of Trees
Thm 2. A tree with n vertices has n1 edges.
Pf. (by induction on n)
n = 1 : K1 is the only tree of order 1, |E(K1)| = 0. ok!
Assume the result is true for every trees of order n = k.
Let T be a tree of order n = k+1, v be a leaf of T,
and w be the parent of v.
Let T ’ be the tree T{v}.
∴|V(T ’)| = k, and |E(T ’)| = k1 by the induction
hypothesis.
|E(T)| = k
By induction, the result is true for all trees. #
Ch10-8
Thm 3. A full m-ary tree with i internal vertices
contains n mi vertices.
Pf. Every vertex, except the root, is the child of an internal vertex.
Each internal vertex has m children.
there are mi +1 vertices in the tree
Exercise: 19
Ch10-9
Def: The level of a vertex v in a rooted tree is the
length of the unique path from the root to this vertex.
The level of the root is defined to be zero.
The height of a rooted tree is the maximum of the
levels of vertices.
Example 10. level
0
1
height = 4
2
3
Ch10-10
Def: A rooted m-ary tree of height h is balanced if all
leaves are at levels h or h1.
Sol. T1, T3
# of leaves = mh
Ch10-12
10.2 Applications of Trees
Binary Search Trees
Goal: Implement a searching algorithm that finds
items efficiently when the items are totally ordered.
Binary Search Tree: Binary tree + each child of a
vertex is designed as a right or left child, and each
vertex v is labeled with a key label(v), which is one of
the items.
Note: label(v) > label(w) if w is in the left subtree of v
and label(v) < label(w) if w is in the right subtree of v
Ch10-13
Example 1 Form a binary search tree for the words
mathematics, physics, geography, zoology, meteorology,
geology, psychology, and chemistry (using alphabetical
order).
Sol.
Ch10-14
Algorithm 1 (Locating and Adding Items to a Binary Search
Tree.)
Procedure insertion(T: binary search tree, x: item)
v := root of T
{a vertex not present in T has the value null}
while v null and label(v) x
begin
if x < label(v) then
if left child of v null then v:=left child of v
else add new vertex as a left child of v and set v := null
else
if right child of v null then v:= right child of v
else add new vertex as a right child of v and set v := null
end
if root of T = null then add a vertex v to the tree and label it with x
else if v is null or label(v) x then label new vertex with x and
let v be this new vertex
{v = location of x}
Ch10-15
Example 2 Use Algorithm 1 to insert the word
oceanography into the binary search tree in Example 1.
Sol. label(v) = mathematics < oceanography
mathematics label(v) = physics > oceanography
v
label(v) = meteorology < oceanography
geography physics
meteorology
zoology
chemistry geology
oceanography psychology
Exercise: 1,3
Ch10-16
Decision Trees
A rooted tree in which each internal vertex corresponds
to a decision, with a subtree at these vertices for each
possible outcome of the decision, is called a decision
tree.
Example 3 Suppose there are seven coins, all with the
same weight, and a counterfeit ( 偽造 ) coin that weights less
than the others. How many weighings ( 秤重 ) are necessary
using a balance scale ( 秤 ) to determine which of the eight
coins is the counterfeit one? Give an algorithm for finding
this counterfeit coin.
Ch10-17
Sol. 秤重時,可能左重、右重或平衡 3-ary tree
Need 8 leaves 至少需秤重兩次
Exercise: 7
Ch10-18
Example 4 A decision tree that orders the elements of the
list a, b, c.
Sol.
Ch10-19
Prefix Codes
Problem: Using bit strings to encode the letter of the
English alphabet ( 不分大小寫 )
each letter needs a bit string of length 5 ( 因 24 < 26 < 25)
Is it possible to find a coding scheme of these letter
such that when data are coded, fewer bits are used?
Encode letters using varying numbers of bits.
Some methods must be used to determine where the
bits for each character start and end.
Prefix codes: Codes with the property that the bit string
for a letter never occurs as the first part of the bit string
for another letter.
Ch10-20
Example: (not prefix code)
e : 0, a : 1, t : 01
The string 0101 could correspond to eat, tea, eaea, or tt.
Example: (prefix code)
e : 0, a : 10, t : 11
The string 10110 is the encoding of ate.
Ch10-21
A prefix code can be represented using a binary tree.
character: the label of the leaf
edge label: left child 0, right child 1
The bit string used to encode a character is the sequence
of labels of the edges in the unique path from the root to
the leaf that has this character as its label.
Example: 從 root 走起,到 leaf 為止,重複
encode decode
e:0 11111011100
a : 10 s a n e
t : 110
n : 1110 sane
s : 1111
Exercise: 22
Ch10-22
Huffman Coding (data compression 重要工具 )
Input the frequencies of symbols in a string and output
a prefix code that encodes the string using the fewest
possible bits, among all possible binary prefix codes for
these symbols.
Ch10-23
Algorithm 2 (Huffman Coding)
Procedure Huffman(C: symbols ai with frequencies wi, i = 1, …, n)
F := forest of n rooted trees, each consisting of the single vertex ai
and assigned weighted wi
while F is not a tree
begin
Replace the rooted trees T and T’ of least weights from F with
w(T) w(T’) with a tree having a new root that has T as its
left subtree and T’ as its right subtree. Label the new edge to T
with 0 and the new edge to T’ with 1.
Assign w(T)+w(T’) as the weight of the new tree.
end
Ch10-24
Example 5 Use Huffman coding to encode the following
symbols with the frequencies listed:
A: 0.08, B: 0.10, C: 0.12, D: 0.15, E: 0.20, F: 0.35.
What is the average number of bits used to encode a
character?
Sol:
1. 下頁圖
2. The average number of bits is:
每個 symbol 長度 頻率 的加總
= 30.08+ 30.10+ 30.12+ 30.15+20.20+20.35
=2.45
Exercise : 23
Ch10-25
Ch10-26
10.3 Tree Traversal
We need procedures for visiting each vertex of an ordered
rooted tree to access data.
Universal Address Systems
Label vertices:
1.root 0, its k children 1, 2, …, k (from left to right)
2.For each vertex v at level n with label A,
its r children A.1, A.2, …, A.r (from left to right).
We can totally order the vertices using the lexicographic
ordering of their labels in the universal address system.
x1.x2…..xn < y1.y2…..ym
if there is an i, 0 i n, with x1=y1, x2=y2, …, xi-1=yi-1, and xi<yi;
or if n<m and xi=yi for i=1, 2, …, n.
Ch10-27
Example 1
Preorder traversal ( 前序 )
Ch10-29
Example 2. In which order does a preorder traversal visit
the vertices in the ordered rooted tree T shown below?
Sol:
Ch10-30
Algorithm 1 (Preorder Traversal)
Procedure preorder(T: ordered rooted tree)
r := root of T
list r
for each child c of r from left to right
begin
T(c) := subtree with c as its root
preorder(T(c))
end
Exercise : 8
Ch10-31
Inorder traversal( 中序 )
Ch10-32
Example 3. In which order does a preorder traversal visit
the vertices in the ordered rooted tree T shown below?
Sol:
Ch10-33
Algorithm 2 (Inorder Traversal)
Procedure inorder(T: ordered rooted tree)
r := root of T
If r is a leaf then list r
else
begin
l := first child of r from left to right
T(l) := subtree with l as its root
inorder(T(l))
list r
for each child c of r except for l from left to right
T(c) := subtree with c as its root
inorder(T(c))
end
Ch10-34
Postorder traversal( 後序 )
Ch10-35
Example 4. In which order does a preorder traversal visit
the vertices in the ordered rooted tree T shown below?
Sol:
Ch10-36
Algorithm 3 (Postorder Traversal)
Procedure postorder(T: ordered rooted tree)
r := root of T
for each child c of r from left to right
begin
T(c) := subtree with c as its root
postorder(T(c))
end
list r
Ch10-37
比較容易的表示法:依紅線的走法拜訪節點
Preorder: curve 第一次通過該點時就 list 該節點
Inorder: curve 第一次通過一個 leaf 時就 list 它,第二次通過一個 internal 節點
時就 list 它
Postorder: curve 最後一次通過該點時就 list 該節點
Preorder:
a, b, d, h, e, i, j, c, f, g, k
Inorder:
h, d, b, i, e, j, a, f, c, k, g
Postorder:
h, d, i, j, e, b, f, k, g, c, a
Ch10-38
Infix, Prefix, and Postfix Notation
We can represent complicated expressions, such as compound
propositions, combinations of sets, and arithmetic expressions
using ordered rooted trees.
Example 1 Find the ordered rooted tree for
((x+y)2)+((x4)/3). ( 表示次方 )
Sol.
leaf:
variable
internal vertex:
operation on
its left and right
subtrees
Ch10-39
The following binary trees represent the expressions:
(x+y)/(x+3), (x+(y/x))+3, x+(y/(x+3)).
All their inorder traversals lead to x+y/x+3 ambiguous
need parentheses
Ch10-42
Example 9 What is the value of the postfix expression
7 2 3 * 4 9 3 / +?
Sol.
由左到右運算,將第一個出現的
運算記號 ( 如 *) 左邊的兩個數字
做此運算,運算結果取代原先位
置,依此類推。
Ch10-43
Example 10 Find the ordered rooted tree representing the
compound proposition ((pq)) (pq). Then use this
rooted tree to find the prefix, postfix, and infix forms of this
expression.
Sol.
Ch10-45
Four spanning trees of G:
Exercise : 1, 8, 11
Ch10-47
The edges selected by DFS of a graph are called tree
edges. All other edges of the graph must connect a vertex
to an ancestor or descendant of this vertex in the tree.
These edges are called back edges.
Example 4 ( 承上題 )
Exercise : 13
Ch10-49
Breadth-First Search (BFS)
Example 5 Use breadth-first search
to find a spanning tree
for the graph.
Ch10-50
Algorithm 2 (Breadth-First Search)
Procedure BFS(G: connected graph with vertices v1, v2, …, vn)
T := tree consisting only of vertex v1
L := empty list
put v1 in the list L of unprocessed vertices
while L is not empty
begin
remove the first vertex v from L
for each neighbor w of v
if w is not in L and not in T then
begin
add w to the end of the list L
add w and edge {v, w} to T
end Exercise : 16
end
Ch10-51
Backtracking Applications
There are problems that can be solved only by performing an
exhaustive ( 徹底的 ) search of all possible solutions.
Decision tree: each internal vertex represents a decision, and
each leaf is a possible solution.
Ch10-52
Example 6 (Graph Colorings) How can backtracking be
used to decide whether the following graph can be colored
using 3 colors?
Sol.
Ch10-53
Example 7 Sol. 以 n=4 為例
(The n-Queens Problem)
The n-queens problem asks how
n queens can be placed on an nn
chessboard so that no two queens
can attack on another. How can
backtracking be used to solve the
n-queens problem.
Ch10-54
Example 8 (Sum of Subsets)
Give a set S of positive integers x1, x2, …, xn, find a subset
of S that has M as its sum. How can backtracking be used to
solve this problem.
Sol.
S = {31, 27, 15, 11, 7, 5}
M = 39
Exercise : 30
Ch10-55
Depth-First Search in Directed Graphs
Example 9 What is the output of DFS given the graph G?
Sol.
Ch10-56
10.5 Minimum Spanning Trees
G: connected weighted graph (each edge has an weight 0)
Def. minimum spanning tree of G: a spanning tree of G
with smallest sum of weights of its edges.
Algorithms for Minimum Spanning Trees
Algorithm 1 (Prim’s Algorithm)
Procedure Prim(G: connected weighted undirected graph with n vertices)
T := a minimum-weight edge
for i := 1 to n2
begin
e := an edge of minimum weight incident to a vertex in T and not
forming a simple circuit in T if added to T
T := T with e added
end {T is a minimum spanning tree of G}
Ch10-57
Example 2 Use Prim’s
algorithm to find a minimum
spanning tree of G.
Sol.
( 過程中維持只有一個 tree)
Exercise: 3 Ch10-58
Algorithm 2 (Kruskal Algorithm)
Procedure Kruskal(G: connected weighted undirected graph with n vertices)
T := empty graph
for i := 1 to n1
begin
e := any edge in G with smallest weight that does not form a simple
circuit when added to T
T := T with e added
end {T is a minimum spanning tree of G}
Ch10-59
Example 3 Use Kruskal
algorithm to find a minimum
spanning tree of G.
Sol.
Exercise: 7 Ch10-60