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

Foundations II: Data Structures and Algorithms

  • Upload
    eros

  • View
    45

  • Download
    2

Embed Size (px)

DESCRIPTION

Foundations II: Data Structures and Algorithms. Lecture 2 : -- More on growth of functions. Review some basics Chapter 3.2 of CLRS See the board More examples on comparing the growths of functions. Recall Asymptotic Notation. Another View. Some Special Cases. - PowerPoint PPT Presentation

Citation preview

Page 1: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Foundations II: Data Structures and Algorithms

Topic 2: -- Analyzing algorithms -- Solving recurrences

Page 2: Foundations II:  Data Structures and Algorithms

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: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Example: for Loop (2)

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

Page 4: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Evaluating Summations

Evaluate No fixed technique Be familiar with some basics

Textbook Appendix A.1and A.2

Page 5: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Two Useful Techniques

Splitting summations E.g, ,

Using integral: If f is monotonically increasing, E.g,

Page 6: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Example: while Loop

What if we change the to ?

What if we change the to ?

Page 7: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Analysis of while Loop

Stops when , that is, after iterations.

IChanges to since for any

constant c.

Page 8: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

More Examples (0)

What if we change the to ?

Page 9: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

More Examples (1)

Page 10: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

More Examples (2)

What if we change the to ?

Page 11: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

More Examples (3)

Page 12: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Recursive Algorithms

Page 13: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Sorting Revisited (1)

Page 14: Foundations II:  Data Structures and Algorithms

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: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

More examples (1)

Page 16: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

More Examples (2)

Page 17: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Sorting Revisited (2)

Can we do better than ? Yes. Many ways.

We will talk about Merge-sort

Page 18: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Merge Sort

Divide

Conquer

?

?

Page 19: Foundations II:  Data Structures and Algorithms

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: Foundations II:  Data Structures and Algorithms

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: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Solve Recurrence

Expansion into a series Recursion tree Substitution method

Page 22: Foundations II:  Data Structures and Algorithms

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: Foundations II:  Data Structures and Algorithms

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)

nn/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: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

Another MergeSortMergeSort ( 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: Foundations II:  Data Structures and Algorithms

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: Foundations II:  Data Structures and Algorithms

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: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

More Examples of Recurrences (1)

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

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

Page 28: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

More Examples (2)

?

Page 29: Foundations II:  Data Structures and Algorithms

CSE 2331 / 5331

More Examples (3)

Sometimes, it is hard to get tight bound

Easy to prove that and

Page 30: Foundations II:  Data Structures and Algorithms

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)