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

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

ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร

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


งานนำเสนอเรื่อง: "ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร"— ใบสำเนางานนำเสนอ:

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

2 หัวข้อวันนี้ Heap โครงสร้างของ heap heap operation
Reheap Up , Reheap Down การแทน heap ในหน่วยความจำ heap sort (application of heap) ข้อดีของ heap sort

3 Heap คือ binary tree ที่มีคุณสมบัติ คือ
แต่ละ subtree ค่าของ root >= child เสมอ  (Max-heap) หรือ แต่ละ subtree ค่าของ root <= child เสมอ  (Min-heap) เป็น complete binary tree หรือ nearly complete binary tree Heap ไม่ใช่ binary search tree

4 ต้นไม้ทวิภาคแบบสมบูรณ์ (complete binary tree)
คือ binary tree ที่มี node เต็มทุก level (ทุก node ที่ไม่ใช่ leaf มี child ทั้งด้านซ้ายและด้านขวา) nearly complete binary tree คือ binary tree ที่มี node เต็มทุก level ยกเว้น level สุดท้าย และ node ใน level สุดท้ายอยู่เรียงกันทางซ้ายมือ

5

6 โครงสร้างของ Max-heap
ค่าที่มากที่สุดอยู่ที่ root เสมอ < <

7 โครงสร้างของ Min-heap
ค่าที่น้อยที่สุดอยู่ที่ root เสมอ > >

8 ตัวอย่าง Heap ที่ถูกต้อง

9 ตัวอย่าง Tree ที่ไม่ใช่ Heap

10 Heap Operation 1. Insert & Reheap Up
Insert โหนดใหม่ที่ level ล่างสุด ณ ตำแหน่งว่างด้านซ้ายสุด (ทำให้ยังคงสภาพของ nearly complete หรือ complete binary tree อยู่) Reheap Up ปรับ tree หลังจาก insert ให้เป็น heap 2. Delete & Reheap Down Delete ที่ Root เท่านั้น และนำ Node ที่ level ล่างสุดตำแหน่งขวาสุดขึ้นมาแทน (ทำให้ยังคงสภาพของ nearly complete หรือ complete binary tree อยู่) Reheap Down ปรับ tree หลังจาก delete ให้เป็น heap

11 Reheap Up สลับที่ระหว่างโหนดที่ insert เข้ามากับ Parent ของมันเองตามหลักของ heap ทำซ้ำกับโหนดเดิมจนกว่าจะอยู่ตำแหน่งที่ถูกต้อง a heap

12 ตัวอย่าง

13 Reheap Down สลับที่ระหว่างโหนดที่ตำแหน่ง root (โหนดที่พึ่งสลับที่มาหลังจาก delete) กับโหนดลูกของมันเองจนกว่าโหนดนั้นจะอยู่ตำแหน่งที่ถูกต้อง (เลือกโหนดลูกตามหลักของ heap) ทำซ้ำจนกว่า root จะอยู่ตำแหน่งที่ถูกต้อง a heap

14 ตัวอย่าง Delete

15

16 การแทน heap ในหน่วยความจำ
นิยมแทน heap ลงในอาร์เรย์ 1 มิติ เนื่องจากคุณสมบัติของการเป็น nearly complete ของตัวมันเอง ข้อมูลที่จัดเก็บลงในอาร์เรย์จะเรียงต่อกันไปตามลำดับจากซ้ายไปขวาของแต่ละ level ใน heap จะได้ความสัมพันธ์ของตำแหน่งข้อมูลใน heap คือ parent ของโหนด i ใดๆ = i/2 ถ้า i <> 1 left child ของโหนด i ใดๆ = 2i right child ของโหนด i ใดๆ = 2i + 1

17 [1] [2] [3] [4] [5] [6] [7] [1] [2] [3] [4] [1] [5] [6] [7]

18 Heap sort (Application of heap)
สำหรับ heap ข้อมูลที่มีค่าสูงสุด/ต่ำสุดจะเก็บอยู่ที root คุณสมบัติดังกล่าว + ลักษณะการเก็บข้อมูล สามารถนำมาช่วยในการเรียงลำดับข้อมูลได้ นำข้อมูลเข้าในลักษณะของ heap จนหมด delete ทีละโหนด จนหมด ข้อมูลที่ delete จะสลับที่กับโหนดสุดท้ายแทน ลำดับของข้อมูลที่ delete เรียงจาก มาก -> น้อย ค่าในอาร์เรย์ เรียงจาก น้อย -> มาก

19 กำหนดให้ข้อมูลนำเข้าคือ 14 , 70 , 32 , 100 , 65 , 56
ขั้นที่ 1 นำข้อมูลเข้า heap ทีละโหนดจนหมด 1. insert 14 2. insert 70 3. reheap up 14 70 70 14 14 4. insert 32 5. insert 100 6. reheap up 70 14 32 70 14 32 100 100 70 32 14

20 7. insert 56 7. insert 65 100 70 32 14 65 56 100 70 32 14 65 8. reheap up 100 70 56 14 65 32 ในหน่วยความจำ 100 70 56 14 65 32

21 ขั้นที่ 2 delete ข้อมูลทีละโหนดจนหมด (สลับกับโหนดสุดท้ายแทนตัดจาก heap )
2. reheap down 32 70 56 14 65 100 70 65 56 14 32 100 3. delete 70 4. reheap down 32 65 56 14 70 100 65 32 56 14 70 100

22 5. delete 65 6. reheap down 14 32 56 65 70 100 56 32 14 65 70 100 7. delete 56 8. reheap down 14 32 56 65 70 100 32 14 56 65 70 100

23 เหลือโหนดเดียว ไม่ต้องปรับ heap สิ้นสุดการทำงาน ข้อมูลเรียงลำดับแล้ว
9. delete 32 14 32 56 65 70 100 เหลือโหนดเดียว ไม่ต้องปรับ heap 10. delete 14 14 32 56 65 70 100 สิ้นสุดการทำงาน ข้อมูลเรียงลำดับแล้ว

24 [1] [2] [3] [4] [5] [6] ขั้นที่ 1 สร้าง heap 1. insert 14 14
ดังนั้นจากตัวอย่างข้างต้น สิ่งที่จะเกิดในหน่วยความจำจะเป็นการเปลี่ยนแปลงค่าข้อมูลในอาร์เรย์แทน [1] [2] [3] [4] [5] [6] ขั้นที่ 1 สร้าง heap 1. insert 14 14 2. insert 70 70 3. reheap up

25 [1] [2] [3] [4] [5] [6] 4. insert 32 70 14 32 5. insert 100 100 6. reheap up 7. insert 65 65 8. insert 56 56 9. reheap up ขั้นที่ 2 delete heap 1. สลับ 100 กับ 32 2. ปรับ heap

26 [1] [2] [3] [4] [5] [6] 3. สลับ 70 กับ 32 32 65 56 14 70 100 4. ปรับ heap 5. สลับ 65 กับ 14 6. ปรับ heap 7. สลับ 56 กับ 14 8. ปรับ heap 9. สลับ 32 กับ 14 10. ปรับ heap 11. สิ้นสุดการเรียงลำดับ

27 การบ้าน 1. จงสร้าง min-heap จากข้อมูลต่อไปนี้ จงแสดงวิธีการลบข้อมูลจาก min-heap ที่ได้จากข้อ 1 ทีละขั้นตอน


ดาวน์โหลด ppt ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร

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


Ads by Google