+ All Categories
Home > Documents > CS2351 Data Structures

CS2351 Data Structures

Date post: 09-Feb-2022
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
47
1 CS2351 Data Structures Lecture 4: Heap
Transcript
Page 1: CS2351 Data Structures

1

CS2351Data Structures

Lecture 4: Heap

Page 2: CS2351 Data Structures

2

•Introduce Heap–Shape Property and Heap Property–Heap Operations

•Heapsort: Use Heap to Sort•Fixing heap property for all nodes•Use Array to represent Heap•Introduce Priority Queue

About this lecture

Page 3: CS2351 Data Structures

3

A heap (or binary heap) is a binary treethat satisfies both:

(1) Shape Property– All levels, except deepest, are fully filled– Deepest level is filled from left to right(2) Heap Property– Value of a node · Value of its children

Heap

Page 4: CS2351 Data Structures

4

Satisfying Shape Property

Example of a tree withshape property

Page 5: CS2351 Data Structures

5

Not Satisfying Shape Property

This level (not deepest)is NOT fully filled

Page 6: CS2351 Data Structures

6

Not Satisfying Shape Property

Deepest level NOTfilled from left to right

Page 7: CS2351 Data Structures

7

Satisfying Heap Property

Page 8: CS2351 Data Structures

8

Not Satisfying Heap Property

Help!

Page 9: CS2351 Data Structures

9

Q.Q. Given a heap, what is so special aboutthe root’s value?

A.A. …always the minimum

Min Heap

Because of this, the previous heapis also called a min heap

Page 10: CS2351 Data Structures

10

• Find-Min : find the minimum value

(1) time• Extract-Min : delete the minimum value

(log n) time (how??)

• Insert : insert a new value into heap

(log n) time (how??)

Heap Operations

n = # nodes in the heap

Page 11: CS2351 Data Structures

11

How to do Extract-Min?3

8 4

2313 12 24

3843

Heap before Extract-Min

Page 12: CS2351 Data Structures

12

Step 1: Restore Shape Property3

8 4

2313 12 24

3843

Copy value of last node to root.Next, remove last node

Page 13: CS2351 Data Structures

13

Next, highlight the root Only this node may violate heap property

Step 2: Restore Heap Property38

8 4

2313 12 24

43

If violates, swap highlighted node with “smaller”child(if not, everything done)

Page 14: CS2351 Data Structures

14

Step 2: Restore Heap Property4

8 38

2313 12 24

43After swapping, only the highlighted

node may violate heap property

If violates, swap highlighted node with “smaller”child(if not, everything done)

Page 15: CS2351 Data Structures

15

Step 2: Restore Heap Property4

8 12

2313 38 24

43As soon as the highlighted node

satisfies the heap property

Everything done !!!

Page 16: CS2351 Data Structures

16

How to do Insert?3

8 4

2313 12 24

3843

Heap before Insert

Page 17: CS2351 Data Structures

17

Step 1: Restore Shape Property3

8 4

2313 12 24

3843

Create a new node with the new value.Next, add it to the heap at correct position

5

Page 18: CS2351 Data Structures

18

Highlight the new node Only this node’s parentmay violate heap property

Step 2: Restore Heap Property3

8 4

2313 12 24

3843 5

If violates, swap highlighted node with parent(if not, everything done)

Page 19: CS2351 Data Structures

19

After swapping, onlyhighlighted node’s parentmay violate heap property

3

8 4

513 12 24

3843 23

Step 2: Restore Heap Property

If violates, swap highlighted node with parent(if not, everything done)

Page 20: CS2351 Data Structures

20

As soon as highlighted node’sparent satisfies heap property

3

5 4

813 12 24

3843 23

Step 2: Restore Heap Property

Everything done !!!

Page 21: CS2351 Data Structures

21

Let h = node-height of heap• Both Extract-Min and Insert require

(h) time to perform

Since h = (log n) (why??)

Both require (log n) time

Running Time

n = # nodes in the heap

Page 22: CS2351 Data Structures

22

Q.Q. Given n numbers, can we use heap to sortthem, say, in ascending order?

A.A. Yes, and extremely easy !!!1. Call Insert to insert n numbers into heap2. Call Extract-Min n times numbers are output in sorted order

Runtime: n£(log n) + n£(log n) = (n log n)

Heapsort

This sorting algorithm is called heapsort

Page 23: CS2351 Data Structures

23

Suppose that we are given a binary treewhich satisfies the shape property

However, the heap property of the nodesmay not be satisfied …

Question: Can we make the tree into a heapin (n) time?

Challenge(Fixing heap property for all nodes)

n = # nodes in the tree

Page 24: CS2351 Data Structures

24

How to make it a heap?

12

4 13

2343 8 3

3824

Page 25: CS2351 Data Structures

25

u = root of a binary treeL = subtree rooted at u’s

left childR = subtree rooted at u’s

right child

Observationu

RL

Obs: If L and R satisfy heap property, we can makethe tree rooted at u satisfy heap property in( max { height(L), height(R) } ) time.

We denote the above operation by Heapify(u)

Page 26: CS2351 Data Structures

26

Heapify

Then, for any tree T, we can make T satisfythe heap property as follows:

Step 1. h = node_height(T) ;

Step 2. for k = h, h-1, …, 1

for each node u at level k

Heapify(u) ;

Why is the above algorithm correct?

Page 27: CS2351 Data Structures

27

Example Run12

4 13

2343 8 3

3824

First, heapify this tree

Page 28: CS2351 Data Structures

28

Example Run12

4 13

2343 8 3

3824

Next, heapify this tree

Page 29: CS2351 Data Structures

29

Example Run12

4 13

2343 8 3

3824

Next, heapify this tree

Page 30: CS2351 Data Structures

30

Example Run12

4 13

2324 8 3

3843 Next, heapify this tree

Page 31: CS2351 Data Structures

31

Example Run12

4 13

2324 8 3

3843Next, heapify this tree

Page 32: CS2351 Data Structures

32

Example Run12

4 13

2324 8 3

3843Next, heapify this tree

Page 33: CS2351 Data Structures

33

Example Run12

4 13

2324 8 3

3843

Next, heapify this tree

Page 34: CS2351 Data Structures

34

Example Run12

4 13

2324 8 3

3843Next, heapify this tree

Page 35: CS2351 Data Structures

35

Example Run12

4 3

2324 8 13

3843

Finally, heapify the whole tree

Page 36: CS2351 Data Structures

36

Example Run3

4 8

2324 12 13

3843

Everything Done !

Page 37: CS2351 Data Structures

37

Suppose that we are given a binary treewhich satisfies the shape property

However, the heap property of the nodesmay not be satisfied …

Question: Can we make the tree into a heapin (n) time?

Back to the Challenge(Fixing heap property for all nodes)

n = # nodes in the tree

Page 38: CS2351 Data Structures

38

Let h = node-height of treeSo, 2h-1 · n · 2h - 1 (why??)

For a tree with shape property,at most 2h-1 nodes at level h,exactly 2h-2 nodes at level h-1,exactly 2h-3 nodes at level h-2, …

Back to the Challenge(Fixing heap property for all nodes)

Page 39: CS2351 Data Structures

39

Using the previous algorithm to solve thechallenge, the total time is at most

2h-1£1 + 2h-2£2 + 2h-3£3+ …+ 1£h [why??]

= 2h ( 1£½ + 2£(½)2 + 3£(½)3 + …+ h£(½)h )

· 2hk=1 to 1 k£(½)k = 2h £ 2 · 4n

Thus, total time is O(n)

Back to the Challenge(Fixing heap property for all nodes)

Page 40: CS2351 Data Structures

40

Array Representation of Heap

??

?? ??

???? ?? ??

????

1

2 3

4 5 6 7

8 9

Given a heap.

Suppose we mark theposition of root as 1,and mark other nodes ina way as shown in theright figure. (BFS order)

Anything special aboutthis marking?

Page 41: CS2351 Data Structures

41

Array Representation of Heap

??

?? ??

???? ?? ??

????

1

2 3

4 5 6 7

8 9

Yes, something special:

1. If the heap has nnodes, the marks arefrom 1 to n

2. Children of x, if exist,are 2x and 2x+1

3. Parent of x is b x/2 c

Page 42: CS2351 Data Structures

42

• The special properties of the markingallow us to use an array A[1..n] to storea heap of size n

Array Representation of Heap

Advantage:Avoid storing or using tree pointers !!

Try this at home:Write codes for Insert and Extract-Min,assuming the heap is stored in an array

Page 43: CS2351 Data Structures

43

Max Heap

We can also define a max heap, by changingthe heap property to:Value of a node ¸ Value of its children

Max heap supports the following operations:(1) Find Max, (2) Extract Max, (3) Insert

Do you know how to do these operations?

Page 44: CS2351 Data Structures

44

Priority Queue

Consider S = a set of items, each has a keyPriority queue on S supports:Min( ): return item with min key

Extract-Min( ): remove item with min key

Insert(x,k): insert item x with key k

Decrease-Key(x,k): decrease key of x to k

Page 45: CS2351 Data Structures

45

Using Heap as Priority Queue1. Store the items in an array2. Use a heap to store keys of the items3. Store links between an item and its keyE.g.,

item 9

item 2

item 1

This node storeitem 1’s key

Page 46: CS2351 Data Structures

46

Previous scheme supports Min in O(1) time,Extract-Min and Insert in O(log n) time

It can support Decrease-Key in O(log n) timeE.g.,

Node storing keyvalue of item x

How do we decreasethe key to k ??

Using Heap as Priority Queue

Page 47: CS2351 Data Structures

47

• In algorithm classes (or perhaps laterlectures), we will look at other ways toimplement a priority queue• with different time bounds for the

operations

Remark: Priority Queue can be used forfinding MST or shortest paths,and job scheduling

Other Schemes?


Recommended