Trees (2) University of Phayao Sanchai Yeewiyom

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
Advertisements

วิทยาการคอมพิวเตอร์ 1 เรื่องคัดเฉพาะทาง
บทที่ 5 การดำรงชีวิตของพืช
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 9 Heap and Hash 1.
System Requirement Collection (2)
อสมการเชิงเส้นตัวแปรเดียว
การแก้ปัญหาการใช้งาน ADO กับ Database อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา.
โครงสร้างข้อมูล (Data Structures ) รหัสวิชา การเรียงลำดับข้อมูลแบบ (Heap Sort)
หน่วยการเรียนรู้ที่ 2 หลักการแก้ปัญหาด้วยคอมพิวเตอร์
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
หน่วยที่ 5 การเวียนเกิด
หน่วยที่ 6 กราฟ (Graphs)
Queue Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
ครั้งที่ 7 รีจิสเตอร์ (REGISTER). รีจิสเตอร์ (Register) รีจิสเตอร์เป็นวงจรความจำที่ใช้ในการเก็บค่า ทางไบนารี่ ใช้ในการเก็บค่าในระหว่างการ ประมวลผลโดยใช้ฟลิป.
เทคนิคการใช้ Microsoft Excel. 1. การตีตารางในรูปแบบต่าง ๆ 2. การแทรกภาพในตาราง 3. การตกแต่งข้อมูลด้วย Format Cells 4. การคำนวณ บวก ลบ คูณ หาร 5. การย่อ.
การเลือกข้อมูลจาก List การกำหนดเงื่อนไขการป้อนข้อมูลด้วย Data Validation การใส่ Comment / แสดง / แก้ไข / ลบ.
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
คำสั่งควบคุมการทำงาน
Project Management by Gantt Chart & PERT Diagram
หน่วยที่ 1 ปริมาณทางฟิสิกส์ และเวกเตอร์
Burin Rujjanapan Updated:
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การทำ Normalization 14/11/61.
บทที่ 8 แฮช (Hash).
IP-Addressing and Subneting
Number system (Review)
IP-Addressing and Subneting
การประยุกต์ Logic Gates ภาค 2
โครงสร้างข้อมูลและอัลกอริทึมเบื้องต้น
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
Tree 2.
สมการเชิงเส้น (Linear equation)
แล้วทำการเรียงลำดับข้อมูลใหม่โดยเรียงจากน้อยไปหามาก
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
BC320 Introduction to Computer Programming
Multistage Cluster Sampling
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
Vernier เวอร์เนียร์ คือเครื่องมือที่ใช้วัดระยะ (distance) หรือ ความยาว (length) ให้ได้ค่าอย่างละเอียด เวอร์เนียร์ต่างจากไม้บรรทัดทั่วๆไป เพราะมี 2 สเกล.
กลุ่มคำและประโยค ภาษาไทย ม. ๓
ชุดที่ 1 ไป เมนูรอง.
คำสั่ง Create , Insert, Delete, Update
หลักการแต่ง คำประพันธ์ประเภท โคลง. หลักการแต่ง คำประพันธ์ประเภท โคลง.
ความรู้พื้นฐานเกี่ยวกับสุรา
การสร้างโมเดลจำลองความสัมพันธ์ ระหว่างข้อมูล E-R Model
วิธีการกำหนดค่า Microsoft SharePoint ของคุณ เว็บไซต์ออนไลน์
Data storage II Introduction to Computer Science ( )
ต้นไม้เอวีแอล (AVL Tree)
Week 5 C Programming.
บทที่7 ทฤษฎีกราฟเบื้องต้น
วัฏจักรหิน วัฏจักรหิน : วัดวาอาราม หินงามบ้านเรา
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
Data storage II Introduction to Computer Science ( )
สาขาวิชาคอมพิวเตอร์ธุรกิจ โดย อาจารย์กิตติพงษ์ ภู่พัฒน์วิบูลย์
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
Data Structures and Algorithms 2/2561
บทที่ 7 การประมวลผลอาร์เรย์
Tree.
Introduction to Database System
4.4 AVL Trees AVL (Adelson-Velskii and Landis) tree เป็น binary search tree กำกับด้วยเงื่อนไขของการสมดุล และประกันว่า depth ของ tree จะเป็น O(log n) อย่างง่ายที่สุดคือกำหนดว่า.
2 โครงสร้างข้อมูลแบบสแตก (STACK).
3 โครงสร้างข้อมูลแบบคิว (QUEUE).
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
Data Structure and Algorithms
Array Sanchai Yeewiyom
Decision: Single and Double Selection (if and if-else statement)
Class Diagram.
กระดาษทำการ (หลักการและภาคปฏิบัติ)
ใบสำเนางานนำเสนอ:

Trees (2) University of Phayao Sanchai Yeewiyom School of Information & Communication Technology University of Phayao

Height of Tree Height of tree is the number of nodes on the longest path from the root to a leaf

Height of Tree Exp. A binary tree of height 3. ………………………..level 0 C ……………...level 2 D E F

Complete Binary Tree A binary tree of height h that is full down to level h-1 and has level h filled in from left to right.

Complete Binary Tree Exp. A B C

Incomplete Binary Tree Exp. A A B C B D E F D

Incomplete Binary Tree Exp. A B C E D F

AVL Tree Adel’son-Vel’skii and Landis แก้ปัญหาโครงสร้างของ Tree ไม่สมดุล (Unbalanced Binary Tree) โดยไม่อนุญาตให้ Tree มี node ลึกเกินไป ใช้หลักการของ Balanced Binary Tree เข้ามาช่วย

Balanced Binary Tree A binary tree in which the left and right subtrees of any node has heights that differ by at most 1.

Balanced Binary Tree Exp. A A B C B C D E F D

Unbalanced Binary Tree Exp. A B C E D F

Balance Factor = Height of TL - Height of TR ใช้ในการตรวจสอบว่าเป็น AVL Tree หรือไม่ ถ้า Balance Factor ของทุก node ใน tree มีค่า 0, 1 หรือ -1 ถือว่าเป็น AVL Tree คำนวณจาก Balance Factor = Height of TL - Height of TR

Balance Factor Exp. +1 A A -1 +1 B C B C D E F D

Balance Factor Exp. -2 A -1 B C -1 E D F

Unbalanced Binary Tree กรณีที่เกิด Unbalanced Binary Tree ต้องมีการปรับ Tree โดยใช้วิธีการหมุน (Rotation)

Tree Rotation การหมุนมี 2 วิธีคือ Single Rotation Double Rotation Single Right Rotation Single Left Rotation Double Rotation Double Right-Left Rotation Double Left-Right Rotation

Single Right Rotation

Single Left Rotation

Double Right-Left Rotation

Double Left-Right Rotation

Exp. AVL Tree สร้าง AVL Tree จากเลขจำนวนเต็ม 1 ถึง 7 ตามลำดับ

Exp. AVL Tree

Exp. AVL Tree

Exp. AVL Tree 4. เพิ่ม 7 มีปัญหาที่โหนด 5 ทำการ single left rotation ได้ดังรูป b)

Exp. AVL Tree

Exp. AVL Tree

Exp. AVL Tree

Exp. AVL Tree

Heap Tree Heap is a complete binary tree that 1. That is empty or 2.1 Whose root contains a priority value greater than or equal to the priority value in each of its children, and 2.2 Whose root has heaps as its subtrees

Heap Tree Exp. hi ≥ h2i and hi ≥ h2i+1 (i = 1,2,3,…,n/2) h1 h2 h3 h4

Heap Tree Exp. 90 60 70 30 20 45 65

Heap Add

Heap Add

Heap Remove

Heap Remove

B-Tree เป็น Tree ที่มีคุณสมบัติแบบหลายทิศทาง ออกแบบมาเป็นพิเศษเพื่อใช้ในการเก็บข้อมูลในดิสก์ของเครื่องคอมพิวเตอร์ ทรีแบบหลายทิศทางตามจำนวนของ m (Multiway tree of order m) หมายความว่า ในแต่ละ node จะมีเส้นที่เชื่อมโยงไปยัง node ลูกได้เท่ากับ m ดังนั้นแสดงว่าใน 1 node จะมี node ลูกได้ไม่มากกว่า m ข้อมูล และมีข้อกำหนดของ B-Tree ดังนี้ จำนวนของ Key ในแต่ละ node ที่ไม่ใช่ node ใบจะมีจำนวนของ Key เท่ากับ m -1 node ใบทั้งหมดจะอยู่ในระดับเดียวกัน node ทั้งหมดที่ไม่ใช่ node ใบยกเว้น node รากจะมี node ลูกได้น้อยที่สุด m/2 node node แม่ ในแต่ละ node ใบจะมี node ลูกได้ 1 ถึง m node node ใบจะมี Key ได้ไม่มากกว่า m – 1

B-Tree

การเพิ่ม node ใน B-Tree ในตัวอย่างนี้ กำหนดให้ m มีค่าเท่ากับ 5 และมีลำดับการเข้ามาของข้อมูลดังนี้   1, 12, 8, 2, 25, 6, 14, 28, 17, 7, 52, 16, 48, 68, 3, 26, 29 และ 45 เพิ่มข้อมูล 1 : เป็นส่วนเริ่มต้น node ราก B-Tree ดังแสดงในรูป (a) เพิ่มข้อมูล 12 : เข้าไปใน node ราก B-Tree ดังแสดงในรูป (b) เพิ่มข้อมูล 8 : เข้าไปใน node ราก B-Tree ดังแสดงในรูป (c) เพิ่มข้อมูล 2 : เข้าไปใน node ราก B-Tree ดังแสดงในรูป (d)

การเพิ่ม node ใน B-Tree เพิ่มข้อมูล 25: เมื่อเพิ่ม 25 เข้าไปใน node รากแล้วข้อมูลที่อยู่ใน node รากมีค่าเท่ากับ m คือ 5 ดังแสดงในรูป (a) ซึ่งไม่เป็นไปตามข้อกำหนดข้อที่ 5 ของ B-Tree ดังนั้น จึงต้องแยกด้วยการนำค่ากลางของ node ราก คือ 8 ขึ้นไปเป็น node รากแทนดังแสดงในรูป (b) (a) (b)

การเพิ่ม node ใน B-Tree เพิ่มข้อมูล 6: เข้าไปใน node ข้อมูล <1, 2> ดังแสดงในรูป (a) เพิ่มข้อมูล 14: เข้าไปใน node ข้อมูล <12, 25> ดังแสดงในรูป (b) เพิ่มข้อมูล 28: เข้าไปใน node ข้อมูล <12, 14, 25> ดังแสดงในรูป (c)

การเพิ่ม node ใน B-Tree เพิ่มข้อมูล 17: เมื่อเพิ่มข้อมูล 17 เข้าไปใน node <12, 14, 25, 28> ทำให้ข้อมูลใน node มีจำนวนเท่ากับ 5 ดังแสดงในรูป (a) ซึ่งไม่เป็นไปตามข้อกำหนดของ B-Tree ดังนั้น นำค่ากลางคือ 17 ขึ้นไปรวมกับ node รากดังแสดงในรูป (b) (a) (b)

การเพิ่ม node ใน B-Tree เพิ่มข้อมูล 7: เข้าไปใน node ข้อมูล <1, 2, 6> ดังแสดงในรูป (a) เพิ่มข้อมูล 52: เข้าไปใน node ข้อมูล <25, 28> ดังแสดงในรูป (b) เพิ่มข้อมูล 16: เข้าไปใน node ข้อมูล <12, 14> ดังแสดงในรูป (c) เพิ่มข้อมูล 48: เข้าไปใน node ข้อมูล <25, 28, 52> ดังแสดงในรูป (d)

การเพิ่ม node ใน B-Tree เพิ่มข้อมูล 68: ข้อมูล 68 จะอยู่รวมกับ node <25, 28, 48, 52> ดังแสดงในรูป (a) ทำให้ไม่เป็นตามข้อกำหนดของ B-Tree ดังนั้น จึงนำคีย์ในตำแหน่งตรงกลางคือ 48 ขึ้นไปรวมกับ node รากดังแสดงผลการเพิ่ม 68 ในรูป (b)

การเพิ่ม node ใน B-Tree เพิ่มข้อมูล 3: ข้อมูล 3 ถูกเพิ่มเข้าไปใน node <1, 2, 6, 7> ดังแสดงในรูป (a) ทำให้มีข้อมูลภายใน node ไม่เป็นตามกำหนดของ B-Tree ดังนั้น นำข้อมูลตรงกลางคือ 3 ขึ้นไปรวมกับ node ราก ดังแสดงในรูป (b) (a) (b)

การเพิ่ม node ใน B-Tree เพิ่มข้อมูล 26: เข้าไปใน node ข้อมูล <25, 28> ดังแสดงในรูป (a) เพิ่มข้อมูล 29: เข้าไปใน node ข้อมูล <25, 26, 28> ดังแสดงในรูป (b)

การเพิ่ม node ใน B-Tree เพิ่มข้อมูล 45: ข้อมูล 45 จะถูกเพิ่มร่วมกับ node <25, 26, 28, 29> ดังแสดงในรูป (a) ซึ่งไม่เป็นไปตามข้อกำหนดของ B-Tree จึงนำข้อมูล 28 ไปร่วมกับ node ราก <3, 8, 17, 48> ทำให้จำนวนข้อมูลใน node รากไม่เป็นไปตามข้อกำหนดของ B-Tree จึงนำข้อมูล 17 ขึ้นไปเป็น node รากใหม่ ดังแสดงผลการเพิ่ม 45 ในรูปที่ (b)

การเพิ่ม node ใน B-Tree เพิ่มคีย์ใหม่ในตำแหน่งใบ ถ้าการเพิ่มคีย์เข้าไปในตำแหนงใบแล้วมีจำนวนคีย์เท่ากับค่า m จะต้องแยก node ใบออกเป็นสองกลุ่ม และนำคีย์ในตำแหน่งกลางขึ้นไปเป็น node พ่อแม่ ถ้าคีย์ในตำแหน่ง node รากถูกแยกเป็น 2 กลุ่ม จะทำให้คีย์ในตำแหน่งตรงกลางถูกกำหนดให้เป็น node รากใหม่

การลบ node ใน B-Tree การลบคีย์ใน B-Tree จะต้องลบข้อมูลในตำแหน่ง node ใบ ถ้าตำแหน่งคีย์ที่ต้องการลบอยู่ในตำแหน่งใบ และยังมีคีย์อื่นที่ไม่ใช้คีย์ที่ต้องการลบอยู่ใน node เดียวกัน ในกรณีนี้สามารถลบคีย์ออกจาก B-Tree ได้ทันที ถ้าตำแหน่งคีย์ที่ต้องการลบไม่ได้อยู่ในตำแหน่งใบ ให้ใช้หลักการ Inorder successor มาสลับตำแหน่งของคีย์ที่ต้องการลบกับคีย์ที่อยู่ในตำแหน่งใบ จึงลบคีย์ออกจาก B-Tree เมื่อลบคีย์แล้วส่งผลทำให้คีย์ที่อยู่ใน node มีจำนวนน้อยกว่าจำนวนของคีย์ที่กำหนดไว้ ให้พิจารณาดู node ในระดับพี่น้องดังต่อไปนี้

การลบ node ใน B-Tree ถ้า node ในระดับพี่น้องมีจำนวนของคีย์มากกกว่าหนึ่งคีย์ให้เลื่อนคีย์ในระดับพ่อแม่ลงมาแทนคีย์ที่ถูกลบไปและเลื่อนคีย์ในตำแหน่ง node พี่น้องขึ้นไปแทนคีย์ใน node พ่อแม่ที่ถูกเลื่อนลงไป ดังแสดงการเลื่อนตำแหน่งใน B-Tree

การลบ node ใน B-Tree ถ้า node ในระดับพี่น้องมีจำนวนของคีย์เท่ากับหนึ่ง ในกรณีนี้จะใช้หลักการรวมคีย์ โดยนำคีย์ในระดับพ่อแม่ลงไปรวมกับคีย์ในระดับพี่น้อง ดังแสดงการรวมคีย์ในรูป

การลบ node ใน B-Tree ตัวอย่าง การลบข้อมูลใน B-Tree กำหนดให้มีลำดับการลบข้อมูลคือ 52, 72, 69, 56 ใน B-Tree โดยกำหนดให้ m = 5 แสดงได้ดังนี้

การลบ node ใน B-Tree ลบข้อมูล 52: โดยนำ B-Tree ต้นแบบมาลบดังแสดงในรูป a เมื่อตรวจสอบข้อมูล 52 ที่ต้องการลบไม่ได้อยู่ในตำแหน่งใบต้องทำการสลับตำแหน่งข้อมูล 52 กับข้อมูลในตำแหน่งใบด้วยหลักการ Inorder successor คือข้อมูล 56 ดังแสดงในรูป (c) และทำการลบข้อมูล 52 ดังแสดงในรูป (d)

การลบ node ใน B-Tree ลบข้อมูล 72: นำ B-Tree ที่เพี่มข้อมูล 52 มาเป็นต้นแบบในการลบข้อมูล 72 เป็นข้อมูลที่อยู่ในตำแหน่งใบสามารถทำลบข้อมูล 72 ได้เลยดังแสดงในรูปที (b)

การลบ node ใน B-Tree ลบข้อมูล 69: นำ B-Tree เพิ่มข้อมูล 72 มาเป็นทรีต้นแบบในการลบข้อมูล ข้อมูล 69 อยู่ในตำแหน่งใบสามารถทำการลบข้อมูล 69 ได้ทันทีแต่เมื่อทำการลบข้อมูล 69 แล้วข้อมูลแม่มีลูกอยู่เพียง node เดียวซึ่งไม่เป็นตามกฎของ B-Tree ดังนั้นจึงทำการเลื่อนข้อมูลในลำดับพี่สองคือ <31, 43> มี 2 ข้อมูลดังนั้นจึงทำการเลื่อนข้อมูล 56 ลงมาแทนข้อมูล 69 และทำการเลือก 43 ขึ้นไปเป็น node รากแทน ดังแสดงในรูป (d)

การลบ node ใน B-Tree ลบข้อมูล 56: นำ B-Tree เพิ่มข้อมูล 69 มาเป็นต้นแบบ ข้อมูล 56 อยู่ในตำแหน่งใบสามารถลบข้อมูลได้ทันที แต่เมื่อลบไปแล้วแม่มีข้อมูลเพียงข้อมูลเดียวและเมื่อดู node ระดับพี่น้อง <31> มีเพียงข้อมูลเดียวดังนั้นต้องใช้หลักการเลื่อนข้อมูล 43 ไปร่วมกับ 31 ดังแสดงในรูปที่ (d)

Homework กำหนดข้อมูล 39 15 20 40 45 11 60 48 5 2 7 30 80 70 22 13 8 33 จงสร้าง BST จากโครงสร้าง tree ในข้อ 1 จงหา preorder, inorder, postorder traversal จากข้อ 1. จงเพิ่มข้อมูลลงใน tree ตามลำดับ 25 34 10 85 50 21 จากข้อ 2. จงลบข้อมูลลงใน tree ตามลำดับ 11 15 40 39 60 70 แล้วแสดงลักษณะของ tree

Homework กำหนดข้อมูล จงสร้างเป็น AVL-tree 40, 22, 75, 31, 15, 9 69,45,77,32,91,47,95,99 54,44,50,62,32,47,52,45 35,46,23,53,40,37,44,39