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

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

WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 9 Heap and Hash 1.

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


งานนำเสนอเรื่อง: "WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 9 Heap and Hash 1."— ใบสำเนางานนำเสนอ:

1 WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 9 Heap and Hash 1

2 จุดประสงค์บทเรียนที่ 9 2 มีความรู้ความเข้าใจเรื่อง Priority Queue มีความรู้ความเข้าใจเรื่อง Heap และคุณสมบัติของ Heap สามารถเพิ่ม ลบ ข้อมูล Heap ได้ สามารถแปลง binary tree ไปเป็น heap ได้ มีความรู้ความเข้าใจเรื่อง hash สามารถแก้ปัญหาการชนอินเด็กซ์ของ hash

3 Priority Queue 3 ตัวอย่างการเข้าคิวโรงพยาบาล  ตามลำดับการรับคิว  กรณีฉุกเฉินให้ความสำคัญก่อนคิวตามลำดับ ตัวอย่างเครื่องพิมพ์(printer)  ตามลำดับคำสั่งก่อนหลัง  ให้ความสำคัญกับคิวที่กำหนดความสำคัญ(priority)สูงกว่า

4 Priority Queue 4 Time Complexity MethodUnsorted ListSorted List size,isEmptyO(1) insertO(1)O(n) min,removeMinO(n)O(1)

5 Heap 5 efficient realization of priority queue from heap heap is binary tree The relational property of heap Heap-Order Property :  Heap-Order Property : every node v > v’s parent(min heap) : or every node v < v’s parent(max heap)

6 Heap 6 efficient realization of priority queue from heap heap is binary tree The relational property of heap Complete Binary Tree: let h be the height of the heap for i = 0, …, h -1,there are 2 i nodes of depth i at depth h -1, the internal nodes are to the left of the external nodes

7 Heap 7 Complete Binary Tree: let h be the height of the heap for i = 0, …, h -1,there are 2 i nodes of depth i at depth h -1, the internal nodes are to the left of the external nodes depth

8 Heap 8  Heap-Order Property : every node v > v’s parent(min heap)  Complete Binary Tree Property : heap is complete binary tree if 2 h-1 <= nodes <= 2 h -1 and fully node in h <=5<=74<=6<=7

9 Heap <=7<=7 4<=4< <7<8

10 function perculateDown(a,i) if a[i].data < a[i].L swap(a[i],a[i].L) a = perculateDown(a,indexof(a[i].L) ) end if if a[i].data

11 function perculateDown(a,i) if a[i].data < a[i].L swap(a[i],a[i].L) a = perculateDown(a,indexof(a[i].L) ) end if if a[i].data

12 function perculateDown(a,i) if a[i].data < a[i].L swap(a[i],a[i].L) a = perculateDown(a,indexof(a[i].L) ) end if if a[i].data

13 function perculateDown(a,i) if a[i].data < a[i].L swap(a[i],a[i].L) a = perculateDown(a,indexof(a[i].L) ) end if if a[i].data

14 function perculateDown(a,i) if a[i].data < a[i].L swap(a[i],a[i].L) a = perculateDown(a,indexof(a[i].L) ) end if if a[i].data

15 function perculateDown(a,i) if a[i].data < a[i].L swap(a[i],a[i].L) a = perculateDown(a,indexof(a[i].L) ) end if if a[i].data

16 function perculateDown(a,i) if a[i].data < a[i].L swap(a[i],a[i].L) a = perculateDown(a,indexof(a[i].L) ) end if if a[i].data

17 function perculateDown(a,i) if a[i].data < a[i].L swap(a[i],a[i].L) a = perculateDown(a,indexof(a[i].L) ) end if if a[i].data

18 function perculateDown(a,i) if a[i].data < a[i].L swap(a[i],a[i].L) a = perculateDown(a,indexof(a[i].L) ) end if if a[i].data

19 Insert Heap insert 50 26

20 Insert Heap insert 60 26

21 Insert Heap จะเห็นว่า สามารถเพิ่มได้เลย Average Case O(1) 26 ยกเว้นกรณีที่ข้อมูลตัวใหม่น้อยกว่า root

22 Insert Heap insert 25

23 Insert Heap จากนั้นใช้ algorithm perculate down เพื่อย้าย 25 ขึ้นไปด้านบนสุด Worst Case O(log n)

24 Insert Heap กรณี average case ถ้ามีการ insert n โหนด แต่ละโหนดมากกว่าหรือเท่ากับ root BigO คือ O(n) กรณี worst case ถ้ามีการ insert n โหนด แต่ละโหนดน้อยกว่า root BigO คือ O(n log n)

25 Remove Heap การลบโหนดใน Heap สามารถลบได้เฉพาะโหนด root เท่านั้น

26 Remove Heap การลบโหนดใน Heap สามารถลบได้เฉพาะโหนด root เท่านั้น จากนั้นแทนที่ด้วยโหนดสุดท้าย นั่นคือ โหนดเลเวลต่ำสุดขวาสุด

27 Remove Heap การลบโหนดใน Heap สามารถลบได้เฉพาะโหนด root เท่านั้น จากนั้นแทนที่ด้วยโหนดสุดท้าย นั่นคือ โหนดเลเวลต่ำสุดขวาสุด ทำการปรับโครงสร้างโดยใช้ perculate down algorithm

28 Remove Heap การลบโหนดใน Heap สามารถลบได้เฉพาะโหนด root เท่านั้น จากนั้นแทนที่ด้วยโหนดสุดท้าย นั่นคือ โหนดเลเวลต่ำสุดขวาสุด ทำการปรับโครงสร้างโดยใช้ perculate down algorithm

29 Heap 29 Time Complexity MethodAverage CaseWorst Case minO(1) insertO(1)O(log n) removeO(log n) build heapO(n)O(n log n)

30 30 Hash

31 31 การค้นหา O(log n) โดยไม่จำเป็นต้องเรียงลำดับข้อมูล ใช้การแปลงค่าข้อมูลด้วย Hash Function เพื่อแปลงข้อมูลเป็นแอดเดรส Hash Function ตัวอย่าง H(x) = x mod R x เป็นข้อมูลหรือค่าของคีย์ที่ต้องการแปลงเป็นแอดเดรส R เป็นตัวหารและเป็นขนาดของตารางแฮช(จำนวนเฉพาะ) H(x) เป็นข้อมูลที่ถูกแปลง

32 Hash 32 ตัวอย่าง hash table เท่ากับ 11 โดยมีข้อมูลเป็น  valuehash value( mod 11 ) indexvalue

33 Hash 33 key collision  valuehash value( mod 11 ) indexvalue ,

34 Hash 34 key collision  Open Hashing(separate Chaining)  Closed Hashing(Open Addressing)  Linear Probing หาที่ว่างแอดเดรสใหม่  Double Hashing เพิ่มตารางใหม่

35 Open Hashing 35 เป็นวิธีที่นิยมใช้ ถ้าค่าซ้ำให้เก็บเป็น list ตัวต่อไป valuehash value( mod 10) indexvalue

36 Linear Hashing 36 ถ้าค่าซ้ำให้หา index ตัวต่อไปที่ว่าง แล้วแทนที่ลงไป valuehash value( mod 10) indexvalue indexvalue

37 Linear Hashing 37 ถ้าค่าซ้ำให้ใช้ค่า index = hash + double hash valuehash value( mod 10)double(7 – value mod 7)index indexvalue


ดาวน์โหลด ppt WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 9 Heap and Hash 1.

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


Ads by Google