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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
ภาษา SQL (Structured Query Language)
Advertisements

โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
Course Orientation Data Structure and Algorithms ( )
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
ต้นไม้และนิยามที่เกี่ยวข้อง
Stack.
AVL Tree.
คืออะไร? คือ queue ที่ access element ตามความสำคัญของตัว element นั้น
Linked-List (รายการโยง)
การพิมพ์ฉลากยาโดยใช้โปรแกรมJHCIS
คิวQueue Circular Queue.
Chapter 1 Introduction to Information Technology
คำสั่งควบคุม (Control Statement)
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
วิทยาการคอมพิวเตอร์ 1 เรื่องคัดเฉพาะทาง
โครงสร้างข้อมูลแบบคิว
การสอบถามข้อมูลด้วยฟังก์ชั่นสำหรับ
การสอบถามข้อมูลแบบซ้อนกัน
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
Chapter 1/1 Arrays. Introduction Data structures are classified as either linear or nonlinear Linear structures: elements form a sequence or a linear.
คำสั่งควบคุมขั้นตอน Flow control statements
chatper 2 Software Requirement
DEVELOPMENT PRACTICING C- PROGRAMMING IMPLEMENTATION SYSTEM REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication.
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 4 analysis of algorithm efficiency.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
School of Information Communication Technology,
Course outline Software Architecture and Design
ต้นไม้ Tree (2) ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
Lecture9 Tree อ. วรวิทย์ วีระพันธุ์ เรียบเรียงโดย อ
Midterm outline Object-oriented programming Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
DEVELOPMENT PRACTICING C- PROGRAMMING IMPLEMENTATION SYSTEM REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication.
Course outline Software Architecture and Design
SMARTPAYMENT REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao.
Sequence Diagram Communication Diagram
INTRODUCTION SOFTWARE ARCHITECTURE AND DESIGN WATTANAPON G SUTTAPAK Software Engineering, School of Information Communication Technology, University of.
Activity Diagram Wattanapong suttapak, Software Engineering,
โครงสร้างข้อมูล Queues
SE WEBSITE REQUIREMENT Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao.
Design pattern WATTANAPONG SUTTAPAK Software Engineering,
COURSE OUTLINE STRUCTURE PROGRAMMING Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การแบ่งแยกและเอาชนะ Divide & Conquer
1 LAN Implementation Sanchai Yeewiyom School of Information & Communication Technology Naresuan University, Phayao Campus.
ต้นไม้ Tree [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
State Diagram Wattanapong suttapak, Software Engineering,
CHAPTER 1 INTRODUCTION TO JAVA WEB PROGRAMMING Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of.
Wattanapong suttapak, Software Engineering, school of Information communication Tecnology, university of phayao เกณฑ์การนำเสนอ และเกณฑ์การให้ คะแนน ครั้งที่
MVC DESIGN PATTERN WATTANAPON G SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO 1.
Linked List (2) Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
Trees Hierarchical Structures. Outlines Definition of trees Modeling by trees Properties of trees Applications – Binary search trees – Prefix codes –
Queue Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
เข้าสู่ วิชา การงานอาชีพ จัดทำโดย ด. ญ. สุชัญญา เขียวสมอ ม.1/14 เลขที่ 38 ด. ญ. พรรณวษา ยาวะระ ม.1/14 เลขที่ 32 นำเสนอ อาจารย์ ฐิตาพร ดวงเกตุ โรงเรียนวินิตศึกษา.
บทที่ 3 การกําหนดปัญหา การศึกษาความเป็นไปได้และการวางแผนโครงการ
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Data Structure & Algorithm Concept
Stack Sanchai Yeewiyom
Tree 2.
Trees (2) University of Phayao Sanchai Yeewiyom
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
นวัตกรรมและเทคโนโลยี คือ INNOTECH
Project Feasibility Study
Yeunyong Kantanet School of Information and Communication Technology
Hashing Sanchai Yeewiyom
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
Data Structures and Algorithms 2/2561
4.4 AVL Trees AVL (Adelson-Velskii and Landis) tree เป็น binary search tree กำกับด้วยเงื่อนไขของการสมดุล และประกันว่า depth ของ tree จะเป็น O(log n) อย่างง่ายที่สุดคือกำหนดว่า.
4.7. B-Trees โครงสร้าง tree ที่กล่าวถึงมาแล้วนั้น อยู่บนสมมติฐานที่ว่าโครงสร้างทั้งหมดสามารถจัดเก็บอยู่ในหน่วยความจำของเครื่องคอมพิวเตอร์ได้ ถ้า จำนวนข้อมูลมีปริมาณมากเกินกว่าที่จะเก็บไว้ใน.
ใบสำเนางานนำเสนอ:

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

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

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

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

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)

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

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

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

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

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 <a[i].R swap(a[i],a[i].R) a = perculateDown(a,indexof(a[i].L) ) end if return a; end function Heap Restructuring 10 perculate Down Algorithm for i=n/2 to 1 a = perculateDown(a,i); end for n = 9 i = 4

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 <a[i].R swap(a[i],a[i].R) a = perculateDown(a,indexof(a[i].L) ) end if return a; end function Heap Restructuring 11 perculate Down Algorithm for i=n/2 to 1 a = perculateDown(a,i); end for i =

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 <a[i].R swap(a[i],a[i].R) a = perculateDown(a,indexof(a[i].L) ) end if return a; end function Heap Restructuring 12 perculate Down Algorithm for i=n/2 to 1 a = perculateDown(a,i); end for i =

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 <a[i].R swap(a[i],a[i].R) a = perculateDown(a,indexof(a[i].L) ) end if return a; end function Heap Restructuring 13 perculate Down Algorithm for i=n/2 to 1 a = perculateDown(a,i); end for i =

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 <a[i].R swap(a[i],a[i].R) a = perculateDown(a,indexof(a[i].L) ) end if return a; end function Heap Restructuring 14 perculate Down Algorithm for i=n/2 to 1 a = perculateDown(a,i); end for i =

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 <a[i].R swap(a[i],a[i].R) a = perculateDown(a,indexof(a[i].L) ) end if return a; end function Heap Restructuring 15 perculate Down Algorithm for i=n/2 to 1 a = perculateDown(a,i); end for i =

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 <a[i].R swap(a[i],a[i].R) a = perculateDown(a,indexof(a[i].L) ) end if return a; end function Heap Restructuring 16 perculate Down Algorithm for i=n/2 to 1 a = perculateDown(a,i); end for i =

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 <a[i].R swap(a[i],a[i].R) a = perculateDown(a,indexof(a[i].L) ) end if return a; end function Heap Restructuring 17 perculate Down Algorithm for i=n/2 to 1 a = perculateDown(a,i); end for i =

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 <a[i].R swap(a[i],a[i].R) a = perculateDown(a,indexof(a[i].L) ) end if return a; end function Heap Restructuring 18 perculate Down Algorithm for i=n/2 to 1 a = perculateDown(a,i); end for binary tree min heap

Insert Heap insert 50 26

Insert Heap insert 60 26

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

Insert Heap insert 25

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

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

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

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

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

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

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 Hash

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

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

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

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

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

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

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