trees dr. b. prabhakaran {[email protected]}. application examples useful for locating items in a...

103
Trees Dr. B. Prabhakaran {[email protected]}

Upload: corey-stafford

Post on 04-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Trees

Dr. B. Prabhakaran {[email protected]}

Page 2: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Application Examples

Useful for locating items in a list Used in Huffman coding algorithm Study games like checkers and

chess to determine winning strategies

Weighted trees used to model various categories of problems

Page 3: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Trees

Definition: A connected undirected graph with no simple circuits

Characteristics- No multiple edges- No loops

Page 4: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Example

UT Dallas

School of Engineering

School of Management

School of Arts

School of Social Sciences

CS EE TE Cohort

MBA

Page 5: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Which of the following graphs are trees?

a

c

b

d

fe

b

a

e

f

cd

f

a

b c

de

a

bd

c

e

f

A B C D

A & B : Trees

C: Not a Tree (Cycle abdcfa)

D: Not a Tree (Not connected). However it is a forest i.e. unconnected graphs

Page 6: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree Theorem

Theorem 1 : An undirected Graph is a tree if and only if there is a unique simple path between any two of its verticesProof (=>) The graph is a Tree and it does not have cycles. If there were cycles then there will be more than one simple path between two vertices. Hence, there is a unique simple path between every pair of vertices

Proof (<=) There exists a unique simple path between any pair of vertices. Therefore the graph is connected and there are no cycles in the graph. Hence, the graph is a tree

Page 7: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree terminologyRooted tree: one vertex designated as root and every edge directed away

Parent: u is the parent of v iff (if and only if) there is an edge directed from u to v

Child: v is called the child of u

Every non-root node has a unique parent (?)

Page 8: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Siblings: vertices with same parent

Ancestors: all vertices on path from the root to this vertex, excluding the vertex

Descendants: Descendants of vertex v are all vertices that have v as an ancestor

Internal Nodes: Nodes that have children

External or Leaf Nodes: Nodes that have no children

Tree terminology

Page 9: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

A

B

C

D E

F

G H I J K

Root Node = A

Internal Nodes = B, C, E and F

External Nodes = D,G, H ,I, J and K

Given : Tree rooted at A

Find: Descendants (B), Ancestor (A), Siblings (G) ?

Page 10: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Definition - Level

The level of vertex v in a rooted tree is the length of the unique path from the root to v

Page 11: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

What is the level of Ted?

Hal

Lou

Ken

Joe Ted

Sue Ed

Max

Page 12: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Definition - Height

The height of a rooted tree is the maximum of the levels of its vertices

Page 13: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

What is the height?

Hal

Lou

Ken

Joe Ted

Sue Ed

Max

Page 14: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Definition: m-ary trees Rooted tree where every vertex

has no more than ‘m’ children

Full m-ary if every internal vertex has exactly ‘m’ children (i.e., except leaf/external vertices).

m=2 gives a binary tree

Page 15: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Example: 3-ary tree

Page 16: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Definition: Binary Tree Every internal vertex has a maximum of

2 children

An ordered rooted tree is a rooted tree where the children of each internal vertex are ordered.

In an ordered binary tree, the two possible children of a vertex are called the left child and the right child, if they exist.

Page 17: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

An Ordered Binary Tree

Hal

Lou

Ken

Joe Ted

Sue Ed

Max

Page 18: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Definition: Balanced

A rooted binary tree of height h is called balanced if all its leaves are at levels h or h-1

Page 19: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Is this tree balanced?

Hal

Lou

Ken

Joe Ted

Sue Ed

Max

Page 20: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree Property 1

Theorem 2 : A tree with n vertices has n-1 edgesProof: By induction

Basis Step: for n = 1 there are (1 – 1) 0 edges

Inductive Step: We assume that n vertices has n – 1 edges . We need to prove that n + 1 vertices have n edges.

A tree with n + 1 vertices can be achieved by adding an edge from a vertex of the tree to the new vertex (why 1 edge ?). The total number of edges is (n – 1 + 1 = n).

Page 21: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree Property 2

Theorem 3: A full m-ary tree with i internal vertices contains n = mi +1 vertices

Proof: i internal vertices have m children. Therefore, we have mi vertices. Since the root is not a child we have n = mi + 1 vertices.

Page 22: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree Property 3Theorem 4: A full m-ary tree with1) n vertices has i = (n-1)/m internal vertices and

l = [(m-1)n+1]/m leaves

2) i internal vertices has n = mi + 1 vertices and

l = (m-1)i+1 leaves

3) l leaves has n = (ml-1)/(m-1) vertices and i = (l-1)/(m-1) internal vertices

Page 23: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree Property 4Theorem 5 – Proof for 1)l: Number of leavesi: Number of internal verticesn: total number of vertices.

By theorem 3, n = mi + 1, and we have n = l + i (why ?)n = mi + 1 => i = (n-1)/m By subsitution in n = l + i l = n – i l = n – (n-1)/m [(m-1)n+1]/m

Page 24: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree Property 4Theorem 5 – Proof for 2)l: Number of leavesi: Number of internal verticesn: total number of vertices.

By theorem 3, n = mi + 1, and we have n = l + i By subsitution in n = l + i l + i = mi + 1 l = (m-1) i + 1

Page 25: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree Property 4Theorem 5 – Proof for 3)l: Number of leavesi: Number of internal verticesn: total number of vertices.

By theorem 3, n = mi + 1, and we have n = l + i (i = n – l)By subsitution of i in n = mi + 1 n = m (n –l) + 1 n (m -1) = (ml -1) n = (ml -1)/ (m -1)

By subsitution of n in i = n – l we have i = (l – 1)/(m – 1)

Page 26: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree Property 5

Theorem 6: There are at most mh leaves in a m-ary tree of height h

Proof: By Induction

Basic Step: m-ary tree of height 1 => leaves = m which is true since the root has m-ary children

Page 27: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree Property 5Inductive Step: Assume that the result is true for tree of height less

than h

Let Tree T be m-ary of height h

To build T we can add m such sub-tree of height ≤ h -1 such that the root node acts as the child to the root of T

T has ≤ m.mh -1 ≤ mh

Page 28: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like
Page 29: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Applications of trees

Binary Search Trees

Decision Trees

Prefix Codes

Game Trees

Page 30: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Binary Search Trees (BST)

Applications

A Binary Search Tree can be used to store items in its vertices

It enables efficient searches

Page 31: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Definition: BST

A special kind of binary tree in which: Each vertex contains a distinct key value, The key values in the tree can be compared using “greater than” and “less than”, and The key value of each vertex in the tree is

less than every key value in its right subtree,

and greater than every key value in its left subtree.

Page 32: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Shape of a binary search treeDepends on its key values and their order of insertion.

Example: Insert the elements 6, 3, 4, 2, 10 in that order . The first value to be inserted is put into the root

6

Page 33: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Shape of a binary search tree

Inserting 3 into the BST

6

3

Page 34: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Shape of a binary search tree

Inserting 4 into the BST

6

3

4

Page 35: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Shape of a binary search tree

Inserting 4 into the BST

6

3

42

Page 36: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Shape of a binary search tree

Inserting 10 into the BST

6

3

42

10

12

Page 37: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Binary search tree algorithm 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 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 right child of v to T 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}

Page 38: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Codes

Text Encoding

Our next goal is to develop a code that represents a given text as compactly as possible.A standard encoding is ASCII, which represents every character using 7 bits:“An English sentence” = 133 bits ≈ 17 bytes

1000001 (A) 1101110 (n) 0100000 ( ) 1000101 (E) 1101110 (n) 1100111 (g)1101100 (l) 1101001 (i) 1110011 (s) 1101000 (h)

0100000 ( ) 1110011 (s) 1100101 (e) 1101110 (n) 1110100 (t) 1100101 (e) 1101110 (n) 1100011 (c)1100101 (e)

Page 39: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Codes

Text Encoding

Of course, this is wasteful because we can encode 12 characters in 4 bits:‹space› = 0000 A = 0001 E = 0010 c = 0011 e = 0100 g = 0101 h = 0110

i = 0111 l = 1000 n = 1001 s = 1010 t = 1011Then we encode the phrase as0001 (A) 1001 (n) 0000 ( ) 0010 (E) 1001 (n) 0101 (g) 1000 (l) 0111 (i)

1010 (s) 0110 (h) 0000 ( ) 1010 (s) 0100 (e) 1001 (n) 1011 (t) 0100 (e)1001 (n) 0011 (c) 0100 (e)

This requires 76 bits ≈ 10 bytes

Page 40: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Codes

Text Encoding

An even better code is given by the following encoding:

‹space› = 000 A = 0010 E = 0011 s = 010 c = 0110 g = 0111 h = 1000 i = 1001 l = 1010 t = 1011 e = 110 n = 111

Then we encode the phrase as

0010 (A) 111 (n) 000 ( ) 0011 (E) 111 (n) 0111 (g) 1010 (l) 1001 (i) 010 (s) 1000 (h) 000 ( ) 010 (s) 110 (e) 111 (n) 1011 (t) 110 (e) 111 (n) 0110 (c) 110 (e)

This requires 65 bits ≈ 9 bytes

Page 41: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Codes

Codes That Can Be DecodedFixed-length codes:

Every character is encoded using the same number of bits.

To determine the boundaries between characters, we form groups of w bits, where w is the length of a character.

Examples:■ ASCII■ Our first improved code

Prefix codes: No character is the prefix of another character. Examples:■ Fixed-length codes■ Huffman codes

Page 42: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Why Prefix Codes ?

Consider a code that is not a prefix code:

a = 01 m = 10 n = 111 o = 0 r = 11 s = 1 t = 0011

Now you send a fan-letter to your favorite movie star. One of the sentences is “You are a star.”

You encode “star” as “1 0011 01 11”. Your idol receives the letter and decodes the text using

your coding table:

100110111 = 10 0 11 0 111 = “moron”

Page 43: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Our example: ‹space› = 000 A = 0010 E = 0011 s = 010 c = 0110 g = 0111 h = 1000 i = 1001 l = 1010 t = 1011 e = 110 n = 111

Representing a Prefix-Code Dictionary

‹spc›

A E

s

c g h i l t

e n

0 1

0

0

0

0

0

0

00

0 0

1

11

1 1 1 1

1 1

1

Page 44: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Huffman(C)1 n ← |C|2 Q ← C3 for i = 1..n – 14 do allocate a new node z5 left[z] ← x ← Delete-Min(Q)6 right[z] ← y ← Delete-Min(Q)7 f [z] ← f [x] + f [y]8 Insert(Q, z)9 return Delete-Min(Q)

Huffman’s Algorithm

f:5 b:13c:12 d:16e:9 a:45

Page 45: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Huffman’s Algorithm

f:5 b:13c:12 d:16e:9 a:45

14

Huffman(C)1 n ← |C|2 Q ← C3 for i = 1..n – 14 do allocate a new node z5 left[z] ← x ← Delete-Min(Q)6 right[z] ← y ← Delete-Min(Q)7 f [z] ← f [x] + f [y]8 Insert(Q, z)9 return Delete-Min(Q)

Page 46: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Huffman’s Algorithm

f:5

b:13c:12 d:16

e:9

a:4514Huffman(C)1 n ← |C|2 Q ← C3 for i = 1..n – 14 do allocate a new node z5 left[z] ← x ← Delete-Min(Q)6 right[z] ← y ← Delete-Min(Q)7 f [z] ← f [x] + f [y]8 Insert(Q, z)9 return Delete-Min(Q)

Page 47: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Huffman’s Algorithm

f:5

b:13c:12 d:16

e:9

a:4514

25Huffman(C)1 n ← |C|2 Q ← C3 for i = 1..n – 14 do allocate a new node z5 left[z] ← x ← Delete-Min(Q)6 right[z] ← y ← Delete-Min(Q)7 f [z] ← f [x] + f [y]8 Insert(Q, z)9 return Delete-Min(Q)

Page 48: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Huffman’s Algorithm

f:5 b:13c:12

d:16

e:9

a:4514 25Huffman(C)1 n ← |C|2 Q ← C3 for i = 1..n – 14 do allocate a new node z5 left[z] ← x ← Delete-Min(Q)6 right[z] ← y ← Delete-Min(Q)7 f [z] ← f [x] + f [y]8 Insert(Q, z)9 return Delete-Min(Q)

Page 49: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Huffman’s Algorithm

f:5 b:13c:12

d:16

e:9

a:4514 25

30Huffman(C)1 n ← |C|2 Q ← C3 for i = 1..n – 14 do allocate a new node z5 left[z] ← x ← Delete-Min(Q)6 right[z] ← y ← Delete-Min(Q)7 f [z] ← f [x] + f [y]8 Insert(Q, z)9 return Delete-Min(Q)

Page 50: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Huffman’s Algorithm

f:5

b:13c:12 d:16

e:9

a:45

14

25 30Huffman(C)1 n ← |C|2 Q ← C3 for i = 1..n – 14 do allocate a new node z5 left[z] ← x ← Delete-Min(Q)6 right[z] ← y ← Delete-Min(Q)7 f [z] ← f [x] + f [y]8 Insert(Q, z)9 return Delete-Min(Q)

Page 51: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Huffman’s Algorithm

f:5

b:13c:12 d:16

e:9

a:45

14

25 30

55Huffman(C)1 n ← |C|2 Q ← C3 for i = 1..n – 14 do allocate a new node z5 left[z] ← x ← Delete-Min(Q)6 right[z] ← y ← Delete-Min(Q)7 f [z] ← f [x] + f [y]8 Insert(Q, z)9 return Delete-Min(Q)

Page 52: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Huffman’s Algorithm

f:5

b:13c:12 d:16

e:9

a:45

14

25 30

55Huffman(C)1 n ← |C|2 Q ← C3 for i = 1..n – 14 do allocate a new node z5 left[z] ← x ← Delete-Min(Q)6 right[z] ← y ← Delete-Min(Q)7 f [z] ← f [x] + f [y]8 Insert(Q, z)9 return Delete-Min(Q)

Page 53: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Huffman’s Algorithm

f:5

b:13c:12 d:16

e:9

a:45

14

25 30

55

100

0 1

0

0 0

0

1

1 1

1

0

100 101

1100 1101

111

Huffman(C)1 n ← |C|2 Q ← C3 for i = 1..n – 14 do allocate a new node z5 left[z] ← x ← Delete-Min(Q)6 right[z] ← y ← Delete-Min(Q)7 f [z] ← f [x] + f [y]8 Insert(Q, z)9 return Delete-Min(Q)

Page 54: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Game Trees

Writing down all the possible moves by both players down onto a tree Root node represents the current status Internal nodes at even levels correspond to positions in which the first player

is to move (MAX nodes) Internal nodes at odd levels correspond to positions in which the second

player is to move (Min nodes) Leaves correspond to positions at which the game has ended. One player or

the other has won, or perhaps the game is drawn.

Page 55: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Game Trees: Partial Game Tree for Tic-Tac-Toe

Here's a little piece of the game tree for Tic-Tac-Toe, starting from an empty board. Note that even for this trivial game, the search tree is quite big.

Page 56: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Game Trees In case of TIC TAC TOE, there are 9 choices for the first

player

Next, the opponent have 8 choices, …, and so on

Number of nodes = 1 + 9 + 9*8 + 9*8*7 + … +9*8*7*6*5*4*3*2*1 = ???

Exponential order of nodes

If the depth of the tree is m and there are b moves at each node, the time complexity of evaluating all the nodes are O(bm)

Even in case of TICTACTOE, there are so many nodes

Page 57: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Game Trees: Min-Max Procedure So instead of expanding the whole tree, we use a min-max

strategy Starting from the current game position as the node, expand the

tree to some depth Apply the evaluation function at each of the leaf nodes “Back up” values for each of the non-leaf nodes until a value is

computed for the root node At MIN nodes, the backed-up value is the minimum of the values

associated with its children. At MAX nodes, the backed-up value is the maximum of the values

associated with its children. Pick the edge at the root associated with the child node whose

backed-up value determined the value at the root

Page 58: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Game Trees: Minimax Search

2 7 1 8

MAX

MIN

2 7 1 8

2 1

2 7 1 8

2 1

2

2 7 1 8

2 1

2This is the moveselected by minimaxStatic evaluator

value

Page 59: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Tree Traversal

Information is stored in Ordered Rooted tree Methods are needed for visiting each vertex

of the tree in order to access data Three most commonly used traversal

algorithms are:1. Preorder Traversal2. Inorder Traversal3. Postorder Traversal

Page 60: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Preorder Traversal Let T be an ordered binary tree with root r

If T has only r, then r is the preorder traversal. Otherwise, suppose T1, T2 are the left and right subtrees at r. The preorder traversal begins by visiting r. Then traverses T1 in preorder, then traverses T2 in preorder.

Page 61: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Preorder Traversal Example: J E A H T M Y

‘J’

‘E’

‘A’ ‘H’

‘T’

‘M’ ‘Y’

Page 62: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Preorder Traversal

Procedure preorder (T: ordered rooted tree)r := root of TList r;for each child c of r from left to right

T(c) := subtree with c as its rootpreorder(T(c));

End.

Page 63: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Inorder Traversal

Let T be an ordered binary tree with root r.

If T has only r, then r is the inorder traversal. Otherwise, suppose T1, T2 are the left and right subtrees at r. The inorder traversal begins by traversing T1 in inorder. Then visits r, then traverses T2 in inorder.

Page 64: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

‘J’

‘E’

‘A’ ‘H’

‘T’

‘M’ ‘Y’

Inorder Traversal: A E H J M T Y

Page 65: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Inorder Traversal

Procedure inorder (T: ordered rooted tree)r := root of Tif r is a leaf then list relsebeginl := first child of r from left to right;T(l) := subtree with l as its rootinorder (T(l));list r;for each child c of r except for l from left to right

T(c) := subtree with c as its rootinorder(T(c));

End.

Page 66: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Postorder Traversal

Let T be an ordered binary tree with root r.

If T has only r, then r is the postorder traversal. Otherwise, suppose T1, T2 are the left and right subtrees at r. The postorder traversal begins by traversing T1 in postorder. Then traverses T2 in postorder, then ends by visiting r.

Page 67: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

‘J’

‘E’

‘A’ ‘H’

‘T’

‘M’ ‘Y’

Postorder Traversal: A H E M Y T J

Page 68: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Postorder Traversal

Procedure postorder (T: ordered rooted tree)r := root of Tfor each child c of r from left to right

T(c) := subtree with c as its rootpostorder(T(c));

End.List r.

Page 69: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Binary Expression Tree Ordered rooted tree representing complicated expression such

compound propositions, combinations of sets, and arithmetic expression are called Binary Expression Tree.

In this special kind of tree,

1. Each leaf node contains a single operand,

2. Each nonleaf node contains a single binary operator, and

3. The left and right subtrees of an operator node represent

subexpressions that must be evaluated before applying the

operator at the root of the subtree.

Page 70: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Infix, Prefix, and Postfix Expressions

‘*’

‘-’

‘8’ ‘5’

‘/’

‘+’

‘4’

‘3’

‘2’

What infix, prefix, postfix expressions does it represent?

Page 71: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Infix, Prefix, and Postfix Expressions

‘*’

‘-’

‘8’ ‘5’

‘/’

‘+’

‘4’

‘3’

‘2’

Infix: ( ( 8 - 5 ) * ( ( 4 + 2 ) / 3 ) )

Prefix: * - 8 5 / + 4 2 3

Postfix: 8 5 - 4 2 + 3 / *

Page 72: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Spanning Tree

A spanning tree of a (connected) graph

G is a connected, acyclic subgraph of G

that contains all of the vertices of G

Page 73: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Spanning Tree Example

Below is an example of a spanning tree T, where the

edges in T are drawn as solid lines and the edges in G

but not in T are drawn as dotted lines.AB

C

D

E

JI

H

G

F

Page 74: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Algorithms to find spanning tree in a graph

Depth-First-Search (DFS)

Breadth-First-Search (BFS)

Page 75: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Depth First Search (DFS)

• The algorithm starts from a node, selects a node connected to it, then selects a node connected to this new node and so on, till no new nodes remain.

• Then, it backtracks to the node next to the last one and discovers any new nodes connected to it.

• Move back 2 vertices in the path and try again.• Repeat this move back operation until no more edges to be added.

• A different ordering of the vertices can lead to a different DFS spanning tree

• Stacks are used to implement DFS algorithms

Page 76: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

DFS Example

2

5

3

1

4

Page 77: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

DFS Example

2

5

3

1

4

Page 78: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

DFS Example

2

5

3

1

4

Page 79: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

DFS Example

2

5

3

1

4

Page 80: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

DFS Example

2

5

3

1

4

Page 81: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Algorithm for DFS

Page 82: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Breadth First Search (BFS) Compared to DFS breadth first search is a simple

algorithm

Timidly tries one edge. Totally exhaust neighbors of a vertex then goes to next neighbors. It radiates in waves in balanced manner.

Implemented using queues

Whatever is in queues tells u what to explore next. Once the queue is empty algorithm comes to an end

Page 83: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Algorithm for BFS

Page 84: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

BFS Example

2

5

3

1

4

Page 85: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

BFS Example

2

5

3

1

4

Page 86: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

BFS Example

2

5

3

1

4

Page 87: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

BFS Example

2

5

3

1

4

Page 88: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

BFS Example

2

5

3

1

4

Page 89: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Given: Graph G=(V, E), |V|=n Cost function c: E R .

Goal: Find a minimum-cost spanning tree for V i.e., find a subset of arcs E* E which connects any two nodes of V with minimum possible cost

Example:

2

3

3

44

5

7

8

e

b

c

d

a

23

3

44

5

7

8

e

b

c

d

a

G=(V,E) Min. span. tree: G*=(V,E*)

Red bold arcs are in E*

Minimum Spanning Tree (Min SPT)

Page 90: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Algorithms for Min SPT

Prim’s Algorithm

Kruskal’s Algorithm

Page 91: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Prims Algorithm

Procedure Prims (G: weighted connected undirected graph with n vertices)

T := a minimum-weight edgeFor i := 1 to n-2Begin

e:= an edge of minimum weight incident to a vertex in T and not forming a simple circuit in T if added to TT := T with e added

End {T is a minimum spanning tree of G}

Page 92: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Prim’s Example

Initially

a

c e

db2

74

38

3

4

5 T = {}

Page 93: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Prim’s Example

Initial step, chose min weight edge

a

c e

db2

74

38

3

4

5 T = {{a, b}}

Page 94: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Prim’s Example

Iteration 1

a

c e

db2

74

38

3

4

5 T = {{a, b}, {b, c}}

Page 95: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Prim’s Example

Iteration 2

a

c e

db2

74

38

3

4

5 T = {{a, b}, {b, c}, {b, d}}

Page 96: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Prim’s Example

Iteration 3

a

c e

db2

74

38

3

4

5T = {{a, b}, {b, c}, {b, d} , {c, e}}

Page 97: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Kruskal’s algorithmProcedure Kruskal (G: weighted connected undirected

graph with n vertices)T := empty graphFor i := 1 to n-1Begin

e := any edge in G with smallest weight that does not form simple circuit when added to T

T := T with e addedEnd { T is the minimum spanning tree of G}

Page 98: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Kruskal’s Example

Initially

a

c e

db2

74

38

3

4

5 T = {}

Page 99: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Kruskal’s Example

Iteration 1

a

c e

db2

74

38

3

4

5 T = {{a, b}}

Page 100: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Kruskal’s Example

Iteration 2

a

c e

db2

74

38

3

4

5 T = {{a, b}, {b, c}}

Page 101: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Kruskal’s Example

Iteration 3

a

c e

db2

74

38

3

4

5 T = {{a, b}, {b, c}, {b, d}}

Page 102: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Kruskal’s Example

Iteration 4

a

c e

db2

74

38

3

4

5T = {{a, b}, {b, c}, {b, d} , {c, e}}

Page 103: Trees Dr. B. Prabhakaran {praba@utdallas.edu}. Application Examples Useful for locating items in a list Used in Huffman coding algorithm Study games like

Prim’s and Kruskal’s

Prim’s Chosen edges: minimum weight &

incident to a vertex already in the tree.

Kruskal’s Chosen edge: minimum weight & not

necessarily incident to a vertex in the tree.