running time analysis - github pages · 2020. 11. 23. · goals for measuring time efficiency...

22
RUNNING TIME ANALYSIS Problem Solving with Computers-II

Upload: others

Post on 12-Mar-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

RUNNING TIME ANALYSISProblem Solving with Computers-II

Page 2: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Performance questions!2

• How efficient is a particular algorithm? • CPU time usage (Running time complexity) • Memory usage • Disk usage • Network usage

• Why does this matter?

• Computers are getting faster, so is this really important? • Data sets are getting larger – does this impact running times?

Page 3: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

How can we measure time efficiency of algorithms?

• One way is to measure the absolute running time

• Pros? Cons?

clock_t t; t = clock();

//Code under test

t = clock() - t;

include time

numbertoofyourcompclock

Cong Time to run the also Algorithmfor a specific input 1inputsizeDoesn't tell us

how the

running time scaleswith absolute time

the input size of running myTied to the performance of

hardwarecode under test

Wait for the program tocomplete ticks fococksPEI

SEC

Page 4: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Which implementation is significantly faster ?

function F(n){ if(n == 1) return 1 if(n == 2) return 1 return F(n-1) + F(n-2) }

A.function F(n){ Create an array fib[1..n] fib[1] = 1 fib[2] = 1 for i = 3 to n: fib[i] = fib[i-1] + fib[i-2] return fib[n] }

B.

C. Both are almost equally fast

so

the

ICn o t fCn27Fibonaccifin E E I E 8 n

Page 5: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

A better question: How does the running time grow as a function of input size

function F(n){ if(n == 1) return 1 if(n == 2) return 1 return F(n-1) + F(n-2) }

function F(n){ Create an array fib[1..n] fib[1] = 1 fib[2] = 1 for i = 3 to n: fib[i] = fib[i-1] + fib[i-2] return fib[n] }

The “right” question is: How does the running time grow? E.g. How long does it take to compute F(200)? ….let’s say on….

Page 6: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

NEC Earth Simulator

Can perform up to 40 trillion operations per second.

Page 7: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

The running time of the recursive implementationThe Earth simulator needs 292 seconds for F200.

Time in seconds Interpretation 210 17 minutes

220 12 days

230 32 years

240 cave paintings

270 The big bang!

function F(n){ if(n == 1) return 1 if(n == 2) return 1 return F(n-1) + F(n-2) }

Let’s try calculating F200 using the iterative algorithm on my laptop…..

Page 8: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Goals for measuring time efficiency• Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring “details” which may be an artifact of the underlying implementation:

• E.g., 1000001 ≈ 1000000

• Similarly, 3n2 ≈ n2

• Focus on trends as input size increases (asymptotic behavior): How does the running time of an algorithm increases with the size of the input in the limit (for large input sizes)r

Page 9: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Counting steps (instead of absolute time)• Every computer can do some primitive operations in constant time:

• Data movement (assignment)

• Control statements (branch, function call, return)

• Arithmetic and logical operations

• By inspecting the pseudo-code, we can count the number of primitive operations executed by an algorithm

k 5

This is the first step fordoing an analysis called Big oh

Page 10: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Running Time Complexity

/* N is the length of the array*/ int sumArray(int arr[], int N) { int result=0; for(int i=0; i < N; i++) result+=arr[i]; return result; }

Start by counting the primitive operations

Statement ofstepsintreault0 zat i20 1ien 1it 1 2

resuettearsci7 3return 1

Loop runs NtimesTotalnoofsteps

HI 1N 1 2 3 t

316N

Page 11: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Big-O notation

N Steps = 5*N +31 810 531000 5003100000 50000310000000 50000003

• Simplification 1: Count steps instead of absolute time

• Simplification 2: Ignore lower order terms • Does the constant 3 matter as N gets large?

• Simplification 3: Ignore constant coefficients in the leading term (5*N) simplified to N

After the simplifications,

The number of steps grows linearly in N Running Time = O(N) pronounced “Big-Oh of N”

Page 12: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

ofsteps 20 695NRunningtime OCT exponential

1 oflevelsontherightmost

nffeadeluilder Braude a 42

oflevels

ontheleftmost

brane

analysis

µ 2

4

of function calls at bevel k z za Total A offunction calls isbelwa2ad.iq

Page 13: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Orders of growth• We are interested in how

algorithm running time scales with input size

• Big-Oh notation allows us to express that by ignoring the details

• 20n hours v. n2 microseconds: • which has a higher order of

growth?

• Which one is better?

Oexponentialrecursivef b

g rgw

n Input sin

Page 14: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Big-O notation lets us focus on the big pictureRecall our goals: • Focus on the impact of the algorithm

• Focus on asymptotic behavior (running time as N gets large)

Count the number of steps in your algorithm: 3+ 5*N Drop the constant additive term : 5*N Drop the constant multiplicative term : N Running time grows linearly with the input size Express the count using O-notation Time complexity = O(N)

n apu s

Page 15: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Given the step counts for different algorithms, express the running time complexity using Big-O

1. 10000000 2. 3*N 3. 6*N-2 4. 15*N + 44 5. 50*N*logN 6. N2 7. N2-6N+9 8. 3N2+4*log(N)+1000

For polynomials, use only leading term, ignore coefficients: linear, quadratic

Number ofsteps c yOCN0cmCNO N logNCNYOCNY

ourz t not NlogN 0127

Page 16: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Common sense rules of Big-O1. Multiplicative constants can be omitted: 14n2 becomes n2 .

2. na dominates nb if a > b: for instance, n2 dominates n.

3. Any exponential dominates any polynomial: 3n dominates n5 (it even dominates 2n ).

Page 17: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

What is the Big O of sumArray2

/* N is the length of the array*/ int sumArray2(int arr[], int N) { int result=0; for(int i=0; i < N; i=i+2) result+=arr[i]; return result; }

A. O(N2)

B. O(N) C. O(N/2) D. O(log N)

E. None of the array

O574

HeeC t ca t I

2

Page 18: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

What is the Big O of sumArray2/* N is the length of the array*/ int sumArray2(int arr[], int N) { int result=0; for(int i=1; i < N; i=i*2) result+=arr[i]; return result; }

A. O(N2)

B. O(N) C. O(N/2) D. O(log N)

E. None of the array

a

0 ICZ

Total numberof steps Ci t Cz s ofiterationsofloop

The important step here is to get the humberoftimes

the loop runs as a function of N

Page 19: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

To do that we can get a relationship between

the iteration number k and the loopvariable i

Iteration number I1

I2

2 In general at4 iteration k

3 k e8 in 2

4ht

K 2

The forLoop stopswhen 2 is greaterthan

or

equal to N

2 N

solve for k

k log N I

Told Mo g sleeps 4 Cz Clog Ntl

Apply the subs of Big O

OC

Page 20: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Operations on sorted arrays

821 3 4 65 7 109 11 12 14130

641413 25 33 5143 53 8472 93 95 97966

lo hi

• Min : • Max: • Median: • Successor: • Predecessor: • Search: • Insert : • Delete:

k logan el

Page 21: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

How is PA01 going?A. Done B. On track to finish C. Having trouble designing my classes D. Stuck and struggling E. Haven’t started

• PA02 deadline this Thursday (04/18)at midnight

Page 22: RUNNING TIME ANALYSIS - GitHub Pages · 2020. 11. 23. · Goals for measuring time efficiency •Focus on the impact of the algorithm: Simplify the analysis of running time by ignoring

Next time• Running time analysis of Binary Search Trees

References: https://cseweb.ucsd.edu/classes/wi10/cse91/resources/algorithms.ppt http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-Vazirani.pdf