ต้นไม้ Tree (2) ผู้สอน อาจารย์ ยืนยง กันทะเนตร

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
เรื่อง การแก้ไขปัญหาด้วยกระบวนการเทคโนโลยีสารสนเทศ
Advertisements

ป.2 บทที่ 1 “จำนวนนับ ไม่เกิน1,000”
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
ตารางแฮช Hash Table.
ครั้งที่ 12 การค้นหาข้อมูล (Searching)
ต้นไม้และนิยามที่เกี่ยวข้อง
การเรียงลำดับและการค้นหาแบบง่าย
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
AVL Tree.
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
การวิเคราะห์ข้อสอบ o-net
Lecture 8 Database Output (Form and Report Design)
ASP [# 8] ฟังก์ชั่นที่ใช้เกี่ยวกับการตัดคำ
หน่วยที่ 5 ตัวดำเนินการ (Operators)
การวิเคราะห์ขั้นตอนวิธีการแก้ปัญหา
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
ขั้นตอนการแนะนำนักศึกษาในการ เข้าใช้งานระบบ LMS ด้วยโปรแกรม M OODLE.
ศึกษาโครงงานพิเศษ (Study Project) 1/2557
MAT 231: คณิตศาสตร์ไม่ต่อเนื่อง (6) ทรี-ต้นไม้(Trees)
วิทยาการคอมพิวเตอร์ 1 เรื่องคัดเฉพาะทาง

การจัดเรียงข้อมูล Sorting Internal Sorting External Sorting.
การวิจัยในชั้นเรียนด้านอาชีวศึกษา
แฟกทอเรียลและการเรียงสับเปลี่ยน
การออกแบบฐานข้อมูลและการบริหารธุรกิจ
หลักการโปรแกรมเบื้องต้น
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
ลิงค์ลิสต์ (Linked List)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
ค21201 คณิตศาสตร์เพิ่มเติม 1
การเขียนข้อเสนอโครงการ
Chapter 6 Repetition Structure[1] ผู้สอน อ. ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยี คอมพิวเตอร์เคลื่อนที่ ng.
หลักการแก้ปัญหา
วิวัฒน์ ชินนาทศิริกุล
School of Information Communication Technology,
Chapter 04 Flowchart ผู้สอน อ.ยืนยง กันทะเนตร
บทที่ 9 ไทร์ (Tries).
เพื่อการเข้าสู่ตำแหน่งทางวิชาการ รองศาสตราจารย์ ดร.พันธ์ ทองชุมนุม
School of Information Communication Technology,
Lecture9 Tree อ. วรวิทย์ วีระพันธุ์ เรียบเรียงโดย อ
วิทยาลัยเทคโนโลยีภูเก็ต อำเภอเมือง จังหวัด ภูเก็ต
การจัดการฐานข้อมูลเบื้องต้น
adversarial Search Techniques
โครงสร้างข้อมูลและขั้นตอนวิธี (Data Structures and Algorithms)
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
SE WEBSITE REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao.
E-Portfolio.
การจัดเรียงข้อมูล (sorting)
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
ค32213 คณิตศาสตร์สำหรับคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
ตรรกะพื้นฐานและการแก้ปัญหา Basic logic and Problem Solving 3(2-2-5)
รูปร่างเครือข่ายคอมพิวเตอร์ จัดทำโดย
หลักการโปรแกรมเบื้องต้น
CHAPTER 2 Operators.
รายการ (Lis t) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong.
ต้นไม้ Tree [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
แบบ Star จะเป็นลักษณะของการต่อ เครือข่ายที่ Work station แต่ละตัวต่อรวมเข้าสู่ ศูนย์กลางสวิตซ์ เพื่อสลับตำแหน่งของเส้นทาง ของข้อมูลใด ๆ ในระบบ ดังนั้นใน.
แบบดาว เป็นลักษณะของการต่อเครือข่ายที่ Work station แต่ละตัวต่อรวมเข้าสู่ ศูนย์กลางสวิตซ์ เพื่อสลับตำแหน่งของเส้นทางของข้อมูลใด ๆ ในระบบ ดังนั้น ใน โทโปโลยี
ค32213 คณิตศาสตร์สำหรับคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
หลักการทั่วไปเกี่ยวกับการเขียนโปรแกรม
Burin Rujjanapan Updated:
การวิเคราะห์และออกแบบขั้นตอนวิธี
Trees (2) University of Phayao Sanchai Yeewiyom
บทที่ 9 การอธิบายกระบวนการแบบต้นไม้.
Data Structures and Algorithms 2/2561
4.4 AVL Trees AVL (Adelson-Velskii and Landis) tree เป็น binary search tree กำกับด้วยเงื่อนไขของการสมดุล และประกันว่า depth ของ tree จะเป็น O(log n) อย่างง่ายที่สุดคือกำหนดว่า.
Data Structure and Algorithms
ใบสำเนางานนำเสนอ:

ต้นไม้ Tree (2) ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong

หัวข้อวันนี้ Binary Search Tree (BST) การเพิ่ม , ลบโหนดออกจาก BST AVL Tree การเพิ่ม , ลบโหนดออกจาก AVL Tree Balancing Tree (หลักการทำต้นไม้ให้สมดุล) SLR (single left rotation), SRR (single right rotation), DLR (double left rotation), DRR (double right rotation)

binary search tree เป็น binary tree ที่มีคุณสมบัติพิเศษ คือ ทุก node ของ subtree ทางซ้ายมีค่าน้อยกว่า root ทุก node ของ subtree ทางขวามีค่ามากกว่าหรือเท่ากับ root ทุก ๆ subtree เป็น binary search tree >

ตัวอย่าง Binary Search Tree ที่ถูกต้อง

ตัวอย่าง Binary Search Tree ที่ไม่ถูกต้อง

ประโยชน์ของ Binary Search Tree ต้องการค้นหาข้อมูล 1 ตัวจากข้อมูลทั้งหมด100,000 ตัว เก็บในอาร์เรย์ : อาจต้องค้นหา 100,000 ครั้ง ค้นหาในอาร์เรย์ทีละช่อง เก็บใน BST : ลดจำนวนการค้นหาลงได้สูงสุดเหลือเพียง 17 ครั้ง(โดยประมาณ) ถ้า root แบ่งข้อมูลเป็น 2 ส่วนเท่าๆกัน ค้นครั้งที่ 1 เหลือข้อมูล ½ ค้นครั้งที่ 2 เหลือข้อมูล ¼ ...

สิ่งที่ควรทราบเพิ่มเติมเกี่ยวกับ binary search tree ถ้าเป็น BST ที่ลูกทางด้านซ้ายมีค่าน้อยกว่าพ่อแม่ เราสามารถใช้ inorder traversal เพื่อหาข้อมูลที่เรียงลำดับกันได้ ถ้าต้องการหาข้อมูลที่มีค่าน้อยที่สุด สามารถหาได้ leaf ที่อยู่ทางด้านซ้ายสุดของทรี หรือจะเท่ากับ root ของ subtree ทางด้านซ้ายสุด ถ้ากรณี subtree นั้นไม่มีโหนดลูกทางด้านซ้าย ในทำนองเดียวกัน เราก็สามารถหาข้อมูลที่มีค่ามากที่สุดได้เช่นเดียวกัน

Binary Tree Traversal 7, 1, 0, 3, 2, 5, 4, 6, 9, 8, 10 root => PreOder 1. Visit the root 2. Traverse the left subtree 3. Traverse the right subtree InOder 1. Traverse the left subtree 2. Visit the root PostOder 2. Traverse the right subtree 3. Visit the root 7, 1, 0, 3, 2, 5, 4, 6, 9, 8, 10 7 1 9 8 10 3 2 5 4 6 root =>

Binary Tree Traversal 7, 1, 0, 3, 2, 5, 4, 6, 9, 8, 10 root => 3 2 5 4 6 root => PreOder Traversal: 7, 1, 0, 3, 2, 5, 4, 6, 9, 8, 10 InOder Traversal: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 PostOder Traversal: 0, 2, 4, 6, 5, 3, 1, 8, 10, 9, 7

operation ที่ต้องทำใน BST BST มี operation ที่สำคัญอยู่ 2 operation คือ การเพิ่มโหนด การลบโหนด เพิ่มแล้วโหนดใหม่ต้องเป็น Leaf เท่านั้น เพิ่มในตำแหน่งที่ยังคงคุณสมบัติของ Binary Search Tree ไว้

ตัวอย่าง การเพิ่มข้อมูลใน Binary Search Tree

การลบโหนด ใน BST <== ลบได้เลย <== ดึง Right Subtree ขึ้นมา ต้องพิจารณาว่า Node ที่จะลบนั้นตรงกับกรณี 1. ไม่มี Child 2. มีเฉพาะ Right Subtree 3. มีเฉพาะ Left Subtree 4. มีทั้ง Left และ Right Subtree <== ลบได้เลย <== ดึง Right Subtree ขึ้นมา <== ดึง Left Subtree ขึ้นมา นำค่าที่มากที่สุดของ Left Subtree มาแทน

ตัวอย่าง กรณีที่ 1 ไม่มีโหนดลูก 23 18 X 44 before delete 44 23 X 18 after delete 44

ตัวอย่าง กรณีที่ 2 มีเฉพาะ right subtreee 23 18 X 44 before delete 44 46 58 after delete 44 23 18 X 46 58

ตัวอย่าง กรณีที่ 3 มีเฉพาะ left subtreee 23 18 X 44 before delete 44 36 28 23 18 X after delete 44 36 28

ตัวอย่าง กรณีที่ 4 มีโหนดลูกทั้ง 2 ข้าง 23 18 44 X before delete 23 20 10 20 18 X 44 after delete 23 10

การสร้าง BST insert 10 insert 15 insert 8 10 X 10 X 15 10 15 X 8 เนื่องจากการป้อนข้อมูลไม่สามารถเปลี่ยนลำดับได้ เช่น 10 15 8 14 13 12 insert 10 insert 15 insert 8 10 X 10 X 15 10 15 X 8

insert 14 10 15 X 8 14 insert 12 10 15 X 8 14 13 12 insert 13 10 15 X 8 14 13

10 X 12 18 24 25 คุณภาพของ BST ขึ้นอยู่กับการกระจายค่าของข้อมูล เช่น ชุดข้อมูล 10 12 18 24 35 10 X 12 18 24 25

ข้อเสีย : ความเร็วในการค้นหาข้อมูลจะแย่ (กรณีแย่ที่สุดคือต้องเปรียบเทียบ n ครั้ง) ปี 1960 นักคณิตศาสตร์ชาวรัสเซียได้พัฒนาเทคนิคในการจัดรูปแบบของ BST โดยปรับแต่งโหนดให้สมดุลหรือเกือบสมดุล ทุกครั้งที่มีการเพิ่มหรือลบข้อมูล และยังคงคุณสมบัติของ BST อยู่ เรียกต้นไม้ชนิดนี้ว่า AVL tree หรือ ต้นไม้ความสูงสมดุล

AVL tree (Adel’son, Vel’skii and Landis) เรียกอีกอย่างว่า (Height-balanced binary search tree) หรือ ต้นไม้ความสูงสมดุล คือ BST ชนิดหนึ่งที่มีคุณสมบัติเพิ่มเติมคือ ทุก subtree มี balance factor (bf) แตกต่างกันไม่เกิน 1 [-1, 0, +1] bf คือ ความสูงของ left subtree ลบด้วย ความสูงของ right subtree bf = | HL - HR | | bf | <= 1

-7 1 -6 1 -1 -5 -4 -3 -2 -1

AVL tree unbalanced BST

การเพิ่ม , ลบโหนดออกจาก AVL Tree ใช้วิธีการเดียวกันกับการเพิ่ม , ลบ โหนดจาก BST การเพิ่ม – เพิ่มที่ตำแหน่งที่เป็น leaf เท่านั้น การลบ – มี 4 กรณี หลังจากเพิ่ม – ลบ โหนดทุกๆ ครั้ง

Balancing Tree (หลักการทำต้นไม้ให้สมดุล) คือการปรับต้นไม้ที่ไม่เป็น AVL tree ให้เป็น AVL tree ( | bf | <= 1 , | HL - HR | <= 1 ) เกิดขึ้นทุกครั้งหลังการเพิ่มหรือลบโหนด ซึ่งทำให้ต้นไม้ขาดคุณสมบัติของ AVL tree ไป มีกรณีที่ต้องจำอยู่ 4 กรณี คือ - SLR (single left rotation) - SRR (single right rotation) - DLR (double left rotation) - DRR (double right rotation)

SLR (single left rotation) ใช้ในกรณีที่โหนดล่างสุด ที่ไม่สมดุลมี bf = -2 (right subtree ของโหนดนี้สูงกว่า left subtree อยู่ 2) ดังนั้นจึงต้องมีการหมุนไปทางซ้าย และโหนดลูกทางด้านขวาของโหนดข้างบนมี bf = -1 (right subtree ของโหนดนี้ก็ยังสูงกว่า left subtree อยู่ 1) ซึ่งหมายความว่าต้นไม้มีการเอียงไปทางด้านขวาตลอด ดังนั้นจึงหมุนไปทางซ้ายแค่ครั้งเดียว

เปลี่ยนตำแหน่งของ subtree B กรณีมี 3 โหนด (-2) (0) 10 20 (-1) 20 (0) (0) (0) 30 10 30 เปลี่ยนตำแหน่งของ subtree B กรณีทั่วไป (-2) 10 (-1) (0) 20 20 A (0) (-1,1) (-1,1) 30 10 30 B C D A B C D

SLR

SRR (single right rotation) ใช้ในกรณีที่โหนดล่างสุดที่ไม่สมดุลมี bf = 2 (left subtree ของโหนดนี้สูงกว่า right subtree อยู่ 2) ดังนั้นจึงต้องมีการหมุนไปทางขวา และโหนดลูกทางด้านซ้ายของโหนดนี้มี bf = 1 (left subtree ของโหนดนี้ก็ยังสูงกว่า right subtree อยู่ 1) ซึ่งหมายความว่าต้นไม้มีการเอียงไปทางด้านซ้ายตลอด ดังนั้นจึงหมุนไปทางขวาแค่ครั้งเดียว

เปลี่ยนตำแหน่งของ subtree C กรณีมี 3 โหนด (2) 30 (0) 20 (1) 20 (0) (0) (0) 10 10 30 กรณีทั่วไป เปลี่ยนตำแหน่งของ subtree C (2) 30 (1) (0) 20 20 D (0) (-1,1) (-1,1) 10 30 10 C A A C B B D

SRR

DLR (double left rotation) ใช้ในกรณีที่โหนดล่างสุด ที่ไม่สมดุลมี bf = -2 (right subtree ของโหนดนี้สูงกว่า left subtree อยู่ 2) ดังนั้นจึงต้องมีการหมุนไปทางซ้าย แต่โหนดลูกทางด้านขวาของโหนดข้างบน มี bf = 1 (right subtree ของโหนดลูกกลับต่ำกว่า left subtree อยู่ 1) ซึ่งหมายความว่าต้นไม้มีการเอียงไปทางด้านขวาและด้านซ้าย ดังนั้นจึงหมุนไปทางซ้าย 2 ครั้ง

เปลี่ยนตำแหน่งของ subtree B,C กรณีมี 3 โหนด (-2) 10 (0) 20 (1) 30 (0) (0) (0) 20 10 30 เปลี่ยนตำแหน่งของ subtree B,C กรณีทั่วไป (-2) 10 (1) (0) 30 20 A (1,0) (0,-1) (-1,1) 20 10 30 D B C A C D B

DLR case ที่ 1

DLR + case ที่ 2

DRR (double right rotation) ใช้ในกรณีที่โหนดล่างสุดที่ไม่สมดุลมี bf = 2 (left subtree ของโหนดนี้สูงกว่า right subtree อยู่ 2) ดังนั้นจึงต้องมีการหมุนไปทางขวา แต่โหนดลูกทางด้านซ้ายของโหนดนี้ มี bf = -1 (left subtree ของโหนดนี้กลับต่ำกว่า right subtree อยู่ 1) ซึ่งหมายความว่าต้นไม้มีการเอียงไปทางด้านซ้ายและด้านขวา ดังนั้นจึงหมุนไปทางขวา 2 ครั้ง

เปลี่ยนตำแหน่งของ subtree B,C กรณีมี 3 โหนด (2) 30 (0) 20 (-1) 10 (0) (0) (0) 20 10 30 เปลี่ยนตำแหน่งของ subtree B,C กรณีทั่วไป (2) 30 (-1) (0) 20 20 D (0,1) (-1,0) (1,-1) 10 30 A 10 A C C B D B

DRR case ที่ 1

DRR case ที่ 2

การบ้าน 1.จงสร้าง AVL Tree จากข้อมูลต่อไปนี้ 3 2 1 4 5 6 7 16 15 14 13 11