cs 2200: algorithms heaps and priority queues...2015/09/03  · applications: ! standby flyers !...

26
1 CS 2200: Algorithms Heaps and Priority Queues Bowdoin College Fall, 2015

Upload: others

Post on 06-Mar-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

1

CS 2200: Algorithms Heaps and Priority Queues

Bowdoin College Fall, 2015

Page 2: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

2

Queues and Priority Queues ! What’s a queue? ! What’s a priority queue?

n  Completely ordered?

Page 3: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

3

Priority Queue ADT ! A priority queue stores a

collection of items ! An item is a pair

(key, element) ! Main methods of the Priority

Queue ADT n  insertItem(k, o)

inserts an item with key k and element o

n  removeMin() removes the item with smallest key and returns its element

! Additional methods n  minKey()

returns, but does not remove, the smallest key of an item

n  minElement() returns, but does not remove, the element of an item with smallest key

n  size(), isEmpty() ! Applications:

n  Standby flyers n  Auctions n  Stock market

Page 4: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

4

Total Order Relation

! Keys in a priority queue can be arbitrary objects on which an order is defined

! Two distinct items in a priority queue can have the same key

! Mathematical concept of total order relation ≤ n  Totality property:

x ≤ y ∨ y ≤ x n  Antisymmetric property:

x ≤ y ∧ y ≤ x ⇒ x = y n  Transitive property:

x ≤ y ∧ y ≤ z ⇒ x ≤ z

Page 5: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

5

Sorting with a Priority Queue ! We can use a priority

queue to sort a set of comparable elements n  Insert the elements one

by one with a series of insertItem(e, e) operations

n  Remove the elements in sorted order with a series of removeMin() operations

! The running time of this sorting method depends on the priority queue implementation

Algorithm PQ-Sort(S, C) Input sequence S, comparator C for the elements of S Output sequence S sorted in increasing order according to C P = priority queue with

comparator C while (!S.isEmpty)

e = S.remove (S. first ()) P.insertItem(e, e)

while (!P.isEmpty) e = P.removeMin() S.insertLast(e)

Page 6: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

6

Sequence-Based Priority Queue ! PQ implementation with an

unsorted linked list

! Performance: n  insertItem takes O(1) time

since we can insert the item at the beginning or end of the sequence

n  removeMin, minKey and minElement take O(n) time since we have to traverse the entire sequence to find the smallest key

! PQ implementation with a sorted linked list

! Performance: n  insertItem takes O(n) time

for both since we have to find the right place to insert the item

n  removeMin, minKey and minElement take O(1) time since the smallest key is at the beginning of the sequence

4 5 2 3 1 1 2 3 4 5

Page 7: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

7

Selection-Sort

! Selection-sort is the variation of PQ-sort where the priority queue is implemented with an unsorted sequence

! Running time of Selection-sort: n  Inserting the elements into the priority queue with n

insertItem operations takes O(n) time n  Removing the elements in sorted order from the priority

queue with n removeMin operations takes time proportional to 1 + 2 + …+ n

! Selection-sort runs in O(n2) time

4 5 2 3 1

Page 8: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

8

Insertion-Sort

! Insertion-sort is the variation of PQ-sort where the priority queue is implemented with a sorted sequence

! Running time of Insertion-sort: n  Inserting the elements into the priority queue with n

insertItem operations takes time proportional to 1 + 2 + …+ n

n  Removing the elements in sorted order from the priority queue with a series of n removeMin operations takes O(n) time

! Insertion-sort runs in O(n2) time

1 2 3 4 5

Page 9: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

9

Heaps ! A heap is a binary tree

storing keys at its nodes and satisfying the following properties: n  Heap-Order: for every node v

other than the root, key(v) ≥ key(parent(v))

n  Complete Binary Tree: let h be the height of the heap w  for i = 0, … , h-1, there are 2i

nodes of depth i w  the last node of the heap is

the rightmost node at depth h

2

6 5

7 9

last node

Page 10: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

10

Heaps and Priority Queues ! We can use a heap to implement a priority queue ! We store a (key, element) item at each internal node ! We keep track of the position of the last node ! For simplicity, we show only the keys in subsequent

pictures (2, Sue)

(6, Mark) (5, Pat)

(9, Jeff) (7, Anna)

Page 11: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

11

Insertion into Heap ! Method insertItem of the

priority queue ADT corresponds to the insertion of a key k to the heap

! The insertion algorithm consists of three steps: n  Find the insertion node z

(the new last node) n  Store k at z n  Restore the heap-order

property (discussed next)

2

6 5

7 9

insertion node

z

2

6 5

7 9 1 z

Page 12: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

12

Upheap ! After the insertion of a new key k, the heap-order property may be

violated ! Algorithm upheap restores the heap-order property by swapping k

along an upward path from the insertion node ! Upheap terminates when the key k reaches the root or a node

whose parent has a key smaller than or equal to k ! Since a heap has height O(log n), upheap runs in O(log n) time

2

1 5

7 9 6 z

1

2 5

7 9 6 z

Page 13: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

13

Removal from a Heap ! Method removeMin of

the priority queue ADT corresponds to the removal of the root key from the heap

! The removal algorithm consists of three steps: n  Remove the root key n  Make the key of the last

node w the root key n  Restore the heap-order

property (discussed next)

2

6 5

7 9

last node

w

7

6 5

9 w

Page 14: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

14

Downheap ! After replacing the root key with the key k of the last node, the

heap-order property may be violated ! Algorithm downheap restores the heap-order property by

swapping key k with one of its children along a downward path from the root

! Downheap terminates when key k reaches a node whose children have keys greater than or equal to k

! Since a heap has height O(log n), downheap runs in O(log n) time

7

6 5

9 w

5

6 7

9 w

Page 15: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

15

Vector-Based Heap Implementation ! We can represent a heap with n

keys by means of a vector of length n + 1

! For the node at index i n  the left child is at index 2i n  the right child is at index 2i + 1 n  the parent is at index floor(i/2)

! Links between nodes are not explicitly stored

! The cell at index 0 is not used ! Operation insertItem corresponds

to inserting at index n + 1 and upheaping

! Operation removeMin corresponds to removing at index n and downheaping

2

6 5

7 9

2 5 6 9 7 1 2 3 4 5 0

Page 16: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

16

! Make a heap-based priority queue from the n keys to sort

! Remove the n keys from the heap one at a time

Heap-Sort

Page 17: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

17

! Insert n keys one at a time

! How long does it take to insert key i? ! So:

Top-Down Heap Construction

lgi ≈ n lgni=0

n

lgi

Page 18: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

18

! We can construct a heap storing n given keys in using a bottom-up construction with log n phases

! In phase i, pairs of heaps with 2i -1 keys are merged into heaps with 2i+1-1 keys

Bottom-Up Heap Construction

2i -1 2i -1

2i+1-1

Page 19: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

19

Merging Two Heaps ! We are given two

heaps and a key k ! We create a new heap

with the root node storing k and with the two heaps as subtrees

! We perform downheap to restore the heap-order property

7

3

5 8

2

6 4

3

5 8

2

6 4

2

3

5 8

4

6 7

Page 20: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

20

Example

15 16 12 4 9 6 20 23

25

15 16

5

12 4

11

9 6

27

20 23

Page 21: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

21

Example (contd.)

25

15 16

5

12 4

11

9 6

27

20 23

15

25 16

4

12 5

6

9 11

20

27 23

Page 22: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

22

Example (contd.)

7

15

25 16

4

12 5

8

6

9 11

20

27 23

4

15

25 16

5

12 7

6

8

9 11

20

27 23

Page 23: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

23

Example (end)

4

15

25 16

5

12 7

10

6

8

9 11

20

27 23

5

15

25 16

7

12 10

4

6

8

9 11

20

27 23

Page 24: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

24

Visual Analysis ! We visualize the worst-case time of a downheap with a proxy path

that goes first right and then repeatedly goes left until the bottom of the heap (this path may differ from the actual downheap path)

! Since no edge is traversed more than once, the total number of nodes of the proxy paths is O(n)

! Thus, bottom-up heap construction runs in O(n) time ! Bottom-up heap construction is faster than n successive insertions

and speeds up the first phase of heap-sort

Page 25: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

Non-Visual Analysis ! During phase i there are n/2i+1 pairs of heaps being combined ! Each pair has a downheap path length of i ! So length of all downheap paths during phase i is n(i/2i+1)< n(i/2i) ! Sum these over the lg n phases:

! And use this fact: ! So:

! And bottom-up heap construction is O(n) time

n i2 i

=i=1

lg n

∑ n i2 i

=i=1

lg n

∑ n i 12( )i

i=1

lg n

ix i =x

1− x( )2i=0

∑ , x <1

n i 12( )i <

i=1

lg n

∑ n i 12( )i

i=0

∑ = 2n

Page 26: CS 2200: Algorithms Heaps and Priority Queues...2015/09/03  · Applications: ! Standby flyers ! Auctions ! Stock market 4 Total Order Relation ! Keys in a priority queue can be arbitrary

26

Heap-Sort

! Consider a priority queue with n items implemented by means of a heap n  the space used is O(n) n  methods insertItem and

removeMin take O(log n) time

n  methods size, isEmpty, minKey, and minElement take time O(1) time

! Using a heap-based priority queue, we can sort a sequence of n elements in O(n log n) time

! The resulting algorithm is called heap-sort