30
CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

Embed Size (px)

Citation preview

Page 1: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Foundations II: Data Structures and Algorithms

Topic 2:

-- Analyzing algorithms

-- Solving recurrences

Page 2: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Example: for Loop (1)

Textbook A.1 for summation formulas

What if i (or j) starts from 1000 ?

What if i starts from n/2 ?

What if j ends with i2 ?

What if j ends with ?

Page 3: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Example: for Loop (2)

What if we change the first line to n > 100000 ?

Page 4: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Evaluating Summations

Evaluate No fixed technique Be familiar with some basics

Textbook Appendix A.1and A.2

Page 5: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Two Useful Techniques

Splitting summations E.g, ,

Using integral: If f is monotonically increasing,

E.g,

Page 6: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Example: while Loop

What if we change the to ?

What if we change the to ?

Page 7: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Analysis of while Loop

Stops when , that is, after iterations.

IChanges to since for any

constant c.

Page 8: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

More Examples (0)

What if we change the to ?

Page 9: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

More Examples (1)

Page 10: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

More Examples (2)

What if we change the to ?

Page 11: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

More Examples (3)

Page 12: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Recursive Algorithms

Page 13: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Sorting Revisited (1)

Page 14: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

T(n): worst case time complexity for any input of size n

Recurrence: T(n) = T(n-1) + cn

Solving recurrence: T(n) = T(n-1) + cn

= T(n-2) + c(n-1) + cn

= T(n-k) + c(n-k+1) + .. + cn

= T(1) + c[2 + … + n-1 + n]= Θ (n2)

Expansion into a series.

Usual assumption: T(n) is constant for small n, say n = 1, 2, 3

Page 15: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

More examples (1)

Page 16: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

More Examples (2)

Page 17: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Sorting Revisited (2)

Can we do better than ? Yes. Many ways.

We will talk about Merge-sort

Page 18: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Merge Sort

Divide

Conquer

?

?

Page 19: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

Conquer Step Merge(B, C)

Input: Given two sorted arrays B and C Output: Merge into a single sorted array

CSE 2331 / 5331

16

10

8

3

7

5

4

2

22 3 4 5 7 8 10 16 2 32 3 4 2 3 4 5 2 3 4 5 7

If size of B and C are s and t:

Running time: O ( s + t )

Page 20: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Pseudocode

MergeSort ( A, r, s ) if ( r ≥ s) return;

m = (r+s) / 2;

A1 = MergeSort ( A, r, m );

A2 = MergeSort ( A, m+1, s );

Merge (A1, A2);

Recurrence relation for MergeSort(A, 1, n) T(n) = 2T(n/2) + cn

Page 21: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Solve Recurrence

Expansion into a series Recursion tree Substitution method

Page 22: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Expansion

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

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

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

…….

= 2k T(n/2k) + n + … + n Let . Then:

Page 23: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331/5331

Recursion-tree Method

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

T(n)n

n/2 n/2

T(n/4) T(n/4) T(n/4) T(n/4)

n

n/2 n/2

n/4 n/4 n/4 n/4

(1) (1)

n

n/2+n/2

4 (n/4)

n (1)

T(n) ≤ n height(tree) = n lg n

n

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

n

T(n/2) T(n/2)

Page 24: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Another MergeSort

MergeSort ( A, r, s )

if ( r ≥ s) return;

m1 = r+(s-r) / 3;

m2 = r+2(s-r) / 3;

A1 = MergeSort ( A, r, m1 );

A2 = MergeSort ( A, m1 +1, m2 );

A3 = MergeSort ( A, m2 +1, s );

Merge (A1, A2, A3); Recurrence relation for MergeSort(A,1,n)

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

What if we change 3 to k ?

Page 25: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Another MergeSort

MergeSort ( A, r, s ) if ( r ≥ s) return;

m = r+(s-r) / 3;

A1 = MergeSort ( A, r, m );

A2 = MergeSort ( A, m+1, s );

Merge (A1, A2);

Recurrence relation for MergeSort(A,1,n) T(n) = T(n/3) + T(2n/3) + cn

Page 26: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Recursion Tree

full levels and total levels

Total cost of each level is at most cn

Upper bound Lower bound

Page 27: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

More Examples of Recurrences (1)

T(n) = T(n-10) + c ?

T(n) = T(n-10) + n2 + 3n ?

Page 28: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

More Examples (2)

?

Page 29: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

More Examples (3)

Sometimes, it is hard to get tight bound

Easy to prove that and

Page 30: CSE 2331 / 5331 Foundations II: Data Structures and Algorithms Topic 2: -- Analyzing algorithms -- Solving recurrences

CSE 2331 / 5331

Summary

No good formula for solving recurrences Practice!

Expansion and recursion tree are two most intuitive These two are quite similar

Substitution method more rigorous and powerful But require good intuition and use of induction

Other methods: Master Theorem (not covered)