+ x

advertisement
Trees
Faculty of Informatics, BUU
1
Introduction to Trees
• ต้นไม้ (tree) สามารถใช้จาลองโครงสร้างต่างๆได้ เช่นโครงสร้างของ
สารประกอบอิ่มตัว โครงสร้างขององค์กร ระบบแฟ้ มในคอมพิวเตอร์ เป็ นต้น
• ต้นไม้(tree) คือกราฟเชื่อมต่อแบบไม่มีทิศทาง(connected
undirected graph) ที่ไม่มีวงจร
– Theorem: มีทางเดินอย่างง่ายเพียงเส้นทางเดียวระหว่างสองโหนด(จุด)ใดๆ
• ป่ า(forest)คือเซตของต้นไม้ที่ไม่มีโหนด(จุด)ร่ วมกัน
• จุดใบไม้(leaf) ในต้นไม้หรื อป่ า เป็ นจุดที่เป็ น pendant หรื อจุดสันโดษ
(isolated) จุดภายใน(internal)คือจุดใดๆที่ไม่ใช่จุดใบ (ดังนั้นจุด
ภายในมีดีกรี ≥ ___
2 )
Faculty of Informatics, BUU
2
กราฟรูปใดต่อไปนีเ้ ป็ นต ้นไม ้
Faculty of Informatics, BUU
3
Forest
Faculty of Informatics, BUU
4
Basic Definition
้
• ในวิชาเคมี ใชกราฟแทนโมเลกุ
ล
– จุดยอดของกราฟแทนอะตอม
– แต่ละด ้านแทนพันธะ(bond) ระหว่างอะตอม
Faculty of Informatics, BUU
5
Rooted Trees
• ต้ นไม้ ที่มีราก(rooted tree) คือ ต้นไม้ที่มีการระบุให้จุดใดจุดหนึ่ งเป็ นราก
(root)โดยทุกๆด้านจะมีทิศทางออกจากจุดราก เมื่อกาหนดให้จุดๆ หนึ่งเป็ นรากของ
ต้นไม้แล้ว เราสามารถจะกาหนดทางเดินที่เฉพาะเจาะจง(unique) จากรากไปยังจุด
ยอดอื่น ๆ ในต้นไม้ได้เสมอ
• สังเกตว่าต้นไม้ที่ไม่มีรากที่มี n โหนด จะสามารถสร้างเป็ นต้นไม้ที่มีรากได้ n ต้นที่แตกต่าง
ต้นไม้เดียวกันแต่
กัน
root เลือกจุดรากคนละจุดกัน
root
จุดใบแทนด้วยจุดสี เขียว จุดภายในแทนด้วยจุดสี น้ าตาล
Faculty of Informatics, BUU
6
Rooted Trees
• Example
Faculty of Informatics, BUU
7
คาศัพท์ ที่เกีย่ วข้ องกับต้ นไม้
พ่อ/แม่ (Parent)
ถ้า T เป็ นต้นไม้แบบมีราก และ v เป็ นจุดใน T ที่ไม่ใช่ราก แล้วพ่อ/
แม่ของจุด v คือ จุด u เมื่อมีทางเดินจากจุด u ลงมาหาจุด v โดย u
และ v ประชิดกัน และ u อยูใ่ กล้รากมากกว่า v
ลูก (Child)
เมื่อ u เป็ นพ่อ/แม่ของ v แล้วเราเรี ยก v ว่าลูกของ u
พีน่ ้ องกัน (Siblings)
จุด 2 จุดหรื อมากกว่า 2 จุด ที่มีพอ่ /แม่เดียวกันเรี ยกว่าพี่นอ้ ง
Faculty of Informatics, BUU
8
คาศัพท์ ที่เกีย่ วข้ องกับต้ นไม้
บรรพบุรุษ (Ancestor)
บรรพบุรุษของจุดใด ๆ ที่ไม่ใช่รากของต้นไม้ คือจุดทุกจุดที่อยูบ่ นวิถีจาก
รากจนถึงจุดนั้น
ลูกหลาน (Descendant)
ลูกหลานของจุด v คือ จุดทุก ๆ จุดที่มี v เป็ นบรรพบุรุษ
ใบ (Leaf)
จุดใด ๆ ที่ไม่มีลกู เรี ยกว่าใบ
จุดภายใน (Internal vertex/nodes)
จุดทุกจุดที่มีลกู คือจุดภายในหรื อเราอาจกล่าวได้วา่ จุดภายในคือจุดที่ไม่
เป็ นใบ
Faculty of Informatics, BUU
9
Rooted-Tree Terminology Example
root node
a
internal vertex
parent of g
c
b
d
e
f
leaf
h
i
Faculty of Informatics, BUU
g
siblings
10
Rooted-Tree Terminology Example
ancestors of h and i
a
c
b
d
e
h
f
g
i
Faculty of Informatics, BUU
11
Rooted-Tree Terminology Exercise
• จงหาจุด parent, c
o
k, l children, siblings, g
a, c ancestors, และ
b
l, k, q descendants
ของโหนด f
e
n
h
d
r
m
root
a
c
g
q
i
f
p
j
k
Faculty of Informatics, BUU
l
12
m-ary trees
• ต้นไม้ที่มีราก จะเรี ยกว่า m ภาค(m-ary tree) ถ้าทุกๆจุดมีลกู (children)ไม่
มากกว่า m จุด และ เรี ยกว่าต้นไม้ m ภาคเต็มต้น(full m-ary tree) ถ้าทุกๆ
จุดภายในมีลกู เท่ากับ m จุด
• ต้นไม้ 2-ary(มีลกู ไม่เกิน 2 จุด) จะเรี ยกว่าต้นไม้ทวิภาค(binary tree)
• ทฤษฎี: ต้นไม้ที่มีรากเป็ น binary tree ก็ต่อเมื่อทุกๆจุด(ยกเว้นจุดราก) มีดีกรี
≤ ___,
3 และจุดรากมีดีกรี ≤ ___
2
Faculty of Informatics, BUU
13
ต้ นใดเป็ นต้ นไม้ แบบ m ภาคเต็มต้ น?
Full 2–ary tree
Full 3–ary tree
Full 5–ary tree
Not full 3–ary tree
Faculty of Informatics, BUU
14
Some Tree Theorems
• ทฤษฎีบท 1 ต้นไม้ที่มีท้ งั หมด n จุด จะมีจานวนกิ่ง(ด้าน)
= n−1 ด้าน
Faculty of Informatics, BUU
e
15
Some Tree Theorems
• ทฤษฎีบท 2 ต้นไม้ m ภาคเต็มต้น(full m-ary tree) ที่มีจุด
ภายในจานวน i จุด จะมีจานวนจุดทั้งหมด n=mi+1 จุด และมี
จุดใบ =(m−1)i+1 จุด
Faculty of Informatics, BUU
16
Some Tree Theorems
• ทฤษฎีบท 3 ต้นไม้แบบ m ภาคที่มีจุดทั้งหมด n จุดและมีจุด
ภายในจานวน i จุดและมีจุดใบจานวน  จุด จะได้วา่
• i = (n-1)/m และ  = [(m-1)n+1]/m
• n = mi + 1 จุด และ  = (m-1)i + 1
• n = (m - 1)/(m-1) และ i = ( -1)/(m-1)
Faculty of Informatics, BUU
17
ตัวอย่ าง
• นางสาวตะวันฉายเป็ นผูเ้ ริ่ มส่ งจดหมายลูกโซ่อวยพรวันเกิดออกไป
ยังเพื่อน ๆ และขอร้องว่าให้แต่ละคนที่ได้รับจดหมายส่ งจดหมาย
ต่อไปถึงคนอื่น ๆ อีก 4 คน อยากทราบว่าจะมีคนทั้งหมดกี่คนที่
ได้อ่านจดหมายฉบับนี้รวมทั้งนางสาวตะวันฉาย ถ้ากาหนดว่าไม่มี
ใครได้รับจดหมายเกินหนึ่งฉบับ และเมื่อกระบวนการส่ งจดหมาย
ลูกโซ่สิ้นสุ ดลง มีท้ งั หมด 100 คนที่ได้อ่านจดหมายนี้แต่ไม่ยอม
ส่ งจดหมายต่อ
Faculty of Informatics, BUU
18
ตัวอย่ าง
กระบวนการส่ งจดหมายลูกโซ่เปรี ยบได้กบั ต้นไม้ 4 ภาค และจุดภายในคือ คน
ที่ส่งจดหมายต่อในขณะที่ใบคือผูท้ ี่ได้รับจดหมายแล้วไม่ส่งต่อ ให้ i แทน
จานวนจุดภายใน และ n แทนจานวนคนทั้งหมด ในที่น้ ี m = 4 จาก
ทฤษฎี จะได้วา่
n = (m -1)/m-1
= [(4  100)-1]/(4-1) = 133
ดังนั้นมีผไู ้ ด้รับจดหมายทั้งหมด 133 คน
และ
i = ( -1)/(m-1)
= (100-1)/(4-1)
= 33
ดังนั้นจานวนคนที่ส่งจดหมายต่อมีท้ งั หมด 33 คน
Faculty of Informatics, BUU
19
Some More Tree Theorems
• นิยาม: ระดับ(level) ของจุดคือความยาวของทางเดินอย่างง่ายจากราก
(root)ไปยังจุดนั้น
level 2
level 3
Faculty of Informatics, BUU
20
Some More Tree Theorems
• ความสูง(height) ของต้นไม้ คือระดับของจุดที่มากที่สุด
ระดับของราก (จุด a)= 0
ระดับของจุด b, j, k
=1
ระดับของจุด d, g, i, m, n
=3
ดังนั้น ความสู งของต้ นไม้ T = 4
ระดับของจุด c, e, f, l
ระดับของจุด h
Faculty of Informatics, BUU
=2
=4
21
Some More Tree Theorems
• ต้นไม้ m ภาค(m-ary tree) ที่มีราก ที่มีความสูง h เรี ยกว่าต้นไม้สมดุล
(balanced) ถ้าจุดใบทุกจุดอยูท่ ี่ระดับ h หรื อ h−1
• ทฤษฎีบท: มีจานวนใบอย่างมากที่สุด mh ใบ ในต้นไม้ m ภาค(m-ary
tree) ที่มีความสูง h
– ทฤษฎีบทย่ อย : ต้นไม้ m-ary ที่มีจุดใบ  ใบมีความสูง h≥logm
ถ้าเป็ นต้นไม้เต็มกิ่ง(full m-ary) และสมดุลความสูง h=logm
Faculty of Informatics, BUU
22
Applications of Trees
Binary Search Tree Format
• ข้อมูลแต่ละตัวจะถูกเก็บลงในจุด
ของต้นไม้ โดยการจัดเรี ยงข้อมูล
ในต้นไม้สาหรับทุกๆค่า x คือ,
– ทุกๆจุดที่อยูใ่ นต้นไม้ยอ่ ยด้านซ้าย
(left subtree)ของ x จะมีค่า
น้ อยกว่ า x
– ทุกๆจุดที่อยูใ่ นต้นไม้ยอ่ ยด้านขวา
(right subtree)ของ x จะมีค่า
มากกว่ า x
ตัวอย่าง:
7
3
1
0
Faculty of Informatics, BUU
12
5
2
9
8
15
11
23
Applications of Trees :Codes
Codes That Can Be Decoded
Fixed-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
Prefix codes:
– No character is the prefix of another character.
– Examples:
■ Huffman codes
Faculty of Informatics, BUU
24
Why Prefix Codes ?
• พิจารณาการกาหนดรหัสซึ่ งไม่เป็ น a prefix code:
a = 01 m = 10 n = 111 o = 0 r = 11 s = 1 t = 0011
• ดังนั้นถ้าท่านส่ งข้อความ “You are a star.”ไปให้เพื่อน
โดยท่านกาหนดรหัสของ “star” คือ “1 0011 01 11”
• เมื่อเพื่อนท่านได้รับข้อความและเกิดถอดรหัส(decodes)โดยใช้
การกาหนดรหัสข้างต้น อาจถอดรหัสเป็ นดังนี้:
100110111 = 10 0 11 0 111 = “moron”
Faculty of Informatics, BUU
25
Representing a Prefix-Code Dictionary
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
1
0
0
0
1
1
0
s
‹spc›
0
A
1
E
0
1
0
c
0
1
g
0
h
Faculty of Informatics, BUU
1
i
1
1
0
l
0
e
1
n
1
t
26
Huffman code
เป็ นรหัสที่มีความยาวไม่คงที่และมีน้ าหนักน้อยที่สุดในบรรดารหัสprefix code
ขั้นตอนวิธีของการสร้าง Huffman code โดยใช้ตน้ ไม้ทวิภาคมีดงั นี้
1. เขียนตัวอักษรและความถี่กากับจุดยอดแต่ละจุดแล้วเรี ยงความถี่จากน้อยไปหามาก
2. เชื่อมจุดยอดทางซ้าย 2 จุดกับจุดยอดใหม่ กากับจุดยอดใหม่ดว้ ยผลบวกของความถี่
3. เรี ยงความถี่จากน้อยไปหามาก
4. ทาขั้นตอนที่2 และ 3 ซ้ าไปเรื่ อยๆจนจุดยอดทั้งหมดเชื่อมกันเป็ นกราฟต้นไม้ทวิภาค
5. ลบความถี่ออก แล้วเขียน 0 กากับด้านเอียงขึ้นและเขียนเลข 1 กากับด้านเอียงลง
(ความเอียงของด้านคิดจากซ้ายไปขวา) ผลที่ได้คือ Huffman tree
Faculty of Informatics, BUU
27
Applications of Trees
• Q: Use Huffman coding to encode the following
five symbols with given frequencies:
A: 45 , B: 13 ,C: 12 , D: 16 , E: 9, F: 5
f:5
e:9
c:12
b:13
d:16
Faculty of Informatics, BUU
a:45
28
Huffman’s Algorithm
14
f:5
e:9
c:12
b:13
Faculty of Informatics, BUU
d:16
a:45
29
Huffman’s Algorithm
c:12
14
b:13
f:5
d:16
a:45
e:9
Faculty of Informatics, BUU
30
Huffman’s Algorithm
25
c:12
14
b:13
f:5
d:16
a:45
e:9
Faculty of Informatics, BUU
31
Huffman’s Algorithm
14
f:5
25
d:16
e:9
c:12
Faculty of Informatics, BUU
a:45
b:13
32
Huffman’s Algorithm
30
14
f:5
25
d:16
e:9
c:12
Faculty of Informatics, BUU
a:45
b:13
33
Huffman’s Algorithm
25
c:12
30
14
b:13
f:5
a:45
d:16
e:9
Faculty of Informatics, BUU
34
Huffman’s Algorithm
55
25
c:12
30
14
b:13
f:5
a:45
d:16
e:9
Faculty of Informatics, BUU
35
Huffman’s Algorithm
55
a:45
25
c:12
30
14
b:13
f:5
d:16
e:9
Faculty of Informatics, BUU
36
Huffman’s Algorithm
100
0
1
55
a:45
0
0
1
25
0
30
1
0
1
c:12
b:13
14
d:16
100
101 0
1 111
f:5
e:9
1100
1101
Faculty of Informatics, BUU
37
Tree Traversal
• Is a procedure that systematically visits
every vertex of an ordered rooted tree.
– Visiting a vertex = processing the data at the
vertex.
• อัลกอริ ธึมในการท่องไปบนต้นไม้(Traversal algorithms)
• Pre-order traversal NLR (node,left,right)
• In-order traversal LNR (left,node,right)
• Post-order traversal LRN (left,right, node)
Faculty of Informatics, BUU
38
Tree Traversal
• Let T be an ordered rooted tree with root r. Suppose that
T1, T2, …, Tn are the subtrees at r from left to right in T.
55
T1
r
24
3
49
46
45
94
T2
60
52
58
88
76
Faculty of Informatics, BUU
91
39
Preorder Traversal
• Begins by visiting r.
• Next traverses T1 in preorder, then T2 in preorder, …, then
Tn in preorder.
• Ends after Tn has been traversed.
Faculty of Informatics, BUU
40
Preorder Traversal
• Visit root, visit subtrees left to right.
Faculty of Informatics, BUU
41
Preorder Traversal
Faculty of Informatics, BUU
42
Inorder Traversal
• Begins by traversing T1 in inorder
• Next visit r, then traverses T2 in inorder, …, then Tn in inorder.
• Ends after Tn has been traversed.
Faculty of Informatics, BUU
43
Inorder Traversal
• Visit leftmost subtree,visit root, visit other subtrees left to right.
Faculty of Informatics, BUU
44
Inorder Traversal
Faculty of Informatics, BUU
45
Postorder Traversal
• Begins by traversing T1 in postorder
• Next traverses T2 in postorder,then T3 in postorder,...,then
Tn in postorder
• End by visiting r
Faculty of Informatics, BUU
46
Postorder Traversal
• Visit subtree left to right,visit root.
Faculty of Informatics, BUU
47
Postorder Traversal
Faculty of Informatics, BUU
48
Postorder Traversal
• Applications: compute space used by files in a
directory and its subdirectories.
Faculty of Informatics, BUU
49
Tree Traversal Shortcut
• Preorder list is obtained by
– listing each vertex the first time this
curve passes it.
– Result: a, b, d, h, e, i, j, c, f, g, k.
• Inorderlist is obtained by
– listing a leaf the first time the curve
passes it and
– listing each internal vertex the second
time the curve passes it.
– Result: h, d, b, i, e, j, a, f, c, k, g.
• Postorderlist is obtained by
– listing a vertex the last time it is passes
on the way back up to its parent.
– Result: h, d, i, j, e, b, f, k, g, c, a.
Faculty of Informatics, BUU
50
Representing Arithmetic Expressions
• Complicated arithmetic expressions can be
represented by an ordered rooted tree
– Internal vertices represent operators
– Leaves represent operands
• Build the tree bottom-up
– Construct smaller subtrees
– Incorporate the smaller subtrees as part of larger
subtrees
Faculty of Informatics, BUU
51
Example
(x+y)2 + (x-3)/(y+2)
+

+
x
/
2
y
–
+
x 3 y 2
Faculty of Informatics, BUU
52
Infix Notation
• Traverse in inorder adding parentheses for
each operation
+

+
x
/
2
y
–
+
x 3 y 2
( ((x + y )  2 ) +( ( x – 3 ) / ( y + 2 ) ) )
Faculty of Informatics, BUU
53
Prefix Notation
(Polish Notation)
• Traverse in preorder
+

+
x
/
2
y
–
+
x 3 y 2
+  + x y 2 / – x 3 + y 2
Faculty of Informatics, BUU
54
Evaluating Prefix Notation
• In an prefix expression, a binary operator
precedes its two operands
• The expression is evaluated right-left
• Look for the first operator from the right
• Evaluate the operator with the two operands
immediately to its right
Faculty of Informatics, BUU
55
Example
+ / + 2 2 2 / – 3 2 + 1 0
+ / + 2 2 2 / – 3 2 1
+ / + 2 2 2 / 1 1
+ / + 2 2 2 1
+ / 4 2 1
+ 2 1
3
Faculty of Informatics, BUU
56
Postfix Notation
(Reverse Polish)
• Traverse in postorder
+

+
x
/
2
y
–
+
x 3 y 2
x y + 2  x 3 – y 2 + /+
Faculty of Informatics, BUU
57
Evaluating Postfix Notation
• In an postfix expression, a binary operator
follows its two operands
• The expression is evaluated left-right
• Look for the first operator from the left
• Evaluate the operator with the two operands
immediately to its left
Faculty of Informatics, BUU
58
Example
2 2 + 2 / 3 2 – 1 0 + / +
4 2 / 3 2 – 1 0 + / +
2 3 2 – 1 0 + / +
2 1 1 0 + / +
2 1 1 / +
2 1 +
3
Faculty of Informatics, BUU
59
Tree Traversal
+
prefix expression
7
infix expression
^
5
(- ( + 5(^ ( + 8 (* 3 4 )) 2 ))7 )
((5+((8+(3*4))
2
+
8
*
3
^2))-7)
postfix expression
5 8 3 4 * + 2
^
+ 7 -
4
Faculty of Informatics, BUU
60
Download