88
1 14.1 Introduction to trees A tree is an undirected graph that is connected and has no cycles . Trees can be used to: construct efficient algorithms for location items in a list study games (checkers, chess) and determine winning strategies model procedures carried our using a sequence of decisions, which helps to determine the computational complexity of the algorithm in data compression (Huffman coding) ...

14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

1

14.1 Introduction to trees

A tree is an undirected graph that is connected and has no cycles.

Trees can be used to:● construct efficient algorithms for location items in a

list

● study games (checkers, chess) and determine winning strategies

● model procedures carried our using a sequence of decisions, which helps to determine the computational complexity of the algorithm

● in data compression (Huffman coding)...

Page 2: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

2

14.1 Introduction to trees

A tree is an undirected graph that is connected and has no cycles.

Page 3: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

3

14.1 Introduction to trees

A tree is an undirected graph that is connected and has no cycles.

a tree a tree not a tree

Page 4: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

4

14.1 Introduction to trees

A forest is an undirected graph that has no cycles.Each of its connected components is a tree.

a forest

Page 5: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

5

14.1 Introduction to trees

A tree is an undirected graph that is connected and has no cycles.

alternative definition: a tree is an undirected graph such that there is a unique path between every pair of its vertices.

Page 6: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

6

14.1 Introduction to trees

A tree is an undirected graph that is connected and has no cycles.

alternative definition: a tree is an undirected graph such that there is a unique path between every pair of its vertices.

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Page 7: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

7

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:1) ( → ) assume that T is a tree

Page 8: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

8

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:1) ( → ) assume that T is a tree, then T is connected and has no cycles.

Page 9: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

9

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:1) ( → ) assume that T is a tree, then T is connected and has no cycles. Let x and y be any two vertices of T.

Page 10: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

10

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:1) ( → ) assume that T is a tree, then T is connected and has no cycles. Let x and y be any two vertices of T.Then there is a path between x and y because T is connected.

Page 11: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

11

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:1) ( → ) assume that T is a tree, then T is connected and has no cycles. Let x and y be any two vertices of T.Then there is a path between x and y because T is connected.Assume that there exists another path between x and y.

Page 12: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

12

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:1) ( → ) assume that T is a tree, then T is connected and has no cycles. Let x and y be any two vertices of T.Then there is a path between x and y because T is connected.Assume that there exists another path between x and y. In this case we will be able to form a closed walk by combining two paths.

Page 13: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

13

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:1) ( → ) assume that T is a tree, then T is connected and has no cycles. Let x and y be any two vertices of T.Then there is a path between x and y because T is connected.Assume that there exists another path between x and y. In this case we will be able to form a closed walk by combining two paths. From it we can build cycle.

Page 14: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

14

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:1) ( → ) assume that T is a tree, then T is connected and has no cycles. Let x and y be any two vertices of T.Then there is a path between x and y because T is connected.Assume that there exists another path between x and y. In this case we will be able to form a closed walk by combining two paths. From it we can build cycle.This contradicts to the statement that T is a tree.

Page 15: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

15

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:1) ( → ) assume that T is a tree, then T is connected and has no cycles. Let x and y be any two vertices of T.Then there is a path between x and y because T is connected.Assume that there exists another path between x and y. In this case we will be able to form a closed walk by combining two paths. From it we can build cycle.This contradicts to the statement that T is a tree.Therefore the path is unique.

Page 16: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

16

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:2) ( ← ) assume that there is a unique path between any two vertices of T.

Page 17: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

17

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:2) ( ← ) assume that there is a unique path between any two vertices of T. Then T is connected.

Page 18: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

18

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:2) ( ← ) assume that there is a unique path between any two vertices of T.Then T is connected.Assume that T has a cycle that contains vertices x and y.

Page 19: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

19

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:2) ( ← ) assume that there is a unique path between any two vertices of T.Then T is connected.Assume that T has a cycle that contains vertices x and y. Then we can form two paths between these vertices. This contradicts to the assumption about uniqueness of a path.

Page 20: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

20

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:2) ( ← ) assume that there is a unique path between any two vertices of T.Then T is connected.Assume that T has a cycle that contains vertices x and y. Then we can form two paths between these vertices. This contradicts to the assumption about uniqueness of a path. Therefore, T has no cycles.

Page 21: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

21

14.1 Introduction to trees

[Theorem]An undirected graph is a tree iff there is a unique path between any two of its vertices.

Proof:2) ( ← ) assume that there is a unique path between any two vertices of T.Then T is connected.Assume that T has a cycle that contains vertices x and y. Then we can form two paths between these vertices. This contradicts to the assumption about uniqueness of a path. Therefore, T has no cycles.By definition, T is a tree.

q.e.d.

Page 22: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

22

14.1 Introduction to trees

[Def] A free tree is a tree with no particular organization of the vertices and edges

[Def] A rooted tree is a tree in which one vertex has been designated as the root and every edge is directed away from the root.

root

a rooted treea free tree

Page 23: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

23

14.1 Introduction to trees

[Def] A rooted tree is a tree in which one vertex has been designated as the root and every edge is directed away from the root.

[Def] The level of a vertex is its distance from to the root.

[Def] The height of a tree is the highest level of any vertex.

root

a rooted tree

height of a tree = 4

level 4 verticeslevel 3 vertices

Page 24: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

24

14.1 Introduction to trees

a rooted tree

a

b c de f g

h i j k lm n

root

[Corollary] There is a unique path from the root of the tree to each vertex of the tree.

This follows from Theorem we just proved.

Page 25: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

25

14.1 Introduction to trees

root

a rooted tree

a

b c de f g

h i j k lm n

vertex g is the parent of vertices j, k, and l.

● Every vertex in a rooted tree T has a unique parent, except for the root which does not have a parent. The parent of vertex v is the first vertex after v encountered along the path from v to the root.

Page 26: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

26

14.1 Introduction to trees

root (and ancestor of vertex n)

a rooted tree

a

b c de f g

h i j k lm n

ancestors of vertex n

● Every vertex along the path from v to the root (except for the vertex v itself, but including the root) is an ancestor of vertex v.

ancestor of vertex n

Page 27: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

27

14.1 Introduction to trees

root

a rooted tree

a

b c de f g

h i j k lm n

descendants of vertex d are vertices g, j, k, l and n

● Every vertex along the path from v to the root (except for the vertex v itself, but including the root) is an ancestor of vertex v.

● If u is an ancestor of v, then v is a descendant of u.

descendant of vertex k is n

Page 28: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

28

14.1 Introduction to trees

root

a rooted tree

a

b c de f g

h i j k lm n

vertex g is the parent of vertices j, k, and l.

vertices j, k, and l are siblings and are children of vertex g.

● If v is the parent of vertex u, then u is a child of vertex v.

● Two or more vertices are siblings if they have the same parent.

Page 29: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

29

14.1 Introduction to trees

root a

b c de f g

h i j k lm n

● a leaf is a vertex which has no children.

● vertices that have children are called internal vertices

b, f, I, k, l, m and n are leaves

internal vertices

...

Page 30: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

30

14.1 Introduction to trees

● a leaf is a vertex which has no children.

● vertices that have children are called internal vertices

● a subtree rooted at vertex v is the tree consisting of v and all v's descendants and all the edges incident to the descendants.

root a

b c de f g

h i j k lm n

a subtree rooted at vertex g

root a

b c de f g

h i j k lm n

b, f, I, k, l, m and n are leaves

internal vertices

...

Page 31: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

31

14.1 Introduction to trees

a

b c

d e f g

h i j k l

m n

● the root of the tree T● all leaves● all internal vertices● the parent of g● the ancestors of h● the descendants of b● the height of the tree● the level of vertex i

Practice: for the given tree T find

T

Page 32: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

32

14.1 Introduction to trees

a

b c

d e f g

h i j k l

m n

● the root of the tree T : a● all leaves : m, I, j, f, n, l● all internal vertices :

a, b, c, d, e, g, h, k● the parent of g : c● the ancestors of h : d, b, a● the descendants of b :

d, e, h, i, j, m● the height of the tree : 4● the level of vertex i : 3

Practice: for the given tree T find

T

Page 33: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

33

14.1 Introduction to trees

a

b c

d e f g

h i j k l

m n

[Def] a rooted tree is called m-ary tree if every internal vertex has no more than m children.

3-ary tree

Page 34: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

34

14.1 Introduction to trees

a

b c

d e f g

h i j k l

m n

[Def] a rooted tree is called m-ary tree if every internal vertex has no more than m children.

3-ary tree

[Def] The tree is call a full m-ary tree if every internal vertex has exactly m children.

a

b c

d e

a

b c

d e f g

a

b c

d e

f g

Page 35: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

35

14.1 Introduction to trees

a

b c

d e f g

h i j k l

m n

[Def] a rooted tree is called m-ary tree if every internal vertex has no more than m children.

3-ary tree

[Def] The tree is call a full m-ary tree if every internal vertex has exactly m children.

[Def] An m-ary tree with m = 2 is called a binary tree.

a

b c

d e f

Page 36: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

36

14.1 Introduction to trees

a

b c

d e f g

h i j k l

m n

[Def] a rooted tree is called m-ary tree if every internal vertex has no more than m children.

3-ary tree

[Def] The tree is call a full m-ary tree if every internal vertex has exactly m children.

[Def] A complete m-ary tree is a full m-ary tree in which each leaf is at the same level. a

b c

d e f g

Page 37: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

37

14.1 Introduction to trees

a

b c

d e f g

h i j k l

m n

We will be “ordering rooted trees” so that the children of each internal vertex are shown in order from left to right.

This is a binary tree.

Vertex b has the left child d and the right child e.

The subtree rooted at the left child is called left subtree.

The subtree rooted at the right child is called right subtree.

Page 38: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

38

14.1 Introduction to trees

Trees are used as models in Computer Science, Geology, Biology, Chemistry, Botany and Psycology.

Page 39: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

39

14.2 Tree application examples

Trees are used as models in Computer Science, Geology, Biology, Chemistry, Botany and Psycology.

Example 1: File trees

Files can are organized into directories/folders.

A directory/folder can Contain both files and subdirectories/subfolders

The root directory/folder contains the entire file system.

rooted tree

Page 40: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

40

14.2 Tree application examples

Trees are used as models in Computer Science, Geology, Biology, Chemistry, Botany and Psycology.

Example 1: File trees

Files can are organized into directories/folders.

A directory/folder can Contain both files and subdirectories/subfolders

The root directory/folder contains the entire file system.

Page 41: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

41

14.2 Tree application examples

Example 2: the structure of a large organization can be modeled using a rooted tree

Page 42: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

42

14.2 Tree application examples

Example 3: tree-connected parallel processorsA tree-connected network is one of the ways to interconnect processors.

Consider a complete binary tree of height 2: 7 processors are interconnected with each other.Each edge is a two-way connection.

P1

P2

P3

P4

P5 P

6P

7

Let's add 8 numbers using 3 steps:

Page 43: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

43

14.2 Tree application examples

Example 3: tree-connected parallel processorsA tree-connected network is one of the ways to interconnect processors.

Consider a complete binary tree of height 2: 7 processors are interconnected with each other.Each edge is a two-way connection.

P1

P2

P3

P4

P5 P

6P

7

x1+x

2

x3+x

4

x5+x

6x

7+x

8

Let's add 8 numbers using 3 steps:

Page 44: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

44

14.2 Tree application examples

Example 3: tree-connected parallel processorsA tree-connected network is one of the ways to interconnect processors.

Consider a complete binary tree of height 2: 7 processors are interconnected with each other.Each edge is a two-way connection.

P1

P2

P3

P4

P5 P

6P

7

x1+x

2

x3+x

4

x5+x

6x

7+x

8

x1,2

+x3,4

x5,6

+x7,8

Let's add 8 numbers using 3 steps:

Page 45: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

45

14.2 Tree application examples

Example 3: tree-connected parallel processorsA tree-connected network is one of the ways to interconnect processors.

Consider a complete binary tree of height 2: 7 processors are interconnected with each other.Each edge is a two-way connection.

P1

P2

P3

P4

P5 P

6P

7

Let's add 8 numbers using 3 steps:

x1+x

2

x3+x

4

x5+x

6x

7+x

8

x1,2

+x3,4

x5,6

+x7,8

x1,2,3,4

+x5,6,7,8

Page 46: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

46

14.2 Tree application examples

Binary Search Trees

Binary search tree, or BST, is a binary tree with keys assigned to vertices/nodes, where every vertex/node v has the following property:

● each key in the left subtree is less than the key at the vertex v,

● each key in the right subtree is greater than the key at the vertex v. 9

6 15

11 27

Page 47: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

47

14.2 Tree application examples

Binary Search Trees

Inserting keys into a BST (one by one), starting with an empty tree: 9, 6, 15, 11, 27, 13, 1, 7, and 2.

9 9

6 15

11

9

6

9

156

9

6 15

11 27

9

6 15

11 271

2

7

13

9

6 15

11 27

13

Page 48: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

48

14.2 Tree application examples

Binary Search Trees

Inserting keys into a BST (one by one), starting with an empty tree: 9, 6, 15, 11, 27, 13, 1, 7, and 2.

9

6 15

11 271

2

7

13

No duplicates can be inserted!

Page 49: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

49

14.2 Tree application examples

Binary Search Trees

Inserting word keys into a BST (one by one), starting with an empty tree: instance, node, root, child, left, right, and parent.

instance

node

leftroot

child

instance

node

left

parent

right

child

root

Page 50: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

50

14.2 Tree application examples

Binary Search Trees9

36

15

27

42

To determine the computational complexity of insertion operation let's see how many comparisons are performed in a worst-case scenario: the item is added to the longest path's leaf.

length of the longest path = height of the tree = n

Page 51: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

51

14.2 Tree application examples

Binary Search Trees9

36

15

27

42

To determine the computational complexity of insertion operation let's see how many comparisons are performed in a worst-case scenario: the item is added to the longest path's leaf.

length of the longest path = height of the tree = n

but when the tree is balanced, the timing is improved to log(n).

Page 52: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

52

14.2 Tree application examples

Decision Trees

Rooted trees can be used to model problems in which a series of decisions leads to a solution.

Example: BST can be used to locate items based on a series of comparisons.

Let's check if 11 is in the BST(searching for 11)

9

6 15

11 271

2

7

13

Page 53: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

53

14.2 Tree application examples

Decision Trees

Rooted trees can be used to model problems in which a series of decisions leads to a solution.

Example: BST can be used to locate items based on a series of comparisons.

Let's check if 11 is in the BST(searching for 11)

9

6 15

11 271

2

7

13

start at the root11 = 9? Nogo right

Page 54: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

54

14.2 Tree application examples

Decision Trees

Rooted trees can be used to model problems in which a series of decisions leads to a solution.

Example: BST can be used to locate items based on a series of comparisons.

Let's check if 11 is in the BST(searching for 11)

9

6 15

11 271

2

7

13

start at the root

11 = 15? Nogo left

Page 55: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

55

14.2 Tree application examples

Decision Trees

Rooted trees can be used to model problems in which a series of decisions leads to a solution.

Example: BST can be used to locate items based on a series of comparisons.

Let's check if 11 is in the BST(searching for 11)

9

6 15

11 271

2

7

13

start at the root

11 = 11? Yesreturn True

Page 56: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

56

14.2 Tree application examples

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.

The possible solutions of the problem correspond to the paths to the leaves of this rooted tree.

Page 57: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

57

14.2 Tree application examples

Decision Trees

Example: suppose there are seven coins of the same weight, and a counterfeit coin that weighs less than the others.How many weighings are necessary using a balance scale to determine which coin is the counterfeit one?Give an algorithm.

Page 58: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

58

14.2 Tree application examples

Decision Trees

Example: suppose there are seven coins of the same weight, and a counterfeit coin that weighs less than the others. How many weighings are necessary using a balance scale to determine which coin is the counterfeit one? Give an algorithm.

Solution: 8 coins, and balance scale.

Page 59: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

59

14.2 Tree application examples

Decision Trees

Example: suppose there are seven coins of the same weight, and a counterfeit coin that weighs less than the others. How many weighings are necessary using a balance scale to determine which coin is the counterfeit one? Give an algorithm.

Solution: 8 coins, and balance scale. 3 outcomes for weighing two coins: equal, left pan is heavier, right pan is heavier.Let's use 3-ary decision tree.

Page 60: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

60

14.2 Tree application examples

Decision Trees

Example: suppose there are seven coins of the same weight, and a counterfeit coin that weighs less than the others. How many weighings are necessary using a balance scale to determine which coin is the counterfeit one? Give an algorithm.

Solution: 8 coins, and balance scale. 3 outcomes for weighing two coins: equal, left pan is heavier, right pan is heavier.Let's use 3-ary decision tree.There are 8 possible outcomes, hence at least 8 leaves.

Page 61: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

61

14.2 Tree application examples

Decision Trees

Example: suppose there are seven coins of the same weight, and a counterfeit coin that weighs less than the others. How many weighings are necessary using a balance scale to determine which coin is the counterfeit one? Give an algorithm.

Solution: 8 coins, and balance scale. 3 outcomes for weighing two coins: equal, left pan is heavier, right pan is heavier.Let's use 3-ary decision tree.There are 8 possible outcomes, hence at least 8 leaves.Height of the decision tree = largest number of weighings

Page 62: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

62

14.2 Tree application examples

Decision Trees

Example: suppose there are seven coins of the same weight, and a counterfeit coin that weighs less than the others. How many weighings are necessary using a balance scale to determine which coin is the counterfeit one? Give an algorithm.

Solution:

lighter lighter

{1,2,3} vs {4,5,6}

{1} vs {2} {4} vs {5}{7} vs {8}

balance

Page 63: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

63

14.2 Tree application examples

Decision Trees

Example: suppose there are seven coins of the same weight, and a counterfeit coin that weighs less than the others. How many weighings are necessary using a balance scale to determine which coin is the counterfeit one? Give an algorithm.

Solution: at least 2 weighing are needed.

lighter lighter

{1,2,3} vs {4,5,6}

{1} vs {2} {4} vs {5}

{1} {2}{3} {4} {5}{6}

{7} vs {8}

{7} {8}

balance

Page 64: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

64

14.2 Tree application examples

Decision Trees

Many different sorting algorithms have been developed. To decide whether a particular algorithm is efficient, its complexity is determined.

Using decision trees as models, a lower bound for the worst-case complexity of sorting algorithms that are based on binary comparisons (two elements at a time) can be found.

Page 65: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

65

14.2 Tree application examples

Decision Trees

Example: let's draw a decision tree that orders elements x,y and z.

x : yx > y x < y

Page 66: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

66

14.2 Tree application examples

Decision Trees

Example: let's draw a decision tree that orders elements x,y and z.

x : y

x : z

x > y x < y

x > z x < z

y : z

y > z y < z

Page 67: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

67

14.2 Tree application examples

Decision Trees

Example: let's draw a decision tree that orders elements x,y and z.

x : y

x : z

x > y x < y

x > z x < z

y : z

y : z

y > z y < z

x : zz > x > y z > y > xy > z y < z

x > z x < z

Page 68: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

68

14.2 Tree application examples

Decision Trees

Example: let's draw a decision tree that orders elements x,y and z.

x : y

x : z

x > y x < y

x > z x < z

y : z

y > z y < z

y : z

y > z y < z

x : z

x > z x < z

x > y > z x > z > y

z > x > y

y > x > z y > z > x

z > y > x

Page 69: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

69

14.2 Tree application examples

Prefix Codes

Consider a problem of using bit strings to encode the letters of the English alphabet (not case sensitive)

We can use bit strings of length 5 : 25 = 32 different bit strings of length 5 (26 letters in the alphabet)___ ___ ___ ___ ___ 2 2 2 2 2 = 25 = 32

Page 70: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

70

14.2 Tree application examples

Prefix Codes

Consider a problem of using bit strings to encode the letters of the English alphabet (not case sensitive)

We can use bit strings of length 5 : 25 = 32 different bit strings of length 5 (26 letters in the alphabet)___ ___ ___ ___ ___ 2 2 2 2 2 = 25 = 32

Of course we would like to use fewer bits if possible, i.e. not every letter should get a bit-string of length 5.So we will use bit strings of different lengths to encode letters. More frequently occurring letters will have shorter bit strings encoding.

Page 71: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

71

14.2 Tree application examples

Prefix Codes

Notice, that we have to be careful!

For example:If a is encoded with 0, b with 1, and c with 01,

The bit string 10101 can correspond to:bcc (1 01 01),babc (1 0 1 01), bcab (1 01 0 1), and so forth.

Page 72: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

72

14.2 Tree application examples

Prefix Codes

Let's consider prefix codes: letters are encoded in such a way that the bit string for a letter never occurs as the first part of the bit string for another letter.

Page 73: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

73

14.2 Tree application examples

Prefix Codes

Let's consider prefix codes: letters are encoded in such a way that the bit string for a letter never occurs as the first part of the bit string for another letter.

Prefix codes can be represented by a binary tree, whereleaves' labels are characters.“left edge” is assigned 0, and“right edge” is assigned 1.

f

a

b

e

0

0

0

1

1

1

Page 74: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

74

14.2 Tree application examples

Prefix Codes

Let's consider prefix codes: letters are encoded in such a way that the bit string for a letter never occurs as the first part of the bit string for another letter.

Prefix codes can be represented by a binary tree, whereleaves' labels are characters.“left edge” is assigned 0, and“right edge” is assigned 1.

codesa: 0e: 10f: 110b: 111

f

a

b

e

0

0

0

1

1

1

Page 75: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

75

14.2 Tree application examples

Prefix Codes

Let's consider prefix codes: letters are encoded in such a way that the bit string for a letter never occurs as the first part of the bit string for another letter.

Prefix codes can be represented by a binary tree, whereleaves' labels are characters.“left edge” is assigned 0, and“right edge” is assigned 1.

The string 10101111100 corresponds to eebfa

10 10 111 110 0f

a

b

e

0

0

0

1

1

1

codesa: 0e: 10f: 110b: 111

Page 76: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

76

14.2 Tree application examples

Huffman Coding

An algorithm, known as Huffman coding, was developed by David Albert Huffman in a term paper he wrote in 1951 while a graduate student at MIT.

It allows to produce prefix code for a string using fewest possible bits, based on frequencies (which are the probabili-ties of occurrences) of symbols in a string.

This algorithm is a fundamental algorithm in data compression (including audio and image compressions).

Page 77: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

77

14.2 Tree application examples

Huffman Coding

procedure Huffman(C: symbols ai with freq. w

i,i = 1,...,n)

F := forest of n rooted trees, each contains a single vertex a

i and assigned weight w

i.

while F is not a treeTake two rooted trees, T and T', with the least weights and w(T) w(T').Replace them with a tree having a new root that has T as its left subtree and T' as its right subtree.Label the edge to T with 0, and the edge to T' with 1.Assign w(T)+w(T') as the weight of the new tree.

Output: Huffman code for ai: the concatenation of labels of

the edges in the unique path from the root to the vertex vi.

Page 78: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

78

14.2 Tree application examples

Huffman Coding

Example: Use Huffman coding to encode the following symbols with the frequencies:A: 0.10B: 0.25C: 0.05D: 0.15E: 0.30F: 0.07G: 0.08What is the average number of bits required to encode a symbol?

Page 79: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

79

14.2 Tree application examples

Huffman Coding

0.05

C F

0.07

G

0.08

A

0.10

D

0.15

B

0.25

E

0.30 Initial step

Page 80: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

80

14.2 Tree application examples

Huffman Coding

0.05

C F

0.07

G

0.08

A

0.10

D

0.15

B

0.25

E

0.30 Initial step

0.12

CF

G

0.08

A

0.10

D

0.15

B

0.25

E

0.300 1

1st iteration

Page 81: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

81

14.2 Tree application examples

Huffman Coding

0.05

C F

0.07

G

0.08

A

0.10

D

0.15

B

0.25

E

0.30 Initial step

0.12

CF

G

0.08

A

0.10

D

0.15

B

0.25

E

0.300 1

1st iteration

0.12

CF A

0.18

G

D

0.15

B

0.25

E

0.300 1

2nd iteration0 1

Page 82: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

82

14.2 Tree application examples

Huffman Coding

0.12

CF A

0.18

G

D

0.15

B

0.25

E

0.300 1

2nd iteration0 1

Page 83: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

83

14.2 Tree application examples

Huffman Coding

0.12

CF A

0.18

G

D

0.15

B

0.25

E

0.300 1

2nd iteration0 1

0.27

CF

A

0.18

G D

B

0.25

E

0.30

0 1

3rd iteration0 1 0 1

Page 84: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

84

14.2 Tree application examples

Huffman Coding

0.27

CF

A

0.18

G D

B

0.25

E

0.30

0 1

3rd iteration0 1 0 1

0.27

CF A

0.43

G

D B

E

0.30

0 1

4th iteration

0 1

0 1 0 1

Page 85: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

85

14.2 Tree application examples

Huffman Coding

0.27

CF A

0.43

G

D B

E

0.30

0 1

4th iteration

0 1

0 1 0 1

0.57

CF

D

E0 1

0 1

0 1

A

0.43

G

B0 1

0 1

5th iteration

CF

D

E0 1

0 1

0 1

A G

B 0 1

0 1

0 1

6th iteration

Page 86: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

86

14.2 Tree application examples

Huffman Coding

Example: Use Huffman coding to encode the following symbols with the frequencies:A: 0.10 110 B: 0.25 10C: 0.05 0111D: 0.15 010E: 0.30 00F: 0.07 0110G: 0.08 111

CF

D

E0 1

0 1

0 1

A G

B 0 1

0 1

0 1

Page 87: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

87

14.2 Tree application examples

Huffman Coding

Example: Use Huffman coding to encode the following symbols with the frequencies:A: 0.10 110 B: 0.25 10C: 0.05 0111D: 0.15 010E: 0.30 00F: 0.07 0110G: 0.08 111What is the average number of bits required to encode a symbol?3 * 0.10 + 2 * 0.25 + 4 * 0.05 + 3 * 0.15 + 2 * 0.3 + 4 * 0.07 + 3 * 0.08 = 2.57

CF

D

E0 1

0 1

0 1

A G

B 0 1

0 1

0 1

Page 88: 14.1 Introduction to trees14 14.1 Introduction to trees[Theorem] An undirected graph is a tree iff there is a unique path between any two of its vertices. Proof: 1) ( → ) assume

88

14.2 Tree application examples

Huffman Coding

Note on Huffman coding algorithm:

Huffman coding is a greedy algorithm. Replacing two subtrees with the smallest weight at each step leads to an optimal code in the sense that no binary prefix code for these symbols can encode these symbols using fewer bits (needs to be proved)

Note: there are many variations of Huffman coding.