discrete mathematicscis.catholic.ac.kr/sunoh/courses/discretem/dmchapter7.pdf · 2017-11-21 ·...

30
Chapter 7. trees Sanguk Noh Discrete Mathematics

Upload: others

Post on 12-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Chapter 7. trees

Sanguk Noh

Discrete Mathematics

Page 2: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Table

Trees

Labeled Trees

Tree searching

Undirected trees

Minimal Spanning Trees

Page 3: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Trees

Theorem : Let (T, v0) be a rooted tree. Then,

There are no cycles in T.

v0 is the only root of T.

Each vertex in T, other than v0, has in-degree one. And v0 has in-

degree zero.

Page 4: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Trees

Notation

v0

v1 v2 v3

v6 v7 v8 v5 v4

The root

No edges enter v0.

parent

offspring ‘leaves’ (have no offspring) Siblings(the offspring of any one vertex)

Level 0

Level 1

Level 2

‘height’ of

the tree

* ‘ordered tree’: some ordering at each level by arranging offspring from left to right

Page 5: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Trees

Theorem : : Let (T, v0) be a rooted tree on a set A

T is irreflexive.

T is asymmetric.

If (a,b)∈T and (b,c) ∈T, then (a,c) ∉T for all a,b,c in A

Notation

v0

v1 v2 v3

At most n offspring : n-tree

All vertices of T have exactly

n offspring

Complete n-tree

* 2-tree : binary tree

Page 6: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Trees Theorem

If (T, v0) is a rooted tree and v∈T, then T(v) is also a rooted

tree with root v.

T(v): the subtree of T beginning at v.

e.g.) A={v1,v2,….,v10}

T={(v2, v3), (v2, v1), (v4, v5), (v4, v6), (v5, v8), (v6, v7),

(v4, v2), (v7, v9), (v7, v10)}

v4

v6 v2 v5

v8 v3 v1 v7

v9 v10

T(v5)

T(v2)

(T,v4): the tree T(v6)

Page 7: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Labeled Trees

The fully parenthesized, algebraic expression

(3-(2*x)) + ((x-2)-(3+x))

+

- -

3 * - +

2 x x 2 3 x

Central operator

*tree data structure. n-tree(T,v0)

Page 8: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Labeled Trees

Computer representation of binary trees

Doubly linked list. (searching a set of data in either direction)

data Left

pointer

Right

pointer Data

storage

Pointer to the next cell.

(an address where the next cell is located)

For a pointer specifying no additional date.

(0: the corresponding off spring does not exist)

Page 9: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Labeled Trees

e.g.)

∙ start

∙ ∙ + ∙ ∙ - ∙ ∙ + x

3

∙ ∙ -

3

1

2

3

4

8

5

Fig.7.10 p277

Index Left Data Right

1

2

3

4

5

6

7

8

2

3

4

0

6

0

0

9

+

-

3

*

2

x

-

0

8

5

0

7

0

0

12

Page 10: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Tree searching

Tree search : the process of visiting each vertex of a tree in

some specific order

Positional binary tree(labeled digraph)

(we place in its appropriate position each offspring that

actually occurs.)

The positions for potential offspring are labeled left and right.

L R

R

R

L

L R

* T : a binary positional tree with root v. (T,v)

T(VL) : the left subtree of T

T(VR): the right subtree of T

Page 11: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Tree searching

Preorder search Algorithm PREORDER(T,v)

print v // visit the root

if vL≠NIL

then PREORDER(T(vL),VL)

//search the left subtree

if vR≠NIL

then PREORDER(T(vR),VR)

//search the right subtree

end PREORDER

A

B H

C

D F

E I

G J L

K

The result of the complete search of T

A B

C E

D F G

A B C

D

C B D

Nil Nil

A C B D A

C B D A E A B C E F A B C D E G D F

G F Nil Nil Nil Nil ABCDEFG H

I K

L J

Page 12: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Tree searching e.g.) the prefix of the given algebraic expression by applying

PREORDER to the tree

Unambiguous expression w/o parentheses

*-ab+c/de Move from left to right Fxy

F: symbol (+,-,*,/,etc)

x&y: numbers

Continue this procedure until only one number remains.

Ex) *-64+5/22 =>12

2 1

6

12

*

-

a b

+

c /

d e

* -

a b

* - +

c /

d e

a b (a-b)*((c+(d/e))

Page 13: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Tree searching Inorder search

Postorder search

Algorithm INORDER(T,v)

if vL≠NIL

then INORDER(T(vL),VL) //search the left subtree

print v // visit the root

if vR≠NIL

then INORDER(T(vR),VR)//search the right subtree

end INORDER

Algorithm POSTORDER(T,v)

if vL≠NIL

then POSTORDER(T(vL),VL) //search the left subtree

if vR≠NIL

then POSTORDER(T(vR),VR) //search the right subtree

print v // visit the root

end POSTORDER

Page 14: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Tree searching

A

B H

C

D F

E I

G J L

K

*Inorder search

A B C D D C B E

F G D

nil nil

DCBFEGA….

*Postorder search

A B C

D

D C B

E

F G

E

F G

DCFGEB….

Page 15: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Tree searching e.g.) algebraic expression

1. infix a-b*c+d/e : ambiguous! 2. postfix ab-cde/+* a=6, b=4, c=5, d=2, e=2 2 522/+* 2 5 1+* 2 6* 12 ⇒ unambiguous

⇒ the method of evaluating expressions in some calculations

×

-

a b

+

c /

d e

Page 16: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Tree searching Searching General Trees

T : ordered tree

A : the set of vertices of T

B(T) : binary positional tree

If v∈A,

then the left offspring vL of v in B(T)←the first offspring of v in T

the right offspring vR of v in B(T)←the next sibling of v in T

e.g.) general tree: T corresponding binding positional tree: B(T)

1

2

5 6

4

9 10

3

7 8

11 12 13

1

2 3

4 8

9

10 5

6

7

13

12

11

Page 17: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Tree searching 7.3 Problem #2 Fig. 7.19

- preorder

- inorder

- postorder

Page 18: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Undirected trees Def.) Undirected tree:

the symmetric closure of a tree (bidirectional edges)

Undirected edge of T

The set {a,b}, where (a,b) and (b,a) are in T.

(a, b: adjacent vertices)

Def.) spanning tree

R : a connected, undirected relation on A

T : a spanning tree of R

If |A| vertices and |A|-1 edges, then the edges connect all the vertices.

Page 19: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Undirected trees

e.g.) a connected, undirected relation R

Spanning trees (not unique!) undirected spanning tree

a

b c

d e

f

a

b

d

f

e

c

b a c

d e

f f

d e

c

a

b

Page 20: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Undirected trees Algorithm Merging-process

// R : a relation on a set A

// a, b∈A

while (R′ is not undirected spanning tree)

A0=A-{a,b}

A′=A0∪{a′}, a′∉A

// R′ on A′ // u,v∈A′, where u≠a′, v≠a′ (a′, u)∈R′ iff (a,u)∈R or (b,u)∈R

(u, a′)∈R′ iff (u,a)∈R or (u,b)∈R

(u, v)∈R′ iff (u,v) ∈R

end while

End Merging-process

Page 21: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Undirected trees

e.g.) a symmetric relation

v1

v3

v4

v5

v0

v2

v6 v3 v4

v′0

v5

v2

v6

{v0, v1}

A0={v2, v3 , v4 , v5 , v6}

A′= A0∪{v′0}

={v′0, v2, v3 , v4 , v5 , v6}

{v′0, v2} A0={v3 , v4 , v5 , v6}

A′= A0∪{v′′0}

={v′′0, v3 , v4 , v5 , v6}

* Merging process

v′′0

v3 v4 v5

v6

Page 22: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Undirected trees

Matrix of R′(merging two vertices into a new vertex)

Step 1. row i-vertex a

row j-vertex b

replace row i by the join (either has a 1) of rows i and j

Step 2. Replace column i by the join of columns i and j

Step 3. Restore the main diagonal to its original values in R

(avoid cycle of length 1)

Step 4. Delete row j and column j

Page 23: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Undirected trees

v1

v3

v4

v5

v2

v6

v0

v0

v1

v2

v3

v4

v5

v6

v0

0

1

1

0

0

1

0

v1

1

0

0

1

1

0

0

v2

1

0

0

0

0

1

1

v3

0

1

0

0

0

0

0

v4

0

1

0

0

0

0

0

v5

1

0

1

0

0

0

0

v6

0

0

1

0

0

0

0

v′0

v2

v3

v4

v5

v6

v′0

0

1

1

1

1

0

v2

1

0

0

0

1

1

v3

1

0

v4

1

0

v5

1

1

v6

0

1

v′′0

v3

v4

v5

v6

v′′0 v3 v4 v5 v6

0 1 1 1 1

1

1

1

1

v3 v4

v′0

v5

v2

v6

v′′0

v3 v4 v5

v6

Page 24: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Undirected trees Algorithm Prim

//finding a spanning tree/

Do

Choose v1(∈R) and v1 is the 1st row in the matrix.

Choose v2 s.t. (v1, v2)∈R.

Merge v1 &v2 into a new vertex v′1 .

Compute the matrix of the resulting relation R′.

v′1←{v1, v2}

ST ←ST∪{(v1, v2)}

Until (|A|=1)

End Prim

// Single vertex is obtained

Page 25: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Undirected trees e.g.)

a

c

b

d c d

a b

root

<by deleting some edges of R>

a

b

c

d

a

0

0

1

1

b

0

0

1

1

c

1

1

0

0

d

1

1

0

0

a′ b

d

a′ 0

1

1

b

1

0

1

d

1

1

0

a′′ d

a′′ 0

1

a

1

0

a′′′ a′′′ 0

Merged vertices New vertex

-

a′←{a,c}

a′′←{a,c,b}

a′′′ ←{a,c,b,d}

c (a,c) a=root

b (c,b) or (a,b)

d (a,d) or

(c,d) or

(b,d)

-

Page 26: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Minimal Spanning Trees Minimal Spanning Trees

Def.) weighted graph

each edge is labeled with a numerical value (weight).

Def.) nearest neighbor of vertex

if vertices u and v are adjacent and the weight on the edge

is minimum.

Def.) minimal spanning tree

undirected spanning tree for which the total weight of the

edges in the tree is as small as possible.

Page 27: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Minimal Spanning Trees Algorithm MST-Prim

// R with n vertices

V←{v1}

E ←{ }

Do

vj∈V

vi ← nearest-neighbor(vj)

(vi, vj) does not form a cycle with members of E.

// whether the edge is “safe” or not

V ←V∪{vi}

E ←E ∪ {(vi,vj)}

Until (|E|=n-1)

End MST-Prim

Page 28: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Minimal Spanning Trees

The greedy strategy advocates making the choice that is the

best at the moment.

e.g.)

A C

B D H

E

F G

A

C

B D H

E

F

G

3

2 5 2

3

4

2

6

2 6

3 3

2 5

5 4 3

4

The root vertex : A

2

Page 29: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Minimal Spanning Trees Algorithm MST-Kruskal

// R with n vertices

// S={e1,e2,…ek}: the set of weighted edges

// e1 of least weight

E←{e1}

S←S-{e1}

Do

Select ei∈S of least weight that will not make a cycle.

E ←E∪{ei}

S ←S-{ei}

Until (|E|=n-1)

End MST-Kruskal

Page 30: Discrete Mathematicscis.catholic.ac.kr/sunoh/Courses/DiscreteM/DMChapter7.pdf · 2017-11-21 · Trees Notation v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 The root Level 0 No edges enter

Minimal Spanning Trees

e.g.) Figure 7.49 & Fig 7.55

4

8

8 7 9

10

14

4

1 2

6

2

7

11

4

8

1 2

2

4

7

9 4

8 7 9 2 4

2 1

Mst-Kruskal Mst-Prim