lec 6 feb 17, 2011 section 2.5 of text (review of heap) chapter 3

36
Lec 6 Feb 17, 2011 Section 2.5 of text (review of heap) Chapter 3

Post on 20-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Lec 6 Feb 17, 2011

Section 2.5 of text (review of heap)

Chapter 3

Review of heap (Sec 2.5)

Heap is a data structure that supports a priority queue. Two versions (Max-heap, min-heap)

Max-heap operations (can do in O(log n) time. Insert(H, x) – add x to H. Delete-max(H) – remove the max elt. from H. Other operations: increase-key, decrease-key, delete(j)

– delete the key stored in index j of heap etc. Operations that take O(n) time:

search(x), delete(x) etc.

Min Heap with 9 Nodes

Complete binary tree with 9 nodes.

Min Heap With 9 Nodes

Min-heap property: A[k] <= A[2*k] (if 2*k <= n) and A[k] <= A[2*k+1] (if 2*k+1 <= n).

2

4

6 7 9 3

8 6

3

Max Heap With 9 Nodes

Example of a Max-heap

9

8

6 7 2 6

5 1

7

Heap Height

Since a heap is a complete binary tree, the height of an n node heap is log2 (n+1).

9 8 7 6 7 2 6 5 1

1 2 3 4 5 6 7 8 9 100

A Heap Is Efficiently Represented As An Array

9

8

6 7 2 6

5 1

7

Moving Up And Down A Heap

9

8

6 7 2 6

5 1

7

1

2 3

4 5 6 7

8 9Parent of node with index k is k/2

Left child of a node with index j is 2*jRight child of a node with index j is 2*j + 1

Putting An Element Into A Max Heap

Place to add the new key

9

8

6 7 2 6

5 1

7

7

Putting An Element Into A Max Heap

Example: New element is 5.

9

8

6 7 2 6

5 1

7

75

Putting An Element Into A Max Heap

New element is 20.

9

8

6

7

2 6

5 1

7

7

7

Putting An Element Into A Max Heap

New element is 20.

9

8

6

7

2 6

5 1

7

77

Putting An Element Into A Max Heap

New element is 20.

9

86

7

2 6

5 1

7

77

Putting An Element Into A Max Heap

New element is 20.

9

86

7

2 6

5 1

7

77

20

Putting An Element Into A Max Heap

Complete binary tree with 11 nodes.

9

86

7

2 6

5 1

7

77

20

Putting An Element Into A Max Heap

New element is 15.

9

86

7

2 6

5 1

7

77

20

Putting An Element Into A Max Heap

New element is 15.

9

8

6

7

2 6

5 1

7

77

20

8

Putting An Element Into A Max Heap

New element is 15.

8

6

7

2 6

5 1

7

77

20

8

9

15

Complexity of insert

Complexity is O(log n), where n is heap size.

8

6

7

2 6

5 1

7

77

20

8

9

15

DeleteMax operation

Max element is in the root.

8

6

7

2 6

5 1

7

77

20

8

9

15

DeleteMax

After max element is removed.

8

6

7

2 6

5 1

7

77 8

9

15

DeleteMax

Heap with 10 nodes. Location needs to be vacated. Find the right place to reinsert 8.

8

6

7

2 6

5 1

7

77 8

9

15

DeleteMax

6

7

2 6

5 1

7

77

9

15

Reinsert 8 into the heap.

DeleteMax

Reinsert 8 into the heap.

6

7

2 6

5 1

7

77

9

15

DeleteMax

Reinsert 8 into the heap.

6

7

2 6

5 1

7

77

9

15

8

DeleteMax – Another example

Max element is 15.

6

7

2 6

5 1

7

77

9

15

8

DeleteMax – Ex 2

After max element is removed.

6

7

2 6

5 1

7

77

9

8

DeleteMax – Ex 2

Heap with 9 nodes.

6

7

2 6

5 1

7

77

9

8

DeleteMax – Ex 2

Reinsert 7.

6 2 6

5 1

79

8

DeleteMax – Ex 2

Reinsert 7.

6 2 6

5 1

7

9

8

DeleteMax – Ex 2

Reinsert 7.

6 2 6

5 1

7

9

8

7

Complexity of DeleteMax

• Complexity is O(log n).

• Involves working down the heap, two comparisons and 1 assignment per level. There are at most log2 (n+1) levels.

• Total complexity <= 3 log2 (n+1) = O(log n).

6 2 6

5 1

7

9

8

7

Delete a key at a given index

Want an algorithm of complexity O(log n).

6 2 6

5 1

7

9

8

7

Delete (2)

Delete a key at a given index

To perform Delete(j):

A[j] = A[size]; size--;

adjust the heap at position j;

How to adjust?

6 2 6

5 1

7

9

8

7

Delete (2)

similar to DeleteMax

Delete a key at a given index : Ex – 2

16 2 6

15

7

19

18

17

Delete (6)

Adjustment may require percolate_up or percolate_down

Augmenting a heap

Suggest a data structure that acts like both a min-heap and max-heap.

i.e., it should support all three operations in O(log n) time:• Insert• DeleteMin• DeleteMax

Any suggestion?