ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยChaowas Amornchantanakorn ได้เปลี่ยน 10 ปีที่แล้ว
1
School of Information Communication Technology,
Chapter 5 Tree Part 1 WATTANAPONG SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO
2
จุดประสงค์ บทเรียนที่ 5
มีความรู้ความเข้าใจเรื่องทรี สามารถจำแนกประเภทต่างๆ ของทรีได้ มีความรู้ความเข้าใจในเรื่องไบนารี่ทรี สามารถเพิ่ม ลบ ค้นหา ไบนารี่ทรีได้ สามารถประยุกต์การเขียนโปรแกรมแบบไบนารีทรีได้
3
Tree ชื่อภาษไทยแผนภาพต้นไม้
หมายถึงลักษณะโครงสร้างข้อมูลที่มีลักษณะไม่เป็นเชิงเส้น(non-linear) โดยโครงสร้างคล้ายต้นไม้ A B C D E F G H I J K L M
4
Tree Terminology โหนด(node) คือข้อมูลในแต่ละจุด เช่น (A) (B) (C) (D) … (M) รูท(root) หมายถึงโหนดบนสุด (A) ทรีย่อย(subtree) หมายถึง โหนดลูกทั้งหมด กิ่ง(edge/branch) หมายถึงเส้นเชื่อมระหว่างโหนด โหนดพ่อ(parent node) และโหนดลูก(child node) หมายถึงโหนดที่ให้มีกิ่งเชื่อมกันโดยโหนดพ่ออยู่ด้านบนโหนดลูก เช่น parent(A) ของ child(B) child(C) child(D) และ parent(B) ของ child(F) ใบ(leave , leave node) หมายถึงโหนดที่ไม่มีลูก (F) (G) (L) โหนดกิ่ง(edge node, branch node) เป็นโหนดที่มีลูก (B) (D) โหนดพี่น้อง(sibling node) หมายถึงโหนดที่มีโหนดพ่อเดียวกัน (L) กับ (M) หรือ (C) กับ (D)
5
Tree Terminology degree หมายถึงจำนวนลูกของโหนด เช่น (A) มี 4 หรือ (D) มี 2 ancestor node หมายถึงโหนดที่มาก่อนโหนดอื่นๆ เช่น (A) เป็น ancestor (B) (C) (D) หรือ (D) เป็น ancestor (E) (L) direct ancestor node หมายถึงโหนดที่มาก่อนโหนดอื่นๆ 1 โหนด เช่น (A) กับ (B) หรือ (D) กับ (E) decendant node หมายถึงโหนดที่มาหลังโหนดอื่นๆ เช่น (D) เป็น decendant ของ (A) (B) (C) direct decendant node หมายถึงโหนดที่ตามหลังโหนดอื่นๆ 1 โหนด เช่น (D) กับ (C) level หมายถึงระดับของโหนดเช่น root เป็น 0 และ (B) (C) (D) (E) เป็น 1 height/depth หมายถึงระดับความสูงหรือความลึกของ root กับ node ล่างสุด จากตัวอย่างก่อนหน้า คือ 4 path หมายถึงเส้นทางเชื่อมต่อระหว่าง node เช่น (A),(B),(F) หรือ (A),(D),(H) หรือ (A),(D),(H),(L) length หมายถึงความยาวของ edge ในเส้นทาง เช่น (A) ถึง (M) เท่ากับ 3
6
Type of Tree ในที่นี้ขอกล่าวถึง 2 ประเภท Binary Tree
Binary Search Tree AVL Tree B Tree(2-3-4 Tree)
7
Binary Tree Tree ใดๆ จะเป็น Binary Tree ก็ต่อเมื่อแต่ละโหนดมีโหนดลูกไม่เกิน 2 โหนด โดยแบ่งเป็นด้านซ้าย 1 โหนดหรือด้านขวา 1 โหนดหรือทั้งคู่หรือไม่มีเลย เช่น A A A A B C B C 1 2 3 4
8
Binary Tree A B D G H L M 5
9
Binary Search Tree 1 2 Tree ใดๆ จะเป็น Binary Search Tree ก็ต่อเมื่อ
เป็น Binary Tree แต่ละโหนดต้องมีค่าไม่ซ้ำกัน โหนดด้านซ้ายมีค่าน้อยกว่าค่าด้านขวาเสมอ 4 4 2 2 6 6 1 3 5 8 5 8 7 9 1 2
10
Searching Binary Search Tree
เช่น ต้องการค้นหา 8 4 2 6 1 3 5 8 7
11
Searching Binary Search Tree
เริ่มจากเปรียบเทียบค่ากับ root โดย 8 มากกว่า 4 4 2 6 1 3 5 8 step 1
12
Searching Binary Search Tree
เปรียบเทียบกับ 6 โดย 8 มากกว่า 6 4 2 6 1 3 5 8 step 2
13
Searching Binary Search Tree
4 2 6 1 3 5 8 step 3
14
Insertion Binary Search Tree
เช่น ต้องการเพิ่มข้อมูล 6 step 1
15
Insertion Binary Search Tree
เช่น ต้องการเพิ่มข้อมูล 6 2 step 2
16
Insertion Binary Search Tree
เช่น ต้องการเพิ่มข้อมูล 6 2 8 step 3
17
Insertion Binary Search Tree
เช่น ต้องการเพิ่มข้อมูล 6 2 8 1 step 4
18
Insertion Binary Search Tree
เช่น ต้องการเพิ่มข้อมูล 6 2 8 1 4 step 5
19
Insertion Binary Search Tree
เช่น ต้องการเพิ่มข้อมูล 6 2 8 1 4 3 step 6
20
Insertion Binary Search Tree
ถ้าต้องการเพิ่มข้อมูล10 เข้ามาจะได้ 6 2 8 10 1 4 3 step 7
21
deletion Binary Search Tree
ถ้าต้องการลบ 3 จะเห็นว่าไม่ใช่เรื่องยาก นั่นคือดึงออกได้เลย 6 2 8 10 1 4 3 step 1
22
deletion Binary Search Tree
ลบ 3 6 2 8 10 1 4 step 2
23
deletion Binary Search Tree
แต่ถ้าต้องการลบ 2 6 2 8 10 1 4 step 1
24
deletion Binary Search Tree
ดึง 1 หรือ 4 เข้ามาแทนที่ 2 6 4 8 10 1 step 2
25
Algorithm Analysis in Binary Search Tree
6 level 1 = 20 level 2 = 21 2 8 level 3 = 22 1 4 7 10 ดังนั้นถ้ามี x level จะมีโหนดเท่ากับ 2x-1 + 2x-2+… = 2x -1
26
Algorithm Analysis in Binary Search Tree
ดังนั้นถ้ามี x level จะมีโหนดเท่ากับ 2x-1 + 2x-2+… สมมติให้ n = 2x-1 + 2x-2+… n+1 = 2x-1 + 2x-2+… n+1 = 2x-1 + 2x-2+… n+1 = 2x-1 + 2x-2+…+ 22 n+1 = 2x-1 + 2x-2+ 2x-2 n+1 = 2x-1 + 2x-1 n = 2x – 1 แล้วจะคำนวณไปทำไม ?
27
Algorithm Analysis in Binary Search Tree
รู้จักกับ Best Case ,Worst Case, Average case Best Case หมายถึงกรณีที่การทำงานใดๆ เร็วที่สุด Worst Case หมายถึงกรณีที่การทำงานใดๆ ช้าที่สุด Average Case หมายถึงกรณีที่การทำงานใดๆ เฉลี่ยเท่ากับ ตัวอย่าง ถ้าต้องการค้นหา 6 จะเห็นว่าใช้แค่ 1 ครั้งเท่านั้น นั่นคือ Best Case O(1) 6 2 8 1 4 7 10
28
Algorithm Analysis in Binary Search Tree
Worst Case เช่นต้องการค้นหา 10 จะเห็นว่าใช้เวลาถึง 3 ครั้ง 6 2 8 1 4 7 10
29
Algorithm Analysis in Binary Search Tree
6 12 7 8 Worst Case สำหรับการค้นหา 11 คือ 7 หรือ n เท่ากับจำนวนโหนดทั้งหมด 9 10 11
30
Algorithm Analysis in Binary Search Tree
Average Case สมมติให้ง่ายต่อการคิดโดยโหนดเต็ม เช่น 3 level มี 7 โหนด ในที่นี้จะมองไปที่เวลาที่เยอะที่สุดในการค้นหาซึ่งคือ 3 สำหรับการค้นหา จะพบว่าโหนดที่ใช้เวลาเยอะสุดคือ โหนดที่ level ลึกสุด ดังนั้น x level จะมี n โหนด เท่ากับ 2x – 1 n = 2x – 1 log(n) = log(2x – 1) log(n) = log 2x เมื่อ 2x >> 1 log(n) = x ทำให้การค้นหาโหนดที่ level x จะใช้เวลาเท่ากับ log(n) 6 2 8 1 4 7 10
31
Algorithm Analysis in Binary Search Tree
สรุปการค้นหา tree Best case O(1) Average case O(log n) Worst case O(n) ทำนองเดียวกันการ insert delete มี Big O เหมือนการค้นหา
32
Example 1. สร้าง Binary Search Tree โดย Tree จะต้องสามารถ ค้นหาได้
เพิ่มได้ ลบได้ แสดงผลทั้งหมดได้
33
Binary Search Tree 6 2 8 1 4 7 10 โครงสร้างเป็น class Tree
34
Binary Tree Class Tree{ Node L; Node R; } Class Node{ int indx;
int data;
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.