Chapter 6: Priority Queues SCSC 321. Priority Queues The model Implementations Binary heaps ...

34
Chapter 6: Chapter 6: Priority Queues Priority Queues SCSC 321

Transcript of Chapter 6: Priority Queues SCSC 321. Priority Queues The model Implementations Binary heaps ...

Page 1: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Chapter 6: Chapter 6: Priority QueuesPriority Queues

SCSC 321

Page 2: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Priority Queues

The modelImplementationsBinary heapsBasic operations

2

Page 3: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

The ModelA priority queue is a queue where:

Requests are inserted in the order of arrival

The request with highest priority is processed first (deleted from the queue)

The priority is indicated by a number, the lower the number - the higher the priority.

3

Page 4: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Implementations

4

Linked list:

-      Insert at the beginning - O(1)

-      Find the minimum - O(N)

Binary search tree (BST):

-      Insert O(logN)

-      Find minimum - O(logN)

Page 5: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Implementations

5

Binary heap

Better than BST because it does not support links

-      Insert O(logN)

-      Find minimum O(logN)

Deleting the minimal element takes a constant time, however after that the heap structure has to be adjusted, and this requires O(logN) time.

Page 6: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Binary Heap

6

Heap-Structure Property:

Complete Binary Tree - Each node has two children, except for the last two levels.

The nodes at the last level do not have children. New nodes are inserted at the last level from left to right.

Heap-Order Property:

Each node has a higher priority than its children

Page 7: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

7

Binary Heap

6

1012

15 17 18 23

20 19 34

Next node to be inserted - right child of the yellow node

Page 8: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Binary heap implementation with an array

8

Root - A(1)

Left Child of A(i) - A(2i)

Right child of A(i) - A(2i+1)

Parent of A(I) - A([i/2]).

The smallest element is always at the root, the access time to the element with highest priority is constant O(1).

Page 9: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Example

9

6 10 12 15 17 18 23 20 19 34

Consider 17:

position in the array - 5.

parent 10 is at position [5/2] = 2

left child is at position 5*2 = 10 (this is 34)

right child - position 2*5 + 1 = 11 (empty.)

Page 10: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Problems

10

Problem 1:

2 8 10 16 17 18 23 20 21 30

Reconstruct the binary heap

Page 11: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Problems

11

Problem 2: Give the array representation for

3

1016

13 12 18 23

15 19 30 14

Page 12: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Basic Operations

Insert a node – Percolate UpDelete a node – Percolate DownDecrease key, Increase key, Remove keyBuild the heap

12

Page 13: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Up – Insert a Node

13

A hole is created at the bottom of the tree, in the next available position.

6

1012

15 17 18 23

20 19 34

Page 14: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Up

14

Insert 206

1012

15 17 18 23

21 19 34 20

Page 15: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Up

15

Insert 16

6

1012

15 18 23

21 19 34 17

Page 16: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Up

16

6

1012

15 18 23

21 19 34 17

16

Complexity of insertion: O(logN)

Page 17: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Down – Delete a Node

17

1016

13 12 18 23

15 19 30 34

Page 18: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Down – the wrong way

18

10

16

13 12 18 23

15 19 30 34

Page 19: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Down – the wrong way

19

16

13 18 23

15 19 34

10

12

30

The empty hole violates the heap-structure property

Page 20: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Down

20

Last element - 20. The hole at the root.

1016

12 13 18 23

15 19 30 20

We try to insert 20 in the hole by percolating the hole down

Page 21: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Down

21

16

12 13 18 23

15 19 3020

10

Page 22: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Down

22

16

13 18 23

15 19 3020

10

12

Page 23: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Percolate Down

23

16

13 18 23

20 19 30

10

12

15

Complexity of deletion: O(logN)

Page 24: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Other Heap Operations

24

 1. DecreaseKey(p,d)

increase the priority of element p in the heap with a positive value d. percolate up.

2. IncreaseKey(p,d)

decrease the priority of element p in the heap with a positive value d. percolate down.

Page 25: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Other Heap Operations

25

3. Remove(p) a. Assigning the highest priority to p - percolate p up to the root.

 b.  Deleting the element in the root and filling the hole by percolating down and trying to insert the last element in the queue.

 4. BuildHeap input N elements

place them into an empty heap through successive inserts. The worst case running time is O(NlogN).

Page 26: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Build Heap - O(N)

26

Given an array of elements to be inserted in the heap,

treat the array as a heap with order property violated,

and then do operations to fix the order property.

Page 27: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Example:150 80 40 30 10 70 110 100 20 90 60 50 120 140 130

27

150

80 40

30 1070 110

100 20 90 60 50 120 140 130

Page 28: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Example (cont)

28

150

80 40

20 1050 110

100 30 90 60 70 120 140 130

After processing height 1

Page 29: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Example (cont)

29

150

10 40

20 6050 110

100 30 90 80 70 120 140 130

After processing height 2

Page 30: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Example (cont)

30

10

20 40

30 6050 110

100 150 90 80 70 120 140 130

After processing height 3

Page 31: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Theorem

31

For a perfect binary tree of height h containing N = 2 h+1 - 1 nodes,

the sum S of the heights of the nodes is S = 2 h+1 - 1 - (h + 1) = O(N)

Page 32: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Proof

32

The tree has 1 node at height h, 2 nodes at height h-1, 4 nodes at height h -2, etc

1 (20) h2 (21) h - 14 (22) h - 28 (23) h - 3…….2 h 0

S = 2i (h - i), i = 0 to h

Page 33: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

33

S = h + 2(h - 1) + 4(h - 2) + 8 (h -

3) + …. 2(h-2).2 + 2(h-1).1 (1)

2S = 2h + 4(h - 1) + 8(h - 2) + 16 (h - 3)

+ …. 2(h-1).2 + 2(h).1 (2)

Subtract (1) from (2):

S = h -2h + 2 + 4 + 8 + …. 2 h = - h - 1 + (2 h+1 - 1) = (2 h+1 - 1) - (h + 1)

Page 34: Chapter 6: Priority Queues SCSC 321. Priority Queues  The model  Implementations  Binary heaps  Basic operations 2.

Proof (cont.)

34

Note: 1 + 2 + 4 + 8 + …. 2 h = (2 h+1 - 1)

Hence S = (2 h+1 - 1) - (h + 1)

Hence the complexity of building a heap with N nodes is linear O(N)