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