Transcript Document

MAT 231: คณิตศาสตร์ ไม่ ต่อเนื่อง
(6)
ทรี-ต้ นไม้ (Trees)
ดร.ธนา สุ ขวารี
ดร.สุ รศักดิ์ มังสิ งห์
SPU, Computer Science Dept.
1
วัตถุประสงค์
• เพื่อศึกษาหลักการเบื้องต้นเกี่ยวกับทรี (tree)หรื อต้นไม้ในทาง
คอมพิวเตอร์
• ประยุกต์ความสัมพันธ์ของข้อมูลในรู ปทรี สาหรับกระบวนการ
ทางคอมพิวเตอร์
2
Outline
• Terminology:
• Tree application:
– Binary search tree(BST)
• Tree spanning:
– Minimum spanning tree by Prim’s algorithm
• Traversal:
– Pre-order, In-order and Post-order
3
คาศัพท์ เกีย่ วข้ อง
(Terminologies)
• โครงสร้างของทรี (structural)
– ราก(root), ใบ(leaf) , โหนดภายใน(internal node), กิ่ง(branch),
ต้นไม้ยอ่ ย(subtree),
• ความสัมพันธ์(Relationship)
– พ่อไม้:parent( predecessor ), ลูก:child( successor ), พี่
น้อง:sibling
• ชนิดของทรี (Types)
– n-ary tree, binary tree
• คุณสมบัติ(Properties)
– ระดับ(level) และความสูง(height)ของทรี
4
ทรี(Trees)
• ทรี กล่าวได้วา่ เป็ น กราฟเชื่อมโยงแบบไม่ระบุทิศทาง (connected
undirected graph) ซึ่ งจะต้องไม่มีวงจรเกิดขึ้น (circuit)
• ทรี หลายทรี อยูท่ ี่เดียวกันเรี ยกว่า ป่ า(forest)
• โครงสร้างของ ทรี ประกอบไปด้วย เซตของโหนด(เทียบแล้วคือจุด บน
กราฟ) กับเซตของเส้นเชื่อมโยงระหว่างโหนด(เทียบแล้วคือ เส้น บนกราฟ)
• มีการกาหนดโหนดพิเศษที่เกิดเป็ นโหนดแรกบนทรี ถกู เรี ยกว่าโหนดราก
(root node)
5
โครงสร้ างและองค์ ประกอบของทรี
Tree
A
B
C
D
Graph
E
F
G
I
H
A
J
K
L
M
B
E
ทรี ต่ างกับกราฟอย่ างไร ?
C
F
J
G
K
D
I
H
L
M
6
ตัวอย่ างทรี และ ป่ า
(Tree and Forest Examples)
• A Tree:
• A Forest:
Leaves in green, internal nodes in brown.
7
โครงสร้ างและองค์ ประกอบของทรี
Forest F ={T1, T2, T3}
ฐานข้อมูล
นักศึกษา CS
F
T1
T3
ฐานข้อมูล
นักศึกษา ICT
อมูล
T2 ฐานข้
นักศึกษา CPE
8
โครงสร้ างและองค์ ประกอบของทรี
T:
root
Height
A
sibling
B
E
C
F
J
G
K
D
2
I
H
L
1
3
M
4
leaf
Leaf of T = {E,J,K,G,H,L,M}
A เป็น โหนดพ่อแม่ ของ B,Cและ D
B, C, D เป็น โหนดพี่นอ
้ ง ที่มี โหนด A เป็นโหนดพ่อแม่
9
ต้ นไม้ ย่อย หรือ สั บทรี (subtree)
T:
A
A
B
E
C
F
J
G
K
B
D
E
I
H
L
M
F
J
T3
D
T2
C
T1
G
K
I
H
L
M
ต้ นไม้ T ประกอบด้ วย ต้ นไม้ ย่อย T1, T2, T3
• ต้ นไม้ ย่อย T1 มีโหนด B เป็ น root
• ต้ นไม้ ย่อย T2 มีโหนด C เป็ น root
• ต้ นไม้ ย่อย T3 มีโหนด D เป็ น root
10
n-ary trees
• แต่ละโหนดบนทรี (ยกเว้นโหนดใบ) จะมีจานวนโหนดลูกไม่เกิน n
โหนด
• ถ้า n ของ n-ary tree มีค่า n= 2 จะเรี ยน 2-ary tree ซึ่ง
หมายถึง ไบนารี ทรี (binary tree)
11
n-ary tree & binary tree
level-0
T1
1
A
level-1
B
C
height
2
E
D
T2
level-2
F
G
H
H
I
3
K
A
B
4-ary tree
D
C
E
F
binary
tree
G
12
ไบนารีทรี (ต้ นไม้ ทวิภาค)
T
Binary tree
A
B
D
C
E
F
G
N = 2h -1
เมือ่ N แทนจานวนโหนดทั้งหมดของ
ไบนารีทรี ทีม่ คี วามสู ง h
เช่ น ไบนารีทรีทมี่ คี วามสู งเท่ ากับ 3 จะมีจานวน
โหนดมากทีส่ ุ ดบนไบนารีทรีเท่ ากับ 7
การประยุกต์ ใช้ ทรี กับการค้ นหา
(Binary Search Tree :BST)
T จะเป็ น BST ถ้า
(1) T ต้องเป็ น ไบนารี ทรี
(2) และทุกโหนดในต้นไม้ยอ่ ยทางซ้าย
มีค่าน้อยกว่าทุกโหนดที่เป็ นโหนดราก
ของต้นไม้ยอ่ ยและทุกโหนดใน
ต้นไม้ยอ่ ยทางขวา
T:
7
3
1
0
12
5
2
9
8
15
11
14
Recursive Binary Tree Insert
procedure insert(T: binary tree, x: item)
v := root[T]
if v = null then begin
root[T] := x; return “Done” end
else if v = x return “Already present”
else if x < v then
return insert(leftSubtree[T], x)
else {must be x > v}
return insert(rightSubtree[T], x)
15
การสร้ าง BST
• ตัวอย่าง เมื่อกาหนดข้องมูล(ที่นาไปสร้าง BST)โดยมีลาดับการเข้า
ข้อมูลของต้นไม้ BST ดังนี้ {7,3,12,1,5, 9,15,0,2,8,11 }
7
7
3
3
7
7
7
3
12
1
นักศึกษาสร้างต่อให้เสร็จ ?
3
12
1
12
5
การสร้ าง BST
{7,3,12,1,5,9,15,0,2,8,11 }
7
7
3
1
3
12
5
1
7
12
5
9
3
1
12
5
9
15
17
การสร้ าง BST
{7,3,12,1,5,9,15,0,2,8,11 }
7
7
3
1
0
3
12
5
9
15
0
12
5
1
2
7
9
3
15
0
12
9
5
1
2
7
8
3
15
2
15
9
5
1
0
12
8
11
18
Minimum Spanning Tree (MST)
by Prim’s Algorithm
G:
A
2
3
B
5
D
1
C
4
F
3
2
E
2
1
6
G
• MST เป็ นการการเยีย่ มเดินไปให้ทวั่ บน
กราฟอย่างไม่ซ้ ากัน โดยมีค่าผลรวมของ
weight(ค่ากากับเส้นทาง) ที่นอ้ ยที่สุด
• Prim’s algorithm ใช้หลักการ
พิจารณาโหนดในกราฟที่มีค่ากากับเส้นทาง
ที่นอ้ ยที่สุด ณ ขณะนั้นเข้าไปเป็ นโหนดในทรี
โดยที่โหนดนั้นจะต้องไม่ทาให้เกิดวงจรบนทรี
(2) กลับทาขั้นตอน(1) ซ้ าๆจนทุกโหนดบน
กราฟไปเป็ นโหนดในทรี
– (1)
–
19
Minimum Spanning Tree (MST)
by Prim’s Algorithm
G:
A
2
3
B
5
D
1
C
4
F
3
2
E
2
6
G
1
5
D
1
สมมุติว่าเลือกโหนด D เป็ นโหนด
เริ่มต้ นของการทา MST
3
D
1
2
F
20
Minimum Spanning Tree (MST)
by Prim’s Algorithm
G:
3
A
2
B
5
D
1
C
4
F
3
2
E
2
สมมุติว่าเลือกโหนด D เป็ นโหนด
เริ่มต้ นของการทา MST
6
G
1
5
D
3
D
1
2
4
F
1
F
1
G
21
Minimum Spanning Tree (MST)
by Prim’s Algorithm
G:
3
A
2
B
5
D
1
C
4
F
3
E
2
1
5
D
สมมุติว่าเลือกโหนด D เป็ นโหนด
เริ่มต้ นของการทา MST
2
6
G
3
G
E
1
6
4
F
3
D
F
1
G
22
Minimum Spanning Tree (MST)
by Prim’s Algorithm
G:
3
A
2
B
5
D
1
C
4
F
3
E
2
1
สมมุติว่าเลือกโหนด D เป็ นโหนด
เริ่มต้ นของการทา MST
2
6
G
B
5
D
2
E
G
E
1
6
4
F
3
D
2
F
1
G
23
Minimum Spanning Tree (MST)
by Prim’s Algorithm
G:
3
A
2
B
5
D
1
C
4
F
3
E
2
1
3
สมมุติว่าเลือกโหนด D เป็ นโหนด
เริ่มต้ นของการทา MST
2
6
G
3
A
B
5
D
3
D
E
G
2
E
1
6
4
F
B
F
1
G
24
Minimum Spanning Tree (MST)
by Prim’s Algorithm
G:
3
A
2
B
5
D
1
C
4
F
3
E
2
1
A
สมมุติว่าเลือกโหนด D เป็ นโหนด
เริ่มต้ นของการทา MST
2
6
G
3
A
B
B
2
2
E
D
F
G
E
1
6
4
3
D
C
2
F
1
G
25
Minimum Spanning Tree (MST)
by Prim’s Algorithm
G:
3
A
2
5
D
1
C
4
F
3
3
D
C
E
2
E
1
6
1
F
G
T:
1
F
1
G
B
2
2
2
1
3
A
B
G
D
3
E
2
B
3
A
2
C
ค่าผลรวมของค่ากากับเส้นทางน้อยทีส
่ ด
ุ = 1+1+3+2+3+2 = 12
26
Tree Traversal
(การเดินท่ องไปให้ ทั่วบนทรี)
• Tree traversal หมายถึงการเดิมเยีย่ มโหนดทุกโหนดบนทรี ให้ทวั่ อย่างไม่ซ้ ากัน
• สามารถทาได้ 3 วิธี คือ : NLR(Pre-order), LNR(In-order) และ
LRN(Post-order)
• โดยพิจารณาโครงสร้างของทรี ดังนี้
N
L
R
N:แทนโหนดรากของทรี หรื อ สับทรี (subtree)
L:แทนโหนดลูกทางซ้ายของทรี หรื อ สับทรี
R:แทนโหนดลูกทางขวาของทรี หรื อ สับทรี
27
Tree Traversal: NLR (Pre-order)
T:
1
2
3
4
5
8
6
9
7
NLR: ให้ เดิน root ของแต่
subtree ก่อนแล้วจึงเดิน
left subtree แล้วตามด้ วย
right subtree
ผลลัพธ์ การเดิน:
1,2,4,5,8,9,3,6,7
28
Tree Traversal: LNR(In-order)
T:
1
2
3
4
5
8
6
9
7
LNR: ให้ เดิน left subtree ก่อน
แล้วจึงเดินกลับไปที่
rootของ subtree แล้วตามด้ วย
right subtree
ผลลัพธ์ การเดิน:
4,2,8,5,9,1,6,3,7
29
Tree Traversal: LRN(Post-order)
T:
1
2
3
4
5
8
6
9
7
LRN: ให้ เดิน left subtree ก่อน
แล้วจึงเดิน
right subtree แล้วตามด้ วย
root ของ subtree
ผลลัพธ์ การเดิน:
4,8,9,5,2,6,7,3,1
30
Quiz -VI
1.กาหนดทรี ทวั่ ไปมาหนึ่งต้น ให้แสดงการทา tree traversalทั้ง
สามแบบ (NLR, LNR และ LRN)
2.กาหนดชุดข้อมูลให้จานวนหนึ่ง ให้แสดงการนาชุดข้อมูลนี้ไปสร้าง
BST
(20 นาที)
31
คาถามท้ ายบท
(1) กาหนดกราฟ Gให้ดงั รู ป จงใช้ prim’s algorithm เพื่อหาผลรวมของค่ากากับ
เส้นทางที่นอ้ ยที่สุดของต้นไม้กระจายทัว่ ถึง(spanning tree)
G:
A
2
3
B
2
4
D
1
C
5
F
3
2
E
6
9
3
G
32
คาถามท้ ายบท
(2) เมื่อกาหนดทรี Tให้ดงั รู ป จงหาผลลัพธ์การเดินเยีย่ มให้ทวั่ บนทรี (tree traversal) ใน
แบบ NLR, LNR และ LRN
T:
1
2
4
8
3
5
9
6
7
10
11
33
คาถามท้ ายบท
(3) เมื่อกาหนดทรี Tให้ดงั รู ป จงหาผลลัพธ์ของคาถามต่อไปนี้
T:
3.1 ถ้ าให้ T เป็ นไบนารีทรี ทรีต้นนีม้ คี วามสู งเท่ าใด
1
2
4
8
3
5
9
3.2 ทรี T จะมีจานวนโหนดมากทีส่ ุ ดเท่ าใด ถ้ าความสู ง
ของทรี T มีค่าเป็ น 7
6
7
10
11
34
คาถามท้ ายบท
(4) จงใช้ขอ้ มูลที่กาหนดให้ต่อไปนี้ นาไปสร้าง BST: T2
ข้อมูล = {25,30,73,12,9,84,49,11,98,77,33,130}
(5) จาก BST ในข้อ 4 ถ้าต้องการทราบว่ามีขอ้ มูล 53 อยูใ่ น T2 หรื อไม่ จะต้องทาการ
เปรี ยบเทียบทั้งหมดกี่ครั้งถึงจะทราบคาตอบ
(6) จาก BST ในข้อ 4 จะสามารถสร้างทรี ที่มีความสู งน้อยที่สุด ด้วยค่าความสู งเท่าใด
35
Final Exam 1/53
• 1.(10) ตรวจสอบสมบัติความสัมพันธ์
• 2.(10) การแทนกราฟ
• 3.(10) isomorphic
•
•
•
•
•
4.(10) graph connectivity
5.(15) Dijkstra’s algorithm
6.(10) Prim’s algorithm
7.(5) วงจรตรรกเชิงผสม
8.(10) วงจรตรรกเชิงผสม
36