priority queues & heaps - brown...

34
Priority Queues & Heaps CS16: Introduction to Data Structures & Algorithms Spring 2019

Upload: dodang

Post on 28-Aug-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Priority Queues & Heaps

CS16: Introduction to Data Structures & AlgorithmsSpring 2019

Page 2: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Outline‣ Priority Queues‣ Motivation

‣ ADT

‣ Implementation

‣ Heaps‣ insert( ) and upheap( )‣ removeMin( ) and downheap( )

Page 3: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Motivation‣ Priority queues store items with various

priorities‣ Examples‣ Plane departures: some flights have higher priority

than others‣ Bandwidth management: real-time traffic like Skype

transmitted first

3

Page 4: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Priority Queue ADT

‣ Stores key/element pairs‣ key determines position in queue

‣ insert(key, element): ‣ inserts element with key

‣ removeMin( ):‣ removes pair w/ smallest key and

returns element

Page 5: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Priority Queue Implementations

52 minActivity #1

Page 6: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Priority Queue Implementations

62 minActivity #1

Page 7: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Priority Queue Implementations

71 minActivity #1

Page 8: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Priority Queue Implementations

80 minActivity #1

Page 9: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Priority Queue Implementation

9

Implementation insert removeMin

Unsorted Array O(1) O(n)

Sorted Array O(n) O(1)

Unsorted Linked List O(1) O(n)

Sorted Linked List O(n) O(1)

Hash Table O(1) O(n)

Heap O(log n) O(log n)

Page 10: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

What is a Heap?‣ Data structure that implements priority queue‣ Heaps can be implemented with‣ Tree‣ Array

‣ Tree-based heap

10

2

65

79

Page 11: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap Properties‣ Binary tree‣ each node has at most 2 children

‣ Each node has a priority (key)‣ Heap has an order‣ min-heap: n.parent.key ≤ n.key

‣ max-heap: n.parent.key ≥ n.key

‣ Left-complete‣ Height of O(log n)

11

Page 12: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap Properties‣ To implement priority queue‣ insert key/element pair at each node

12

(1, Tsunade)

(5, Kakashi) (3, Danzo)

(9, Naruto) (7, Sakura)

Page 13: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap — insert( )‣ Need to keep track of “insertion node”‣ leaf where we will insert new node…‣ …so we can keep heap left-complete

13

2

65

79

insertion node

Page 14: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap — insert( )‣ Ex: insert(1)‣ replace insertion node w/ new node

14

2

65

79 1

Heap order violated!

Page 15: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap — upheap( )‣ Repair heap: swap new element up tree until keys are sorted‣ First swap fixes everything below new location

‣ since every node below 6’s old location has to be at least 6…

‣ …they must be at least 1

15

2

15

79 6

Page 16: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap — upheap( )‣ One more swap since 1≤2‣ Now left-completeness and order are satisfied

16

1

25

79 6

Page 17: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap insert( )

172 minActivity #1

Page 18: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap insert( )

182 minActivity #2

Page 19: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap insert( )

191 minActivity #1

Page 20: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap insert( )

200 minActivity #1

Page 21: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap — upheap( ) Summary‣ After inserting a key k, order may be violated‣ upheap( ) restores order by ‣ swapping key upward from insertion node‣ terminates when either root is reached

‣ …or some node whose parent has key at most k

‣ Heap insertion has runtime‣ O(log n), why?

‣ because heap has height O(log n)

‣ perfect binary tree with n nodes has height log(n+1)-1 21

Page 22: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap — removeMin( )‣ Remove root ‣ because it is always the smallest element

‣ How can we remove root w/o destroying heap?

22

1

25

79 6

25

79 6

Heap destroyed!

Page 23: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap — removeMin( )‣ Instead swap root with last element & remove it‣ removing last element is easy

23

1

25

79 6

6

25

79 1

Order destroyed!

6

25

79

Page 24: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap — removeMin( )‣ Now swap root down as necessary

24

Heap is in order!

6

25

79

2

65

79

Page 25: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap — downheap( ) Summary‣ downheap( ) restores order by ‣ swapping key downward from root with smaller of 2

children‣ terminates when either leaf is reached or

‣ …some node whose children has key at least k

‣ downheap( ) has runtime‣ O(log n), why?

‣ because heap has height O(log n) 25

Page 26: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap removeMin( )

262 minActivity #1

Page 27: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap removeMin( )

272 minActivity #1

Page 28: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap removeMin( )

281 minActivity #1

Page 29: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Heap removeMin( )

290 minActivity #1

Page 30: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Summary of Heap‣ insert(key, value)‣ insert value at insertion node‣ insertion node must be kept track of

‣ upheap( ) from insertion node as necessary

‣ removeMin( )‣ swap root with last item‣ delete (swapped) last item‣ downheap( ) from root as necessary

30

Page 31: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Array-based Heap‣ Heap with n keys can be represented

w/ array of size n+1

‣ Storing nodes in array‣ Node stored at index i

‣ left child stored at index 2i

‣ right child stored at index 2i+1‣ Leaves & edges not stored

‣ Cell 0 not used

‣ Operations

‣ insert: store new node at index n+1

‣ removeMin: swap w/ index n and remove

2

65

79

2 5 6 9 70 1 2 3 4 5

Page 32: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Finding Insertion Node‣ Can be found in O(log n)‣ Start at last added node‣ Go up until a left child or root is reached‣ If left child

‣ go to sibling (corresponding right child)‣ then go down left until leaf is reached

32

Can be done in O(1) time by using

additional data structure…need this

for project!

Page 33: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

Priority Queue Implementation

33

Implementation insert removeMin

Unsorted Array O(1) O(n)

Sorted Array O(n) O(1)

Unsorted Linked List O(1) O(n)

Sorted Linked List O(n) O(1)

Hash Table O(1) O(n)

Heap O(log n) O(log n)

Page 34: Priority Queues & Heaps - Brown Universitycs.brown.edu/.../files/lectures/slides/09_priorityQueuesAndHeaps.pdf · ‣ Bandwidth management: real-time traffic like Skype transmitted

References‣ Slide #4

‣ “Queue” in French means tail ‣ The picture depicts the tail of a whale

‣ Slide #7‣ The picture is of a Transformers character named Junkheap which transforms

from a waste management garbage truck

‣ Slide #8‣ The names are characters from the Anime series Naruto (https://

en.wikipedia.org/wiki/Naruto)‣ The picture is the symbol of the Hidden Leaf Village (where the character

Naruto is from)‣ The heap priorities represent the importance of the character in the village

34