heaps - donald bren school of information and computer ...goodrich/teach/cs260p/notes/heap.pdf ·...

22
Heaps 1 Heaps © 2015 Goodrich and Tamassia Presentation for use with the textbook Algorithm Design and Applications, by M. T. Goodrich and R. Tamassia, Wiley, 2015 xkcd. http://xkcd.com/835/. “Tree.” Used with permission under Creative Commons 2.5 License.

Upload: buidieu

Post on 16-Mar-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

Heaps 1

Heaps

© 2015 Goodrich and Tamassia

Presentation for use with the textbook Algorithm Design and Applications, by M. T. Goodrich and R. Tamassia, Wiley, 2015

xkcd. http://xkcd.com/835/. “Tree.” Used with permission under Creative Commons 2.5 License.

Heaps 2

Recall Priority Queue Operations

q  A priority queue stores a collection of entries

q  Each entry is a pair (key, value)

q  Main methods of the Priority Queue ADT n  insert(k, v)

inserts an entry with key k and value v

n  removeMin() removes and returns the entry with smallest key

q  Additional methods n  min()

returns, but does not remove, an entry with smallest key

n  size(), isEmpty()

q  Applications: n  Standby flyers n  Auctions n  Stock market enigines

© 2015 Goodrich and Tamassia

Heaps 3

Recall PQ Sorting q  We use a priority queue

n  Insert the elements with a series of insert operations n  Remove the elements in sorted order with a series of removeMin

operations

q  The running time depends on the priority queue implementation: n  Unsorted sequence gives selection-sort: O(n2) time n  Sorted sequence gives insertion-sort: O(n2) time

q  Can we do better?

© 2015 Goodrich and Tamassia

Heaps 4

Heaps q  A heap is a binary tree storing

keys at its nodes and satisfying the following properties:

q  Heap-Order: for every internal node v other than the root, key(v) ≥ key(parent(v))

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

nodes of depth i n  at depth h - 1, the internal nodes

are to the left of the external nodes

2

6 5

7 9

q  The last node of a heap is the rightmost node of maximum depth

last node

© 2015 Goodrich and Tamassia

Heaps 5

Height of a Heap q  Theorem: A heap storing n keys has height O(log n)

Proof: (we apply the complete binary tree property) n  Let h be the height of a heap storing n keys n  Since there are 2i keys at depth i = 0, … , h - 1 and at least one key

at depth h, we have n ≥ 1 + 2 + 4 + … + 2h-1 + 1

n  Thus, n ≥ 2h , i.e., h ≤ log n

1

2

2h-1

1

keys 0

1

h-1

h

depth

© 2015 Goodrich and Tamassia

Heaps 6

Heaps and Priority Queues q  We can use a heap to implement a priority queue q  We store a (key, element) item at each internal node q  We keep track of the position of the last node

(2, Sue)

(6, Mark) (5, Pat)

(9, Jeff) (7, Anna)

© 2015 Goodrich and Tamassia

Heaps 7

Array-based Heap Implementation q  We can represent a heap with n

keys by means of an array of length n

q  For the node at rank i n  the left child is at rank 2i n  the right child is at rank 2i + 1

q  Links between nodes are not explicitly stored

q  Operation add corresponds to inserting at rank n + 1

q  Operation remove_min corresponds to removing at rank n

q  Yields in-place heap-sort

2

6 5

7 9

2 5 6 9 7 1 2 3 4 5

© 2015 Goodrich and Tamassia

Heaps 8

Insertion into a Heap q  Method insertItem of the

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

q  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

2

6 5

7 9 1

z

z

© 2015 Goodrich and Tamassia

Heaps 9

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

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

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

whose parent has a key smaller than or equal to k q  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

© 2015 Goodrich and Tamassia

Insertion Pseudo-Code q  Assumes an array-based heap

implementation.

© 2015 Goodrich and Tamassia Heaps 10

Heaps 11

Removal from a Heap q  Method removeMin of

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

q  The removal algorithm consists of three steps n  Replace the root key with

the key of the last node w n  Remove w n  Restore the heap-order

property (discussed next)

2

6 5

7 9

last node

w

7

6 5

9 w

new last node

© 2015 Goodrich and Tamassia

Heaps 12

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

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

swapping key k along a downward path from the root q  Upheap terminates when key k reaches a leaf or a node whose

children have keys greater than or equal to k q  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

© 2015 Goodrich and Tamassia

RemoveMin Pseudo-code q  Assumes heap is implemented with an array.

© 2015 Goodrich and Tamassia Heaps 13

q  A heap has the following performance for the priority queue operations.

q  The above analysis is based on the following facts:

n  The height of heap T is O(log n), since T is complete. n  In the worst case, up-heap and down-heap bubbling take time proportional

to the height of T. n  Finding the insertion position in the execution of insert and updating the

last node position in the execution of removeMin takes constant time. n  The heap T has n internal nodes, each storing a reference to a key and a

reference to an element.

Performance of a Heap

© 2015 Goodrich and Tamassia Heaps 14

Heaps 15

Heap-Sort q  Consider a priority

queue with n items implemented by means of a heap n  the space used is O(n) n  methods insert and

removeMin take O(log n) time

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

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

q  The resulting algorithm is called heap-sort

q  Heap-sort is much faster than quadratic sorting algorithms, such as insertion-sort and selection-sort

© 2015 Goodrich and Tamassia

Heaps 16

Merging Two Heaps q  We are given two two

heaps and a key k q  We create a new heap

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

q  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

© 2015 Goodrich and Tamassia

Heaps 17

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

q  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

© 2015 Goodrich and Tamassia

Heaps 18

Example

15 16 12 4 7 6 20 23

25

15 16

5

12 4

11

7 6

27

20 23

© 2015 Goodrich and Tamassia

Heaps 19

Example (contd.)

25

15 16

5

12 4

11

9 6

27

20 23

15

25 16

4

12 5

6

9 11

23

20 27

© 2015 Goodrich and Tamassia

Heaps 20

Example (contd.)

7

15

25 16

4

12 5

8

6

9 11

23

20 27

4

15

25 16

5

12 7

6

8

9 11

23

20 27

© 2015 Goodrich and Tamassia

Heaps 21

Example (end)

4

15

25 16

5

12 7

10

6

8

9 11

23

20 27

5

15

25 16

7

12 10

4

6

8

9 11

23

20 27

© 2015 Goodrich and Tamassia

Heaps 22

Analysis q  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)

q  Since each node is traversed by at most two proxy paths, the total number of nodes of the proxy paths is O(n)

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

and speeds up the first phase of heap-sort, which takes O(n log n) time in its second phase.

© 2015 Goodrich and Tamassia