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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โปรแกรมฝึกหัด การเลื่อนและคลิกเมาส์
Advertisements

วิธีการตั้งค่าและทดสอบ เครื่องคอมพิวเตอร์ก่อนใช้งาน
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
วิชา องค์ประกอบศิลป์สำหรับคอมพิวเตอร์ รหัส
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
Chapter 2 Root of Nonlinear Functions
DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว
EEET0485 Digital Signal Processing Asst.Prof. Peerapol Yuvapoositanon DSP3-1 ผศ.ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์ DSP 6 The Fast.
ตัวอย่าง การปรับปรุงข้อสอบ วิชา LB105: Study Skills ภาคที่ 1 / 2545 ( ก่อนการปรับปรุงเป็นข้อ 78 หลังการปรับปรุงเป็นข้อ 20 )
ต้นไม้และนิยามที่เกี่ยวข้อง
สาระที่ 4 พีชคณิต.
การเรียงลำดับและการค้นหาแบบง่าย
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
AVL Tree.
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
NUMBER SYSTEM เลขฐานสิบ (Decimal Number) เลขฐานสอง (Binary Number)
จำนวนนับใดๆ ที่หารจำนวนนับที่กำหนดให้ได้ลงตัว เรียกว่า ตัวประกอบของจำนวนนับ จำนวนนับ สามารถเรียกอีกอย่างว่า จำนวนเต็มบวก หรือจำนวนธรรมชาติ ซึ่งเราสามารถนำจำนวนนับเหล่านี้มา.
Use Case Diagram.
กลุ่มสาระการเรียนรู้ คณิตศาสตร์ โรงเรียนบ้านหนองกุง อำเภอนาเชือก
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
จำนวนทั้งหมด ( Whole Numbers )
อาร์เรย์และข้อความสตริง
Kampol chanchoengpan it สถาปัตยกรรมคอมพิวเตอร์ Arithmetic and Logic Unit 1.
แนวทางการปฏิบัติโครงการจูงมือ น้องน้อยบนดอยสูง 1.
โครงสร้างข้อมูลแบบคิว
การจัดเรียงข้อมูล Sorting Internal Sorting External Sorting.
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
บทที่ 3 การวิเคราะห์ Analysis.
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)
การแจกแจงปกติ.
การดำเนินการทดสอบทางการศึกษาแห่งชาติ (O-NET)
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
ลิงค์ลิสต์ (Linked List)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
หลักการเขียนโปรแกรม ( )
ค21201 คณิตศาสตร์เพิ่มเติม 1
ความหมายของวิทยาศาสตร์
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
วิวัฒน์ ชินนาทศิริกุล
การเรียงข้อมูล 1. Bubble Sort 2. Insertion Sort 3. Heap Sort
School of Information Communication Technology,
ต้นไม้ Tree (2) ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Chapter 6 Repetition Structure[2] ผู้สอน อ. ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยี คอมพิวเตอร์เคลื่อนที่ ng.
Chapter 04 Flowchart ผู้สอน อ.ยืนยง กันทะเนตร
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
เพื่อการเข้าสู่ตำแหน่งทางวิชาการ รองศาสตราจารย์ ดร.พันธ์ ทองชุมนุม
School of Information Communication Technology,
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
แบบฝึกหัด จงหาคำตอบที่ดีที่สุด หรือหาค่ากำไรสูงสุด จาก
โครงสร้างข้อมูลและขั้นตอนวิธี (Data Structures and Algorithms)
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
วิธีเรียงสับเปลี่ยนและวิธีจัดหมู่
กราฟเบื้องต้น.
การจัดเรียงข้อมูล (sorting)
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
โครงสร้างข้อมูลแบบ สแตก (stack)
กราฟเบื้องต้น.
Week 13 Basic Algorithm 2 (Searching)
การแบ่งแยกและเอาชนะ Divide & Conquer
Wattanapong suttapak SE, ICT University of Phayao.
1 Introduction to SQL กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา.
รายการ (Lis t) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร สาขาวิชาเทคโนโลยีคอมพิวเตอร์เคลื่อนที่ คณะเทคโนโลยีสารสนเทศและการสื่อสาร Website : ict.up.ac.th/yeunyong.
ต้นไม้ Tree [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
ค32213 คณิตศาสตร์สำหรับคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ใบสำเนางานนำเสนอ:

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

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

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

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

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

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

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

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

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

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

ตัวอย่าง

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

ตัวอย่าง Delete

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

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

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

กำหนดให้ข้อมูลนำเข้าคือ 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

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

ขั้นที่ 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

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

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

[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

[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

[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. สิ้นสุดการเรียงลำดับ

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