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

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

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

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


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

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 2

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 3

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

5 5

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

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

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

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

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 10

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

12 12 ตัวอย่ าง

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

14 14 ตัวอย่ าง Delete

15 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 16

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

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

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

20 20 7. insert 65 100 7032 1465 100 7032 1465 56 7. insert 56 100 7056 1465 32 8. reheap up ใน หน่วยความจำ 1007056146532

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

22 22 5. delete 65 6. reheap down 7. delete 56 8. reheap down 14 3256 6570 100 56 3214 6570 100 14 3256 6570 100 32 1456 6570 100

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

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

25 [1][2][3][4][5][6] 4. insert 32701432 5. insert 100701432100 6. reheap up100703214 7. insert 6510070321465 8. insert 561007032146556 9. reheap up1007056146532 ขั้นที่ 2 delete heap1007056146532 1. สลับ 100 กับ 323270561465100 2. ปรับ heap7065561432100 25

26 [1][2][3][4][5][6] 3. สลับ 70 กับ 323265561470100 4. ปรับ heap6532561470100 5. สลับ 65 กับ 141432566570100 6. ปรับ heap5632146570100 7. สลับ 56 กับ 141432566570100 8. ปรับ heap3214566570100 9. สลับ 32 กับ 141432566570100 10. ปรับ heap1432566570100 11. สิ้นสุดการเรียงลำดับ 1432566570100 26

27 1. จงสร้าง min-heap จากข้อมูลต่อไปนี้ 23 15 17 13 31 10 2 4 29 14 5 2. จงแสดงวิธีการลบข้อมูลจาก min-heap ที่ได้ จากข้อ 1 ทีละขั้นตอน 27 การบ้าน


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

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


Ads by Google