Lecture 3. Recurrences / Heapsort -...

82
Intelligent Networking Laboratory H.CHOO 1/82 Copyright 2000-2020 Intelligent Networking Laboratory Lecture 3. Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L. Rivest Introduction to Algorithms, 3rd Edition, MIT Press, 2009 Sungkyunkwan University Hyunseung Choo [email protected]

Transcript of Lecture 3. Recurrences / Heapsort -...

Page 1: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 1/82Copyright 2000-2020 Intelligent Networking Laboratory

Lecture 3.

Recurrences / Heapsort

T. H. Cormen, C. E. Leiserson and R. L. Rivest

Introduction to Algorithms, 3rd Edition, MIT Press, 2009

Sungkyunkwan University

Hyunseung Choo

[email protected]

Page 2: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 2/82

Overview for Recurrences

Define what a recurrence is

Discuss three methods of solving recurrences

Substitution method

Recursion-tree method

Master method

Examples of each method

Page 3: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 3/82

Definition

A recurrence is an equation or inequality that describes

a function in terms of its value on smaller inputs.

Example from MERGE-SORT

T(n) =(1) if n=1

2T(n/2) + (n) if n>1

Page 4: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 4/82

Technicalities

Normally, independent variables only assume integral

values

Example from MERGE-SORT revisited

T(n) =(1) if n=1

T(n/2) + T(n/2) + (n) if n>1

For simplicity, ignore floors and ceilings – often

insignificant

Page 5: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 5/82

Technicalities

Boundary conditions (small n) are also glossed over

Value of T(n) assumed to be small constant for small n

T(n) = 2T(n/2) + (n)

Page 6: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 6/82

Substitution Method

Involves two steps:

Guess the form of the solution

Use mathematical induction to find the constants and show

the solution works

Drawback

Applied only in cases where it is easy to guess at solution

Useful in estimating bounds on true solution even if

latter is unidentified

Page 7: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 7/82

Substitution Method

Example:

T(n) = 2T(n/2) + n

Guess:

T(n) = O(n lg n)

Prove by induction:

T(n) cn lg n

for suitable c>0.

Page 8: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 8/82

Inductive Proof

Networking Laboratory 8/82

We’ll not worry about the basis case for the moment –

we’ll choose this as needed – clearly we have:

T(1) = (1) cn lg n

Inductive hypothesis: For values of n < k the inequality holds, i.e., T(n) cn lg n

We need to show that this holds for n = k as well.

Page 9: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 9/82

Inductive Proof

Networking Laboratory 9/82

In particular, for n = k/2, the inductive hypothesis

should hold, i.e.,

T(k/2) c k/2 lg k/2

The recurrence gives us:

T(k) = 2T(k/2) + k

Substituting the inequality above yields:

T(k) 2[c k/2 lg k/2] + k

Page 10: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 10/82

Inductive Proof

Networking Laboratory 10/82

Because of the non-decreasing nature of the functions

involved, we can drop the “floors” and obtain:

T(k) 2[c (k/2) lg (k/2)] + k

Which simplifies to:

T(k) ck (lg k − lg 2) + k

Or, since lg 2 = 1, we have:

T(k) ck lg k − ck + k = ck lg k + (1− c)k

So if c 1, T(k) ck lg k Q.E.D.

Page 11: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 11/82

Practice Problems

Use the substitution method to show that

Networking Laboratory 11/82

)()( 2nOnT

=

+=

1)1(

)3/(7)( 2

T

nnTnT

Page 12: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 12/82

Recursion-Tree Method

Straightforward technique of coming up with a good

guess

Can help the Substitution Method

Recursion tree: visual representation of recursive call

hierarchy where each node represents the cost of a

single subproblem

Networking Laboratory 12/82

Page 13: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 13/82

Recursion-Tree Method

Networking Laboratory 13/82

T(n) = 3T(n/4) + (n2)

Page 14: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 14/82

Recursion-Tree Method

Networking Laboratory 14/82

T(n) = 3T(n/4) + (n2)

Page 15: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 15/82

Recursion-Tree Method

T(n) = 3T(n/4) + (n2)

Page 16: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 16/82

Recursion-Tree Method

Page 17: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 17/82

Recursion-Tree Method

Gathering all the costs together:

T(n) = (3/16)icn2 + (nlog43) i=0

log4n−1

T(n) (3/16)icn2 + o(n) i=0

T(n) (1/(1−3/16))cn2 + o(n)

T(n) (16/13)cn2 + o(n)

T(n) = O(n2)

Page 18: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 18/82

Recursion-Tree Method

T(n) = T(n/3) + T(2n/3) + O(n)

Page 19: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 19/82

Recursion-Tree Method

An overestimate of the total cost:

T(n) = cn + (nlog3/22) i=0

log3/2n−1

T(n) = O(n lg n) + (n lg n)

Counter-indications:

T(n) = O(n lg n)

Notwithstanding this, use as “guess”:

Page 20: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 20/82

Substitution Method

Recurrence:

T(n) = T(n/3) + T(2n/3) + cn

Guess:

T(n) = O(n lg n)

Prove by induction:

T(n) dn lg n

for suitable d>0 (we already use c)

Page 21: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 21/82

Inductive Proof

Again, we’ll not worry about the basis case

Inductive hypothesis: For values of n < k the inequality holds, i.e., T(n) dn lg n

We need to show that this holds for n = k as well.

In particular, for n = k/3, and n = 2k/3, the inductive

hypothesis should hold…

Page 22: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 22/82

Inductive Proof

That is

T(k/3) d k/3 lg k/3

T(2k/3) d 2k/3 lg 2k/3

The recurrence gives us:

T(k) = T(k/3) + T(2k/3) + ck

Substituting the inequalities above yields:

T(k) [d (k/3) lg (k/3)] + [d (2k/3) lg (2k/3)] + ck

Page 23: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 23/82

Inductive Proof

Networking Laboratory 23/82

Expanding, we get

T(k) [d (k/3) lg k − d (k/3) lg 3] +

[d (2k/3) lg k − d (2k/3) lg(3/2)] + ck

Rearranging, we get:

T(k) dk lg k − d[(k/3) lg 3 + (2k/3) lg(3/2)] + ck

T(k) dk lg k − dk[lg 3 − 2/3] + ck

When dc/(lg3 − (2/3)), we should have

the desired:

T(k) dk lg k

Page 24: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 24/82

Practice Problems

Use the recursion tree method to show that )()( 2nnT 2)2/()4/()( nnTnTnT ++=

Page 25: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 25/82

Master Method

Provides a “cookbook” method for solving recurrences

Recurrence must be of the form:

T(n) = aT(n/b) + f(n)

where a1 and b>1 are constants and f(n) is an

asymptotically positive function.

Page 26: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 26/82

Master Method

Theorem 4.1:

Given the recurrence previously defined, we have:

Networking Laboratory 26/82

1. If f(n) = O(n logba−)

for some constant >0,

then T(n) = (n logba)

2. If f(n) = (n logba),

then T(n) = (nlogba lg n)

Page 27: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 27/82

Master Method

Networking Laboratory 27/82

3. If f(n) = (n logba+)

for some constant >0,

and if

af(n/b) cf(n)

for some constant c<1

and all sufficiently large n,

then T(n) = (f(n))

Page 28: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 28/82

Example

Estimate bounds on the following recurrence:

N

e

t

w

o

r

k

i

n

g

L

a

b

o

r

a

t

o

r

y

2

8

/

8

2

Use the recursion tree method to arrive at a “guess” then verify

using induction

Point out which case in the Master Method this falls in

Page 29: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 29/82

Recursion Tree

Recurrence produces the following tree:

N

e

t

w

o

r

k

i

n

g

L

a

b

o

r

a

t

o

r

y

2

9

/

8

2

Page 30: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 30/82

Cost Summation

Collecting the level-by-level costs:

N

e

t

w

o

r

k

i

n

g

L

a

b

o

r

a

t

o

r

y

3

0

/

8

2 A geometric series with base less than one;

converges to a finite sum, hence, T(n) = (n2)

Page 31: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 31/82

Exact Calculation

If an exact solution is preferred:

N

e

t

w

o

r

k

i

n

g

L

a

b

o

r

a

t

o

r

y

3

1

/

8

2

Using the formula for a partial geometric series:

Page 32: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 32/82

Exact Calculation

Solving further:

N

e

t

w

o

r

k

i

n

g

L

a

b

o

r

a

t

o

r

y

3

2

/

8

2

Page 33: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 33/82

Master Theorem (Simplified)

Networking Laboratory 33/82

Page 34: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 34/82

Practice Problems

Use Master theorem to find asymptotic bound.

a.

b.

c.

nnTnT += )2/(4)(

2)2/(4)( nnTnT +=

3)2/(4)( nnTnT +=

Page 35: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 35/82

Introduction for Heapsort

Heapsort

Running time: O(n lg n)

Like merge sort

Sorts in place: only a constant number of array elements

are stored outside the input array at any time

Like insertion sort

Heap

A data structure used by Heapsort to manage information

during the execution of the algorithm

Can be used as an efficient priority queue

Page 36: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 36/82

Perfect Binary Tree

For binary tree with height h

All nodes at levels h–1 or less have 2 children (full)

h = 1 h = 3h = 2

h = 0

Page 37: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 37/82

Complete Binary Trees

For binary tree with height h

All nodes at levels h–2 or less have 2 children (full)

All leaves on level h are as far left as possible

h = 1

h = 2

h = 0

Page 38: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 38/82

Complete Binary Trees

h = 3

Page 39: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 39/82

Heaps

Two key properties

Complete binary tree

Value at node

Smaller than or equal to values in subtrees

Greater than or equal to values in subtrees

Example max-heap

Y X

Z X

Y

X

Z

Page 40: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 40/82

Heap and Non-heap Examples

Min-heaps Non-heaps

6

2

22

8 45 25

6

2

22

8 45 25

8

6 455

6 22

25

5

5 45

5

Page 41: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 41/82

Binary Heap

An array object that can be viewed as a nearly

complete binary tree

Each tree node corresponds to an array element

that stores the value in the tree node

The tree is completely filled on all levels except possibly the

lowest, which is filled from the left up to a point

A has two attributes

length[A]: number of elements in the array

heap-size[A]: number of elements in the heap stored within A

heap-size[A] length[A]

max-heap and min-heap

Page 42: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 42/82

A Max-heap

Page 43: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 43/82

Length and Heap-Size

11 7

711

Length = 10

Heap-Size = 7

Page 44: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 44/82

Heap Computation

Given the index i of a node, the indices of its parent,

left child, and right child can be computed simply:

12:)(

2:)(

2/:)(

+ireturniRIGHT

ireturniLEFT

ireturniPARENT

  

  

  

Page 45: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 45/82

Heap Computation

16

14

8 7

142

10

9 3

0

1

2

3

parent(i) = floor(i/2)

left-child(i) = 2i

right-child(i)= 2i +1

1

2 3

4 5 6 7

8 9 10

16 14 10 8 7 9 3 2 4 1

1 2 3 4 5 6 7 8 9 10

Page 46: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 46/82

Heap Property

Heap property

The property that the values in the node must satisfy

Max-heap property, for every node i other than the

root

A[PARENT(i)] A[i]

The value of a node is at most the value of its parent

The largest element in a max-heap is stored at the root

The subtree rooted at a node contains values

no larger than that contained at the node itself

Page 47: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 47/82

Heap Height

The height of a node in a heap

The number of edges on the longest simple downward path

from

the node to a leaf

The height of a heap is the height of its root

The height of a heap of n elements is (lg n)

Exercise 6.1-2 on page 129

Page 48: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 48/82

Heap Procedures

MAX-HEAPIFY

Maintains the max-heap property

O(lg n)

BUILD-MAX-HEAP

Produces a max-heap from an unordered input array

O(n)

HEAPSORT

Sorts an array in place

O(n lg n)

Page 49: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 49/82

Maintaining the Heap Property

MAX-HEAPIFY

Inputs: an array A and an index i into the array

Assume the binary tree rooted at LEFT(i) and RIGHT(i) are max-heaps,

but A[i] may be smaller than its children

violate the max-heap property

MAX-HEAPIFY let the value at A[i] floats down in the max-heap

Page 50: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 50/82

Example of MAX-HEAPIFY

16

4

14 7

18

10

9 3

4 < 14

2

Page 51: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 51/82

Example of MAX-HEAPIFY

16

14

4 7

18

10

9 3

4 < 8

2

Page 52: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 52/82

Example of MAX-HEAPIFY

16

14

8 7

14

10

9 3

2

Page 53: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 53/82

MAX-HEAPIFY

Extract the indices of LEFT and RIGHT

children of i

Choose the largest of A[i], A[l], A[r]

Float down A[i] recursively

Page 54: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 54/82

MAX-HEAPIFY

Recursive versionInteractive version

Page 55: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 55/82

Running Time of MAX-HEAPIFY

(1) to find out the largest among

A[i], A[LEFT(i)], and A[RIGHT(i)]

Plus the time to run MAX-HEAPIFY on a

subtree rooted at one of the children of node i

The children’s subtrees each have size

at most 2n/3 (why?)

the worst case occurs when the last row of the tree is

exactly half full

T(n) T(2n/3) + (1)

By case 2 of the master theorem

T(n) = O(lg n)

7/11 = 0.63

Page 56: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 56/82

Heapify Example

Page 57: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 57/82

Building a Max-Heap

Observation: A[(n/2+1)..n] are all leaves of the tree

Exercise 6.1-7 on page 130

Each is a 1-element heap to begin with

Upper bound on the running time

O(lg n) for each call to MAX-HEAPIFY, and call n times → O(n lg n)

Not tight

Page 58: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 58/82

Building a

Max-Heap

Page 59: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 59/82

Loop Invariant

At the start of each iteration of the for loop of lines 2-3, each node i+1,

i+2, .., n is the root of a max-heap

Initialization: Prior to the first iteration of the loop, i = n/2. Each

node n/2+1, n/2+2,.., n is a leaf and the root of a trivial max-heap.

Maintenance: Observe that the children of node i are numbered

higher than i. By the loop invariant, therefore, they are both roots of

max-heaps. This is precisely the condition required for the call

MAX-HEAPIFY(A, i) to make node i a max-heap root. Moreover, the

MAX-HEAPIFY call preserves the property that nodes i+1, i+2, …, n

are all roots of max-heaps. Decrementing i in the for loop update

reestablishes the loop invariant for the next iteration.

Termination: At termination, i=0. By the loop invariant, each node 1, 2, …,

n

is the root of a max-heap. In particular, node 1 is.

Page 60: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 60/82

Cost for Build-MAX-HEAP

Heap-properties of an n-element heap

Height = lg n

At most n/2h+1 nodes of any height h

Exercise 6.3-3 on page 135

)()2

()2

()( 2 0

lg

0

lg

01

nOh

nOh

nOhOn

hh

n

hh

n

hh

===

===+

Ignore the constant ½ 2

)2

11(

21

2 20

=−

=

=hh

h

20 )1( x

xkx

k

k

−=

=(for |x| < 1)

Page 61: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 61/82

Heapsort

Using BUILD-MAX-HEAP to build a max-heap on the input array A[1..n],

where n=length[A]

Put the maximum element, A[1], to A[n]

Then discard node n from the heap by decrementing heap-size(A)

A[2..n-1] remain max-heaps, but A[1] may violate

call MAX-HEAPIFY(A, 1) to restore the max-heap property

for A[1..n-1]

Repeat the above process from n down to 2

Cost: O(n lg n)

BUILD-MAX-HEAP: O(n)

Each of the n-1 calls to MAX-HEAPIFY takes time O(lg n)

Page 62: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 62/82

Example: Heapsort

16

14

8 7

142

10

9 3

1

2 3

4 5 6 7

8 9 10

16 14 10 8 7 9 3 2 4 1

Page 63: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 63/82

Example: Heapsort (2)

14

8

4 7

1612

10

9 3

1

2 3

4 5 6 7

8 9 10

Page 64: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 64/82

Example: Heapsort (3)

10

8

4 7

16142

9

1 3

1

2 3

4 5 6 7

8 9 10

Page 65: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 65/82

Example: Heapsort (4)

9

8

4 7

161410

3

1 2

1

2 3

4 5 6 7

8 9 10

Page 66: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 66/82

Example: Heapsort (5)

7

4

1 2

161410

3

8 9

1

2 3

4 5 6 7

8 9 10

Page 67: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 67/82

Example: Heapsort (6)

4

2

1 7

161410

3

8 9

1

2 3

4 5 6 7

8 9 10

Page 68: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 68/82

Example: Heapsort (7)

1

2

4 7

161410

3

8 9

1

2 3

4 5 6 7

8 9 10

Page 69: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 69/82

Example: Heapsort (8)

1

2

4 7

161410

3

8 9

1

2 3

4 5 6 7

8 9 10

1 2 3 4 7 8 9 10 14 16

Page 70: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 70/82

Heapsort Algorithm

Page 71: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 71/82

Heapsort Algorithm

Page 72: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 72/82

Heap & Heap Sort Algorithm

Video Content

An illustration of Heap and Heap Sort.

Page 73: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 73/82

Heap & Heap Sort Algorithm

Page 74: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 74/82

Priority Queues

We can implement the priority queue ADT with a heap. The operations are:

Max(S) – returns the maximum element

Extract-Max(S) – remove and return the maximum element

Insert(x,S) – insert element x into S

Increase-Key(S,x,k) – increase x’s value to k

Page 75: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 75/82

Extract-Max

Heap-Maximum(A) return A[1]

Heap-Extract-Max(A)

1. if heapsize[A] < 1

2. then error “heap underflow”

3. max A[1]

4. A[1] A[heapsize[A]]

5. heapsize[A] heapsize[A] –1

6. Max-Heapify(A,1)

7. return max

(1)

O(lg n)

Page 76: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 76/82

Increase-Key

Heap-Increase-key(A, i, key)

1. if key < A[i]

2. then error “new key smaller than existing one”

3. A[i] key

4. while i > 1 and A[parent(i)] < A[i]

5. do Exchange(A[i], parent(A[i]))

6. i parent(i)

O(lg n)

Page 77: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 77/82

Example: increase key (1)

16

14

8 7

142

10

9 3

1

2 3

4 5 6 7

8 9 10

increase 4 to 15

Page 78: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 78/82

Example: increase key (2)

16

14

8 7

1152

10

9 3

1

2 3

4 5 6 7

8 9 10

Page 79: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 79/82

Example: increase key (3)

16

14

15 7

182

10

9 3

1

2 3

4 5 6 7

8 9 10

Page 80: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 80/82

Example: increase key (4)

16

15

14 7

182

10

9 3

1

2 3

4 5 6 7

8 9 10

Page 81: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 81/82

Insert-Max

Heap-Insert-Max(A, key)

1. heapsize[A] heapsize[A] + 1

2. A[heapsize[A]] -∞3. Heap-Increase-Key(A, heapsize[A], key)

O(lg n)

Page 82: Lecture 3. Recurrences / Heapsort - SKKUmonet.skku.edu/wp-content/uploads/2020/03/Algorithm_03.pdf · 2020. 3. 8. · Recurrences / Heapsort T. H. Cormen, C. E. Leiserson and R. L.

Intelligent Networking Laboratory H.CHOO 82/82

Practice Problems

Show the resulting heap after insert 20 into the following

heap