lecture 2 analysis of algorithms how to estimate time complexity? analysis of algorithms techniques...

37
Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents in this lecture source from slides of Yuxi Fu

Upload: shanon-stella-norris

Post on 18-Jan-2016

227 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Lecture 2 Analysis of Algorithms

• How to estimate time complexity?

• Analysis of algorithms

• Techniques based on Recursions

ACKNOWLEDGEMENTS: Some contents in this lecture source from slides of Yuxi Fu

Page 2: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

ROADMAP

• How to estimate time complexity?

• Analysis of algorithms‣ worst case, best case?

‣ Big-O notation

04/21/23 Xiaojuan Cai 2

Page 3: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Observation

Problem: 3-SumInput: N distinct integers Output: the number of triples sum to exactly zero?

30 -40 -20 -10 40 0 10 5

04/21/23 Xiaojuan Cai 3

a[i] a[j] a[k] sum

30 -40 10 0

30 -20 -10 0

-40 40 0 0

-10 0 10 0

Page 4: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Observation

System dependent effects.

•Hardware: CPU, memory, cache, …

•Software: compiler, interpreter, garbage collector, …

•System: operating system, network, other applications, …

Easy, but difficult to get precise measurements.

04/21/23 Xiaojuan Cai 4

Page 5: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Mathematical model

Total running time = sum of cost × frequency for all operations.– Cost depends on machine, compiler.– Frequency depends on algorithm, input data.

% 1-sumint count = 0;for (int i = 0; i < N; i++) if (a[i] == 0) count++;

04/21/23 Xiaojuan Cai 5

Page 6: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

‣ Relative rather than Absolute.

‣ Machine independent.

‣ About large input instance

• Time complexity of an algorithm

is a function of the size of the

input n.

Mathematical model

04/21/23 Xiaojuan Cai 6

Page 7: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Input size

Algo 1.9 Algo 1.10

input size n ⎣log n⎦ +1

time n n

relation Linear Exponential04/21/23 Xiaojuan Cai 7

Page 8: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Input size -- convention

• Sorting and searching: the size of the array

• Graph: the number of the vertices and edges

• Computational geometry: the number points

or line segments

• Matrix operation: the dimensions of the input

matrices

• Number theory and Cryptography: the

number of bits of the input.

04/21/23 Xiaojuan Cai 8

Page 9: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

• How to estimate time complexity?

• Analysis of algorithms‣ worst case, best case?

‣ Big-O notation

Where are we?

04/21/23 Xiaojuan Cai 9

Page 10: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Searching

9, 8, 9, 6, 2, 56, 12, 5, 4, 30, 67, 93, 25, 44, 96

Does 45 exist in:

2, 4, 5, 6, 8, 9, 9, 12, 25, 30, 44, 56, 67, 93, 96

Linear searching v.s. Binary searching

Problem: SearchingInput: An integer array A[1...n], and an integer x

Output: Does x exist in A?

04/21/23 Xiaojuan Cai 10

Page 11: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Binary searching2, 4, 5, 6, 8, 9, 9, 12, 25, 30, 44, 56, 67, 93,

96

low high

mid

04/21/23 Xiaojuan Cai 11

Page 12: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Quiz

Linear Searching

Binary Searching

Best case 1 1

Worst case

n log n+1

A. 1 B. logn. C. n D. none of above04/21/23 Xiaojuan Cai 12

Page 13: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Computational Complexity

Linear Searching

Binary Searching

Worst case n log n

10-6s per instructio

n

Linear Searching

Binary Searching

n=1024 0.001s 0.00001s

n=240 12.7day 0.00004s

04/21/23 Xiaojuan Cai 13

Page 14: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

• How to estimate time complexity?

• Analysis of algorithms‣ worst case, best case?

‣ Big-O notation

Where are we?

04/21/23 Xiaojuan Cai 14

Page 15: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Big-O Notation

Definition (O-notation)Let f(n) and g(n) :

f(n) is said to be O(g(n)), written f (n) = O(g(n)), if∃c>0.∃n0.∀n ≥ n0.f (n) ≤ cg(n)

Definition (O-notation)Let f(n) and g(n) :

f(n) is said to be O(g(n)), written f (n) = O(g(n)), if∃c>0.∃n0.∀n ≥ n0.f (n) ≤ cg(n)

•The O-notation provides an upper bound of

the

running time;

•f grows no faster than some constant times g.04/21/23 Xiaojuan Cai 15

Page 16: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Examples• 10n2 + 20n = O(n2). • logn2 =O(logn).• log(n!) = O(nlogn).• Hanoi: T(n) = O(2n), n is the input

size.• Searching: T(n) = O(n)

04/21/23 Xiaojuan Cai 16

Page 17: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Big-Ω Notation

Definition (Ω-notation)Let f(n) and g(n) :

f(n) is said to be Ω(g(n)), written f (n) = Ω(g(n)), if∃c>0.∃n0.∀n ≥ n0.f (n) ≥ cg(n)

• The Ω-notation provides an lower bound of the running time;• f(n) = O(g(n)) iff g(n) = Ω(f(n)).

04/21/23 Xiaojuan Cai 17

Page 18: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Examples• log nk = Ω(logn).• log n! = Ω(nlogn). • n! = Ω(2n). • Searching: T(n) = Ω(1)

Does there exist f,g, such that f = O(g) and f = Ω(g)?

04/21/23 Xiaojuan Cai 18

Page 19: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Big-Θ notation

• log n! = Θ(nlogn).• 10n2 + 20 n = Θ(n2)

Definition (Θ-notation)

f(n)=Θ(g(n)), if both f(n)=O(g(n)) and f(n) =

Ω (g(n)).

04/21/23 Xiaojuan Cai 19

Page 20: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Small o-notation

• log n! = o(nlogn)?• 10n2 + 20 n = o(n2)?• nlog n = o(n2)?

Definition (o-notation)Let f(n) and g(n) :

f(n) is said to be o(g(n)), written f (n) = o(g(n)), if∀c.∃n0.∀n ≥ n0.f (n) < cg(n)

04/21/23 Xiaojuan Cai 20

Page 21: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Definition (ω-notation)Let f(n) and g(n) :

f(n) is said to be ω(g(n)), written f (n) = ω(g(n)), if∀c.∃n0.∀n ≥ n0.f (n) > cg(n)

Small ω-notation

04/21/23 Xiaojuan Cai 21

Page 22: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Quiz

f(n)f(n) g(n)g(n)

n1.01 nlog2n

nlogn log(n!)

1+1/2+1/3+...+1/n logn

n2n 3n

A. O B. Ω. C. Θ D. none of above04/21/23 Xiaojuan Cai 22

Page 23: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Approximation by Integration

04/21/23 Xiaojuan Cai 26

Page 24: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

In terms of limits

Suppose exists

04/21/23 Xiaojuan Cai 27

Page 25: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Complexity class

Definition (Complexity class)

An equivalence relation R on the set of complexity functions is defined as follows:

f Rg if and only if f (n) = Θ(g (n)).

04/21/23 Xiaojuan Cai 28

Page 26: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Order of growthorder name example N = 1000 N = 2000

1 constantadd two

numbersinstant instant

log N logarithmicbinary

searchinstant instant

N linearfind the

maximuminstant instant

N log N linearithmic mergesort instant instant

N2 quadratic 2-sum ~1s ~2s

2N exponential Hanoi forever foreverAssume the computer consumes 10-6s per instruction

04/21/23 Xiaojuan Cai 29

Page 27: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Order of growth

04/21/23 Xiaojuan Cai 30

Page 28: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Quiz

A. Θ(n2) B. Θ(n). C. Θ(nlogn) D. none of above

04/21/23 Xiaojuan Cai 31

Page 29: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Quiz

A. Θ(n2) B. Θ(n). C. Θ(nlogn) D. none of above

04/21/23 Xiaojuan Cai 32

Page 30: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Quiz

04/21/23 Xiaojuan Cai 33

A. Θ(n2) B. Θ(n). C. Θ(nlogn) D. none of above

Page 31: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Quiz

04/21/23 Xiaojuan Cai 34

A. Θ(n2) B. Θ(n). C. Θ(nlogn) D. none of above

Page 32: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Quiz

04/21/23 Xiaojuan Cai 35

A. Θ(n2) B. Θ(n). C. Θ(nlogn) D. none of above

Page 33: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Quiz

04/21/23 Xiaojuan Cai 36

A. Θ(n2) B. Θ(n). C. Θ(nlogn) D. none of above

θ(nloglogn)

Page 34: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Amortized analysis

The total number of append is n.The total number of delete is between 0 and n-1. So the time complexity is O(n).04/21/23 Xiaojuan Cai 37

Page 35: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Memory• Time: Time complexity

‣ faster, better.

• Memory: Space complexity‣ less, better.

• Space complexity <= Time complexity

04/21/23 Xiaojuan Cai 38

Page 36: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

Conclusion

• How to estimate time complexity?

• Analysis of algorithms‣ worst case, best case?

‣ Big-O notation

04/21/23 Xiaojuan Cai 39

Page 37: Lecture 2 Analysis of Algorithms How to estimate time complexity? Analysis of algorithms Techniques based on Recursions ACKNOWLEDGEMENTS: Some contents

3-Sum, better solution

• O(N2)

Problem: 3-SumInput: N distinct integers Output: the number of triples sum to exactly zero?

30 -40 -20 -10 40 0 10 5

a[i] a[j] a[k] sum

30 -40 10 0

30 -20 -10 0

-40 40 0 0

-10 0 10 004/21/23 Xiaojuan Cai 40