งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

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

งานนำเสนอที่คล้ายกัน


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

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

2 หัวข้อวันนี้ 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) 2

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

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

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

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

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

8 Binary Tree Traversal 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 3. Traverse the right subtree PostOder 1. Traverse the left subtree 2. Traverse the right subtree 3. Visit the root 8 7, 1, 0, 3, 2, 5, 4, 6, 9, 8, root =>

9 Binary Tree Traversal 9 7, 1, 0, 3, 2, 5, 4, 6, 9, 8, 10 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, root =>

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

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

12 12

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

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

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

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

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

18 การสร้าง BST insert ข้อมูลเข้าไปทีละ 1 โหนด เนื่องจากการป้อนข้อมูลไม่สามารถ เปลี่ยนลำดับได้ เช่น XX insert 10 insert 15 10X 15XX inser t XX8XX

19 19 inser t X8XX 14XX inser t X8XX 14X 13XX inser t X8XX 14X 13X 12XX

20 คุณภาพของ BST ขึ้นอยู่กับการกระจายค่าของ ข้อมูล ถ้ามีข้อมูลที่เกือบเรียงหรือเรียงกันอยู่แล้ว จะ ทำให้เกิด BST ที่ไม่สมดุล เช่น ชุดข้อมูล X 12X 18X 24X 25XX

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

22 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 = | H L - H R | | bf | <= 1 22

23

24 24 AVL tree unbalanced BST

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

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

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

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

29 29 SL R

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

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

32 32 SR R

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

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

35 35 DLR case ที่ 1

36 36 DLR case ที่ 2 +

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

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

39 39 0 DR R case ที่ 1

40 40 DR R case ที่ 2

41 1. จงสร้าง AVL Tree จากข้อมูลต่อไปนี้ การบ้าน


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

งานนำเสนอที่คล้ายกัน


Ads by Google